2012-03-26 8 views
8

私はEmacsでオートコンプリートとyasnippetを使用していますが、その設定によって混乱します。私は私の.emacsに次のコードを配置:emacsのオートコンプリートとyasnippetについて

(add-to-list 'load-path "~/.emacs.d/plugins/yasnippet") 
(require 'yasnippet) 
(yas/global-mode 1) 
(global-set-key (kbd "C-i") 'yas/expand) 
(setq yas/also-auto-indent-first-line t) 

(add-to-list 'load-path "~/.emacs.d/plugins/autocomplete/") 
(require 'auto-complete-config) 
(add-to-list 'ac-dictionary-directories "~/.emacs.d/plugins/autocomplete/ac-dict") 
(ac-config-default) 
(setq ac-use-menu-map t) 
(define-key ac-menu-map "\C-n" 'ac-next) 
(define-key ac-menu-map "\C-p" 'ac-previous) 

(defun ac-js-mode() 
(setq ac-sources '(ac-source-yasnippet 
       ac-source-symbols 
       ac-source-words-in-buffer 
       ac-source-words-in-same-mode-buffers 
       ac-source-files-in-current-dir 
       ))) 
(add-hook 'js-mode-hook 'ac-js-mode) 

私はオートコンプリートポップアップメニューの第一候補としてyasnippet設定しようとしています。しかし、以下の例が示すように、これは私の現在の設定では機能しません。単語forを入力すると、formatItemが最初の位置にあり、forが2番目にあります。 formatItemは現在のバッファ内のローカル関数です。

for_____________ 
|formatItem  | 
|for   a| 
|for   s| 
|force   s| 
|foreachv  s| 
---------------- 

だから私の質問は:どのように私はyasnippetオートコンプリートでの第一候補にすることができますか?そして、私の.emacs設定に何かがありませんか?

何か助けていただければ幸いです。

+0

私は答えを知らないが、自動補完は、組み込みの学習システムを持っているので、より頻繁にあなたが候補者を選択します完了すれば、次回は高くなるでしょう。だから、それをしばらく使用するだけでよく、頻繁に使用されるすべてのスニペットが自動的に一番上に浮かびます。 – Tom

答えて

5

ac-config-defaultは、適切なデフォルトのac-sources値を設定するためのフックをインストールします。これらのフック(特にac-common-setup)は、設定を妨げる可能性があります。

あなたはそれがあなたのカスタム値との比較によって変更されたかどうかを確認するためにjs-modeバッファにac-sourcesC-HのVac-sources)の実際の値を見て、これを確認することができます。

  • は、それが実行された後 ac-sourcesの先頭に ac-source-yasnippetを置くために障害のあるフックに助言、

    • 停止ac-config-defaultを使用して、すべてのautocomplete設定をspecifiy:この場合は

      は、私は2つのソリューションを参照してください。 AC-共通セットアップが実際にトラブルであると仮定すると、これは次のようになります。

    (defadvice ac-common-setup (after give-yasnippet-highest-priority activate) 
        (setq ac-sources (delq 'ac-source-yasnippet ac-sources)) 
        (add-to-list 'ac-sources 'ac-source-yasnippet)) 
    
    +0

    お返事ありがとうございます。あなたが説明したとおりです。しかし、私は上記の方法2をはっきりと理解していません。それについてもっと教えていただけますか?ありがとうございます。 – Boris

    +0

    @Ryan私の編集を参照してください。 – Francesco

    +1

    こんにちは、あなたのコードを私の.emacsに置いた後、実際のac-sourcesの値は、j​​sファイルのCh vが出力するところで正しいと思われます。その値は です(ac-source-yasnippet ac-source-filename ac- source-symbols ac-source-words-in-buffer ac-source-words-in-same-mode-buffers ac-source-files-in-current-dir).Local in buffer set.js;しかし、私が単語 'for'をタイプすると、ポップアップメニューは私が質問で与えたグラフを与えます。それについてはわかりません。 – Boris

    関連する問題