M-x ibuffer
- Wybierz bufor
- Zabij ten bufor
Po zabiciu bufora ponownie pojawia się bufor ibuffera, ale nadal pokazuje nazwę bufora zabitego w kroku 3.
Czy możliwe jest automatyczne odświeżanie listy buforów przez ibuffer?
M-x ibuffer
Po zabiciu bufora ponownie pojawia się bufor ibuffera, ale nadal pokazuje nazwę bufora zabitego w kroku 3.
Czy możliwe jest automatyczne odświeżanie listy buforów przez ibuffer?
Odpowiedzi:
Uruchomienie polecenia ibuffer-auto-mode
w buforze Ibuffer powoduje odświeżenie ekranu po każdym poleceniu interaktywnym.
Wydaje się, że nie ma bezpośredniego sposobu na automatyczną aktywację. Możesz umieścić to w swoim pliku init:
(add-hook 'ibuffer-mode-hook (lambda () (ibuffer-auto-mode 1)))
ibuffer
, wybór zostanie utracony.
Właściwym sposobem na to jest wprowadzenie wsparcia ibuffer
dla auto-revert-mode
. Można to osiągnąć, definiując buffer-stale-function
dla tych buforów. Być może, skoro buffer-menu
obsługuje tę funkcję, dobrze byłoby mieć ją również wcześniej ibuffer
, ale wydaje się, że tak nie jest na razie.
Tak czy inaczej, oto sposób na zrobienie tego:
(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)
Uwaga: ogólnie rzecz biorąc, należałoby zdefiniować wartość revert-buffer-function
, ale ibuffer
już to robi (jest ustawiona na ibuffer-update
)
ibuffer-auto-mode
?
auto-revert-mode
używa timerów i ibuffer-auto-mode
używa post-command-hook
, więc jest oczywista różnica ; ale z drugiej strony nie mogłem powiedzieć, czy jedno jest lepsze od drugiego.
ibuffer
buforów zachowuje się jak inne, jeśli chodzi o odświeżanie przestarzałej zawartości, dla mnie jest czystsze. Poza tym ogólnie nie lubię nadużywać w post-command-hook
ten sposób: to naprawdę przesada, gdy zdarzy się, że zrobisz coś zupełnie niezwiązanego z buforem. Wreszcie, jeśli do odświeżenia treści jest wymagane naciśnięcie klawisza, równie dobrze może to być g
jawny sposób aktualizacji treści. Ale oczywiście jest to kwestia filozoficzna :)
Reverting buffer `*Ibuffer*'.
Wiadomość jest natrętna, ponieważ przeszkadza mi, gdy pracuję w minibuforze. Komunikat pojawia się, czy ibuffer
bufor jest widoczny, czy nie.
(setq auto-revert-verbose nil)
, potencjalnie lokalnie