2013-06-21 9 views
5

Emacs कहते हैं, "बफर एक बहुत सिकुड़ गई है" हुक करने,कैसे में Emacs में

बफर foo.txt एक बहुत सिकुड़ गई है; ऑटो को बचाने कि बफर में विकलांग जब तक अगले असली

जब यह पता लगाता है कि पाठ का एक बहुत समय बचाने के ऑटो पर चला गया है, और ऑटो को बचाने अक्षम करता है, जब तक कि auto-save-include-big-deletions गैर नहीं के बराबर है बचाने।

मैं इमाक्स की इस घटना में कैसे लगा सकता हूं यह पता लगा रहा है कि बफर बहुत कम हो गया है? मैं उसमें हुक करना चाहता हूं क्योंकि जब भी बफर बहुत कम हो जाता है तो मैं एक बफर-स्थानीय ध्वज सेट करना चाहता हूं ताकि जब मैं save-some-buffers करता हूं, तो इसकी एक सलाह ध्वज का पता लगाएगी और मुझसे कहेंगे "अरे, यह बफर बहुत कम हो गया है यह सुनिश्चित करने के लिए मतभेद देखना न भूलें कि आपने गलती से कुछ बड़ा हिस्सा हटाया नहीं है "। बैकअप के अलावा यह अच्छा होगा। बस सहेजने से पहले बफर के आकार की तुलना करना और सहेजी गई फ़ाइल गलती से बहुत कुछ हटाने के बाद बहुत कुछ जोड़ने के मामले में असफल हो जाएगी।

+0

वह तर्क सी कोड में लागू किया गया प्रतीत होता है ... शायद इसमें शामिल होना आसान नहीं होगा। क्या आपने प्रारंभिक फ़ाइल आकार (- (पॉइंट-मैक्स) (पॉइंट-मिनट) सेट करने के लिए 'find-file-hook' का उपयोग करने पर विचार किया है और 'save-some-buffers' करते समय उस मान के साथ वर्तमान आकार की तुलना कर रहे हैं? – juanleon

+0

खोज-फ़ाइल-हुक का उपयोग करके, कोई उपयोगकर्ता के कई नए टेक्स्ट जोड़ने के मामलों का पता नहीं लगा सकता है, फिर गलती से बहुत पुराना पाठ हटाकर सहेज सकता है (सभी Emacs के भीतर) –

उत्तर

4

auto-save-hook उस संदेश को उत्पन्न करने वाले चेक से पहले चला जाता है, ताकि आप जो भी चाहते हैं उसे करने के लिए सी कोड में तर्क को दोहरा सकते हैं। तो आप उस हुक में एक फ़ंक्शन जोड़ सकते हैं।

यह (AFAIK) तर्क है जो सी कोड में उपयोग किया जाता है।

(when (and auto-save-include-big-deletions 
      buffer-file-name 
      (> (* 10 (nth 7 (file-attributes buffer-file-name))) 
       (* 13 (buffer-size))) 
      (> (nth 7 (file-attributes buffer-file-name)) 5000)) 
    ;; do something 
) 

नोट: ऐसा लगता है कि ऑटो-सेव अक्षम होने पर भी हुक चला जाता है।

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