İbuffer'ı arabellek listesini otomatik yenilemeyi nasıl yapabilirim?


11
  1. M-x ibuffer
  2. Bir arabellek seçin
  3. O tamponu öldür

Tampon öldürüldükten sonra, tampon tamponu yeniden belirir, ancak yine de 3. adımda öldürülen tampon adını gösterir.

İbuffer'ın arabellek listesini otomatik olarak yenilemesini sağlamak mümkün mü?


Eğer ibuffer'da Ctrl-x Ctrl-b tuşlarına tekrar basarsanız, otomatik yenileme yapılır.
ofenerci

@ofenerci Benim için (v25.2.2) Cx Cb ek bir pencere açar * Tampon Listesi * geçerli arabellek listesi ile birlikte, ancak * Ibuffer * değişmeden kalır
user2740

Yanıtlar:


13

Komutu ibuffer-auto-modebir Ibuffer arabelleğinde çalıştırmak, her etkileşimli komuttan sonra ekranı yenilemesini sağlar.

Otomatik olarak etkinleştirmenin doğrudan bir yolu yoktur. Bunu init dosyanıza koyabilirsiniz:

(add-hook 'ibuffer-mode-hook (lambda () (ibuffer-auto-mode 1)))

1
Kabul edilen bu çözüm, diğer tampondaki seçimi bozar. Bu kancayı etkinleştirdiğimde, herhangi bir arabellek üzerinde bir seçim yapar ve sonra çağırırsam ibuffer, seçim kaybolur.
yeğeni

8

Bunu yapmak için doğru yolu destek tanıtmaktır ibufferiçin auto-revert-mode. Bu, buffer-stale-functionbu tamponları tanımlayarak elde edilebilir . Tartışmalı bir şekilde, bu buffer-menuözelliği desteklediğinden, onu yukarı akışa sahip olmak iyi olurdu ibuffer, ancak şimdilik böyle görünmüyor.

Her neyse, işte bunu yapmanın bir yolu:

(defun my-ibuffer-stale-p (&optional noconfirm)
  ;; let's reuse the variable that's used for 'ibuffer-auto-mode
  (frame-or-buffer-changed-p 'ibuffer-auto-buffers-changed))

(defun my-ibuffer-auto-revert-setup ()
  (set (make-local-variable 'buffer-stale-function)
       'my-ibuffer-stale-p)
  (set (make-local-variable 'auto-revert-verbose) nil)
  (auto-revert-mode 1))

(add-hook 'ibuffer-mode-hook 'my-ibuffer-auto-revert-setup)

Not: genel olarak, biri için bir değer tanımlamanız gerekir revert-buffer-function, ancak ibufferzaten bunu yapar (olarak ayarlanır ibuffer-update)


1
Bu yöntemi tercih etmek için bir neden var mı ibuffer-auto-mode?
nispio

1
Eh auto-revert-modezamanlayıcılar ve kullanır ibuffer-auto-modekullanır post-command-hookbariz var, bu yüzden fark ; ama hazırlıksız birinin diğerine tercih olup olmadığını söyleyemedim.
phils

4
@nispio Sanırım geçici çözümlere genel çözümler tercih etme eğilimindeyim. Bu anlamda, ibuffereski içeriği yenilemek söz konusu olduğunda arabellekleri başkaları gibi davranmak bana daha temiz geliyor. Ayrıca, genellikle post-command-hookbu şekilde suistimal etmekten hoşlanmıyorum : tamponda tamamen alakasız bir şey yaptığınızda gerçekten aşırıya kaçıyor. Son olarak, içeriğin yenilenmesi için bir çeşit tuş vuruşu gerekiyorsa, içeriği ggüncellemenin açık yolu da bu olabilir . Ama kabul edildi, muhtemelen felsefi bir mesele :)
Sigma

1
Bu yöntemi kullandığımda, bir ileti almaya devam ediyorum Reverting buffer `*Ibuffer*'. Mesaj müdahaleci çünkü minibuffer çalışırken beni kesintiye uğratmaya devam ediyor. ibufferArabelleğin görünür olup olmadığı mesajı görüntülenir .
nispio

1
@nispio (setq auto-revert-verbose nil), potansiyel olarak yerel olarak
Sigma
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.