कैसे छोड़ें एडिफ के शौकीनों को मारने के लिए?


9

मारने के लिए कैसे (Cx k) एडिफ्स (ए, बी, सी) बफ़र्स प्रत्येक पर स्वचालित रूप से ediff-quit?


क्या आपने वास्तव में बफ़र्स को बंद करने का मतलब किया, जैसा कि विंडोज़ को बंद करने का विरोध किया गया था , अर्थात आमतौर पर एक सिंगल विंडो में एक ही फाइल दिखाते हुए वापस जा रहा था (लेकिन फाइलों को खुला छोड़ रहा था)?
गिल्स एसओ- बुराई को रोकें '21

हाँ, मैं मतलब मार बफ़र्स (Cx ट)
डेनिस

आप ऐसा क्यों करना चाहते हैं? अक्सर जब मैं एक एडिफ़ करता हूं तो मुझे बाद में किसी एक बफ़र पर काम जारी रखने की आवश्यकता होती है।
एंड्रयू स्वान

मेरे मामले में मैं diffs देखने के लिए ztree-diff का उपयोग कर रहा हूं और अधिकांश समय के बाद फ़ाइलों में दिलचस्पी नहीं रखता।
अल्विन शोमैन

जवाबों:


1
(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*साथ ही, लेकिन उन आम तौर पर मुझे परेशान नहीं है।


2

मैं एक उत्तर जोड़ रहा हूं क्योंकि यह पहला लिंक है जो इस विषय पर मेरे लिए पॉप अप हुआ है, और यह वास्तव में सरल तरीका है।

आप "q" के लिए एक उपसर्ग पास कर सकते हैं और यह एडिफ़ बफ़र्स को मारने के लिए संकेत देगा।

Cu q

यदि आप ediff-keep-variantsइसे अनुकूलित करते हैं तो यह व्यवहार को उल्टा कर देगा: बाहर निकलने पर बफ़र्स को मारने के लिए संकेत दें और यदि उपसर्ग का उपयोग करें तो उन्हें खुला छोड़ देंगे।

(इसे एडिफ़ मैनुअल से मिला)


1

मैं 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)

0

आप इस हुक को आज़मा सकते हैं:

 (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))))

2
lambdaकार्यों को हुक (और सलाह) से बांधने की अनुशंसा नहीं की जाती है । यह हुक चर की समीक्षा करता है और हुक से होने वाले कार्यों को दर्दनाक बनाता है।
कौशल मोदी

2
यह प्रभावी रूप से खिड़कियां बंद कर देता है, लेकिन सवाल बफ़र्स को मारने के लिए कह रहा है ।
गिल्स एसओ- बुराई को रोकें

0

यह वही है जो मैं खिड़कियों को बंद करने के लिए उपयोग कर रहा हूं:

(add-hook 'ediff-after-quit-hook-internal 'winner-undo)

1
यह प्रभावी रूप से खिड़कियां बंद कर देता है, लेकिन सवाल बफ़र्स को मारने के लिए कह रहा है ।
गिल्स एसओ- बुराई को रोकें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.