एक आईडीई के रूप में Emacs का उपयोग करना


169

वर्तमान में जब मैं C या C ++ में कोडिंग कर रहा हूं तो Emacs के साथ मेरे वर्कफ़्लो में तीन विंडो शामिल हैं। दाईं ओर सबसे बड़ी फ़ाइल में वह फ़ाइल है जिसमें मैं काम कर रहा हूं। बाएं को दो में विभाजित किया गया है, नीचे एक शेल है जिसे मैं कंपाइल करने या कमांड बनाने के लिए उपयोग करता हूं, और शीर्ष अक्सर कुछ प्रकार के प्रलेखन या README फाइल है जो मैं काम करते समय परामर्श करना चाहता हूं। अब मुझे पता है कि वहाँ कुछ सुंदर विशेषज्ञ Emacs उपयोगकर्ता हैं, और मैं उत्सुक हूं कि क्या अन्य Emacs कार्यात्मक रूप से उपयोगी हैं यदि इरादा इसे पूर्ण IDE के रूप में उपयोग करना है। विशेष रूप से, अधिकांश IDE आमतौर पर इन कार्यों को पूरा करते हैं कुछ रूप या अन्य:

  • स्रोत कोड संपादक
  • संकलक
  • डिबगिंग
  • प्रलेखन लुकअप
  • संस्करण नियंत्रण
  • OO में क्लास लुकिंग और ऑब्जेक्ट इंस्पेक्टर जैसे फीचर हैं

इनमें से कुछ के लिए, यह बहुत स्पष्ट है कि एमएसीएस इन कार्यों को कैसे फिट कर सकता है, लेकिन बाकी के बारे में क्या? इसके अलावा, यदि किसी विशिष्ट भाषा पर ध्यान केंद्रित किया जाना चाहिए, तो मैं कहूंगा कि यह C ++ होना चाहिए।

संपादित करें: एक उपयोगकर्ता ने बताया कि जब मुझे 'बाकी के बारे में' कहा जाता है तो मुझे अधिक विशिष्ट होना चाहिए था। ज्यादातर मैं कुशल संस्करण नियंत्रण के बारे में उत्सुक था, साथ ही साथ प्रलेखन लुकअप भी। उदाहरण के लिए, SLIME में एक लिस्प फ़ंक्शन पर त्वरित हाइपरस्पेक लुकअप करना काफी आसान है। क्या C ++ STL प्रलेखन में कुछ देखने का एक त्वरित तरीका है (यदि मैं hash_map के सटीक सिंटैक्स को भूल गया , उदाहरण के लिए)?


5
प्रश्न और सभी उत्तर मुख्य आईडीई बिंदु से पूरी तरह से गायब हैं। लेकिन पहले मुझे गलत मत समझो: मुझे लगता है कि वहां एक भी आईडीई नहीं है (कुछ दुर्लभ लिस्प / स्कीम वालों के अलावा) जो एमएसीएस की पेशकश कर सकते हैं, वे कहीं भी आ सकते हैं। हालांकि आधुनिक IDEs इस तरह सामान कार्य करें: संभावित कोडिंग त्रुटियों (यहां तक कि आंशिक गैर compilable ASTs पर) तत्काल हाइलाइटिंग। IntelliJ IDEA यह करता है: यदि आप उपयोग करते हैं, तो कहते हैं, @NotNull यह आपको चेतावनी देगा, वास्तविक समय में, संभावित उल्लंघनों के बारे में। फिर पूरे "कोडिंग बाय इंटेंस" हैं : यह केवल Emacs के तहत काम नहीं करता है (अभी तक)।
SyntaxT3rr0r

