2

Emacsのオートコンプリートパッケージに問題があります。現在、適切なオートコンプリート機能を備えたセデットを稼働させていますが、オートコンプリートパッケージには奇妙な動作があります。インクルードファイルに明示的にアクセスして「CuMxbovinate」を作成するまで、セマンティック(上院議員?)データベースは使用されません。次に、ソースファイルに戻ると、オートコンプリートの完了リストがセマンティックの完了リストとまったく同じになります。

もう1つのポイントは、たとえばc ++モードでソースファイルを編集し、cモードでヘッダーを「ボビネート」しようとすると、オートコンプリートはその完了リストに追加のポイントを取得しません。

オートコンプリートを自動的に実行する方法はありますか?

私の.emacsファイルは(その大部分はAlex Ottの記事から引用したものです)

(load "~/.emacs.d/cedet/cedet-devel-load.el")
(add-to-list 'semantic-default-submodes 'global-semanticdb-minor-mode)
(add-to-list 'semantic-default-submodes 'global-cedet-m3-minor-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-mru-bookmark-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-local-symbol-highlight-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-scheduler-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-completions-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-summary-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-decoration-mode)

(require 'semantic/ia)
(semantic-mode 1)

(require 'semantic/bovine/gcc)

(semantic-add-system-include "/usr/include/mpi/" 'c++-mode)

;; ;; Imenu integration
(defun my-semantic-hook ()
  (imenu-add-to-menubar "TAGS"))
(add-hook 'semantic-init-hooks 'my-semantic-hook)

;; Class suggest improvement
(defun my-c-mode-cedet-hook ()
 (local-set-key "." 'semantic-complete-self-insert)
 (local-set-key ">" 'semantic-complete-self-insert))
(add-hook 'c-mode-common-hook 'my-c-mode-cedet-hook)

;;;; Semantic and auto-config integration
(require 'auto-complete-config)
(ac-config-default)
(add-to-list 'ac-dictionary-directories "/home/zvord/.emacs.d/ac-dict")
(define-key ac-mode-map [(meta return)] 'auto-complete)

(defun my-cedet-hook ()
  (add-to-list 'ac-sources 'ac-source-semantic))
(add-hook 'c-mode-common-hook 'my-cedet-hook)

私が読んだすべてのことから、これはオートコンプリート作業を取得するのに十分なはずですが、そうではありません。

4

2 に答える 2

2

オートコンプリート設定により、コンプリートの自動開始が可能ですか?次の変数の値を確認する必要がありますac-auto-show-menu。-完了可能なメニューが表示されるまでの待機時間(デフォルトでは0.5秒)、およびac-auto-start-完了を開始するタイミング(入力する必要のある記号の数-元の値は2)。

オートコンプリートの完全な設定は、(の設定に加えてmy-cedet-hook)次のようになります。

(require 'auto-complete-config)
(ac-config-default)
;; start after 3 characters were typed
(setq ac-auto-start 3)
;; show menu immediately...
(setq ac-auto-show-menu t)
;; explicit call to auto-complete
(define-key ac-mode-map [(meta return)] 'auto-complete)

私は同様の構成を使用しますが、セマンティックデータの完了を示して正常に機能します。名前補完を使用しようとしている言語はどれですか?たとえば、C ++の場合、spp-tableなどにエントリを追加する必要があります。

于 2012-11-04T13:35:33.083 に答える
0

変更してみてください:

(defun my-cedet-hook()(add-to-list'ac-sources' ac-source-semantic))

の中へ:

(defun my-cedet-hook()(add-to-list'ac-sources' ac-source-semantic-raw))

動作するはずです。

于 2013-09-17T21:51:30.743 に答える