Emacs का उपयोग पूर्ण विशेषताओं वाले C / C ++ IDE के रूप में किया जाता है


50

मैं एक साल से अधिक समय से Emacs को C / C ++ IDE के रूप में उपयोग करने की कोशिश कर रहा हूं। मैं अब तक केवल मामूली रूप से सफल रहा हूं, लेकिन रास्ते में कुछ ईंट की दीवारों में चला गया हूं। वर्तमान में मैं CEDET का उपयोग करने की कोशिश कर रहा हूं, लेकिन मुझे यह समझने में मुश्किल समय आ रहा है कि इसका प्रभावी उपयोग कैसे किया जाए।

एक आईडीई में मैं जिन सुविधाओं की तलाश कर रहा हूं वे इस प्रकार हैं:

  1. सॉफ्टवेयर का प्रबंधन "परियोजनाएं।" मैं चाहता हूं कि मेरी IDE में उन सभी फाइलों की समझ हो, जो मेरी वर्तमान परियोजना को बनाती हैं ताकि मैं अपनी परियोजना के भीतर खोज-और-प्रतिस्थापन जैसे कार्य कर सकूं। (यह अच्छा होगा यदि मैं अपने स्रोत पेड़ को बहुत सारी समर्थन फ़ाइलों के साथ कूड़े के बिना भी प्राप्त कर सकता हूं। मुझे प्रति परियोजना एक से अधिक केंद्रीकृत परियोजना फ़ाइल की आवश्यकता क्यों है?)
  2. आईडीई के भीतर से वर्तमान परियोजना के निर्माण की क्षमता, चाहे मैं वर्तमान में किस बफर पर जा रहा हूं। मुझे एक कुंजी को बांधने में सक्षम होने की आवश्यकता है जो वर्तमान परियोजना का निर्माण करेगी।
  3. त्रुटि की सूचना देना। मैं बिल्ड टूल्स द्वारा रिपोर्ट की गई त्रुटियों को खोजने के लिए आउटपुट की 500+ लाइनों के माध्यम से पढ़ना नहीं चाहता। अधिमानतः, त्रुटियां अपने स्वयं के बफर में एक पंक्ति प्रति त्रुटि के साथ दिखाई देती हैं।
  4. परियोजना के भीतर प्रतीकों के बारे में जागरूकता, और जहां उन्हें परिभाषित किया गया है। मैं एक प्रतीक परिभाषा पर कूदना चाहता हूं चाहे वह मेरी परियोजना फाइलों में रहता हो या सिस्टम में फाइलें शामिल हों।
  5. दृश्य डिबगिंग। मैं स्थानीय चर की एक घड़ी सूची रखना चाहता हूं जो कोड के माध्यम से स्वचालित रूप से अपडेट होता है। मैं कोड में ब्रेकपॉइंट सेट करने में सक्षम होना चाहता हूं कि कोड की किस पंक्ति को अगले निष्पादित किया जाएगा।

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

Emacs को पूर्ण विशेषताओं वाले C / C ++ IDE में बदलने के लिए क्या समाधान मौजूद हैं? क्या आपको हमेशा सब कुछ टुकड़े-टुकड़े में कॉन्फ़िगर करना पड़ता है, या एक बार में सभी सुविधाओं को सेट करने का एक तरीका है?

EDIT: इस प्रश्न का एक अच्छा उत्तर दिए गए मानदंडों में से सभी पाँच को पूरा करने के लिए नहीं है। मैंने केवल इस बात के लिए सूची प्रदान की कि मैं किस प्रकार की विशेषताओं को देखना चाहता हूं, इससे पहले कि मैं एक आईडीई को "पूर्ण-विशेषताओं" पर विचार करूं। यह बहुत संभव है कि CEDET बिल फिट कर सकता है, लेकिन मुझे अभी तक इस पर एक चरणबद्ध चरण-निर्धारण ट्यूटोरियल ढूंढना है कि इसे खरोंच से कैसे सेट किया जाए।


6
यह प्रश्न कई में विभाजित होने से बेहतर हो सकता है। आपके पास आंशिक उत्तरों का एक गुच्छा हो सकता है, जहां किसी भी वस्तु पर ध्यान नहीं दिया जाता है जिसके वे हकदार हैं।
मालाबार

