Ediff'in tamponları bırakıldığında nasıl öldürülür?


9

(Cx k) ediff'in (A, B, C) tamponları her birinde otomatik olarak nasıl öldürülür ediff-quit?


Gerçekten pencereleri kapatmak yerine tamponları kapatmak mı demek istediniz , yani genellikle tek bir dosyayı gösteren tek bir pencereye geri dönmek (ancak dosyaları açık bırakmak)?
Gilles 'SO- kötü olmayı bırak'

Evet, yani öldürme tamponları (Cx k)
6'da denys

Bunu neden yapmak istiyorsun? Çoğu zaman bir ediff yaptığımda daha sonra tamponlardan birinde çalışmaya devam etmem gerekiyor.
Andrew Swann

Benim durumumda diffs görüntülemek için ztree-diff kullanıyorum ve çoğu zaman diff sonra dosyaları ilgilenmiyorum.
Alwyn Schoeman

Yanıtlar:


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)

Bu, ediff tarafından açılmasalar bile her zaman ediff-buffer'ları öldüreceğini unutmayın; örneğin ediff-buffers, başlamak için açık olduğunuz bazı tamponlarla aradınız .

Ayrıca öldürebilir size isterseniz *ediff-errors*, *ediff-diff*, *Ediff-Registry*ve *ediff-fine-diff*aynı zamanda, ancak bu genellikle beni rahatsız etmeyin.


2

Bir cevap ekliyorum, çünkü bu benim için bu konuda açılan ilk bağlantı ve bu gerçekten daha basit.

Bir öneki "q" olarak iletebilirsiniz; ediff arabelleklerini öldürmeniz istenir.

Cu q

Eğer özelleştirirseniz ediff-keep-variantsdavranışı tersine çevirir: çıkışta arabellekleri öldürmek istemi ve eğer önek kullanılırsa açık bırakılır.

(ediff kılavuzundan aldı)


1

Https://emacs.stackexchange.com/a/17089/18662'yi izleyerek bu kodu (GNU Emacs 25.3.1 x86_64-pc-linux-gnu) kullanıyorum

Ediff-quit-hook ile ilgili GNU Emacs El Kitabında belirtildiği gibi ( https://www.gnu.org/software/emacs/manual/html_node/ediff/Hooks.html ):

Ediff-control-buffer'da ediff-cleanup-mess başlamadan önce kancaların çalıştığını unutmayın; ayrıca bittiklerinde geçerli tampon olarak ediff-kontrol-buffer'ı bırakmalıdırlar. Ediff-cleanup-mess'ten sonra yürütülen kancalar, geçerli tamponun tampon A veya tampon B olmasını beklemelidir.

Bu yüzden, * Ediff Kontrol Paneli * arabelleğini de öldürüyorum . Diğer ediff tamponları da ilave edilebilir.

(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

Bu kancayı deneyebilirsiniz:

 (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İşlevlerin kancalara (ve önerilere) bağlanması önerilmez . Kanca değişkenlerini gözden geçirmeyi ve kancalardan fonksiyonları kaldırmayı acı verici hale getirir.
Kaushal Modi

2
Bu, pencereleri etkili bir şekilde kapatır, ancak soru tamponları öldürmek istiyor .
Gilles 'SO- kötü olmayı bırak

0

Bu pencereleri kapatmak için kullanıyorum:

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

1
Bu, pencereleri etkili bir şekilde kapatır, ancak soru tamponları öldürmek istiyor .
Gilles 'SO- kötü olmayı bırak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.