CompanyでC / C ++の状況依存の補完を取得するにはどうすればよいですか?


11

Semantic そうです、これを行うことができるように、私は、私はそれが期待通りに動作させることはできません。たとえば、私が#include "Type.h"宣言Type tしたsemantic-complete-analyze-inline場合、いつポイントが後であるかを使用すると、t.一貫してエラーが発生します

「タイプt」のタイプが見つかりません

のすべてのパブリック(またはその他の適切な)メンバーを私に与える代わりにt

ここで探している結果を取得するにはどうすればよいですか?理想的には、セマンティックスが会社のバックエンドとして提供する可能性のあるものをどのように使用できますか?


Type.hが存在し、見つかって、Type型を宣言していることを確認しますか?Type.hとType.cppをType.hと同じディレクトリに作成し、Typeフィールドint fooとを含むクラスを宣言するとchar bar、セマンティックと会社はそのまま動作します。
J David Smith

company-backends変数がcompany-semanticリストにあるかどうかを確認しましたか?そうでない場合は、最初に検索されるように、リストの最初にそれを追加する必要があります
cheezy

興味深いことに、これは私が説明する最小限の例で動作します。(残念ながら、実際の使用例を示すことはできませんが、それは問題ではありません。)Semanticにすべてを再解析させる方法はありますか?
Sean Allred 2014年

@JDavidSmithそれが確実に発見されるようにするにはどうすればよいですか?私が実際に作業しているプロジェクトは、ビルド構造が非常に複雑です。
Sean Allred 2014年

@cheezy company-semanticはにありcompany-backendsます。感謝:)
ショーン・オールレッド2014年

回答:



0

おそらく、ここのチュートリアルと設定に従って、company-clangより良い候補者を獲得したいと思うでしょう。


0

まず、CEDETとedeを初期化する必要があります

(global-ede-mode 1)
(add-to-list 'semantic-default-submodes 'global-semanticdb-minor-mode 1)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-scheduler-mode 1)
(add-to-list 'semantic-default-submodes 'global-semantic-stickyfunc-mode 1)
(add-to-list 'semantic-default-submodes 'global-semantic-highlight-func-mode 1)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-summary-mode t)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-completions-mode t)
(add-to-list 'semantic-default-submodes 'global-srecode-minor-mode t)
(add-to-list 'semantic-default-submodes 'global-semantic-decoration-mode t)
(semantic-mode) ;; Active le mode semantic
(require 'stickyfunc-enhance) ;; multilines concatene dans la header line
(require 'cedet-cscope)

(require 'ecb)
(ede-cpp-root-project "projName"
                  :name "projName Project"
                  :file "~/workspaces/projName/proj.txt" ;; an arbitrary file
                  :include-path '("/src/main/src"
                                  "/src/main/include"
                                  "/src/test/src"
                                  "/src/test/include"
                                  ... )
                  :system-include-path '("/usr/include/ ~/workspaces/install/proj3/lib/ /usr/include/boost/")
                  :spp-table '(("isUnix" . "") ("BOOST_TEST_DYN_LINK" . "")))
;; cedet semantic
(semanticdb-enable-gnu-global-databases 'c-mode t)
(semanticdb-enable-gnu-global-databases 'c++-mode t)
;; You can add this to improve the parse of macro-heavy code:
(require 'semantic/bovine/c)
(add-to-list 'semantic-lex-c-preprocessor-symbol-file "/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/stddef.h")

その後、company-c-headers(https://github.com/randomphrase/company-c-headers)を使用できます

(require 'company-c-headers)
     (add-to-list 'company-backends 'company-c-headers)
     (add-to-list 'company-c-headers-path-system "/usr/include/c++/4.4.7/ /home/me/DEPEDENCIES/LIBXX/lib/ /home/me/DEPEDENCIES/LIBYY/lib /usr/include/boost/"))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.