2
इसके अलावा, आइटम 1 emacs.stackexchange.com/questions/448/…
मालाबार 2

6
@ मलबारबा: यदि मैं पांच अलग-अलग प्रश्न पूछ रहा होता, तो यह एक डुप्लिकेट हो सकता है। इस सवाल का पूरा बिंदु यह है कि पांच अलग-अलग पैकेज हो सकते हैं जो पांच अलग-अलग लक्ष्यों को प्राप्त करते हैं, लेकिन सभी पांचों को एक दूसरे के साथ अच्छी तरह से खेलने के लिए कॉन्फ़िगर करना लगभग असंभव लगता है। यदि जवाब वापस आता है, तो "Emacs एक पूर्ण-विशेषताओं वाले IDE के रूप में कार्य नहीं कर सकता क्योंकि इसे कॉन्फ़िगर करने में असंभव मात्रा में समय लगता है।" तो ऐसा ही होगा।
nispio

4
अंकों में से प्रत्येक यह स्वयं का प्रश्न हो सकता है (संभावित दोहराव), उन सभी को एक प्रश्न में एक साथ रखने से कभी-कभी पैकेज इंटरेक्शन के कारण अलग-अलग उत्तर हो सकते हैं।
जोनाथन लीच-पेपिन

जवाबों:


27

"आईडीई-नेस" के विभिन्न स्तर अलग-अलग भाषाओं के लिए मौजूद हैं, और दुर्भाग्यवश आपको कभी भी कुछ कॉन्फ़िगरेशन के बिना पूर्ण आईडीई सुविधाएँ प्राप्त नहीं होने वाली हैं (यदि आप चीजों को कॉन्फ़िगर करना पसंद नहीं करते हैं, तो शायद आपको एमएसीएस का उपयोग नहीं करना चाहिए)। CEDET का उद्देश्य पूर्ण समाधान है जो समर्थित भाषाओं के लिए आपकी सभी आवश्यकताओं को शामिल करता है, लेकिन मैंने व्यक्तिगत रूप से इसे ठीक से काम नहीं किया है; इसके बजाय, मैं अपने IDE ठिकानों को कवर करने के लिए अग्रानुक्रम में कुछ पैकेजों का उपयोग करता हूं। मैं क्रम में आपके बिंदुओं पर जाऊंगा, विभिन्न भाषाओं के लिए कुछ समाधानों के साथ जो मुझे पता है:

  1. प्रोजेक्टाइल एक असली आईडीई जैसा अनुभव प्रदान करने के लिए निकटतम पैकेज है। यह प्रति-परियोजना के आधार पर एक टन उपयोगी कार्यक्षमता प्रदान करता है। आप शायद किसी प्रकार की खिड़की / कार्यक्षेत्र प्रबंधन भी चाहते हैं; मैं अपने स्वयं के समाधान का उपयोग करता हूं जिसे वैकस्पेस कहा जाता है , लेकिन अन्य अच्छे समाधानों में परिप्रेक्ष्य , कार्यसमूह और स्क्रीन शामिल हैं
  2. अलग-अलग भाषाओं के अलग-अलग विचार होते हैं कि एक "बिल्ड" क्या है, लेकिन M-x compileबहुत कुछ समायोजित कर सकता है और त्रुटियों को आसान बना देता है (बस उपयोग next-error)। सेट करने के लिए निर्देशिका चर का उपयोग करके आप आसानी से प्रति-प्रोजेक्ट के आधार पर अनुकूलित कर सकते हैं compile-command। आप compileप्रोजेक्टाइल का उपयोग करके चला सकते हैं projectile-compile-project( C-c p c)।
  3. M-x compileआपने यहां भी कवर किया है - आम तौर पर *compilation*बफर में प्रति पंक्ति एक त्रुटि समाप्त होती है , साथ में आसान पेजिंग next-error
  4. एक प्रतीक पर कूदने में "अपने कोड को समझना" शामिल है, और यह वह जगह है जहां समर्थन भाषाओं में जबरदस्त रूप से भिन्न होता है। Elisp के लिए, आप उत्कृष्ट elisp-slime-nav का उपयोग कर सकते हैं , और फिर M-.परिभाषा के लिए कूद सकते हैं। यहां कुछ पैकेज दिए गए हैं जो अन्य भाषाओं के लिए समान समर्थन प्रदान करते हैं: CIDER (क्लोजर के लिए); SLIME (सामान्य लिस्प के लिए); बागे (रूबी के लिए); C / C ++ के लिए शब्दार्थ या क्लैग-टैग (अस्वीकरण: मैंने कभी भी उपयोग नहीं किया है, इसलिए मुझे नहीं पता कि वे अच्छी तरह से काम करते हैं)। यदि अन्य सभी विफल हो जाते हैं, तो आप एमएसीएस निर्मित बिल्ट-इन टीएजीएस सुविधाओं का भी उपयोग कर सकते हैं, जैसे कि प्रचुर मात्रा में ctags
  5. डीबगर्स के लिए Emacs का बहुत बिखरा हुआ समर्थन है। GUD के साथ GDB C जैसी भाषाओं के लिए आपका सबसे अच्छा दांव है; अन्यथा, यह पूरी तरह से प्रति-भाषा के आधार पर बहुत अधिक है। (मुझे नहीं लगता कि क्रॉस-लैंग्वेज विजुअल डीबगिंग वास्तव में एक यथार्थवादी लक्ष्य है।)

