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.