Emacs将<compile“python =”“current-buffer-name”=“”>映射到一个热键

时间:2015-09-21 07:35:39

标签: emacs elisp

如果我M-x <RET> compile <RET>,我会收到提示要编译的内容。我想要编译的是python中的当前缓冲区,所以我输入python test.py <RET>。现在有时我会被问到是否要创建一个单独的流程,我总是想说y(这是肯定的)。

(define-key python-mode-map "\C-b" 'compile)出现以下错误:

enter image description here

(define-key global-map "\C-b" 'compile)有效,但这与我的需要相去甚远。

那么,我如何将compile python current-buffer-name映射到"\C-b"

2 个答案:

答案 0 :(得分:0)

Emacs确实有模式的概念。我想你不想将python编译成全局密钥。

你检查过: http://www.emacswiki.org/emacs?action=browse;oldid=PythonMode;id=PythonProgrammingInEmacs

您所做的就是调用外部程序。我确信在python模式下有更好的方法可以做到这一点。

如果你想将一个以上的命令包装到一个键上,你必须编写某种包装器,这个函数包含你要调用的所有东西。

答案 1 :(得分:0)

在您加载python-mode-map之前,不会定义变量python-mode。蛮力方法是从(require 'python-mode) .emacs开始,但只需在调用python-mode时进行定义,就可以避免更优雅。

(add-hook 'python-mode-hook
          (lambda ()
            (define-key python-mode-map "\C-b" #'compile)))