2011-05-07 22 views
4

我剛開始使用emacs入門套件& clojure-mode。現在,當我在clojure模式下將'(fn'鍵入或粘貼到緩衝區時,'fn'字符將在窗口中以略小的小寫字母f被替換。緩衝區保存正確,但它非常煩人,特別是當我發現這個功能很難 - 在某人的「不可能」的代碼片段中令人困惑,並在光線褪去之前將其編輯爲一行。任何想法爲什麼這樣做,或者更重要的是,如何關閉它?clojure-mode爲什麼用一些捲曲的f字符代替fn?

+0

Dammit - 它也是在common-lisp模式下使用lambda。所以我想這是emacs入門套件而不是clojure模式。 – fizzer 2011-05-07 11:45:02

+2

我個人非常喜歡它!它的視覺效果令人驚歎,並且更加明顯的是它是一款拉姆達。我會問一個不同的問題:如何輕鬆地將該功能添加到所有的emacses中? – Markc 2011-05-07 22:08:57

+0

@Markc:我和你在一起。我喜歡它。 – stand 2011-05-08 01:03:41

回答

4

很抱歉回答我自己的問題。它在starter-kit-lisp.el中。查找從(eval-after-load 'clojure-mode開始的行。

+0

我必須在'starter-kit-lisp.el'中註釋掉包含函數'esk-pretty-fn'和'(add-hook'clojure-mode-hook'esk-pretty-fn)'的行。和'starter-kit-lisp-autoloads.el' – adamjmarkham 2012-03-16 16:05:08

6

加載starter-kit-lisp後,可以通過將以下行添加到您的​​來關閉它。

(remove-hook 'clojure-mode-hook 'esk-pretty-fn) 

然後重新加載Emacs使其生效。

0

在Emacs生活,你可以用下面的禁用此行爲:

~/.emacs.d/packs/live/clojure-pack/config/clojure-conf.el註釋這些行:

;;(eval-after-load 'clojure-mode 
;; '(font-lock-add-keywords 
;; 'clojure-mode `(("(\\(fn\\)[\[[:space:]]" 
;;      (0 (progn (compose-region (match-beginning 1) 
;;            (match-end 1) "λ") 
;;        nil)))))) 
;; 
;;(eval-after-load 'clojure-mode 
;; '(font-lock-add-keywords 
;; 'clojure-mode `(("\\(#\\)(" 
;;      (0 (progn (compose-region (match-beginning 1) 
;;            (match-end 1) "ƒ") 
;;        nil)))))) 
;; 
;;(eval-after-load 'clojure-mode 
;; '(font-lock-add-keywords 
;; 'clojure-mode `(("\\(#\\){" 
;;      (0 (progn (compose-region (match-beginning 1) 
;;            (match-end 1) "∈") 
;;        nil)))))) 

重新啓動Emacs和有沒有更看中的符號。