Làm cách nào tôi có thể hoàn thành phân biệt ngữ cảnh C / C ++ với Công ty?


11

Semantic dường như có thể làm điều này, nhưng tôi không thể làm cho nó hoạt động như tôi mong đợi. Ví dụ: nếu tôi #include "Type.h"và khai báo Type t, sử dụng semantic-complete-analyze-inlinethời điểm là sau khi t.liên tục đưa ra lỗi cho tôi

Không thể tìm thấy các loại cho `Loại t '

thay vì cho tôi tất cả các thành viên của cộng đồng (hoặc nếu không thích hợp) t.

Làm thế nào tôi có thể nhận được kết quả mà tôi đang tìm kiếm ở đây? Lý tưởng nhất, làm cách nào tôi có thể sử dụng bất kỳ Semantic nào có thể cung cấp làm phụ trợ cho Công ty?


Bạn có chắc chắn Type.h tồn tại, đang được tìm thấy và khai báo Loại Loại không? Nếu tôi tạo Type.h và Type.cpp trong cùng thư mục với Type.h khai báo một lớp Typevới các trường int foochar bar, ngữ nghĩa và công ty sẽ hoạt động tốt.
J David Smith

Bạn đã xác minh nếu company-backendsbiến có company-semantictrong danh sách của nó? Nếu không, bạn sẽ muốn thêm nó vào đầu danh sách để nó được tìm kiếm đầu tiên
táo bạo

Thật thú vị, nó hoạt động với ví dụ tối thiểu tôi mô tả. (Thật không may, tôi thực sự không thể đưa ra trường hợp sử dụng thực tế, nhưng nó không thành vấn đề.) Có cách nào tôi có thể buộc Semantic lặp lại mọi thứ không?
Sean Allred

@JDavidSmith Làm thế nào tôi có thể đảm bảo nó được tìm thấy? Dự án tôi thực sự đang làm việc rất phức tạp trong cấu trúc xây dựng của nó.
Sean Allred

@cheezy company-semanticđang ở company-backends; cảm ơn :)
Sean Allred

Câu trả lời:



0

Bạn có thể muốn làm theo hướng dẫn ở đây và thiết lập company-clangđể có được các ứng cử viên tốt hơn.


0

Trước tiên, bạn cần khởi tạo CEDET và 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")

sau đó bạn có thể sử dụng tiêu đề của công ty ( 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/"))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.