Emacs के लिए टैग: etags, Ebrowse, cscope, GNU Global और विपुल ctags के बीच संबंध


102

मैं C ++ प्रोजेक्ट्स पर काम करता हूं, और मैं StackOverflow में टैग के बारे में CEDET और अन्य थ्रेड्स के लिए एलेक्स ओट के गाइड के माध्यम से चला गया , लेकिन मैं अभी भी इस बात को लेकर उलझन में हूं कि ऑटोकंप्लीशन, परिभाषाओं के नेविगेशन की सुविधा के लिए Emacs इन विभिन्न टैग सिस्टम के साथ कैसे हस्तक्षेप करता है। कोड आधार या डॉक्टर-स्ट्रिंग्स का पूर्वावलोकन।

  1. अंतर के बीच (जैसे सुविधाओं के संदर्भ में) क्या है etags, ebrowse, exuberant ctags, cscope, GNU Globalऔर GTags? Emacs में उनका उपयोग करने के लिए मुझे क्या करने की आवश्यकता है ?

  2. क्या मुझे सिमेंटिक / सेनेटर (CEDET) की आवश्यकता है अगर मैं टैग / स्वतः पूर्ण प्रतीकों को नेविगेट करने के लिए टैग का उपयोग करना चाहता हूं?

  3. शब्दार्थ इन विभिन्न टैग उपयोगिताओं के शीर्ष पर तालिका में क्या लाता है? यह इन उपकरणों के साथ कैसे इंटरफेस करता है?


2
ट्रंक द्वारा देखते हुए , जिस GTagsपरियोजना से आप जुड़े हैं, वह काफी मृत है। अगर किसी के बारे में बात कर रहे हैं gtags, वे शायद GNU ग्लोबल का उल्लेख कर रहे हैं।
गॉर्डन गुस्ताफसन

जवाबों:


71

यह एक अच्छा सवाल है जैसा कि मैंने हाल ही में यहां पढ़ा है, इसलिए मैं अधिक विस्तार से अंतर बताने की कोशिश करूंगा:

बिंदु 1:

etagsऔर ctagsदोनों स्रोत फ़ाइलों में पाई जाने वाली भाषा वस्तुओं की एक सूचकांक (उर्फ टैग / टीएजीएस) उत्पन्न करते हैं जो इन वस्तुओं को टेक्स्ट एडिटर या अन्य उपयोगिता द्वारा जल्दी और आसानी से स्थित होने की अनुमति देता है। एक टैग एक भाषा वस्तु को दर्शाता है जिसके लिए एक सूचकांक प्रविष्टि उपलब्ध है (या, वैकल्पिक रूप से, उस वस्तु के लिए बनाई गई सूचकांक प्रविष्टि)। Ctags द्वारा उत्पन्न टैग मेटाडेटा के मामले में अधिक समृद्ध हैं, लेकिन Emacs अतिरिक्त डेटा वैसे भी व्याख्या नहीं कर सकते हैं, इसलिए आपको उन्हें कमोबेश उसी पर विचार करना चाहिए (मुख्य लाभ ctagsअधिक भाषाओं के लिए इसका समर्थन होगा)। टैग फ़ाइलों के लिए प्राथमिक उपयोग कक्षा / विधि / फ़ंक्शन / निरंतर / आदि घोषणा / परिभाषाएँ देख रहा है।

cscopeबहुत अधिक शक्तिशाली जानवर है (कम से कम जहाँ तक C / C ++ और जावा का संबंध है)। हालांकि यह कमोबेश एक ही सिद्धांत पर काम करता है (उपयोगी मेटाडेटा की एक फ़ाइल जनरेट करता है) यह आपको कुछ कट्टरपंथी चीजें करने की अनुमति देता है जैसे कि एक प्रतीक के सभी संदर्भों को ढूंढें, देखें कि किसी फ़ंक्शन को कहां आमंत्रित किया जा रहा है, आदि (आप परिभाषाएं भी पा सकते हैं) ।