4
साइड-नोड के रूप में projectileसीधे प्रोजेक्ट स्विच पर स्वचालित रूप से perspectiveबनाने के साथ एकीकृत किया जा सकता है perspective-per-project
जोनाथन लीच-पेपिन

मैं semantic# 4 के बारे में नोट्स जोड़ूंगा, शब्दार्थ एक महान पैकेज है, यह आपके कोड को समझता है और उस जानकारी के साथ बहुत सारी उपयोगी चीजें कर सकता है।
जॉर्डन बियोनडो सेप

मैंने वास्तव में कभी उपयोग नहीं किया है semantic, और मुझे लगता है कि मुझे याद है कि इसमें अपूर्ण सी ++ समर्थन है, लेकिन मैंने इसे उत्तर में जोड़ दिया है।
शास्त्री सेप

15

मैंने इस गाइड का उपयोग C ++ IDE के रूप में Emacs का उपयोग शुरू करने के लिए किया। यह हेल्म और प्रोजेक्टाइल का परिचय देता है जो आपके कई सवालों के जवाब देने में मदद करता है। अर्थात,

  1. प्रोजेक्टाइल प्रोजेक्ट्स का प्रबंधन करता है। यह मेकफाइल, SConstruct, Git repo, SVN रेपो और शायद कुछ अन्य बिल्ड सिस्टम या वर्जन कंट्रोल फाइल्स के लिए डायरेक्टरी ट्री की खोज करता है ताकि यह पता चल सके कि वर्तमान प्रोजेक्ट के साथ कौन सी फाइलें जुड़ी हैं। एक उदाहरण के रूप में, C-c p hचलाता है helm-projectileजो वर्तमान परियोजना में एक फ़ाइल खोजने के लिए हेल्म का उपयोग करता है।

  2. प्रोजेक्टाइल आपकी परियोजनाओं का निर्माण कर सकता है। C-c p cरन projectile-compile-projectजो उपलब्ध फाइलों के आधार पर Make / SCons / CMake चलाने की कोशिश करता है। मुझे कभी भी इसे कॉन्फ़िगर नहीं करना पड़ा; यह हमेशा जानता है कि क्या करना है।

  3. जब आप दौड़ते हैं तो त्रुटियां अपने स्वयं के बफर में दिखाई देती हैं, projectile-compile-projectलेकिन मुझे यकीन नहीं है कि यह उतना ही सुंदर है जितना आप चाहते हैं।

  4. आप उस पैकेज का उपयोग कर सकते हैं helm-gtagsजो gtagsप्रोग्राम के साथ इंटरफेस करता है (जो आपको आपके सिस्टम पर उपलब्ध होना चाहिए)। ध्यान दें कि gtags एक GNU प्रोजेक्ट है और इसलिए विंडोज पर तुरंत काम करने की संभावना नहीं है।

    एक बार कॉन्फ़िगर किए जाने के बाद, हेल्म परियोजना में प्रतीकों के बारे में जागरूक हो जाता है और परिभाषाओं और स्थानों का उपयोग करने के लिए नेविगेट कर सकता है। उदाहरण के लिए helm-gtags-dwimकिसी चर या फ़ंक्शन के किसी भी उपयोग के लिए कूद सकते हैं, और जब हेडर फ़ाइल पर चलाया जाता है तो वह हेडर फ़ाइल खोलता है।

  5. मैंने अभी तक यह कोशिश नहीं की है।

