2012-07-28 10 views
10

दो संबंधित प्रश्नों का उपयोग कर Emacs 23.3.1 लिनक्स पर:Emacs: सेट और टॉगल शो-पीछे-सफ़ेद

पहले, जैसा कि नीचे दिखाया कारण है कि मैं setq साथ t करने के लिए show-trailing-whitespace का मान सेट नहीं कर सकते? जब मैं अपने .emacs में setq संस्करण डालता हूं तो यह मान नहीं बदलता है (जैसा कि कार्यात्मक रूप से देखा गया है और M-x describe-variable का उपयोग करके)।

(setq show-trailing-whitespace t) ; Does not change variable value or give error 

(custom-set-variables    ; Sets show-trailing-whitespace as expected 
'(show-trailing-whitespace t)) 

दूसरा, मैं कैसे t और nil के बीच मूल्य टॉगल कर सकते हैं? मैंने सोचा कि this answer बिल्कुल वही था जो मुझे चाहिए था, लेकिन यह इस मामले में काम नहीं करता है। मैं प्रयोग किया है:

(global-set-key "\M-ow" 'tf-toggle-show-trailing-whitespace) 

(defun tf-toggle-show-trailing-whitespace() 
    "Toggle show-trailing-whitespace between t and nil" 
    (interactive) 
    (setq show-trailing-whitespace (if (= show-trailing-whitespace nil) t nil)) 
    (redraw-display)) 

जब मैं M-ow मारा मैं एक त्रुटि Wront type argument: number-or-marker-p, nil मिलता है। कोई विचार?

उत्तर

17

पहले: के रूप में describe-variable आपको बताता है show-trailing-whitespace है एक बफर वैरिएबल। इसका मतलब है कि setq केवल इसे वर्तमान बफर के लिए सेट करता है और इसलिए .emacs फ़ाइल में किए जाने पर इसका कोई प्रभाव नहीं पड़ता है। setq के बजाय आपको setq-default का उपयोग करने की आवश्यकता के समान कुछ करने के लिए। सभी बफर के लिए आरके।

दूसरा: टॉगलिंग के लिए यदि आप बफर प्रति बफर आधार पर टॉगल करना चाहते हैं तो आप setq का उपयोग करना चाहेंगे। आपको मिली त्रुटि यह है कि आप = का उपयोग करते हैं जो परीक्षण करना है कि दो संख्या बराबर हैं या नहीं। not का उपयोग कर एक क्लीनर फैशन में एक टॉगलिंग किया जाता है। एक साइड नोट के रूप में, (redraw-display) कमांड कुछ भी नहीं कर रहा प्रतीत होता है।

(defun tf-toggle-show-trailing-whitespace() 
    "Toggle show-trailing-whitespace between t and nil" 
    (interactive) 
    (setq show-trailing-whitespace (not show-trailing-whitespace))) 
+0

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

0

लिखने (eq शो-पीछे-सफ़ेद रिक्ति शून्य)

या कम --but reversed--

(अगर शो-पीछे-सफ़ेद

+0

आपको यह समझाना चाहिए कि त्रुटि क्या है। –

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