18
एक अन्य क्षेत्र जहां अच्छी आईडीई वास्तव में चमक सकती है: प्रासंगिक कोड पूरा (एक बार फिर, यहां तक ​​कि निष्पक्ष, गैर-अनिवार्य स्रोत फ़ाइलों पर)। प्रासंगिक कोड पूरा p0wns हिप्पी- किसी भी दिन का विस्तार करें जैसे कि यह भी मज़ेदार नहीं है: यह शर्मनाक तरीके से Emacs डालता है। एक बार फिर मैं बहुत दुखी हूं कि ईएमई की तुलना में आईडीई "टेक्स्ट एडिटर्स" सस्ते, लंगड़े, बेवकूफ, कचरा का टुकड़ा हैं। लेकिन अच्छे IDE बहुत सारे क्षेत्र में चमकते हैं (जैसे कि रिफैक्टरिंग, प्रासंगिक कोड पूरा करना, वास्तविक समय की चेतावनी, आदि) जहां Emacs मूल रूप से कहीं नहीं है। मुझे कहा कि मेरी आईडीई के बीच में Emacs दे दो। मैं उस दिन के लिए तरस रहा हूं।
SyntaxT3rr0r

कोड के पतन के बारे में क्या?
हमेशा

मुझे कहना है, यहाँ टिप्पणी शायद प्रोग्रामर द्वारा नहीं लिखी गई है। मैंने पढ़ा कि कैसे Emacs ऐसा नहीं कर सकते और वह नहीं कर सकते, लेकिन अन्य IDE कर सकते हैं। यह मेरे लिए ऐसा लगता है: एक प्रोग्रामर, व्यक्ति जो प्रोग्रामिंग भाषा का उपयोग करके मुद्दों को हल करता है; समस्या है कि कुछ प्रोग्राम में एक सुविधा नहीं है और इसलिए बदतर है, लेकिन वे उस सुविधा को नहीं बनाना चाहते हैं। जैसे, लोग, आप पहले स्थान पर प्रोग्रामर क्यों बन जाते हैं ?? !!
red777

जवाबों:


76

आपको "बाकी" द्वारा जो मतलब है, उसके लिए आपको विशिष्ट होना होगा। ऑब्जेक्ट इंस्पेक्टर को छोड़कर (कि मुझे "पता है"), एमएसीएस उपरोक्त सभी को बहुत आसानी से करता है:

  • संपादक (स्पष्ट)
  • संकलक - बस चलाएं M-x compileऔर अपना संकलित कमांड दर्ज करें। वहां से, आप बस M-x compileऔर डिफ़ॉल्ट का उपयोग कर सकते हैं । Emacs C / C ++ कंपाइलर त्रुटियों (जीसीसी के साथ सबसे अच्छा काम करता है) पर कब्जा करेगा और आपको चेतावनी या त्रुटियों के साथ लाइनों पर नेविगेट करने में मदद करेगा।
  • डिबगिंग - इसी तरह, जब आप डिबग करना चाहते हैं, टाइप करें M-x gdbऔर यह विशेष बाइंडिंग के साथ एक जीडीबी बफर बनाएगा
  • प्रलेखन लुकअप - emacs में कोड नेविगेशन के लिए उत्कृष्ट CScope बाइंडिंग हैं। अन्य दस्तावेज़ीकरण के लिए: Emacs में एक मैनपेज रीडर भी है, और बाकी सब चीज़ों के लिए, वेब और किताबें हैं।
  • संस्करण नियंत्रण - विभिन्न वीसीएस बैकएंड (सीवीएस, एससीएससी, आरसीएस, एसवीएन, जीआईटी सभी के लिए एमएसीएस बाइंडिंग बहुत सारे हैं)

संपादित करें: मुझे पता है कि प्रलेखन लुकअप के बारे में मेरा जवाब वास्तव में कोड नेविगेशन से संबंधित है। यहाँ कुछ और अधिक जानकारी है:

Google खोज में कोई संदेह नहीं है कि आगे के उदाहरण सामने आएंगे।

जैसा कि दूसरे लिंक से पता चलता है, अन्य दस्तावेज़ीकरण में फ़ंक्शंस (और जो भी) की तलाश की जा सकती है, भले ही वह बॉक्स से समर्थित न हो।


3
कि "एमएक्स संकलन" नहीं होना चाहिए?
Svante

1
मुझे लगता है कि GNU ग्लोबल इन दिनों CScope से बेहतर है: gnu.org/software/global
Jürgen Hötzel