सूचीबद्ध गाइड आरंभ करने के तरीके पर बहुत स्पष्ट कॉन्फ़िगरेशन जानकारी देता है।


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

9

चूँकि आप अभी पूरी तरह से C / C ++ IDE की माँग कर रहे हैं, इसलिए मैं योग्य हो सकता हूँ।

मैंने vc4 से Visual Studio 2010 तक सभी MS IDE का उपयोग किया, इसलिए मैं पूरी तरह से समझता हूं कि आप क्या चाहते हैं।

अच्छी खबर यह है कि Emacs Visual Studio की तरह 95% अच्छा हो सकता है, और यह बहुत कुछ कर सकता है। लेकिन आपको "अधिक" भाग में कोई दिलचस्पी नहीं हो सकती है। इसलिए मैं केवल आपके सवालों पर ध्यान दूंगा।

अब मुख्य बिंदु, आप उपयोग करना चाहिए सीएमके , यहां तक ​​कि आपके C ++ आवेदन केवल खिड़कियों के लिए है! कहानी का अंत। कोई अन्य विकल्प नहीं है, मुझे पता है कि मैं किस बारे में बात कर रहा हूं। यदि आप CMake का उपयोग नहीं करते हैं, तो यह जारी रखने के लिए व्यर्थ है।

