मारने के लिए कैसे (Cx k) एडिफ्स (ए, बी, सी) बफ़र्स प्रत्येक पर स्वचालित रूप से ediff-quit
?
मारने के लिए कैसे (Cx k) एडिफ्स (ए, बी, सी) बफ़र्स प्रत्येक पर स्वचालित रूप से ediff-quit
?
जवाबों:
(defun my-kill-ediff-buffers ()
(kill-buffer ediff-buffer-A)
(kill-buffer ediff-buffer-B)
(kill-buffer ediff-buffer-C))
(add-hook 'ediff-quit-hook 'my-kill-ediff-buffers)
ध्यान दें कि यह हमेशा एडिफ़-बफ़र्स को मार देगा, भले ही वे एडिफ़ द्वारा नहीं खोले गए हों जैसे कि आपने ediff-buffers
कुछ बफ़र्स के साथ कॉल किया था जिन्हें आपने शुरू करने के लिए खोला था।
आप भी मार सकता है आप चाहते हैं *ediff-errors*
, *ediff-diff*
, *Ediff-Registry*
और *ediff-fine-diff*
साथ ही, लेकिन उन आम तौर पर मुझे परेशान नहीं है।
मैं एक उत्तर जोड़ रहा हूं क्योंकि यह पहला लिंक है जो इस विषय पर मेरे लिए पॉप अप हुआ है, और यह वास्तव में सरल तरीका है।
आप "q" के लिए एक उपसर्ग पास कर सकते हैं और यह एडिफ़ बफ़र्स को मारने के लिए संकेत देगा।
Cu q
यदि आप ediff-keep-variants
इसे अनुकूलित करते हैं तो यह व्यवहार को उल्टा कर देगा: बाहर निकलने पर बफ़र्स को मारने के लिए संकेत दें और यदि उपसर्ग का उपयोग करें तो उन्हें खुला छोड़ देंगे।
(इसे एडिफ़ मैनुअल से मिला)
मैं https://emacs.stackexchange.com/a/17089/18662 पर जाकर इस कोड (GNU Emacs 25.3.1 x86_64-pc-linux-gnu) का उपयोग कर रहा हूं
जैसा कि GNU Emacs Manual में ediff-Skip-हुक ( https://www.gnu.org/software/emacs/manual/html_node/ediff/Hooks.html ) के बारे में बताया गया है :
ध्यान रखें कि एडिफ-कंट्रोल-बफर में एडिफ-क्लीनअप-मेस शुरू होने से पहले निष्पादित होने वाले हुक; समाप्त होने पर उन्हें वर्तमान बफर के रूप में एडिफ-कंट्रोल-बफर को भी छोड़ देना चाहिए। एडिफ-क्लीनअप-मेस के बाद निष्पादित होने वाले हुक से अपेक्षा की जानी चाहिए कि वर्तमान बफर या तो बफर ए या बफर बी होना चाहिए।
इसलिए, मैं * एडिफ कंट्रोल पैनल * बफर को भी मारता हूं । अन्य एडिफ़ बफ़र्स को भी जोड़ा जा सकता है।
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(setq ediff-split-window-function 'split-window-horizontally)
(defvar q-ediff-last-windows nil)
(defun q-store-pre-ediff-winconfig ()
(setq q-ediff-last-windows (current-window-configuration)))
(defun q-restore-pre-ediff-winconfig ()
(progn
(set-window-configuration q-ediff-last-windows)
(ediff-kill-buffer-carefully "*Ediff Control Panel*")))
(add-hook 'ediff-before-setup-hook #'q-store-pre-ediff-winconfig)
(add-hook 'ediff-quit-hook #'q-restore-pre-ediff-winconfig)
आप इस हुक को आज़मा सकते हैं:
(add-hook 'ediff-load-hook
(lambda ()
(add-hook 'ediff-before-setup-hook
(lambda ()
(setq ediff-before-file (buffer-file-name))
(setq ediff-saved-window-configuration (current-window-configuration))))
(let ((restore-window-configuration
(lambda ()
(set-window-configuration ediff-saved-window-configuration))))
(add-hook 'ediff-quit-hook restore-window-configuration 'append)
(add-hook 'ediff-suspend-hook restore-window-configuration 'append))))
lambda
कार्यों को हुक (और सलाह) से बांधने की अनुशंसा नहीं की जाती है । यह हुक चर की समीक्षा करता है और हुक से होने वाले कार्यों को दर्दनाक बनाता है।
यह वही है जो मैं खिड़कियों को बंद करने के लिए उपयोग कर रहा हूं:
(add-hook 'ediff-after-quit-hook-internal 'winner-undo)