Emacsに自動補完機能がない場合、他のIDEと競合することはできません。オートコンプリートにより、私はより効率的なプログラマになります。Auto Complete Mode拡張機能は知っていますが、C ++では機能しません。
C ++のスマートで効率的なオートコンプリートを実現するにはどうすればよいですか?
この質問は、もともとエリア51の提案について Malabarbaが尋ねたものです。C++でインテリジェントなオートコンプリートを取得する方法は?
Emacsに自動補完機能がない場合、他のIDEと競合することはできません。オートコンプリートにより、私はより効率的なプログラマになります。Auto Complete Mode拡張機能は知っていますが、C ++では機能しません。
C ++のスマートで効率的なオートコンプリートを実現するにはどうすればよいですか?
この質問は、もともとエリア51の提案について Malabarbaが尋ねたものです。C++でインテリジェントなオートコンプリートを取得する方法は?
回答:
免責事項:私はアイロニーモードの著者です
スマート自動補完が必要な場合は、company-ironyでirony-modeをお勧めします。
まだ引用されていない別のツールはemacs-ycmdです。
irony-mode
clang_codeCompleteAt
解析されたTU(ただし、保存されていない変更)での呼び出しには3〜5秒かかることに気付きました。あるirony-mode
速いこれよりも?
私のガイドを確認してください。C / C ++での自動補完のためのいくつかのメソッドがリストされています。
これらのオプションは次のとおりです。
Ironyを使用します。Clangを使用し、他のソリューションと比較してセットアップが簡単なので、強くお勧めします。
Emacsの組み込みパーサーを使用します。Emacsパーサー、セマンティック内から取得できる最高のオートコンプリートですが、Linuxカーネルのような大規模なプロジェクトでは時間がかかります。
でcompany-mode
パッケージを使用するcompany-clang
。Clangから自動的にパスを取得できるため、システムインクルードパスにコード補完を提供しますが、プロジェクトローカルの設定を行う必要があります。
で使用company-mode
しcompany-gtags
ます。補完としてGNU Globalから生成されたタグデータベースを使用します。これを使用して、プロジェクトにローカルで完全なコードを提供できます。生成されたデータベース内のすべてをあなたに投げるので、正確ではありません。
rtags
ライブ分析用のサーバーを提供することにより、さらに進んでいます。しかし、純粋なElispソリューションと比較してセットアップは複雑です。
RTags rdm
では、コード補完、コードナビゲーション、リファクタリングにclangを使用する別個のデーモンを実行する必要があります。rdm
また、シンボルのデータベースとして機能します。つまり、オートコンプリートは、を直接呼び出すだけのソリューションよりもはるかに高速ですclang_codeCompleteAt
。
RDMは、面倒なことができ、あなたのプロジェクトのためのコンパイルフラグの情報を必要としますが、からアドバイスに従うならばRTagsのページやシンボリックリンクgcc-rtags-wrapper.sh
にgcc
、g++
、cc
およびc++
RDMは自動的に再コンパイルに新しいコンパイルフラグで更新されます。
解決策1:会社モード+ clang
唯一の問題は、プロジェクトのc / c ++ヘッダーファイルを検索する場所をcompany-modeに伝える必要があることです。
cmakeを使用する場合は、https://github.com/redguardtoo/cpputils-cmakeでセットアップを行うことができます(ヒント:cpputils-cmakeの作成者です)。
または
解決策2:企業モード+ GNUグローバル
言うまでもなく、他の人が述べたように、gnuグローバルcliツールでタグを構築する必要があります。
私はcmake-ideを使用してrtags、flycheck、irony、およびcompany-clangを構成しています。
これで、ビルドシステムとお気に入りの静的解析emacsプラグインを同時に設定できます!
編集:会社clangがオートコンプリートを提供していることに注意してください。これはあなたが探していた機能でした。cmake-ideはflycheckとrtagsを構成することもできます。これにより、さらにIDEに似た機能がいくつか追加されます。
MXセマンティックモード
www.gnu.org/software/emacs/manual/html_node/semantic/Using-Semantic.html#Using-Semantic
&&
タグ表
見つける 。-name "*。[chCH]" -print | etags-
www.gnu.org/software/emacs/manual/html_node/emacs/Tags.html
etags、ctags-Emacsのタグファイルを生成、vi
manpages.debian.org/cgi-bin/man.cgi?query=etags&apropos=0&sektion=0&manpath=Debian+8+jessie&format=html&locale=en
CMi(またはM-TAB)完了点。セマンティックモードが有効な場合、セマンティックパーサーデータを使用しようとします。セマンティックモードが無効または失敗した場合、選択したタグテーブルを使用して完了しようとします(タグを参照)
http://www.gnu.org/software/emacs/manual/html_node/emacs/Symbol-Completion.html#index-C_002dM_002di
M-。(find-tag)タグ名をプロンプト&&定義にジャンプ
http://www.gnu.org/software/emacs/manual/html_node/emacs/Find-Tag.html#index-M_002d_002e