इसका सारांश प्रस्तुत करना:

ctagsएक आपको प्रतीक घोषणा / परिभाषाओं में नेविगेट करने की अनुमति देता है (कुछ लोग एक तरफ़ा देखने को क्या कहेंगे )। ctagsकई भाषाओं के लिए उपयोगी एक सामान्य प्रयोजन उपकरण है।

दूसरी ओर (जैसा कि परियोजना के पृष्ठ पर बताया गया है) cscopeआपको निम्नलिखित की अनुमति देता है:

  • एक प्रतीक की घोषणा पर जाएं
  • एक प्रतीक के सभी संदर्भों की एक चयन करने योग्य सूची दिखाएं
  • किसी भी वैश्विक परिभाषा के लिए खोजें
  • एक फ़ंक्शन द्वारा बुलाया कार्य
  • एक फ़ंक्शन कॉलिंग फ़ंक्शन
  • एक पाठ स्ट्रिंग के लिए खोजें
  • एक नियमित अभिव्यक्ति पैटर्न के लिए खोजें
  • एक फ़ाइल खोजें
  • एक फ़ाइल सहित सभी फ़ाइलों का पता लगाएं

इस बिंदु पर किसी को कोई आश्चर्य नहीं होना चाहिए, कि जब मैं सी / सी ++ परियोजनाओं से निपटता हूं तो मैं cscopeबहुत कम उपयोग करता हूं और देखभाल बहुत कम करता हूं ctags। अन्य भाषाओं के साथ काम करते समय स्थिति स्पष्ट रूप से उलट हो जाएगी।

बिंदु 2।

बुद्धिमान स्वतः पूर्णता के लिए आपको एक सच्चे स्रोत कोड पार्सर (जैसे अर्थ) की आवश्यकता होती है, अन्यथा आप अपने अनुप्रयोगों में वस्तुओं के प्रकार (उदाहरण के लिए) और उन पर लागू किए जा सकने वाले तरीकों को नहीं जान पाएंगे। आपके पास कई अलग-अलग स्रोतों के आधार पर एक स्वतः पूर्णता हो सकती है, लेकिन सर्वोत्तम परिणाम प्राप्त करने के लिए आपको अंततः एक पार्सर की आवश्यकता होगी। सिंटैक्स हाइलाइटिंग के लिए समान है - वर्तमान में एमएसीएस प्रमुख मोड में सिंटैक्स हाइलाइटिंग बस नियमित अभिव्यक्तियों पर आधारित है और यह बहुत नाजुक और त्रुटि प्रवण है। उम्मीद है कि Emacs 23.2 में शब्दार्थ के समावेश के साथ (इससे पहले यह एक बाहरी पैकेज हुआ करता था) हम इसके लिए और अधिक उपयोग देखना शुरू कर देंगे (जैसे इसका उपयोग बफर स्रोत कोड का विश्लेषण करने के लिए इसे ठीक से उजागर करने के लिए)

चूंकि Emacs 24.1 सिमेंटिक Emacs पूर्ण ढांचे से प्रयोग करने योग्य है। इसका परीक्षण करने का सबसे आसान तरीका एक सी स्रोत कोड फ़ाइल खोलना और टाइप करना है M-TABया C-M-iआपके लिए अर्थ आटोमैटिक रूप से पूरा होता है। उन भाषाओं के लिए जहां शब्दार्थ डिफ़ॉल्ट रूप से सक्षम नहीं है, आप इसे अपनी पसंद के प्रमुख मोड हुक में निम्न पंक्ति जोड़ सकते हैं:

(add-to-list 'completion-at-point-functions 'semantic-completion-at-point-function)

बिंदु 3।

सिमेंटिक सही कोड जागरूकता लाता है (कुछ भाषाओं के लिए जो वर्तमान में समर्थन करता है) और आईडीई और एमएसीएस के बीच की खाई को बंद करता है। यह वास्तव में जैसे उपकरणों के साथ इंटरफेस नहीं है etagsऔर cscopeहै, लेकिन इसका मतलब यह नहीं आप उन्हें एक साथ उपयोग नहीं कर सकते।

