2016-01-17 71 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)