Şirket ile C / C ++ içeriğe duyarlı tamamlamayı nasıl edinebilirim?


11

Semantic bunu yapabiliyor gibi görünüyor , ama beklediğim gibi çalışmasını sağlayamıyorum. Örneğin, ben #include "Type.h"ve beyan edersem Type t, semantic-complete-analyze-inlinepoint is after after kullanmak t.bana sürekli olarak hata veriyor

Tip t için türler bulunamıyor

bana tüm kamu (ya da başka türlü uygun) üyelerini vermek yerine t.

Burada aradığım sonucu nasıl alabilirim? İdeal olarak, Semantic'in sağlayabileceği her şeyi Şirket için arka uç olarak nasıl kullanabilirim?


Type.h dosyasının bulunduğundan, bulunduğundan ve Type türünü bildirdiğinden emin misiniz? Type.h ve Type.cpp ile aynı dizinde Type.h Typeile alanlar int foove char barsemantik ve şirket sınıfını bildirirsem kutunun dışında çalışırsam.
J David Smith

company-backendsDeğişkenin company-semanticlistesinde olup olmadığını doğruladınız mı ? Değilse, listenin ilkine başa eklemek isteyeceksiniz, böylece ilk olarak aranacak
cheezy

İlginçtir, tarif ettiğim minimal örnekle çalışır. (Ne yazık ki gerçek kullanım durumunu gerçekten veremiyorum, ama önemli olmamalı.) Semantik'i her şeyi onarmaya zorlamanın herhangi bir yolu var mı?
Sean Allred

@JDavidSmith Bulunduğundan nasıl emin olabilirim? Aslında birlikte çalıştığım proje yapı yapısında çok karmaşık.
Sean Allred

@ cheezy company-semanticvar company-backends; teşekkürler :)
Sean Allred

Yanıtlar:


1

Anlamsallık genellikle çok yavaş ve basit olduğu için semantik yerine tamamlama için ironi modunu şirket ironisi ile kullanmanızı öneririm . genellikle olması gerektiğini düşündüğünüzde tamamlanma sunmaz.


0

Muhtemelen burada öğreticiyi takip etmek ve company-clangdaha iyi adaylar edinmek için kurulum yapmak istiyorsunuz.


0

İlk önce CEDET ve ede'yi başlatmanız gerekiyor

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

şirket-c-başlıklarını kullanabilirsiniz ( 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/"))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.