2009-05-01 8 views
6

को नियंत्रित करने से गड़बड़ी और पीडीबी को रोकना मैं पाइथन प्रोग्राम डीबग करने के लिए पीडीबी का उपयोग कर रहा हूं और इसके व्यवहार से नाखुश हूं।Emacs: विंडोज

मेरे पास स्क्रीन कई emacs विंडो में विभाजित है, और जब मैं पीडीबी निष्पादित करता हूं, तो यह (यादृच्छिक रूप से?) * गड़ * डीबगर के आउटपुट के साथ खिड़कियों में से एक को बदल देता है।

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

मैं अपने विंडोज़ को प्रबंधित करने से गुड/पीडीबी कैसे अक्षम कर सकता हूं? क्या यह emacs में विंडोज & स्क्रीन लेआउट के सभी प्रोग्रामैटिक हेरफेर को रोकने के लिए संभव है?

संपादित करें: toggle dedicated windows

उत्तर

3

sticky windows में देखो: मैं जवाब है कि आंशिक रूप से एक और पोस्ट में इस हल मिल गया।

+0

सेटिंग सेट-विंडो-समर्पित-पी का नुकसान यह है कि खिड़की से सी-एफ खोज-फ़ाइल को अनजाने में फ़ाइल को दूसरे विंडू में खुलता है। मैं जोड़कर इस व्यवहार को ओवरराइड करने में सक्षम था (सेट खिड़की से समर्पित-पी (मिल-बफर खिड़की (वर्तमान-बफर)) नहीं के बराबर) के एक कस्टम संस्करण के लिए मिल-फ़ाइल – EoghanM

+0

स्टिकी खिड़कियां नहीं होगा अपने चिपचिपा खिड़कियों को चुरा लेने की कोशिश करने से गड़बड़/पीडीबी रोकें जहां आपका स्रोत कोड बफर रहता है। अगर गोंड/पीडीबी खिड़की चोरी नहीं कर सकता है, तो यह एक नया Emacs फ्रेम खुल जाएगा। इस समस्या के समाधान के लिए मेरा उत्तर देखें। –

2

आपको Sticky Windows का उपयोग करना चाहिए ताकि आपकी खिड़कियां और बफर स्टिक हो सकें जहां वे हैं लेकिन चिपचिपा विंडोज़ आपकी खिड़कियों को चुरा लेने की कोशिश से गड़बड़/पीडीबी बंद नहीं करेगा। जब गड/पीडीबी आपकी सोर्स कोड विंडो चुरा नहीं सकता है, तो यह मौजूदा फ्रेम पर एक और विंडो होने पर भी एक नया Emacs फ्रेम खोलता है।

इस तथ्य समारोह gud-pdb बफर (py-pdbtrack-track-stack-file) के लिए कूद करने की कोशिश करता है कि तर्क अन्य खिड़की t करने के लिए सेट के साथ समारोह pop-to-buffer कॉल से आता है।

(defadvice pop-to-buffer (before cancel-other-window first) 
    (ad-set-arg 1 nil)) 

(ad-activate 'pop-to-buffer) 

आप को:

कॉल पॉप करने के लिए बफर, आप pop-to-buffer पर एक सलाह (अपने .emacs में) को परिभाषित करते हुए अन्य-खिड़की की भूमिका को रद्द कर सकता है सभी पुस्तकालयों के लिए इस व्यवहार को नाकाम करने के लिए एक नई विंडो बनाने के लिए display-buffer (विंडोज़ और फ्रेम पर एक विशेष बफर प्रदर्शित करने के लिए उपयोग की जाने वाली निम्न-स्तरीय दिनचर्या) को मजबूर करने के लिए परिवर्तनीय pop-up-windows को शून्य पर कस्टमाइज़ करें।

+0

ध्यान दें कि 'पॉप-टू-बफर' के तर्क Emacs 24 में बदल गए हैं, और यह सलाह कुछ हड़ताली – phils

3

मैं Emacs 24. पर सफलता के बिना इन सभी दृष्टिकोण की कोशिश की तो आप अभी भी रुचि रखते मैं के जरिए पुरानी gdb व्यवहार में वापस लाई हैं, तो 'gud-gdb' जो gdb/Emacs बातचीत के पुराने व्यवहार (कोई समर्पित-खिड़कियों को लागू करता है और नहीं I/O बफर)। यदि आप इसका उपयोग करते समय एम-एक्स गॉड-जीडीबी को कॉल नहीं करना चाहते हैं, तो आप एम-एक्स जीडीबी

+0

का कारण बनती है अंत में कुछ ऐसा है जो emacs के नवीनतम संस्करण के साथ काम करता है! – DomCote

3

के लिए एक उपनाम परिभाषित कर सकते हैं मेरे पास एक समाधान है जो जीडीबी को विंडोज चोरी करने से रोकता है। यह Emacs 24.4 (2014-07-18 स्नैपशॉट) के साथ काम करता है और समर्पण बफर की आवश्यकता नहीं है। अन्य उत्तरों पर लाभ यह है कि जब भी आप बफर बदलते हैं, तो आपको समर्पण और अवांछित बफर को परेशान नहीं करना पड़ेगा, जो जल्दी ही थकाऊ हो जाता है।

प्लेस अपने .emacs में इस सलाह:

(defadvice gdb-inferior-filter 
    (around gdb-inferior-filter-without-stealing) 
    (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io) 
    (comint-output-filter proc string))) 
(ad-activate 'gdb-inferior-filter) 

यह प्रभावी रूप से इस समारोह के रूप में gdb-mi.el में परिभाषित बदल देता है और शाखा है, जो gdb-प्रदर्शन-बफर, जो का कारण है कॉल को हटा खिड़की चतुरता।