उम्मीद है कि मेरे स्पष्टीकरण समझ में आएंगे और आपके लिए उपयोगी होंगे।

पुनश्च मैं बहुत परिचित नहीं हूँ globalऔर ebrowse, लेकिन अगर स्मृति मेरी सेवा करती है तो उन्होंने etags का उपयोग किया।


1
यह भी खूब रही। धन्यवाद! क्या आप जानते हैं कि मैं cscopeEmacs में कैसे इस्तेमाल कर सकता हूँ ? मैंने यहाँxcscope.el EmacsWiki के बारे में पढ़ा लेकिन मुझे फ़ाइल का लिंक नहीं मिला। इसके अलावा, Emacs के साथ पाने के लिए आप किस फाइल का उपयोग करते हैं ? .elcscope
एमेलियो वाज़क्वेज़-रीना

1
xcscope.elमें स्थित है cscope/contrib/xcscope/(यह वितरण पैकेज में है)। यही मैं उपयोग करता हूं।
बोहिदार बटसुव

एक और सवाल: कैसे semanticतुलना करता है cscope? स्रोत कोड के माध्यम से नेविगेट करने के संदर्भ में, शब्दार्थ कोई कार्यक्षमता प्रदान cscopeकरता है जो नहीं करता है? क्या आप दोनों का उपयोग करते हैं?
एमिलियो वाज़केज़-रीना

4
मुझे विश्वास नहीं है कि ग्नू ग्लोबल उपयोग etags, btw। IIRC इसे बनाए रखता है और एक 'उचित' डेटाबेस (फ्लैट टेक्स्ट फ़ाइल को स्कैन करने के बजाय) को क्वेरी करता है, जिसमें टैगिंग को अपडेट करने के लिए क्वेरी (और विशेष रूप से) दोनों के लिए कई प्रदर्शन लाभ हैं।
फिल्स

@BozhidarBatsov जब आपने कहा For languages where semantic is not enabled by default, you can add the following line to your major mode hook of choice ... <code>। वह कोड स्निपेट वास्तव में क्या करता है?
एमेलियो वाज़क्वेज़-रीना

45

मैं 1 में कुछ स्पष्टीकरण जोड़ने की कोशिश करूंगा।

यह क्या है?

  • Etags 'TAGS' फ़ाइल बनाने के लिए एक कमांड है जो Emacs के लिए टैग फ़ाइल है। आप etags.el के साथ फ़ाइल का उपयोग कर सकते हैं जो emacs पैकेज का हिस्सा है।
  • Ctags 'टैग ’फ़ाइल उत्पन्न करने के लिए एक कमांड है जो vi के लिए टैग फ़ाइल है। अब Exuberant Ctags -e विकल्प द्वारा 'TAGS' फ़ाइल उत्पन्न कर सकते हैं, और 41 प्रोग्रामिंग भाषाओं का समर्थन कर सकते हैं।
  • Cscope C भाषा के लिए एक ऑल-इन-वन स्रोत कोड ब्राउज़िंग टूल है। इसमें स्वयं ठीक CUI (चरित्र उपयोगकर्ता इंटरफ़ेस) और टैग डेटाबेस (cscope.in.out, cscope.out, cscope.po.out) हैं। आप xcscope.el का उपयोग करके Emacs से cscope का उपयोग कर सकते हैं जो cscope पैकेज का हिस्सा है।
  • GNU GLOBAL एक सोर्स कोड टैगिंग सिस्टम है। यद्यपि यह उपरोक्त उपकरणों के समान है, यह उनसे अलग है कि यह किसी भी संपादक से निर्भर है, और इसके पास कमांड लाइन को छोड़कर कोई उपयोगकर्ता इंटरफ़ेस नहीं है। Gtags GLOBAL (GTAGS, GRTAGS, GPATH) के लिए टैग फ़ाइलों को बनाने के लिए एक कमांड है। आप gtags.el का उपयोग करके emacs से GLOBAL का उपयोग कर सकते हैं जो GLOBAL पैकेज का हिस्सा है। इसके अतिरिक्त, इसके लिए कई संभावित पुस्तकालय हैं (xgtags.el, ggtags.el, कुछ भी-gtags.el, helm-gtags.el, आदि)।

