मैं कंपनी के साथ C / C ++ संदर्भ-संवेदनशील पूर्णता कैसे प्राप्त कर सकता हूं?


11

Semantic ऐसा करने में सक्षम प्रतीत होता है, लेकिन मुझे यह काम करने के लिए नहीं मिल सकता है क्योंकि मैं इसकी अपेक्षा करूंगा। उदाहरण के लिए, अगर मैं #include "Type.h"और घोषित करता हूं Type t, semantic-complete-analyze-inlineजब बिंदु के बाद का उपयोग करके t.मुझे लगातार त्रुटि मिलती है

`टाइप टी 'के लिए प्रकार नहीं ढूँढ सकते

इसके बजाय मुझे जनता के सभी (या अन्यथा उपयुक्त) सदस्यों को देने के बजाय t

मैं यहां जो खोज रहा हूं उसका परिणाम कैसे प्राप्त कर सकता हूं? आदर्श रूप में, मैं कंपनी के लिए एक बैकेंड के रूप में जो भी शब्दार्थ प्रदान कर सकता हूं, उसका उपयोग कैसे कर सकता हूं?


क्या आपको यकीन है कि Type.h मौजूद है, पाया जा रहा है, और प्रकार की घोषणा करता है? यदि मैं Type.h और Type.cpp को एक ही डाइरेक्टरी में Type.h के साथ बनाता हूँ , तो Typeफ़ील्ड के साथ एक क्लास घोषित करता हूँ int fooऔर char bar, शब्दार्थ और कंपनी बॉक्स से बाहर काम करते हैं।
जे डेविड स्मिथ

क्या आपने सत्यापित किया है कि company-backendsचर company-semanticइसकी सूची में है? यदि नहीं, तो आप इसे सूची में पहले से जोड़ना चाहते हैं ताकि यह पहली बार खोजा जाए
cheezy

दिलचस्प है, यह मेरे द्वारा वर्णित न्यूनतम उदाहरण के साथ काम करता है। (दुर्भाग्य से मैं वास्तव में वास्तविक उपयोग का मामला नहीं दे सकता, लेकिन इससे कोई फर्क नहीं पड़ना चाहिए।) क्या कोई ऐसा तरीका है जिससे मैं सिमेंटिक को सबकुछ ठीक करने के लिए मजबूर कर सकता हूं?
सीन ऑल्रेड

@JDavidSmith मैं यह कैसे सुनिश्चित कर सकता हूं कि यह पाया जा रहा है? जिस प्रोजेक्ट के साथ मैं वास्तव में काम कर रहा हूं, वह इसकी संरचना में बहुत जटिल है।
सीन एलेड

@cheezy company-semanticमें है company-backends; धन्यवाद :)
सीन एलाड

जवाबों:


1

मेरा सुझाव है कि सिमेंटिक के बजाय पूर्णता के लिए कंपनी-विडंबना के साथ विडंबना-मोड का उपयोग करना आम तौर पर बहुत धीमा और सरलीकृत है - यानी। जब आप सोचेंगे कि यह अक्सर पूरा नहीं होता है।


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

तब आप कंपनी-सी-हेडर्स ( 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/"))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.