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 ibufferPo 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-modew 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 ibufferdla auto-revert-mode. Można to osiągnąć, definiując buffer-stale-functiondla tych buforów. Być może, skoro buffer-menuobsł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 ibufferjuż to robi (jest ustawiona na ibuffer-update)
ibuffer-auto-mode?
auto-revert-modeużywa timerów i ibuffer-auto-modeużywa post-command-hook, więc jest oczywista różnica ; ale z drugiej strony nie mogłem powiedzieć, czy jedno jest lepsze od drugiego.
ibufferbuforó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-hookten 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ć gjawny 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 ibufferbufor jest widoczny, czy nie.
(setq auto-revert-verbose nil), potencjalnie lokalnie