2011-08-09 27 views
4

为以下伪代码提高elisp的条件表达式

if "the emacs version is less than 23.1.x" 
do 
    something 
else 
    something-else 

写成

(if (or (< emacs-major-version 23) 
     (and (= emacs-major-version 23) 
      (<= emacs-minor-version 1))) 
    (setq color-theme-is-global t) 
    (color-theme-initialize)) 

如何优化上面的代码,使“的emacs-主要版本”是elisp的代码没有引用两次。

回答

11

没有必要的,有version<=emacs-version

(if (version<= emacs-version "23.1") 
    (setq color-theme-is-global t) 
    (color-theme-initialize)) 
+1

(版本)FN返回描述的Emacs的版本的字符串。你能否澄清一下这个比较字符串和数字是如何工作的。 –

+2

它是'emacs-version'不是'(emacs-version)'。对于'version <='的工作,请看它的文档字符串,'C-h f version <='。 –