तुलना

  • Ctags और etags केवल परिभाषाओं का इलाज करते हैं। Cscope और GNU GLOBAL न केवल परिभाषाएँ बल्कि संदर्भ भी मानते हैं।
  • Ctags और etags एक फ्लैट टेक्स्ट टैग फ़ाइल का उपयोग करते हैं। Cscope और GNU GLOBAL कुंजी-मूल्य टैग डेटाबेस का उपयोग करते हैं।
  • Cscope और GNU GLOBAL में सर्च इंजन और टैग फ़ाइलों की वृद्धिशील अद्यतन करने जैसी सुविधा है।

मेल

आप Exuberant Ctags की समृद्ध भाषा समर्थन और GNU GLOBAL की डेटाबेस सुविधा को GLBAL के प्लग-इन पार्सर के रूप में ctags का उपयोग करके जोड़ सकते हैं।

अनुसरण का प्रयास करें: (GLOBAL-6.0 की आवश्यकता होती है, विपुल Ctags-5.5 या बाद में क्रमशः)

भवन GNU अंतर्राष्ट्रीय:

$ ./configure --with-exuberant-ctags=/usr/local/bin/ctags
$ sudo make install

उपयोग:

$ export GTAGSCONF=/usr/local/share/gtags/gtags.conf
$ export GTAGSLABEL=ctags
$ gtags                     # invokes Exuberant Ctags internally
$ emacs -f gtags-mode       # load gtags.el

(हालाँकि, आप इस पद्धति से संदर्भों का इलाज नहीं कर सकते, क्योंकि ctags संदर्भों का इलाज नहीं करते हैं।)

आप cscope का उपयोग GNU GLOBAL के ग्राहक के रूप में भी कर सकते हैं। GLOBAL पैकेज में 'gtags-cscope' नाम का एक कमांड शामिल है, जो cscope का एक पोर्ट है, अर्थात यह cscope ही है सिवाय इसके कि वह cscope के बजाय एक सर्च इंजन के रूप में GLOBAL का उपयोग करता है।

$ gtags-cscope          # this is GLOBAL version of cscope

संयोजनों के साथ, आप 41 भाषाओं के लिए cscope का उपयोग कर सकते हैं।

सौभाग्य!


1
उबंटू जैसे डेबियन और डेरिवेटिव्स के उपयोगकर्ताओं के लिए: GNU GLOBAL वेबपेज चेतावनी देता है कि .deb संकुल जो इन लिनक्स वितरणों के साथ जहाज में दिनांकित है, और इसका उपयोग नहीं किया जाना चाहिए। मेरे मामले में GLOBAL 5.7.1 संस्करण पर था, और मैं Emacs 24 पर ठीक से काम करने के लिए gtags.el, ggtags.el या helm-gtags.el नहीं प्राप्त कर सका। एक्सयूब्रेन्ट सीटीजीएस (के लिए समर्थन से GNU GLOBAL 6.5 को संकलित करना) मैंने 5.8 का इस्तेमाल किया) एक ट्रीट का काम किया। (उत्कृष्ट संकेत @shigio के लिए धन्यवाद)।
रोब

9

TAGS फ़ाइलों में परिभाषाएँ होती हैं

एक TAGSफ़ाइल जहां कार्य करता है और कक्षाएं परिभाषित कर रहे हैं की एक सूची है। यह आमतौर पर एक परियोजना की जड़ में रखा जाता है और इस तरह दिखता है:

^L
configure,3945
as_fn_success () { as_fn_return 0; }^?as_fn_success^A180,5465
as_fn_failure () { as_fn_return 1; }^?as_fn_failure^A181,5502
as_fn_ret_success () { return 0; }^?as_fn_ret_success^A182,5539
as_fn_ret_failure () { return 1; }^?as_fn_ret_failure^A183,5574

