2012-04-23 10 views
9

जब भी Emacs में कोई नया फ्रेम बनाया जाता है तो मुझे चलाने के लिए एक आदेश की आवश्यकता होती है। अब तक मैं after-make-frame-functions का उपयोग कर रहा हूं, लेकिन यह हुक केवल make-frame द्वारा बनाए गए फ्रेम पर कॉल किया जाता है। मुझे वास्तव में कुछ ऐसा चाहिए जो emacsclient -c कमांड एक नई विंडो बनाता है।नए फ्रेम के लिए Emacs हुक

क्या यह हासिल करने का कोई तरीका है?

उत्तर

9

मुझे आपके प्रश्न को समझने में कुछ कठिनाई हो रही है। Emacs सर्वर make-frame पर कॉल करता है जब इसे एक नया फ्रेम बनाने की आवश्यकता होती है, इसलिए after-make-frame-functions भी उस मामले में काम करना चाहिए। तो आपकी वास्तविक समस्या क्या है?

क्या यह है कि आप अपने फ़ंक्शन को चलाने के लिए चाहते हैं भले ही Emacs सर्वर कोई नया फ्रेम न बनाएं? यदि ऐसा है, तो अपने फ़ंक्शन को server-switch-hook के साथ-साथ after-make-frame-functions पर जोड़ने का प्रयास करें।

server-switch-hookserver.el में परिभाषित एक चर है।

प्रलेखन: Emacs सर्वर के लिए बफर पर स्विच करते समय हुक चलाएं।

+3

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

+3

कोई समस्या नहीं है। [रबड़ बतख डीबगिंग] (http://en.wikipedia.org/wiki/Rubber_duck_debugging) कार्रवाई में! –

+2

कमाल! मैं आपको प्रॉक्सी द्वारा मेटा रबड़ बतख डीबगिंग की अवधारणा पेश करता हूं, जहां कोई - उदा। स्वयं - एसओ पर एक ही समस्या के साथ किसी को पाता है और समस्या का पता चलता है वास्तव में मौजूद नहीं है। मैं आप दोनों के लिए ऋणी हूँ। – leoger

संबंधित मुद्दे