@ Jürgen Hötzel: मैंने कुछ समय में सक्रिय रूप से Emacs का उपयोग नहीं किया है। उस समय, मैंने CScope, IIRC के संयोजन में GNU ग्लोबल का उपयोग किया था। अगर वैश्विक आउट-सॉल्व्ड CScope है, तो मुझे आश्चर्य नहीं होगा।
बेन कॉलिन्स


29

मुझे Emacs के लिए Emacs Code Browser को अधिक "पारंपरिक" IDE शैली के वातावरण के रूप में अनुशंसित करना होगा ।

संपादित करें : मैं अब एमएसीएस में मानक वीसीएस इंटरफेस पर मैगिट की सिफारिश करता हूं


आपको बस पोस्ट को संपादित करने में सक्षम होना चाहिए, आपको पर्याप्त प्रतिनिधि iirc दिखाई देता है।

19

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

यदि आप आईडीई के प्रशंसक हैं, तो आप एमएसीएस के स्पीडबार पैकेज (एमएक्स स्पीडबार) को देखना चाहते हैं। और, यदि आप पहले से ही नहीं है, तो अपने कोड को नेविगेट करने के लिए टैग तालिकाओं का उपयोग करने के बारे में जानें।


15

Emacs के कोने हैं जो एक बार खोज लेने के बाद आपको उन तरीकों से और अधिक उत्पादक बनाते हैं जिनके बारे में आपने कभी नहीं सोचा था। जैसा कि दूसरों ने उल्लेख किया है, टैग का उपयोग करना आपके स्रोत कोड के आसपास ज़ूम करने का एक शानदार और तेज़ तरीका है और M- / (dabbrev- विस्तार) का उपयोग करते हुए अक्सर वैसा ही होता है जैसा आप एक चर नाम को पूरा करते समय उम्मीद करते हैं।

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

फ्लश-लाइन्स, सॉर्ट-न्यूमेरिक-फील्ड्स, रीप्ले-रीजैक्सप और रेक्टेंगल फ़ंक्शंस वास्तव में किसी टूल से डंप लेने के लिए उपयोगी हो सकते हैं और इसे उपयोगी डेटा जैसे कि एलीस्प प्रोग्राम या कॉमा सीमांकित स्प्रेडशीट में परिवर्तित कर सकते हैं।

मैंने IDE के बारे में एक पृष्ठ लिखा था जैसे कि आप emacs के साथ क्या कर सकते हैं

http://justinsboringpage.blogspot.com/2007/09/11-visual-studio-tricks-in-emacs.html

अपने आप को जवाब देने के लिए एक और बढ़िया तरीका है कि एक विशिष्ट आईडीई क्या कर सकता है, इससे अधिक सटीक सीखने का एक और शानदार तरीका है।

