2016-01-17 70 views
2

我想爲emacs設置Node.js的keybindings REPL。我看了一下nodejs-repl,現在我可以打開一個REPL並使用nodejs-send-region命令來執行代碼。Emacs - 加載模塊後綁定密鑰

但是我不知道如何綁定例如C-c C-e到這個命令。我認爲我必須使用comint-mode作爲(?)。我嘗試過:

(require 'nodejs-repl) 

;; bind shortcuts when in node mode-line 
(eval-after-load 'nodejs-repl 
    (lambda() (local-set-key (kbd "C-c C-e") #'nodejs-repl-send-region))) 
+1

請注意,'加載後eval'採用引用的形式進行評估。 'lambda'是自引用的,所以這不是*錯誤*,但是評估一個lambda只是定義了一個函數 - 它不執行它,所以該函數的主體不會被評估。你想要'(加載後eval-nodejs-repl'(define-key ...))'' – phils

回答

2

您在綁定加載庫後當前本地鍵盤映射中的鍵。加載庫最有可能做打開其鍵盤佈局,你真的要綁定在按鍵模式至少這是典型的,它對應於GNU Emacs coding conventions,其中說:

只需加載包不應該改變Emacs的編輯 的行爲。包含一個或多個命令來啓用和禁用 功能或調用它。

對於包含自定義 定義的任何文件,此約定是強制性的。如果修復此文件以遵循此約定 需要不兼容的更改,請繼續並使不兼容 更改;不要推遲它。

你想要做的是在合適的鍵盤映射中綁定鍵,使用define-key,並且你想在模式鉤子中做到這一點。

(require 'nodejs-repl) 
(define-key nodejs-repl-mode-map (kbd "C-c C-e") #'nodejs-repl-send-region)