2010-08-18 52 views
3

升級從Emacs的21.2至23.2的挑戰繼續...在我的.emacs我有很方便的:Emacs 23.2中dired-omit-toggle在哪裏消失?

(global-set-key (quote [f4]) (quote dired-omit-toggle)) 

它曾經因爲Emacs的18工作...但它不再在Emacs 23.2作品:

Lisp error: (void-function dired-omit-toggle)

任何想法如何在Emacs 23.2中替換此功能?

EmacsWiki說:

To use this mode add the following to your InitFile.

(add-hook 'dired-load-hook 
      (function (lambda() (load "dired-x")))) 

,這是我一直有這些年到底是什麼。但Emacs 23.2不再喜歡這個了。任何想法可以取代它在Emacs 23.2?

回答

3

由於Emacs 22,您需要撥打dired-omit-mode而不是dired-omit-toggle。您仍然需要加載dired-x。從NEWS.22

*** In Dired-x, Omitting files is now a minor mode, dired-omit-mode.

The mode toggling command is bound to M-o. A new command dired-mark-omitted, bound to * O, marks omitted files. The variable dired-omit-files-p is obsoleted, use the mode toggling function instead.

+0

吉爾斯,你是一個生命的救星。看起來我面臨的挑戰源於我沒有經歷過Emacs 22的事實,所以它的NEWS文件不適合Emacs 23我正在嘗試爲我工作。無論如何,你的建議工作。我將很快發佈代替它的代碼。 – 2010-08-18 22:44:22

0

因爲我從Emacs的21升級到23是漸進的,必須維護好系統,其中一些使用Emacs 21,和一些使用Emacs的23相同的.emacs,我想出了下面的代碼:

(GNUEmacs21 
(global-set-key (quote [f4]) (quote dired-omit-toggle)) 
) 

(GNUEmacs22 
(global-set-key (quote [f4]) (quote dired-omit-mode)) 
) 

(GNUEmacs23 
(global-set-key (quote [f4]) (quote dired-omit-mode)) 
) 

GNUEmacs21,GNUEmacs22和GNUEmacs23出現在靠前的.emacs文件的定義:

(defmacro GNUEmacs23 (&rest body) 
    (list 'if (string-match "GNU Emacs 23" (version)) 
     (cons 'progn body))) 

(defmacro GNUEmacs22 (&rest body) 
    (list 'if (string-match "GNU Emacs 22" (version)) 
     (cons 'progn body))) 

(defmacro GNUEmacs21 (&rest body) 
    (list 'if (string-match "GNU Emacs 21" (version)) 
     (cons 'progn body))) 
+2

我不建議走這條路線,因爲你必須弄清楚Emacs的哪個版本改變了這個功能。通過測試函數或變量的可用性可以最好地解決大多數這種不兼容問題。在這裏,我會做一些類似'(加載後評估「dired-x」'(if(not(fboundp'dired-omit-toggle))(defalias'dired-omit-toggle'dired-omit-mode)) )'。 – Gilles 2010-08-18 23:03:58

+0

優秀的建議。謝謝! – 2010-08-19 03:06:49