प्रश्न 1 का उत्तर : आपको कुछ भी सेट करने की आवश्यकता नहीं है, cpputils-cmake ( https://github.com/redguardtoo/cpputils-cmake ) स्थापित करें जो अन्य प्लगइन्स सेट करता है। यह विज़ुअल स्टूडियो की तुलना में अधिक सुविधाजनक है। इसलिए प्रति प्रोजेक्ट सेटअप की जरूरत नहीं है। खोज प्रतिस्थापन चीज़ के लिए, मैं bash / perl / git और percol ( https://github.com/mooz/percol ) की शक्ति को संयोजित करता हूं , जो किसी भी IDE से बहुत बेहतर है। मेरे ब्लॉग (जाँच http://blog.binchen.org/categories/emacs.html ) और मेरे ~ / .bashrc ( https://gist.github.com/redguardtoo/01868d7a13817c9845e8#file-bashrc )। उदाहरण के लिए, मैं कुछ निश्चित प्रतिबद्ध में फाइलों को बदल सकता हूं।

प्रश्न 2 का उत्तर : यह पहले से ही सेटअप-सीमेट द्वारा है, आपको M-x compileहमेशा की तरह चाहिए।

प्रश्न 3 का उत्तर : प्रश्न 2 के समान। मुझे नहीं पता कि यह एक समस्या क्यों है। यह वास्तव में VS के समान व्यवहार है, बेहतर कुंजी बाइंडिंग के साथ।

प्रश्न 4 का उत्तर : अब अधिकांश लोग सिर्फ ग्नू ग्लोबल का उपयोग करते हैं जिसे कैप्यूटिल्स-सेमीके के साथ जोड़ा जा सकता है। मैं समझता हूं कि असली मुद्दा उन निर्देशिकाओं का पता लगा रहा है जिनमें सभी सी ++ हेडर स्वचालित रूप से शामिल हैं । यह cpputils-cmake के साथ किया जा सकता है, बाकी सब कुछ आसान है। कृपया man globalशेल में पढ़ें और पर्यावरण चर GTAGSLIBPATH के बारे में मैनुअल पढ़ें। कोड नेविगेशन के लिए ग्लोबल पर आधारित अच्छा UX प्रदान करने के लिए कई प्लगइन्स हैं, मैं ggtags.el की सलाह देता हूं

प्रश्न 5 का उत्तर : दृश्य डिबगिंग, कई लोगों ने सिफारिश की M-x gdb-many-window, मैंने इसे आज़माया लेकिन यह काम नहीं किया। यह केवल इसलिए है क्योंकि मेरा gdb संस्करण पुराना है (संकेत, मैं OSX 10.7.3 का उपयोग कर रहा हूं) और मैं अपने OS को अपग्रेड करने के लिए बहुत आलसी हूं। लेकिन GUD ठीक है। मैं संपादक विंडो में मेरे लिए चर प्रिंट करने के लिए कुछ छोटी कुंजी बनाता हूं। सभी डिबग सामान उपयोग करने योग्य है। इसमें वी.एस. के रूप में टेबल यूएक्स लेआउट नहीं है। लेकिन आपके साथ ईमानदार होना चाहिए। Microsoft का डिबगर UX भी दुनिया में सर्वश्रेष्ठ नहीं है। सबसे अच्छा उपयोगकर्ता के अनुकूल डिबगर DDD है ( http://www.gnu.org/software/ddd/)। Gud और VS दोनों इस मुद्दे पर चूसते हैं। इन दिनों मैं बस लॉगिंग कोड को yasnippet के साथ सम्मिलित करता हूं जो कि एक और Emacs plugin है। स्पष्ट करने के लिए, मुझे ब्रेकपॉइंट के बारे में सभी उन्नत ट्रिक्स पता हैं, यह सिर्फ इसलिए है क्योंकि मैं इन ट्रिक्स को लागू करने के लिए बहुत आलसी हूं। Emacs में लॉगिंग कोड डालना ज्यादा आसान है।

IDE: कोड पूरा होने के बारे में कई और बातें हैं? कंपनी-मोड का उपयोग करें, कोई सेटअप की आवश्यकता नहीं है। वास्तविक समय वाक्यविन्यास की जाँच करें? cpputils-cmake का उपयोग करें, फिर(flymake-mode 1)

सबसे अच्छी बात यह है, अगर आपको मेरे सेटअप ( https://github.com/redguardtoo/emacs.d ) पर मेरे सेटअप का उपयोग करने पर VS से कम सेटअप करने की आवश्यकता है, तो उस सेटअप का शीर्षक "purcell's emacs configuration plus C / C ++ support" है

अब कुछ ऐसी चीज है जिस पर मुझे जोर देना चाहिए, Emacs आपको पूरी आजादी देते हैं । आप शुरू करने के लिए कोई भी तरीका चुन सकते हैं। कठिन रास्ता या आसान तरीका।

आसान तरीका यह है कि मेरे सेटअप (या गिटहब पर किसी के सेटअप को कॉपी करें, पहले तारों को गिनें), 5 मिनट में आपके पास पूरी तरह कार्यात्मक C ++ IDE होगा। वीएस उस 5 मिनट में शुरू नहीं हुआ है।

मुश्किल तरीका खरोंच से सेटअप tweaking है। यदि आप कठिन रास्ता चुनते हैं, तो Emacs से शिकायत न करें । यह तुम्हारी पसंद है।

BTW, लंबे समय में, थोड़ा Emacs लिस्प ज्ञान मददगार हो सकता है। मुझे लगता है कि एमएस श * टी पर बर्बाद होने वाले समय की तुलना में यह एक पेशेवर सी ++ डेवलपर के लिए तुच्छ है। कई साल पहले एमएस ने चुपचाप अपने वीसी रनटाइम को कुछ विंडोज़ अपडेट में अपग्रेड किया था। इसने मेरे उत्पाद को कंपनी की मशीनों पर ओके कर दिया, लेकिन ग्राहकों के कंप्यूटर पर क्रैश हो गया

उस घटना के बाद, मैं रिचर्ड स्टेलमैन को समझने लगा।


1
दिलचस्प। "यू मस्ट सीएमईके" -> तो, आप बता रहे हैं कि जब एक रैंडम फ्री सॉफ्टवेयर पैकेज पर काम किया जाता है जो ऑटोकैफ या पर्सनल स्क्रिप्ट का उपयोग करता है, तो किसी को रैपर लिखना चाहिए CMakeLists.txt?
स्टीफन गौरिचोन

1
आप इसके बजाय GNU ग्लोबल का उपयोग कर सकते हैं, ना कि सीमेक घोल की तरह। लेकिन अधिक लचीला, ब्लॉग
chen bin

5

# 4 के लिए, मैं अत्यधिक मात्रा में ctags और अंतर्निहित टैग समर्थन की सलाह देता हूं, जो मैंने वर्षों से उपयोग किया है। वैकल्पिक रूप से, मैंने अभी हाल ही में GNU ग्लोबल और ggtags पैकेज का उपयोग करने के लिए स्विच किया है और उन्हें थोड़ा बेहतर पाया है; हालाँकि, वे लगभग समान रूप से कार्य करते हैं। दोनों लगभग कोई कॉन्फ़िगरेशन के साथ काम करते हैं। अन्य आईडीई सुविधाओं के लिए, मुझे भी ऑटो-पूर्ण पैकेज पसंद है। इसी तरह, मैं M-x compileबड़े पैमाने पर उपयोग करता हूं और अगले और पिछले त्रुटि के लिए वैश्विक कुंजियों को बांधता हूं । "परियोजनाओं" के भीतर खोज के लिए, मैं आमतौर पर सिर्फ उपयोग करता हूं M-x find-grep। ध्यान दें कि यह अगली और पिछली त्रुटि के लिए समान कुंजी बाइंडिंग का उपयोग करेगा।


4

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

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

त्रुटि की सूचना देना। मैं बिल्ड टूल्स द्वारा रिपोर्ट की गई त्रुटियों को खोजने के लिए आउटपुट की 500+ लाइनों के माध्यम से पढ़ना नहीं चाहता। अधिमानतः, त्रुटियां अपने स्वयं के बफर में एक पंक्ति प्रति त्रुटि के साथ दिखाई देती हैं।

फ्लाईकैच में क्लैंग / जीसीसी का उपयोग करके सिंटैक्स की जांच के लिए समर्थन है।

परियोजना के भीतर प्रतीकों के बारे में जागरूकता, और जहां उन्हें परिभाषित किया गया है। मैं एक प्रतीक परिभाषा पर कूदना चाहता हूं चाहे वह मेरी परियोजना फाइलों में रहता हो या सिस्टम में फाइलें शामिल हों

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


2

वर्तमान में Emacs के साथ भेज दिया गया CEDET संस्करण सेटअप करना मुश्किल है, लेकिन जो आप आधिकारिक साइट पर प्राप्त कर सकते हैं वह सेटअप करना आसान है, और आपकी # 2 और # 4 जरूरतों का जवाब दे सकता है।

CEDET का EDE आपको उदाहरण के लिए makefile और automake प्रोजेक्ट्स को प्रबंधित करने की अनुमति देता है, इसमें लक्ष्य जोड़ता है, और फ़ाइलों को लक्ष्य के साथ जोड़ता है। आप EDE आदेशों का उपयोग करके अपनी परियोजना को संकलित कर सकते हैं। जैसा कि यह Emacs के अंतर्निहित संकलन मोड का उपयोग करता है, आपकी आवश्यकता # 3 भी संतुष्ट है।

CEDET के शब्दार्थ में C ++ सहित कई भाषाओं के लिए पार्सर हैं। यह एक फ़ाइल में परिभाषित किए गए टैगों को पुनः प्राप्त कर सकता है, जैसे कि एक्सयूबर्टेंट-केटैग्स और जीएनयू ग्लोबल, लेकिन इसमें सटीक ऑटो-पूर्ण और कूदने की विशेषताएं भी हैं। यदि आपके पास "फू" नामक दो विधियाँ हैं, तो सिमेंटिक की छलांग आपको सही पर लाने के लिए पर्याप्त है।

# 1 के लिए, मैं व्यक्तिगत रूप से प्रक्षेप्य का उपयोग करता हूं , और मैंने कुछ समय पहले # 5 के लिए सफलतापूर्वक GDB का उपयोग किया था।

# 3 के लिए संकेत: यदि ईडीई M-x recompileआपके ऊपर हावी है, तो Emacs के पास आपके अंतिम संकलन कमांड को लॉन्च करने की आज्ञा है, इसलिए आप पहली बार अपना संकलन चला सकते हैं, और फिर recompileकिसी भी बफर में उपयोग कर सकते हैं ।


1

# 4 के लिए, YouCompleteme नामक एक नई परियोजना प्रतीत होती है , और इसी Emacs क्लाइंट को जो अगली शांत चीज़ लगती है। क्योंकि यह क्लैंग का उपयोग करता है, इसमें टैग या वैश्विक की तुलना में कोड का एक बेहतर दृष्टिकोण है।


1
सुझाव के लिए धन्यवाद, लेकिन जब से मैं उन चीजों की तलाश कर रहा हूं जो एक साथ अच्छी तरह से एकीकृत होते हैं, मुझे यकीन नहीं है कि एक प्रोटोटाइप इमैक क्लाइंट के साथ विम प्लगइन का उपयोग करके सुविधाओं में से एक को प्राप्त करने का प्रयास सबसे अच्छा शुरुआती बिंदु है।
nispio

3
Emacs क्लाइंट के बजाय github.com/abingham/emacs-ycmd को आज़माएं (ध्यान दें कि यह github.com/Valloric/ycmd का उपयोग करता है , github.com/Valloric/YouCompleteMe का नहीं )। यह कंपनी-मोड (यहां अन्य उत्तरों द्वारा अनुशंसित) के साथ काम करता है इसलिए यह बाकी एमएसीएस के साथ अच्छी तरह से एकीकृत करता है। आप MELPA से ycmd और company-ycmd स्थापित कर सकते हैं ( sprunge.us/LXGY मेरा कॉन्फ़िगरेशन है); और ycmd के लिए बिल्ड निर्देशों का पालन करें। एकमात्र चुनौती यह है कि आपको अपने संकलित झंडे को फ़ाइल में डालने की आवश्यकता है जैसे github.com/Valloric/ycmd/blob/master/examples/…
unhammer

1

मैं CEDET से अपने स्रोत रेपो + ECB + gtags + cscope से खुश हूं। उस ने कहा, इस पोस्ट पर कई सुझाव हैं जो मैं कोशिश कर रहा हूं।


1
क्या आप उन सभी उपकरणों को एक साथ काम करने के लिए क्या करना चाहते थे, इस पर खुलासा कर सकते हैं?
nispio

4
अभी यह लगभग एक गलत टिप्पणी की तरह लग रहा है। :-) यदि आप दयालु होंगे, तो कृपया थोड़ा विस्तार करें।
मालाबार

क्षमा करने के बारे में क्षमा करें। StackExchange App को गुंबद की आदत हो रही है। यह समाधान # 4 का जवाब देता है, प्रतीक नेविगेशन और स्रोत के विश्लेषण से निपटता है। CEDET, ज़ाहिर है, शब्दार्थ शामिल हैं। ECB Emacs Code Browser है, और CEDET का उपयोग तरीकों की सूची बनाने और प्रतीक जानकारी की रिपोर्ट करने के लिए करता है। Gtags और Cscope दोनों स्रोत आधार से प्रतीक जानकारी की तालिकाओं का निर्माण करते हैं (पतवार भी ऐसा करता है), और टैग या प्रतीक द्वारा नेविगेशन की अनुमति देने के लिए Emacs के साथ एकीकृत करता है।
क्ले हापला

1

जैसा कि ऊपर टुकड़ों में उल्लेख किया गया है, प्रोजेक्टाइल (वैकल्पिक रूप से पतवार के साथ) परियोजना प्रबंधन के लिए एक शानदार समाधान है।

Ycmd कोड पूरा होने और कुछ नेविगेशन के लिए बहुत अच्छा है, और इसके लिए सबसे अच्छा क्लाइंट है emacs-ycmd (पूर्ण प्रकटीकरण: मैंने emacs क्लाइंट लिखा है।)

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.