猿问

自动完成模式

我试图通过go-mode加载.go文件时启用自动完成模式。如果我为Go源文件手动调用了自动完成模式,它会起作用,但是当我尝试按以下方式将其添加到.emacs时,它将无法正常工作:


(add-hook 'go-mode-hook auto-complete-mode)

我已经尝试了一些变体,但似乎都没有用。以下是我的.emacs中的Go-Mode代码段当前的样子:


;; Load Go Mode

(require 'go-mode-load)

(add-hook 'go-mode-hook 'auto-complete-mode)

我试图创建自己的钩子函数,如下所示:


;; Load Go Mode

(require 'go-mode-load)

(defun auto-complete-for-go ()

  (auto-complete-mode 1))

(add-hook 'go-mode-hook 'auto-complete-for-go)

我还尝试将钩子包含在go-mode-load.el和中go-mode.el,并auto-complete-mode像这样调用:


(auto-complete-mode t)

(provide 'go-mode)

两种方式都不起作用。我还添加了go-mode-hooktoauto-complete-default函数,如下所示:


(defun ac-config-default ()

  (setq-default ac-sources '(ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers))

  (add-hook 'go-mode-hook 'ac-common-setup)

  ;; Other hooks

  (global-auto-complete-mode t))

那也不行。在为缓冲区启用主要模式后立即触发命令的最佳方法是什么?


30秒到达战场
浏览 193回答 2
2回答

哆啦的时光机

您尝试了哪些变体?如果您在前面添加单引号,则应该可以使用auto-complete-mode:(add-hook 'go-mode-hook 'auto-complete-mode)如果不带引号,auto-complete-mode则将其解释为变量,并将该变量的值添加到中go-mode-hook。为此,此类变量应包含函数引用作为其值。最有可能的是,尽管没有命名的变量auto-complete-mode,Emacs会抱怨。通过添加引号,您可以告诉Emacs这不是变量,而是您希望钩子调用的实际函数。另请参阅此处和此处。
随时随地看视频慕课网APP

相关分类

Go
我要回答