如何在Aquamacs中正确定义ESS键绑定?

时间:2013-05-07 17:06:07

标签: macos r emacs

我切换到Mac并且不得不放弃我最喜欢的R编辑器(Notepad ++)。现在我正在努力学习Emacs。学习曲线很陡,但是一旦我学会使用它,这似乎是 编辑器。我使用的是OS X 10.8.3和Aquamacs 2.4

我正在尝试根据这些SO问题的优秀提示设置自定义键绑定:123

如果我将此命令复制到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打开并抱怨,但命令有效:

  

加载`〜/ Library / Preferences / Aquamacs时出错   Emacs / Preferences.el(或.elc)':

     

符号作为变量的值为void:ess-mode-map

     

为确保正常操作,您应该调查并删除   初始化文件中的错误原因。用。启动Emacs   `--debug-init'选项查看完整的错误回溯。

我想使用Ctrl +。将R代码/缓冲区的段落运行到R.显然我做错了。由于我是Mac和Emacs的完全新手,这感觉压倒一切。发生了什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分: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