2008-09-17 5 views
8

एमेक्स में एक अस्थायी बफर को गलती से मार कर एक बार मैंने काम खो दिया है। क्या मैं एक चेतावनी देने के लिए Emacs सेट अप कर सकता हूं जब मैं एक फ़ाइल से जुड़े बफर को मारता हूं?Emacs में अस्थायी बफर को मारने से पहले मुझे चेतावनी कैसे मिल सकती है?

उत्तर

10

एक ऐसा फ़ंक्शन बनाएं जो आपको पूछेगा कि क्या आप सुनिश्चित हैं कि बफर संपादित किया गया है और फ़ाइल से संबद्ध नहीं है। फिर उस फ़ंक्शन को kill-buffer-query-functions सूची में जोड़ें।

Buffer File Name के लिए दस्तावेज़ को देखते हुए आप समझ:

  • एक बफर एक फ़ाइल का दौरा नहीं किया गया है तभी चर buffer-file-name है अगर नहीं के बराबर

समारोह लिखने के लिए उस जानकारी का उपयोग:

(defun maybe-kill-buffer() 
    (if (and (not buffer-file-name) 
      (buffer-modified-p)) 
     ;; buffer is not visiting a file 
     (y-or-n-p "This buffer is not visiting a file but has been edited. Kill it anyway? ") 
    t)) 

और फिर हुक में फ़ंक्शन जोड़ें:

(add-to-list 'kill-buffer-query-functions 'maybe-kill-buffer) 
+0

यह काम करता है को छोड़कर मैं "बफ़र" तर्क को दूर करने के लिए है। –

+0

इसके अलावा, क्या इसे अन्य बफर को बाहर करने का कोई तरीका है, जैसे * ओपन हालिया *? –

+0

आप 'buffer-modified-p' के बाद 'और' के अंदर निम्नलिखित डाल सकते हैं: (नहीं (बराबर (बफर-नाम) "* हालिया खोलें *")) – EfForEffort

1
(defun maybe-kill-buffer() 
    (if (and (not buffer-file-name) 
      (buffer-modified-p)) 
     ;; buffer is not visiting a file 
     (y-or-n-p (format "Buffer %s has been edited. Kill it anyway? " 
         (buffer-name))) 
    t)) 

(add-to-list 'kill-buffer-query-functions 'maybe-kill-buffer) 
संबंधित मुद्दे