我最近使用Vincent Goulet的Windows 7安裝程序在http://vgoulet.act.ulaval.ca/en/emacs/上從R 2.15和較早版本的ESS升級。這包括ESS 13.09版。我也剛剛安裝了R版本3.0.2。ess-execute key binding與新ESS版本不兼容
我的舊工作流是使用C-c C-t(默認鍵綁定)通過ess-execute
運行命令並將結果發送到臨時緩衝區。我發現這對我的工作流程和R編程風格非常有用。
但是,使用新版本,此鍵綁定已被刪除。我四處搜索,找不到有關此主題的任何其他主題。我看着ess-mode.el並找到這條線:
;; (define-key map "\C-c\C-t" 'ess-execute-in-tb)
哪個被註釋掉。我發現他們添加了很好的功能ess-describe-object-at-point
,但是不允許執行命令。
我不是emacs高級用戶,所以我傾向於將lisp片段複製到我的.emacs中,並對它們進行小修改。我嘗試(1)取消註釋上面的行,(2)在我的.emacs文件中定義一個新的鍵綁定,與ESSShift Enter(http://www.emacswiki.org/emacs/ESSShiftEnter)中的新鍵綁定相同。
(add-hook 'ess-mode-hook
(lambda()
(local-set-key [(shift return)] 'my-ess-eval)
;; added Ctrl-Enter to stay on same line
(local-set-key [C-return] 'ess-eval-line)
;; Newest version of ESS got rid of C-c C-t for ess-execute add back
(local-set-key "\C-c\C-t" 'ess-execute-in-tb))
但是,這些方法都沒有奏效。
我的問題是:是否有這個鍵綁定在新版本中被禁用的原因?即我應該使用其他一些替代它的功能嗎?如果不是,那麼再次啓用此鍵綁定的最佳方法是什麼?
感謝您的回覆,我試了一下你的代碼,確實有效。之前我犯了一個錯誤,那就是爲什麼我的代碼不起作用。 我真的很喜歡ess-execute功能,但我注意到新版本的一件事是完成不起作用。即如果我執行M-x ess-execute然後鍵入st並且它表示「沒有與此緩衝區關聯的ESS進程」 - 是否有簡單的方法可以恢復此功能? 感謝您對所有改進進行研究,我無法想象沒有ESS的編碼在這一點上! –
@ColeMonnahan感謝您指出這一點。我剛剛在ESS中修復了它。 – VitoshKa