4

.go ファイルが go-mode で読み込まれるたびに、オートコンプリート モードを有効にしようとしています。Go ソース ファイルに対して auto-complete-mode を手動で呼び出すと機能しますが、以下のように .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.elandgo-mode.elに含めてみました。また、次のように呼び出しauto-complete-modeました。

(auto-complete-mode t)
(provide 'go-mode)

どちらの方法でも機能しません。go-mode-hookまた、 toauto-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))

それもうまくいきません。メジャーモードがバッファに対して有効になった直後にコマンドをトリガーする最良の方法は何ですか?

4

2 に答える 2

5

現時点での回避策は次のとおりです。

(add-to-list 'ac-modes 'go-mode)

次のコミットで v1.4 ブランチの問題を修正しました。

于 2012-09-06T07:06:05.940 に答える
3

どのバリエーションを試しましたか? の前に一重引用符を追加すると機能するはずですauto-complete-mode:

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

この引用符がないと、auto-complete-modeは変数として解釈され、その変数の値が に追加されgo-mode-hookます。これが意味をなすためには、そのような変数にはその値として関数参照が含まれている必要があります。ほとんどの場合、名前が付けられた変数はなくauto-complete-mode、Emacs は文句を言います。

引用符を追加することで、これが変数ではなく、フックに呼び出したい実際の関数であることを Emacs に伝えます。ここここも参照してください。

于 2012-09-05T13:55:00.690 に答える