最初,我在.emacs.d/init.el中定义了以下内容

(defun go-mode-setup ()
  (setq compile-command "go build -v && go test -v && go vet && golint")
  (define-key go-mode-map (kbd "C-c C-c") 'compile)
  )

在进入模式时,其他所有功能似乎都可以正常工作,但是他似乎并没有设置或尊重我的C-c C-c命令,而是执行
C-c C-c is undefined.

因此,我添加了一个明确的钩子(Hook):
(add-hook 'go-mode-hook (lambda () (define-key go-mode-map (kbd "C-c C-c") 'compile)))

现在,这符合我的C-c C-c kbd快捷方式,但仍然忽略了我设置的编译命令。不幸的是,它似乎编译了整个文件夹,而不是我正在处理的main.go文件。
Compile command: make -k

如何设置C-c C-c以使用我设置的编译命令?

最佳答案

您的代码对我有用。唯一缺少的是add-hook。您可能还希望将compile-command设置为本地缓冲区。

这是我的绝对有效的代码:

(defun jpk/go-mode-hook ()
  (make-local-variable 'compile-command)
  (setq compile-command "go build -v")
  (define-key go-mode-map (kbd "C-c C-c") #'compile))
(add-hook 'go-mode-hook #'jpk/go-mode-hook)

我强烈建议您不要像@jdc的答案那样重新定义compile。如果必须定义自己的命令,请使用其他名称。

您可能想 checkout multi-compile软件包,它允许您设置多个编译命令(可选地,特定于主要模式)。

10-01 03:51
查看更多