उदाहरण के लिए, मैंने परफोर्स हेल्पर फंक्शन लिखने जैसे दोष के बारे में ब्लॉग किया है (अपना खुद का मतलब है कि आप इसे वैसा ही व्यवहार कर सकते हैं जैसा आप चाहते हैं ...

http://justinsboringpage.blogspot.com/2009/01/who-changed-line-your-working-on-last.html

मैंने कोड भी लिखा है जो गतिशील रूप से एक फ़ंक्शन के लिए बिंदु पर टिप्पणी बनाता है, जो कि मेरे साथ काम कर रहे कोडिंग मानकों से मेल खाता है।

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


10

आप मेरी साइट पर emacs और संस्करण नियंत्रण एकीकरण का विस्तृत विवरण पा सकते हैं । मैं कई भाषाओं - C / C ++, Java, Perl, Lisp / Scheme, Erlang, आदि के लिए Emacs को Development Environment के रूप में उपयोग करने के लेख पर भी काम कर रहा हूँ।


8

संस्करण नियंत्रण के लिए, कई चीजें हैं जो आप उपयोग कर सकते हैं, यह निर्भर करता है कि आप किस संस्करण नियंत्रण प्रणाली का उपयोग करते हैं। लेकिन कुछ कार्यक्षमता सभी के लिए सामान्य है।

vc.el एक फ़ाइल स्तर पर संस्करण नियंत्रण को संभालने का अंतर्निहित तरीका है। इसमें अधिकांश संस्करण नियंत्रण प्रणालियों के लिए बैकएंड हैं। उदाहरण के लिए, तोड़फोड़ बैकएंड Emacs के साथ आता है, और अन्य स्रोतों से गिट बैकेंड और अन्य उपलब्ध हैं।

सबसे उपयोगी कमांड Cx vv (vc-next-action) है जो आपके द्वारा देखी जा रही फ़ाइल के लिए उपयुक्त अगली क्रिया करता है। इसका मतलब यह हो सकता है कि रिपॉजिटरी से अपडेट करने या अपने बदलावों को शुरू करने के लिए, vc.el फाइलों को चेक-इन और आउट करने के लिए Cx Cq को भी रिबंड करता है, यदि आप एक ऐसी प्रणाली का उपयोग कर रहे हैं, जिसे इसकी आवश्यकता है (जैसे RCS)।

अन्य बहुत उपयोगी कमांड Cx vl और Cx v = हैं जो आपको उस फ़ाइल के लिए लॉग और करंट डिफरेंस दिखाते हैं जिसका आप उपयोग कर रहे हैं।

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

इनमें से अधिकांश सीवीएस के लिए मूल pcl- cv / pcv पर बहुत अधिक प्रभावित या आधारित हैं । उनमें से भी दो हैं जो तोड़फोड़, psvn.el और dsvn.el के साथ आते हैं । गिट आदि के लिए पैकेज हैं।


8

ठीक है, यहां हर कोई ईमैक को एक शानदार आईडीई बनाने के लिए सही संकेत दे रहा है।

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

इसे वर्कअराउंड करने के लिए, मैं अत्यधिक रूप से emacs का उपयोग करने की सलाह दूंगा server mode

यह उपयोग करने के लिए बहुत आसान है, अपनी इनिट फ़ाइल को अनुकूलित करने की कोई आवश्यकता नहीं है। आपको बस डेमॉन मोड में ईमैक्स शुरू करने की आवश्यकता है;

emacs --daemon

यह एक एमएसीएस सर्वर बनाएगा, फिर आप इसे टर्मिनल से, या गुई से कनेक्ट कर सकते हैं। मैं कॉल करने के लिए आसान बनाने के लिए कुछ उपनाम बनाने की भी सिफारिश करूंगा।

alias ec="emacsclient -t"
alias ecc="emacsclient -c &"
# some people also prefer this but no need to fight here;
alias vi="emacsclient -t"

इस तरह, emacs gedit, वादा से भी अधिक तेजी से आग जाएगा।

यहाँ एक संभव समस्या है, अगर आप अपने आकस्मिक उपयोगकर्ता से emacs डेमॉन चला रहे हैं, तो आप संभवतः emacs सर्वर को कनेक्ट नहीं कर सकते हैं root

इसलिए, यदि आपको एक फ़ाइल खोलने की आवश्यकता है जिसमें रूट एक्सेस है; trampइसके बजाय का उपयोग करें । बस अपने सामान्य उपयोगकर्ता के साथ अपने emacs क्लाइंट को चलाएं और इस तरह की फाइलें खोलें;

C-x C-f
/sudo:root@localhost/some/file/that/has/root/access/permissions
# on some linux distro it might be `/su:root@...` 

इसने मेरे जीवन को आसान बना दिया, मैं इस तरह से अपने भारी अनुकूलित अजगर आईडीई को मील के पत्थर में खोल सकता हूं। आप अपने सिस्टम स्टार्टअप में emacs --daemon जोड़ना चाहते हैं, या emacsclient के लिए एक डेस्कटॉप फ़ाइल बना सकते हैं। यह आप पर निर्भर है।

Emacs डेमॉन और emacs क्लाइंट पर अधिक विकी पर पाए जा सकते हैं;

http://www.emacswiki.org/emacs/EmacsAsDaemon

http://www.emacswiki.org/emacs/EmacsClient


1
मैं जानता हूँ कि यह पांच साल बाद है, लेकिन मैं समय में बहुत इसे का उपयोग किया गया था,: यदि आप सेट EDITOR="emacsclient -t" VISUAL="emacsclient -c"तुम्हारे साथ sudo आधारित संपादन कर सकते हैं sudo -eया sudoedit(आमतौर पर लेखा परीक्षा कारणों के लिए) जो कभी कभी आवारा उपयोग करने के लिए बेहतर है,। आप इसके साथ क्षीणता को भी आमंत्रित कर सकते हैं --alternate-editor= ( अंत में स्थान की आवश्यकता होती है) और अगर यह नहीं चल रहा है तो डेमॉन शुरू कर देगा, जो कि डेमॉन को सिस्टम स्टार्टअप में डालने की आवश्यकता को समाप्त करता है यदि आप पहली बार इसके लिए इंतजार करने को तैयार हैं प्रत्येक बूट पर संपादक चलाएं।
दारेल

7

मैं इस बात से सहमत हूं कि आपको Mx संकलन के बारे में सीखना चाहिए (यह कि और Mx अगली त्रुटि को एक लघु कुंजी अनुक्रम में बाँधें)।

संस्करण नियंत्रण के लिए बाइंडिंग के बारे में जानें (जैसे vc-diff, vc-next-action, आदि)

रजिस्टर में देखें। आप न केवल बफ़र बल्कि संपूर्ण विंडो कॉन्फ़िगरेशन (Cx rw - window-configuration-to-register) में स्थानों को याद कर सकते हैं।


6

एमएसीएस की वीसी विशेषताओं की खोज के लिए एक प्रारंभिक बिंदु (जो गैर-स्पष्ट हो सकता है) एमएक्स वीसी-नेक्स्ट-एक्शन है

यह वर्तमान फ़ाइल पर "अगला तार्किक संस्करण नियंत्रण ऑपरेशन" करता है, जो फ़ाइल की स्थिति और वीसी बैकएंड पर निर्भर करता है। इसलिए यदि फ़ाइल संस्करण नियंत्रण में नहीं है, तो यह उसे पंजीकृत करता है, यदि फ़ाइल को बदल दिया गया है, तो परिवर्तन प्रस्तुत किए जाते हैं आदि।

इसकी आदत पड़ने में थोड़ा समय लगता है, लेकिन मुझे यह बहुत उपयोगी लगता है।

डिफ़ॉल्ट कीबाइंडिंग Cx vv है


4

Microsoft TFS में emacs एकीकरण के लिए एक TFS.el है । यह किसी भी TFS के साथ काम करता है, जिसमें TFS शामिल है जो Codeplex.com चलाता है।

सेटअप करने के लिए मूल चरण:

  1. Tfs.el को अपने लोड-पथ में रखें।

  2. आपकी .emacs फ़ाइल में:

    (require 'tfs)
    (setq tfs/tf-exe  "c:\\vs2008\\common7\\ide\\tf.exe")
    (setq tfs/login "/login:domain\\userid,password")
          -or-
    (setq tfs/login (getenv "TFSLOGIN"))  ;; if you have this set
  3. आपकी .emacs फ़ाइल में भी, tfs कमांड के लिए स्थानीय या वैश्विक कुंजी बाइंडिंग सेट करें। इस तरह:

    (global-set-key  "\C-xvo" 'tfs/checkout)
    (global-set-key  "\C-xvi" 'tfs/checkin)
    (global-set-key  "\C-xvp" 'tfs/properties)
    (global-set-key  "\C-xvr" 'tfs/rename)
    (global-set-key  "\C-xvg" 'tfs/get)
    (global-set-key  "\C-xvh" 'tfs/history)
    (global-set-key  "\C-xvu" 'tfs/undo)
    (global-set-key  "\C-xvd" 'tfs/diff)
    (global-set-key  "\C-xv-" 'tfs/delete)
    (global-set-key  "\C-xv+" 'tfs/add)
    (global-set-key  "\C-xvs" 'tfs/status)
    (global-set-key  "\C-xva" 'tfs/annotate)
    (global-set-key  "\C-xvw" 'tfs/workitem)

उम ... क्या यह गंभीरता से आपके .emacs फ़ाइल में अपने पासवर्ड को सादा करने की वकालत कर रहा है?
TED

@ टेड - नहीं, सिर्फ एक दृष्टांत। राज़ को कहीं और से पढ़ा जाना चाहिए।
चीज़ो

3

संकलन, अगली-त्रुटि और पिछली-त्रुटि सभी Emacs में C ++ विकास के लिए बहुत महत्वपूर्ण आदेश हैं (grep आउटपुट पर भी महान काम करता है)। Etags, विज़िट-टैग-टेबल और खोज-टैग महत्वपूर्ण हैं। पूर्णता .el 20 वीं शताब्दी के महान अनसंग हैक्स में से एक है, और परिमाण के एक क्रम से आपके C ++ हैकिंग को गति दे सकता है। ओह और आइए हम भूल न जाएं।

मुझे अभी तक शेल पर जाकर संस्करण नियंत्रण का उपयोग करना सीखना है, लेकिन अब जब मैं बहुत बार (कमिट के साथ) चल रहा हूं तो मुझे शायद करना होगा।


3

हो सकता है कि आपको टैब्बर भी मिले उपयोगी है। यह एकमात्र व्यवहार का अनुकरण करता है जिसे मैंने ग्रहण से Emacs में ले जाने के दौरान याद किया। "," और "के लिए बाध्य।" पिछले और अगले टैब बार में जाने के लिए, यह आपको हर समय Ctrl-x b द्वारा बफर को स्विच करने से रोकता है।

दुर्भाग्य से, उल्लिखित वेब पेज डाउनलोड करने के लिए सही संस्करण प्रदान नहीं करता है। अधिकांश उबंटू संस्करण, हालांकि, इसे उनके एमएसीएस-गुडीज़ पैकेज में वितरित करते हैं।


1
कूल, मैं टैबबार का एक नया संस्करण प्राप्त करने के लिए एक रास्ता तलाश रहा था। उन लोगों के लिए जो उबंटू में नहीं हैं, आप इसे यहां पा सकते हैं। package.ubuntu.com/karmic/emacs-goodies-el
इब्राहिम

3

मैं विंडोज पर इमैक का उपयोग करता हूं। संकलित मॉड्यूल अच्छा है, लेकिन मैं संकलन कमांड लाइन के बारे में चालाक होना चाहता था जो यह सुझाता है। यह निर्दिष्ट करने के लिए "फ़ाइल चर" का उपयोग करना संभव हैcompile-command , लेकिन मैं उससे कुछ अधिक चालाक चाहता था। इसलिए मैंने मदद करने के लिए एक छोटा सा कार्य लिखा। यह अनुमान लगाता है कि कंपाइल कमांड का उपयोग करना है, जब चल रहा है, तो उपयोगकर्ता को संकेत देने के लिए compile

अनुमान फ़ंक्शन vbproj या csproj या sln फ़ाइल की तलाश करता है, और यदि पाया जाता है, तो यह msbuild का सुझाव देता है। फिर यह बफर फ़ाइल नाम को देखता है, और उसके आधार पर, विभिन्न चीजों का सुझाव देता है। .Wxs फ़ाइल का अर्थ है कि यह एक विज़िटर प्रोजेक्ट है, और आप संभवतः MSI बनाना चाहते हैं, इसलिए अनुमान तर्क MSI के लिए nmake कमांड का सुझाव देता है। यदि यह एक जावास्क्रिप्ट मॉड्यूल है, तो सुझाव है कि .js फ़ाइल के लिए jslint-for-wsh.js चलाने के लिए। एक गिरावट के रूप में, यह nmake का सुझाव देता है।

मेरे द्वारा उपयोग किया गया कोड इस तरह दिखता है:

(defun cheeso-guess-compile-command ()
  "set `compile-command' intelligently depending on the
current buffer, or the contents of the current directory."
  (interactive)
  (set (make-local-variable 'compile-command)
       (cond
        ((or (file-expand-wildcards "*.csproj" t)
             (file-expand-wildcards "*.vcproj" t)
             (file-expand-wildcards "*.vbproj" t)
             (file-expand-wildcards "*.shfbproj" t)
             (file-expand-wildcards "*.sln" t))
         "msbuild ")

        ;; sometimes, not sure why, the buffer-file-name is
        ;; not set.  Can use it only if set.
        (buffer-file-name
         (let ((filename (file-name-nondirectory buffer-file-name)))
           (cond

            ;; editing a .wxs (WIX Soluition) file
            ((string-equal (substring buffer-file-name -4) ".wxs")
             (concat "nmake "
                     ;; (substring buffer-file-name 0 -4) ;; includes full path
                     (file-name-sans-extension filename)
                     ".msi" ))

            ;; a javascript file - run jslint
            ((string-equal (substring buffer-file-name -3) ".js")
             (concat (getenv "windir")
                     "\\system32\\cscript.exe c:\\users\\cheeso\\bin\\jslint-for-wsh.js "
                     filename))

            ;; something else - do a typical .exe build
            (t
             (concat "nmake "
                     (file-name-sans-extension filename)
                     ".exe")))))
        (t
         "nmake "))))


(defun cheeso-invoke-compile-interactively ()
  "fn to wrap the `compile' function.  This simply
checks to see if `compile-command' has been previously set, and
if not, invokes `cheeso-guess-compile-command' to set the value.
Then it invokes the `compile' function, interactively."
  (interactive)
  (cond
   ((not (boundp 'cheeso-local-compile-command-has-been-set))
    (cheeso-guess-compile-command)
    (set (make-local-variable 'cheeso-local-compile-command-has-been-set) t)))
  ;; local compile command has now been set
  (call-interactively 'compile))

;; in lieu of binding to `compile', bind to my monkeypatched function
(global-set-key "\C-x\C-e"  'cheeso-invoke-compile-interactively)

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


EDIT अब " चालाक-संकलन " है जो इस विचार को एक कदम आगे ले जाता है।


2

दस्तावेज़ीकरण लुकअप पर: जो आपकी प्रोग्रामिंग लैंग्वेज (भाषाओं) पर निर्भर करता है।

सी लाइब्रेरी और सिस्टम कॉल आमतौर पर मैन पेजों में प्रलेखित होते हैं। उसके लिए आप उपयोग कर सकते हैं M-x man। जानकारी के पन्नों में कुछ चीजों को बेहतर तरीके से प्रलेखित किया जा सकता है; उपयोगM-x info

खुद के लिए, उपयोग करें C-h f। अजगर के लिए, का उपयोग करें>>> help(<function, class, module>) दुभाषिया में ।

मुझे लगता है कि ज्यादातर अन्य भाषाएँ HTML रूप में प्रलेखन प्रदान करती हैं। उसके लिए, एक एम्बेडेड ब्राउज़र का प्रयास करें (मैं w3m का उपयोग करता हूं)। अपने BROWSERपर्यावरण चर को रैपर स्क्रिप्ट emacsclient -e "(w3m-goto-url-new-session \"$@\")"पर (* निक्स पर) चारों ओर सेट करें , यदि कोई ब्राउज़र खोल सकता है और आप चाहते हैं कि यह ई-मेल के अंदर खोला जाए।


2

मुझे पता है यह बहुत पुराना पोस्ट है। लेकिन यह सवाल emacs शुरुआती के लिए मान्य है।

IMO को एक विचारधारा के रूप में उपयोग करने का सबसे अच्छा तरीका है Emacs के साथ एक भाषा सर्वर प्रोटोकॉल का उपयोग करना । आप लिंक्ड वेबसाइट में भाषा सर्वर के बारे में सभी जानकारी पा सकते हैं।

एक त्वरित सेटअप के लिए, मैं आपसे इस पृष्ठ पर जाने का आग्रह करूंगा । IMO eglot यह बहुत अच्छी तरह से काम करता है। यह कंपनी की तरह ऑटो पूर्णता पैकेज के साथ अच्छी तरह से एकीकृत करता है। संदर्भ, और अधिक जानकारी प्रदान करता है।

डिबगर के लिए भी, आपको विशिष्ट भाषाओं के लिए विशिष्ट डीबगर की आवश्यकता हो सकती है। आप emacs के भीतर से gdb का उपयोग कर सकते हैं। बस टाइप करें M-x gdb

अपने कोड को संकलित करने के लिए, शेल-कमांड का उपयोग करना सबसे अच्छा है। मैं इस परियोजना eproj पर काम कर रहा हूँ । इसे पूरा करने में कुछ समय लगेगा। लेकिन यह सब कुछ परियोजना के प्रकार के लिए शेल कमांड है। और आपको शेल के माध्यम से प्रोजेक्ट बनाता है। यह कमांड निष्पादित करने के लिए समान है। मुझे इस परियोजना को पूरा करने में मदद की आवश्यकता हो सकती है। यह उपयोग के लिए तैयार नहीं है, लेकिन यदि आपको थोड़ा सा पता है तो आप कोड के माध्यम से जा सकते हैं।

एक तरफ, यह हमेशा emacs संकलन कमांड का उपयोग करने के लिए सबसे अच्छा है।

संस्करण नियंत्रण के लिए, मैंने अभी तक कोई अन्य पैकेज नहीं देखा है जो मैगिट की शक्ति से मेल खा सकता है । यह विशिष्ट है। इसके अलावा git के लिए एक और पैकेज git-timemachine है, जो मुझे बहुत उपयोगी लगता है।

ऑब्जेक्ट लुकअप और क्लास लुकअप भाषा सर्वर प्रोटोकॉल द्वारा प्रदान किया जाता है।

एक परियोजना के पेड़ को ट्रेमेक्स के साथ इंटरफेस की तरह विचारधारा के लिए इस्तेमाल किया जा सकता है ।

प्रोजेक्ट इंटरेक्शन लाइब्रेरी भी है जिसे प्रोजेक्टाइल कहा जाता है

ऑटो पूरा होने के लिए, मुझे कंपनी-मोड बहुत उपयोगी लगता है।

वास्तव में कुछ भी करने के लिए Emacs बनाए जा सकते हैं।


1

हाल के वर्षों में, क्लैंग Emacs C ++ समर्थन का एक महत्वपूर्ण हिस्सा बन गया। Atila Neves ने CppCon 2015 पर एक बात की: "Emacs as a C ++ IDE"

यह 16 मिनट की बात है, जहां वह निम्नलिखित विषयों के लिए समाधान दिखाता है:

  • परिभाषा के लिए कूदो
  • स्वत: पूर्ण करने
  • ऑन-द-फ्लाई सिंटैक्स हाइलाइटिंग
  • प्रोजेक्ट में फ़ाइल खोजें

यहां स्लाइड मिल सकती है


0

यूनिक्स या एक्स विंडोज़ शैली में, मुझे नहीं पता कि एक एकीकृत आईडीई है जो हर चीज के लिए काम करता है।

डिबगर्स के साथ बातचीत करने के लिए, IDE के सिर्फ एक घटक पर, वास्तविक विचार करें । दूसरी बात यह है कि मुझे उपयोगी लगता है कि स्थान संदेशों के लिए पार्सर हैं, ताकि यदि आपके पास कॉल स्टैक ट्रेस हो और कॉलस्टैक में किसी विशेष स्थान पर संपादित करना चाहते हैं, तो यह फ्रंट-एंड इंटरफ़ेस ऐसा कर सकता है।

अब तक यह कार्यक्रम सुधार का उपयोग कर सकता था। लेकिन फिर यह इसे सुधारने के लिए इस पर काम करने वाले लोगों का उपयोग भी कर सकता था।

अस्वीकरण: मैं realgud पर काम करता हूं


0

Lsp-mode आज़माएँ। अब आप सर्वर से जुड़ने वाले एमएसीएस के अंदर अन्य आईडीई कार्यक्षमता का उपयोग कर सकते हैं। अधिक जानकारी के लिए देखें: lsp-mode

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