2010-02-27 7 views
5

मैंने अभी Emacs :TODO indicator at left side पढ़ा है, और इसे आजमाया है। यह दिलचस्प लगता है। छोटे संकेतक त्रिकोण प्रकट होते हैं, लेकिन मुझे एक अजीब साइड इफेक्ट मिल रहा है: पाठ स्वयं ही बदला जा रहा है। अक्षर हटाए जा रहे हैं।Emacs: बाएं किनारे पर TODO संकेतक एक अजीब साइड-इफेक्ट है - हटाए गए वर्ण

से पहले:

alt text http://i50.tinypic.com/25ge83s.jpg

के बाद:

alt text http://i46.tinypic.com/2qn4e94.jpg

मोड लाइन संकेत मिलता है कि बफर annotate-todo चलाने के बाद बदल दिया गया है। यह क्या बताता है?

(Emacs मैं उपयोग कर रहा हूँ 22.2.1 विंडोज पर)

+0

वे वास्तव में हटाए नहीं गए थे, बस अलग-अलग प्रदर्शित किए गए थे। जो लगभग icky के रूप में है। मुझे विश्वास नहीं है कि मैंने उस दुष्प्रभाव को नहीं देखा जब मैंने पहली बार समाधान बनाया था। मेरा मानना ​​है कि नया काम करता है जैसा आप उम्मीद करेंगे। –

उत्तर

5

आह ... मैं अपने पहले तरीके की त्रुटि देखते हैं। यहां एक नया संस्करण है।

(defun annotate-todo() 
    "put fringe marker on TODO: lines in the curent buffer" 
    (interactive) 
    (save-excursion 
    (goto-char (point-min)) 
    (while (re-search-forward "TODO:" nil t) 
     (let ((overlay (make-overlay (- (point) 5) (point)))) 
     (overlay-put overlay 'before-string (propertize (format "A") 
                 'display '(left-fringe right-triangle))))))) 

पहले समाधान के लिए इस्तेमाल किया एक 'display पाठ संपत्ति है, जो करने का तरीका बदल निर्दिष्ट पाठ प्रदर्शित किया जाता है इस मामले में यह था, left fringe में त्रिकोण द्वारा बदल दिया। मुझे इसके बजाय 'before-stringoverlay का उपयोग करना था। जो प्रदर्शित होने वाली स्ट्रिंग को नहीं बदलता है।

एक अन्य लाभ, इस द्वारा एनोटेट किए गए कोड का कट/पेस्ट मार्कअप नहीं लेता है।

मैंने इस परिवर्तन को दर्शाने के लिए मूल प्रश्न में कोड को अद्यतन किया है।

+0

यह पूरी तरह से काम करता है! धन्यवाद ट्रे – Cheeso

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