चरण 1: चल रहा है emacs -Q
पहली चीज जो आपको करने की ज़रूरत है वह आपके किसी भी अनुकूलन के बिना emacs है। यदि आप वेनिला Emacs में समस्या को पुन: उत्पन्न कर सकते हैं, तो यह वास्तव में Emacs में एक बग हो सकता है। यह दुर्लभ है, लेकिन हम इसे पहले चरण के रूप में बताते हैं।
यदि आप -Q
ध्वज के साथ कमांड लाइन से Emacs शुरू करते हैं , अर्थात emacs -Q
, आपको एक नंगे या 'वेनिला' emacs मिलेंगे, जिसमें आपका कोई भी स्थानीय अनुकूलन लोड नहीं होगा। क्या आपकी समस्या अभी भी होती है? यदि हां, तो "एक बग नुस्खा प्रदान करना" पर जाएं।
चरण 1 बी: क्या होगा अगर समस्या पैकेज के साथ है?
यदि आपकी समस्या किसी विशेष पैकेज के लिए विशिष्ट है, तो जाहिर है कि आप उस पैकेज को लोड किए बिना इसे पुन: पेश नहीं कर सकते। लेकिन आप केवल संबंधित पैकेज को लोड करना चाहते हैं, आपके सभी कॉन्फ़िगरेशन को नहीं। ऐसा करने के लिए, emacs -Q
फिर से दौड़ें और एक छोटी स्क्रिप्ट तैयार करें जैसे कि निम्नलिखित:
(require 'package)
(setq package-load-list
'((package1 t)))
(package-initialize)
package1
उस पैकेज के नाम से बदलें जिसे आप लोड करना चाहते हैं। यदि आपको कई पैकेज लोड करने की आवश्यकता है, तो तदनुसार स्क्रिप्ट को संशोधित करें:
(require 'package)
(setq package-load-list
'((package1 t)
(package2 t)
(package3 t)))
(package-initialize)
इस कोड को लोड करने के लिए, आप इसे *scratch*
बफर में पेस्ट कर सकते हैं , और कॉल कर सकते हैं M-x eval-buffer
। (या कोई भी बफर, जब तक कि उसमें कोई अन्य कोड न हो!)।
इस बिंदु पर, आपने पैकेज (ओं) को लोड किया है, और आपके द्वारा परीक्षण किए जा रहे पैकेज (ओं) को लोड किया जा रहा है। यदि आप अब समस्या को पुन: उत्पन्न कर सकते हैं, तो "बग बग प्रदान करना" पर जाएं।
चरण 2: अपने में एक बग ढूँढना .emacs
अब आपने पुष्टि कर दी है कि आपके कॉन्फ़िगरेशन में कुछ समस्या आ रही है ("कॉल घर के अंदर से आ रही है!")। आपका कॉन्फ़िगरेशन कई हजारों लंबी लाइनें हो सकता है, और कई अलग-अलग फ़ाइलों को लोड कर सकता है। समस्या को खोजने के लिए, आप एक द्विआधारी खोज करेंगे, एक बार में आधे कोड को कम करने के लिए नीचे की चीज़ों पर टिप्पणी करेंगे। 1
- विकल्प के
emacs
बिना , अपने नियमित इमैक खोलें -Q
।
- अपनी कॉन्फ़िग फ़ाइल खोलें (आमतौर पर
~/.emacs
या .emacs.d/init.el
, यदि आप इसे आज़मा नहीं पाते हैं C-h v user-init-file
)
- फ़ाइल के पहले आधे का चयन करें:
C-space
निशान सेट करने के लिए, क्षेत्र का विस्तार करने के लिए आधे रास्ते को नीचे स्क्रॉल करें
- चयनित क्षेत्र को टिप्पणी दें:
M-;
और फ़ाइल को सहेजें
- एक नया
emacs
(आपका परीक्षण emacs ) खोलें , जिससे पहले emacs चल रहे हैं। परीक्षण emacs आपके कॉन्फिगर के कम किए गए संस्करण को पढ़ेगा।
- परीक्षण emacs में समस्या को पुन: उत्पन्न करने का प्रयास करें
- यदि आप इसे पुन: पेश नहीं कर सकते हैं, तो परीक्षण emacs बंद करें , और आपके मूल emacs
undo
में टिप्पणी के साथ C-/
, और शेष कोड के आधे पर टिप्पणी करें। एक नया परीक्षण emacs खोलें और फिर से प्रयास करें।
- यदि आप समस्या को पुन: उत्पन्न कर सकते हैं, तो शेष कोड के आधे पर टिप्पणी करें और देखें कि क्या समस्या बनी रहती है।
- इस प्रक्रिया को तब तक दोहराएं जब तक आपको समस्या को पुन: उत्पन्न करने के लिए आवश्यक अपने विन्यास का सबसे छोटा हिस्सा न मिल जाए।
यदि आपकी समस्या एक विशिष्ट पैकेज के साथ है, तो आपको कोड को छोड़ना होगा जो उस पैकेज को लोड करता है, बेशक।
यदि आपकी कॉन्फ़िगरेशन फ़ाइल अन्य फ़ाइलों को लोड करती है, तो आप अपनी खोज को उन फ़ाइलों में भी विस्तारित कर सकते हैं।
इस बिंदु पर, आपने पाया होगा कि समस्या सिर्फ एक पंक्ति या दो कोड के कारण है। आप इसे स्वयं ठीक करने में भी सक्षम हो सकते हैं। यदि हां, तो बधाई, आपने कुछ सीखा है! अन्यथा, चरण तीन के साथ आगे बढ़ें।
चरण 3: एक बग नुस्खा प्रदान करना
इस बिंदु पर, आपको यहां पोस्ट करने के लिए एक विस्तृत बग नुस्खा प्रदान करने में सक्षम होना चाहिए। इसमें शामिल होना चाहिए:
- आपका Emacs संस्करण (आप Emacs से इसे प्राप्त कर सकते हैं
M-x emacs-version
- आपका ऑपरेटिंग सिस्टम (विंडोज #, मैक, लिनक्स वितरण)
- पैकेज का संस्करण आपके संघर्ष के साथ, यदि लागू हो
- समस्या को प्रदर्शित करने के लिए आवश्यक विशिष्ट कदम, जिसमें आप होने की उम्मीद करते हैं , और वास्तव में क्या होता है ।
उदाहरण के लिए, मैं इस तरह से एक प्रश्न पोस्ट कर सकता हूं:
मुझे सुपर-मोड की समस्या हो रही है। जब मैं उपयोग M-x sm-compile-code
करता हूं , तो यह मेरे पेपाल खाते से निकासी करता है।
प्रजनन करने कि प्रक्रिया:
सुपर मोड लोड करें:
(require 'package)
(setq package-load-list
'((super-mode t)))
(package-initialize)
- के साथ एक नई फ़ाइल खोलें
C-x C-f my-code
- कोड की एक पंक्ति दर्ज करें:
10 goto 10
मैं उम्मीद करता हूं कि यह सुपर-कंपाइलर को आमंत्रित करेगा और मेरे कार्यक्रम को संकलित करेगा। इसके बजाय, मुझे मिनीबफ़र में एक संदेश दिखाई देता है "$ 100 पेपाल से सुपर-मोड लेखक को हस्तांतरित"
GNU Emacs 25.1.50.3
डेबियन लिनक्स
सुपर-मोड संस्करण 3.1415
1 बग हंटर पैकेज, इस के साथ मदद कर सकता है (अर्ध) स्वचालित रूप से आपके init फ़ाइल bisecting।
emacs -Q
पहले चरण के रूप में अनुरोध करने वाले उत्तर / टिप्पणियां प्राप्त करते हैं । मैंने उन सवालों के लिंक को नए उपयोगकर्ताओं के लिए सामान्य मदद के रूप में लिखने के लिए इसे लिखा था।