2009-09-13 9 views
5

पायथन-मोड में, पीई-निष्पादन-क्षेत्र नामक एक फ़ंक्शन है जो मूल्यांकन के लिए पायथन बफर को कोड का एक हाइलाइट किया गया क्षेत्र भेजता है। मूल्यांकन के बाद, कर्सर पाइथन बफर में है, लेकिन मैं यह पसंद करूंगा कि यह स्क्रिप्ट बफर में रहेगा, इसलिए मैं और कोड तैयार करना जारी रख सकता हूं। मैंने एक साधारण परामर्श समारोह लिखा:पायथन-मोड फ़ंक्शन पर Emacs defadvice

(defadvice py-execute-region             
    (after py-execute-region-other-window activate)       
    """ After execution, return cursor to script buffer """     
    (other-window 1)               
) 

लेकिन यह कुछ भी नहीं करता है। मैंने अन्य प्रकारों की कोशिश की है जैसे कि 'बाद' के बजाय 'आस-पास' का उपयोग करना; स्क्रिप्ट बफर नाम में एक वैरिएबल सेट करना और फिर उस बफर और उस तरह की सामग्री पर पॉप-टू-बफर सेट करना। कोई सफलता नहीं! मुझे आश्चर्य है कि इसका मैकेनिक्स किसी के लिए स्पष्ट है ... धन्यवाद!

उत्तर

8

इस मामले हल होने की

(custom-set-variables 
'(py-shell-switch-buffers-on-execute nil)) 
1

आपके पास क्या है मेरे लिए ठीक काम करता है। और इसे स्वतः सक्रिय करना चाहिए, इसलिए एक अलग सक्रियण अनावश्यक होना चाहिए। हालांकि, अगर आप परिवर्तनों को प्रभावी करने के लिए करने के लिए डी-सक्रिय करने के लिए और फिर से सक्रिय करने सलाह की जरूरत है:

1) को परिभाषित करने और सलाह

2 को सक्रिय) यह तुम क्या चाहते नहीं करता है, तो सलाह बदलने

3) उसे निष्क्रिय: (विज्ञापन निष्क्रिय 'py-निष्पादित-क्षेत्र)

4) उसे फिर से सक्रिय: (विज्ञापन सक्रिय' py-निष्पादित-क्षेत्र)

चरण 4 परिवर्तन उठाना चाहिए आपने चरण 2 में बनाया है। वैकल्पिक रूप से, आप चरण 2 में कोड बदल सकते हैं और फिर पुनः- चरण 4 में कोड का मूल्यांकन करें (माना जाता है कि सक्रिय ध्वज सेट है)।

+0

धन्यवाद! ... लेकिन अभी भी मेरे लिए काम नहीं करता है। अगर मैं defadvice के शरीर को प्रतिस्थापित करता हूं (अन्य विंडो 1) ("x" डालें), यह स्क्रिप्ट बफर में "x" डालता है लेकिन कर्सर अभी भी पाइथन बफर में है ... बहुत भ्रमित है। – hatmatrix

+0

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

2

save-window-excursion पर कॉल में फ़ंक्शन को लपेटने के लिए चारों ओर सलाह का उपयोग करें, जो कमांड पूर्ण होने के बाद पिछली विंडो कॉन्फ़िगरेशन को पुनर्स्थापित करेगा।

(defadvice py-execute-region 
    (around preserve-window-configuration activate) 
    "After execution, return cursor to script buffer" 
    (save-window-excursion ad-do-it)) 

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

(defadvice py-execute-region 
    (after show-pybuf-other-window activate) 
    "After execution, show the python buffer in another window." 
    (switch-to-buffer-other-window "[PYTHON BUFFER NAME]")) 

इसके अलावा, सुनिश्चित करें कि आप elisp में """triple quotes""" का उपयोग नहीं करते हैं। मैं नहीं सोचता कि वे काम करते हैं।

+0

धन्यवाद! लेकिन काम नहीं करता है ...सेव-विंडो-भ्रमण की तरह लगता है कि मैं क्या चाहता हूं लेकिन यह कुछ भी नहीं दिखता है, और दूसरा पाइथन और स्क्रिप्ट बफर की स्थिति को फिसलता है (हालांकि यह कर्सर को विंडो में रखता है जहां स्क्रिप्ट बफर मूल रूप से था)। मैंने मूल रूप से स्विच-टू-बफर-अन्य-विंडो की बजाय पॉप-टू-बफर के समान कुछ करने की कोशिश की थी और यह स्क्रिप्ट विंडो में पाइथन बफर भी डाल दिया था! – hatmatrix

+0

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

+0

धन्यवाद - हाँ, मेरी विंडो कॉन्फ़िगरेशन अपरिवर्तित है लेकिन कर्सर पाइथन बफर में समाप्त होता है ... मुझे लगता है कि मुझे अवधारणा मिलती है लेकिन यह मुझे परेशान कर रही है कि यह या अन्य परीक्षणों में से कोई भी क्यों काम नहीं करता ... – hatmatrix

1

मैं वास्तव में यह पता प्रयास नहीं किया है प्रकट होती है, लेकिन मैं ढूंढें फ़ाइल के लिए कुछ इसी तरह कर किया था, और वहाँ पर मैं अन्य कॉल करने से पहले इंटरैक्टिव फोन करने की जरूरत -खिड़की। मुझे वास्तव में Emacs Lisp का कोई वास्तविक विचार नहीं है, लेकिन यह काम कर सकता है।

(defadvice py-execute-region             
    (after py-execute-region-other-window activate)       
    (interactive) 
    (other-window 1)               
) 
संबंधित मुद्दे