2010-11-01 12 views
10

मेरे पास वर्कफ़्लो है जहां मैं विभिन्न परियोजनाओं में खोज के लिए एक शैल में grep और अन्य टूल्स का उपयोग करता हूं, भले ही मेरा मुख्य संपादक emacs है। मैं आमतौर पर बग फिक्सिंग और स्रोत कोड के मामूली विकास पर काम करता हूं जो अक्सर मुझे अज्ञात है ताकि कोड खोजना महत्वपूर्ण हो। लैंगेज जो मैं ज्यादातर काम करता हूं वे हैं php, ruby, java, perl और कभी-कभी पायथन।Emacs के अंदर मैं सबसे अच्छा स्रोत कोड ब्राउज़िंग कैसे कर सकता हूं?

क्या एमएक्स में कुछ सामान्य आईडीई एक्सटेंशन है जो मुझे इन सभी भाषाओं में कई फाइलों से "गोटो परिभाषा" जैसी कार्यक्षमता प्रदान करने में सक्षम बनाता है? क्या कुछ अन्य मॉड्यूल हैं जो उपयोगी हो सकते हैं, या तो कोड ब्राउज़िंग या अनुक्रमित खोज?

+0

CEDET (एक और स्पष्ट जवाब है, हालांकि मुझे यकीन है कि कैसे उन भाषाओं में से कई में समर्थित हैं नहीं कर रहा हूँ गहराई), लेकिन मैंने अभी तक अपने पैर की उंगलियों को डुबोया नहीं है। – phils

उत्तर

6

यदि आप कई अलग-अलग भाषाओं के साथ काम करना चाहते हैं, तो ctags बहुत लचीला है। Ctags के एकीकरण पर निर्देशों के लिए EmacsWiki देखें।

+0

बहुत बढ़िया। धन्यवाद! एक संपूर्ण निर्देशिका पेड़ खोजने के लिए – grm

1

etags-select (जिसे आप ईएलपीए से प्राप्त कर सकते हैं) आपके अनुभव में, यदि आप एम- बांधते हैं, तो अपने अनुभव में अपने टैग फ़ाइल फ़ाइल को ब्राउज़ कर देता है। से etags-select-find-tag

1

साथ ही साथ ईटैग/सीटीएजी एक शैल के बजाय एम-एक्स grep के साथ grep चलाने का प्रयास करें, ताकि gac आउटपुट से मेल खाने वाली फ़ाइल और लाइन मैन्युअल रूप से ढूंढने के बजाय Emacs में क्लिक करने योग्य लिंक प्राप्त हो सकें।

+0

और 'एम-एक्स rgrep'। – phils

1

कोड ब्राउज़िंग के लिए, आप भी एम एक्स imenu पेड़

2

कोड ब्राउज़िंग का उपयोग अलग अलग चीजें का एक समूह हो सकता है कर सकते हैं। Grep का उपयोग करने का उल्लेख करने वाला मोड मुझे दर्शाता है कि आप फ़ंक्शन परिभाषाओं की तलाश में हैं, या शायद किसी विशेष फ़ंक्शन के उपयोग की तलाश में हैं।

जबकि सीईडीईटी आपके द्वारा सूचीबद्ध सभी भाषाओं का समर्थन करता है (कुछ सीटीएजी पार्सर के साथ), एक नए स्रोत कोड क्षेत्र में ताजा शुरू करने से कुछ ऐसा नहीं होता है जब तक कि आपने सूचीबद्ध कार्यों के लिए पूरी परियोजना को अनुक्रमित नहीं किया है। हालांकि, आप GNU Global या idutils का उपयोग कर सकते हैं। मुझे लगता है कि idutils अधिक भाषाओं का समर्थन करता है।

सीईडीईटी में, 'अर्थात्-सिमफ्र' और संबंधित कमांड grep, या वैश्विक, या idutils के साथ एक grep- जैसे ऑपरेशन करेंगे (आपके द्वारा बनाई गई टैग तालिका के आधार पर।) Grep शैली आउटपुट के विपरीत, symref आउटपुट बफर दिखाता है कि कौन से फ़ंक्शन प्रश्न में कमांड का उपयोग कर रहे हैं। इसके बाद आप उस प्रतीक के हिट पर मैक्रोज़ निष्पादित कर सकते हैं, जिसे आप बड़े रिफैक्टरिंग ऑपरेशन करने की परवाह करते हैं।

सीईडीईटी टैग पर कूदने जैसे टैग का भी समर्थन करता है, भले ही आप पहले से ही सीटीएजी की तरह कुछ उपयोग कर रहे हैं जो ठीक काम करता है। कुछ मामलों में पॉलीमोर्फिज्म को संभालने की बात आने पर सीईडीईटी बेहतर होता है।

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

सीईडीईटी कुछ सीख लेता है, और आपके द्वारा सूचीबद्ध कुछ भाषाओं को सभी उपकरणों के लिए पूरी तरह से समर्थित नहीं है, हालांकि ऊपर चर्चा की गई मूल ब्राउज़िंग ठीक होनी चाहिए।

संबंधित मुद्दे