2013-05-07 27 views
0

我做了一個切換到Mac,並不得不拋棄我最喜歡的R編輯器(記事本++)。現在我正在學習Emacs。學習曲線很陡,但是一旦我學會使用它,這看起來就像編輯器。我正在使用OS X 10.8.3和Aquamacs 2.4如何在Aquamacs中正確定義ESS鍵綁定?

我想從以下這些SO問題的以下優秀技巧中設置自定義鍵綁定:12,3

如果我複製此命令preferences.el文件,Aquamacs打開,但不抱怨,命令的工作:

(global-set-key [C-tab] 'other-window) 

但是,如果我嘗試設置的下列選項之一:

(define-key ess-mode-map (kbd "C .") 'ess-eval-paragraph) 
(define-key ess-mode-map [C-.] 'ess-eval-paragraph) 
(define-key ess-mode-map "\C-." 'ess-eval-paragraph) 

Aquamacs打開並抱怨,但命令的工作原理:

An error has occurred while loading `~/Library/Preferences/Aquamacs Emacs/Preferences.el (or .elc)':

Symbol's value as variable is void: ess-mode-map

To ensure normal operation, you should investigate and remove the cause of the error in your initialization file. Start Emacs with the `--debug-init' option to view a complete error backtrace.

我想使用Ctrl +。運行R代碼/緩衝區段到R.顯然我做錯了什麼。由於我是Mac和Emacs的全新手,這感覺非常令人難以置信。發生了什麼事以及如何解決這個問題?

回答

1

在存在之前,您不能修改ess-mode-map。直到ess(特別是ess-mode)被加載後它纔會存在。因此,像下面應該工作:

(eval-after-load "ess-mode" 
    '(define-key ess-mode-map (kbd "C-.") 'ess-eval-paragraph)) 

編輯:注意:C-.不在ASCII字符集,所以"\C-."串將無法正常工作。您必須改用(kbd "C-.")表單。該字符串可以用於其他組合,如"\C-a"(不是您應該將它綁定到C-a)。詳情請見the manual

+0

謝謝你的回答。有了這段代碼,它會抱怨:「錯誤:字符串中的無效修飾符」。也許代碼不完全正確? – Mikko 2013-05-08 05:25:55

+0

嗯。這很奇怪。如果我將鍵綁定定義爲[C-。]或(kbd「C。」),則程序正常啓動而不會發出抱怨,但未定義鍵盤快捷鍵。 – Mikko 2013-05-08 05:52:21

+0

以下工作:'(eval-after-load「ess-mode」'(define-key ess-mode-map(kbd「C-」。「'ess-eval-paragraph))''。我不知道爲什麼其他關鍵約束意見不起作用。也許我在某處做錯了什麼,或者是因爲我的挪威鍵盤。你能更新這個替代方案嗎?我會將其標記爲已接受。 – Mikko 2013-05-08 08:57:34