2010-10-20 28 views
8

मैंने सीईडीईटी 1.0 और ईसीबी 2.40 के साथ 23.1.50.1 emacs सेट किया है (http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el पर एलेक्स ओट्स सेटअप द्वारा अत्यधिक प्रेरित और सीडेट (http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html) के लिए उनके सौम्य परिचय, धन्यवाद एलेक्स)। यह काफी अच्छी तरह से काम करता है, लेकिन मुझे कई परियोजनाओं के साथ काम करते समय कोड-समापन और प्रतीक-संदर्भों को कैसे प्रबंधित किया जाता है, इस बारे में अधिक समझदारी की आवश्यकता है।Emacs/CEDET। एकाधिक परियोजनाओं और कोड पूर्णता

मैं इस तरह एक साधारण Ede परियोजना बना लिया है:

(ede-cpp-root-project "test" 
         :file "~/src/sw/anchor" 
         :include-path '("/Common") 
         :system-include-path '("~/include")) 

जब इस परियोजना भरी हुई है, केवल परियोजना विन्यास में निर्दिष्ट विभिन्न निर्देशिका में पूर्ण करने के लिए देखो अर्थ होगा?

मैंने http://mmmyddd.freeshell.net/blog/Computer/Emacs/usecscopesemanticdbbackend का पालन किया ताकि वेस्कोप का उपयोग semanticdb के लिए बैकएंड के रूप में किया जा सके। मैं semanticdb-enable-cscope-in-buffer चला सकता हूं बिना किसी त्रुटि को फेंकने वाले emacs, लेकिन मुझे कोई जानकारी नहीं है कि अर्थात् मेरे डेटाबेस का उपयोग करता है। क्या मैं अपने प्रोजेक्ट-डेफिनिशन में एक cscope.out का संदर्भ भी जोड़ सकता हूं, इस पर अधिक नियंत्रण रखने के लिए कि कौन से फाइल मेरे वर्तमान संदर्भ में संदर्भों की खोज कर रहे हैं?

विषमताएं के एक जोड़े:

जब मैं किसी नए स्रोत फ़ाइल मैं त्रुटि मिलती है खोलने का प्रयास करें "लागू होते हैं: कार्यक्रम के लिए खोज: ऐसी कोई फ़ाइल या निर्देशिका, वैश्विक" और कुछ नहीं होता। अगर मैं इसे फिर से खोलने की कोशिश करता हूं, तो सब कुछ ठीक है।

जब मैं लंगर फ़ाइल पर इंगित करके एक परियोजना लोड करने का प्रयास है, मैं इस त्रुटि मिलती है: "यदि: गलत प्रकार तर्क: वर्ग-p, Ede-सीपीपी-रूट"

+0

"लागू: प्रोग्राम के लिए खोज: ऐसी कोई फ़ाइल या निर्देशिका, वैश्विक" त्रुटि के लिए, क्या आपने एलेक्स ओट के सेटअप का हिस्सा कॉपी किया है जो "(semanticdb-enable-gnu-global-डेटाबेस ...)" का उपयोग करता है? – Dingo

+0

मैंने ऐसा किया, लेकिन मुझे संदेह है कि मुझे इसकी आवश्यकता नहीं है। तथ्य यह है कि यह "gnu वैश्विक समर्थन" कहता है, मुझे संदेह होना चाहिए था कि समस्या वहां थी :)। धन्यवाद। – anr78

उत्तर

5

जब आप में त्रुटियों के लिए अपने कॉन्फ़िगरेशन, करने के लिए सबसे अच्छी बात यह है:

M-x toggle-debug-on-error RET 

और स्टैक ट्रेस प्राप्त करें जो समस्या क्षेत्र पर इंगित करेगा। अक्सर कॉन्फ़िगरेशन समस्या की पहचान करने में मददगार होता है।

CEDET प्रत्येक फ़ाइल को एक ही प्रोजेक्ट से जोड़ने का प्रयास करेगा, और उस बफर में संचालित सभी आदेश उस प्रोजेक्ट की सीमा तक ही सीमित होंगे। सीएससीओपी समर्थन के लिए, यह भी रूट निर्देशिका की पहचान करने के लिए ईडीई का उपयोग करेगा, और यह cscope.out फ़ाइल को खोजने में मदद करेगा, और यह पूर्णता और संदर्भ उपकरण दोनों से संबंधित है।

अपवाद, निश्चित रूप से, प्रणाली में पथ शामिल है जो आमतौर पर/usr/include या जो भी हो। यह डिफ़ॉल्ट प्रणाली में एक वृद्धि है जिसमें पथ शामिल है जिसे जीसीसी समर्थन के साथ गणना की जाती है। आपकी सी फाइलों में से एक में आप कर सकते हैं:

M-x semantic-c-describe-environment RET 

और यह दिखाना चाहिए कि सेमेन्टिक उपयोग करने का प्रयास करेगा।

दोहरी जांच अगर CScope कोड पूरा करने के लिए किया जा रहा है के लिए, आप के साथ देख सकते हैं:

M-x semanticdb-find-test-translate-path RET 

और कुछ CScope बात के लिए सूची के अंत की जाँच करें।

+0

धन्यवाद एरिक, उत्तर और सॉफ्टवेयर दोनों के लिए। वे आदेश वास्तव में बहुत उपयोगी हैं।वर्तमान में, अर्थात्-सी-वर्णन-पर्यावरण सीस्कोप के बारे में कुछ भी नहीं कहता है, और semanticdb-find-test-translate-path कहता है: * # anr78

+0

ठीक है, सीएससीओपी समर्थन टैग्स की संख्या की गणना करने से परेशान नहीं है CScope के बारे में जानता है, और यह वास्तव में "प्रोजेक्ट" का हिस्सा नहीं है क्योंकि आंतरिक इंटीग्रल दूर हैं, इसलिए सी पर्यावरण को इसके बारे में पता नहीं है। – Eric