यह Emacs को परिभाषाएँ खोजने में सक्षम बनाता है। बेसिक नेविगेशन इन-बिल्ट-इन है find-tag, लेकिन etags-selectजब कई मैच होते हैं तो एक अच्छे यूआई प्रदान करता है।

आप कोड पूर्णता के लिए TAGS फ़ाइलों का उपयोग भी कर सकते हैं। उदाहरण के लिए, कंपनी के etags बैकएंड TAGS फ़ाइलों का उपयोग करता है

TAGS फाइलें विभिन्न उपकरणों द्वारा निर्मित की जा सकती हैं

ctags(पूर्व में 'यूनिवर्सल ctags' या 'exuberant ctags' के रूप में जाना जाता है) TAGS फ़ाइलों को जनरेट कर सकता है और भाषाओं की व्यापक श्रेणी का समर्थन करता है। यह सक्रिय रूप से जीथब पर बनाए रखा जाता है।

एमएसीएस दो कार्यक्रमों के साथ जहाजों को बनाता है जो टीएजीएस फाइलें उत्पन्न करते हैं, जिन्हें कहा जाता है etagsऔर ctags। Emacs ' ctagsबस है etagsसार्वभौमिक ctags के रूप में ही CLI इंटरफेस के साथ। भ्रम से बचने के लिए, कई डिस्ट्रो इन कार्यक्रमों का नाम बदल देते हैं (जैसे ctags.emacs24डेबियन पर)।

TAGS फ़ाइलों को बनाने के लिए भाषा विशिष्ट उपकरण भी हैं, जैसे jsctagsऔर hasktags

अन्य फ़ाइल स्वरूप

ebrowseएक सी कार्यक्रम Emacs के साथ भेज दिया है। यह C / C ++ कोड को अनुक्रमित करता है और एक BROWSEफ़ाइल उत्पन्न करता है। ebrowse.el सामान्य रूप से परिभाषा और पूर्णता प्रदान करता है। आप BROWSEक्लासेस / फ़ंक्शन के कोडब्यू को परिभाषित करने के लिए फ़ाइल को सीधे Emacs में खोल सकते हैं ।

जीएनयू वैश्विक अपने स्वयं के डेटाबेस प्रारूप, एक के होते हैं जो GTAGS, GRTAGSऔर GPATHफ़ाइल। आप इन फ़ाइलों को gtagsकमांड के साथ उत्पन्न कर सकते हैं , जो C / C ++ कोड को पार्स करते हैं। अन्य भाषाओं के लिए, GNU ग्लोबल सार्वभौमिक ctags द्वारा उत्पन्न फ़ाइलों को पढ़ सकता है।

जीएनयू ग्लोबल अधिक परिष्कृत प्रश्न पूछने के लिए सीएलआई इंटरफ़ेस भी प्रदान करता है, जैसे 'यह प्रतीक कहां है?'। यह Emacs पैकेज gtags.el के साथ जहाज करता है, लेकिन ggtags.el GNU Global डेटाबेस तक पहुँचने के लिए भी लोकप्रिय है।

Cscope GNU Global की भावना के समान है: यह C / C ++ को अपने डेटाबेस प्रारूप में पार्स करता है। यह all इस कॉलरटोन के सभी कॉलर्स / कैलिस को खोजने ’जैसे सवालों का जवाब भी दे सकता है।

इस HN चर्चा को वैश्विक और cscope की तुलना में भी देखें ।

क्लाइंट / सर्वर प्रोजेक्ट

एक निरंतर सर्वर का उपयोग करके rtags पर्स और इंडेक्स C / C ++। यह क्लैंग पार्सर का उपयोग करता है, इसलिए यह सी ++ को वास्तव में अच्छी तरह से संभालता है। यह सर्वर को क्वेरी करने के लिए Emacs पैकेज के साथ जहाज करता है।

