2012-05-19 13 views
5

私はemacsのC++開発のための自動補完ポップアップを行うプラグインを探しています。私が試したことは、Cedet SemanticsとAutocompletion modeです。私はすでにいくつかの単語がある限り、変数と関数の名前を完成させるという点ではきれいです。例えば、私は長い間、私はこのemacsのオートコンプリート機能を求める

int main(){ 
foo bar; 
bar.get... 
} 

プラグインが飛び出る何の問題もないの入力を始めとして、fooとmainメソッドでは、整数1

class foo{ 
    int getInt(){return 1}; 
}; 

を返す関数という名前のクラスを持っていますbar.getInt()のような提案。しかし、私が本当に探しているのはEclipseのようなものです。私が "ドット"を押すとすぐに、私のために可能な選択肢が生成される可能性があります。それはEmacsでも可能ですか?ありがとう

答えて

2

これは自動完了& CEDETの設定によります。オートコンプリートは、複数の文字が入力された後にのみ完了を表示するように設定されているようです。 ac-auto-start変数の値をチェックすることができます。数値の場合は、この数の文字の後に自動補完が呼び出されます。 もう1つ重要なことは、ac-sources変数にあるものです.CEDETでの作業には、ac-source-semantic-rawまたはac-source-semantic完了ソースを使用する必要があります。自動終了まで .または->後、あなたはセマンティックのを使用しようとすることができ、組み込みの完成のようなもので:

(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) 

P.S.あなたはmy article on CEDET & C++を見ましたか?

+1

Hey Alex!実際に私はあなたの記事を見て、あなたがしたことを真似しようとしていますが、それを正しく構成できませんでした。まあ、私はいくつかの質問があります。***ドット挿入***について、私はあなたが上で提案したことをやったが、毎回**バーの後の場合のように***ドット**をタイプした、私はこのメッセージを持っています*** Symbolの関数定義は無効です:eieio-build-class-alist ***と普通のドット記号を挿入することすらできませんでした。また、*** ac-source ***、自動補完パケットを使用していますが、ac-sourceのようなものです。彼らの関係は何か、私は混乱している。ありがとうございます –

+0

btw、私は*** ac-auto-start **変数を4に設定しましたが、Emacsを起動するたびに、CHを入力して変数の値を手動でチェックする必要がありました** ac-auto - スタート***まず、私の***ドット***の挿入後に動作する、それ以外の場合は、***の定義を取得し続けている***エラーです。ちなみに、***ドット***はシステムのヘッダを見つけるのにも問題があるようですが、Vectorオブジェクトの後にドットをタイプしたように、私が望むようにsize()関数がポップアップしているのを見ることができませんでした。ありがとうございました –

+0

うん、それは奇妙です - eieioが正しく読み込まれていないように見えます。セマンティックのどのバージョンを使用していますか? –

0

私は、特に、c​​makeプロジェクトの下で、宇宙は本当に圧倒的であることを発見しました。

私が使用することをお勧めします https://github.com/Andersbakken/rtags スマートコンプリートを使用するだけでなく入力時にもエラーが表示されます。必要なemacsパッケージを入手した後、これをあなたのinitファイルに追加してください。

(require 'rtags) 
(require 'popup) 
(require 'rtags-ac) 
(setq rtags-completions-enabled t) 
(rtags-enable-standard-keybindings c-mode-base-map) 
(add-hook 'c++-mode-hook 
      (lambda() 
      (setq ac-sources '(ac-source-rtags) 
))) 
関連する問題