google-gtags एक प्रोजेक्ट था जहां एक बड़ी TAGS फ़ाइल को सर्वर पर संग्रहीत किया जाएगा। जब आप सर्वर से पूछताछ करते हैं, तो यह TAGS फ़ाइल का एक सबसेट प्रदान करेगा जो आपकी खोज के लिए प्रासंगिक था।

शब्दार्थ (CEDET)

सिमेंटिक एक अंतर्निहित एमएसीएस पैकेज है जिसमें सी / सी ++ के लिए एक पार्सर होता है, इसलिए यह परिभाषाएं भी पा सकता है। यह TAGS फ़ाइलों, csope डेटाबेसों और अन्य स्रोतों से भी डेटा आयात कर सकता है। CEDET में IDE शैली की कार्यक्षमता भी शामिल है जो इस डेटा का उपयोग करती है, जैसे कि श्रेणी पदानुक्रमों का UML चित्र उत्पन्न करना।


7

[ shigio के उत्तर से अपडेट किया गया ]

मैं प्रश्न के भाग 1 में कुछ स्पष्टीकरण जोड़ने की कोशिश करूँगा।

यह क्या है?

  1. Etags एक TAGSफ़ाइल बनाता है जो Emacs के लिए टैग फ़ाइल स्वरूप है । आप Etags फ़ाइल का उपयोग कर सकते हैं etags.elजिसके साथ Emacs का हिस्सा है।
  2. Ctagsकिसी भी चीज़ के लिए सामान्य शब्द है tagsजो एक फ़ाइल उत्पन्न कर सकता है , जो कि Vi के लिए देशी टैग फ़ाइल प्रारूप है। यूनिवर्सल Ctags (उर्फ UCtags, पूर्व में Exuberant Ctags) भी -eविकल्प के साथ Etags उत्पन्न कर सकते हैं ।
  3. Cscope अपनी ही टैग डेटाबेस (साथ, (सी ++ और जावा के लिए कम समर्थन के साथ) सी के लिए एक सब-इन-वन स्रोत कोड ब्राउज़िंग उपकरण है cscope.in.out, cscope.out, cscope.po.out) और TUI । Cscope समर्थन अंतर्निहित-विम तक है; आप Xcscope.el पैकेज का उपयोग करके Emacs से Cscope का उपयोग कर सकते हैं । Cscope- आधारित GUIs भी हैं ।
  4. GNU GLOBAL (उर्फ Gtags) अभी तक एक अन्य स्रोत कोड टैगिंग सिस्टम है (महत्वपूर्ण अंतरों के साथ - अगला भाग देखें), इसमें वह टैग फ़ाइलें भी बनाता है।

तुलना

  • Ctags और Etags केवल परिभाषाओं (जैसे, चर और कार्यों) का इलाज करते हैं। Cscope और Gtags भी संदर्भों का इलाज करते हैं।
  • Ctags और Etags टैग फ़ाइलें समतल हैं । Cscope और Gtags टैगफाइल्स अधिक शक्तिशाली कुंजी-मूल्य डेटाबेस हैं , जो वृद्धिशील अद्यतन की अनुमति देता है (उदाहरण के लिए)।
  • Cscope और Gtags में एक समान grepखोज इंजन है।
  • Ctags में अधिक भाषाओं और डेटा प्रारूपों के लिए अंतर्निहित समर्थन है: यूनिवर्सल Ctags पार्सर्स की वर्तमान-इन-रिपॉजिटरी सूची देखें । UCtags ने यह भी प्रलेखित किया है कि अपने स्वयं के पार्सर को कैसे विकसित किया जाए
  • Cscope और Gtags संपादक-स्वतंत्र हैं।
  • Gtags अपना स्वयं का उपयोगकर्ता इंटरफ़ेस प्रदान नहीं करता है, लेकिन वर्तमान में (अक्टूबर 2016) कमांडलाइन (CLI), Emacs और रिश्तेदारों, Vi और रिश्तेदारों, less(पेजर), Doxygen और किसी भी वेब ब्राउज़र से उपयोग किया जा सकता है।
  • Gtags gtags.elGLOBAL पैकेज के माध्यम से प्रदान करता है , लेकिन xgtags.el, ggtags.el, कुछ भी-gtags.el, helm-gtags.el सहित कई अन्य विशिष्ट एक्सटेंशन भी हैं।

मेल

आप यूनिवर्सल सीटीजीएस की समृद्ध भाषा समर्थन को जीटीजीएस डेटाबेस सुविधा और कई एक्सटेंशनों के साथ सीटीजीएस को एक प्लग-इन पार्सर के रूप में उपयोग करके जोड़ सकते हैं :

# build GNU GLOBAL
./configure --with-exuberant-ctags=/usr/local/bin/ctags
sudo make install

# use it
export GTAGSCONF=/usr/local/share/gtags/gtags.conf
export GTAGSLABEL=ctags
gtags                     # invokes Universal Ctags internally
emacs -f gtags-mode       # load gtags.el

फिर से ध्यान दें कि यदि आप सीटीजी का उपयोग अपने Gtags के लिए पार्सर के रूप में करते हैं, तो आप संदर्भों (जैसे, चर उपयोग, फ़ंक्शन कॉल) का इलाज करने की क्षमता खो देते हैं जो Gtags अन्यथा प्रदान करते हैं। अनिवार्य रूप से, आप सीटीजी के अधिक निर्मित भाषा समर्थन के लिए Gtags का संदर्भ ट्रैकिंग बंद करते हैं।

आप Cscope का उपयोग Gtags के ग्राहक के रूप में भी कर सकते हैं gtags-cscope:।

सौभाग्य!


मैंने पढ़ा: "फिर से ध्यान दें कि यदि आप सीटीजी का उपयोग अपने गैटैग्स के लिए पार्सर के रूप में करते हैं, तो आप संदर्भों (जैसे, चर उपयोग, फ़ंक्शन कॉल) का इलाज करने की क्षमता खो देते हैं, जो कि Gtags अन्यथा प्रदान करते हैं। अनिवार्य रूप से, आप Gtags के संदर्भ ट्रैकिंग का व्यापार करते हैं। Ctags की अधिक अंतर्निहित भाषा समर्थन है। " यह पुराने ctags Emacs के साथ भेज दिया के लिए सच है, या यह अभी भी यूनिवर्सल Ctags के लिए सच है? इसके अलावा, मैंने "यूनिवर्सल सीटीग की समृद्ध भाषा को संयोजित किया" पढ़ा, लेकिन शेल स्निपेट में इसका उपयोग --with-exuberant-ctags=...तब होता है जब अब 2019 तक एक --with-universal-ctagsविकल्प है। क्या इसे बाद में बदल दिया जाना चाहिए?
bgoodr

3

मैंने वास्तव में जाँच नहीं की है, लेकिन CEDET मैनुअल ( http://www.randomsample.de/cedetdocs/common/cedet/CScope.html ) के अनुसार :

सिमेंटिक डेटाबेस खोजों के लिए एक अंतिम छोर के रूप में CScope का उपयोग कर सकता है। इसे सक्षम करने के लिए, उपयोग करें:

 (semanticdb-enable-cscope-databases)

यह सभी C और C ++ बफ़र्स के लिए cscope के उपयोग को सक्षम करेगा।

CScope का उपयोग प्रोजेक्ट-वाइड खोजों के लिए बैकअप के रूप में किया जाएगा जब पहले से मौजूद शब्दार्थ डेटाबेस खोजों ने आपकी सभी फ़ाइलों को पार्स नहीं किया होगा।


1
यह Emacs 24.3.1 में काम नहीं करता है, वेनिला CEDET 2.0 का उपयोग करता है जो इसके साथ जहाज (कोई अर्थटैडब-सक्षम-सीस्कोप-डेटाबेस विधि) नहीं है।
रोब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.