M-x ibuffer
- Виберіть буфер
- Вбийте цей буфер
Після того, як буфер вбитий, буфер ibuffer знову з'являється, але він все ще показує ім'я буфера, знищеного на кроці 3.
Чи можливо автоматичне оновлення списку буферів ibuffer?
M-x ibuffer
Після того, як буфер вбитий, буфер ibuffer знову з'являється, але він все ще показує ім'я буфера, знищеного на кроці 3.
Чи можливо автоматичне оновлення списку буферів ibuffer?
Відповіді:
Запуск команди ibuffer-auto-mode
в буфері Ibuffer змушує оновити відображення після кожної інтерактивної команди.
Прямий спосіб його активації, здається, не існує. Ви можете помістити це у свій файл init:
(add-hook 'ibuffer-mode-hook (lambda () (ibuffer-auto-mode 1)))
ibuffer
, вибір втрачається.
Правильний спосіб зробити це полягає в ознайомленні підтримки в ibuffer
протягом auto-revert-mode
. Цього можна досягти, визначивши buffer-stale-function
для цих буферів. Імовірно, оскільки buffer-menu
ця функція підтримує, було б добре мати її і за течією ibuffer
, але наразі це, мабуть, не так.
У будь-якому випадку, ось як це зробити:
(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)
Примітка: загалом потрібно було б визначити значення для revert-buffer-function
, але це ibuffer
вже робиться (це встановлено ibuffer-update
)
ibuffer-auto-mode
?
auto-revert-mode
використовує таймери та ibuffer-auto-mode
використовує post-command-hook
, тому очевидна різниця ; але я напевно не можу сказати, чи було краще одне з іншого.
ibuffer
змушення буферів поводитись так, як інші, коли справа доходить до оновлення застарілого контенту, я відчуває себе більш чистою. Крім того, мені зазвичай не подобається зловживати post-command-hook
таким чином: це справді надмірно, коли трапляється робити щось абсолютно не пов’язане з буфером. Нарешті, якщо для оновлення вмісту потрібна якась натискання клавіш, це також може бути g
явним способом оновлення контенту. Але, безумовно, це філософське питання :)
Reverting buffer `*Ibuffer*'.
. Повідомлення є нав'язливим, оскільки воно постійно перебиває мене, коли я працюю в мінібуфері. З'являється повідомлення, чи ibuffer
буфер видимий чи ні.
(setq auto-revert-verbose nil)
, потенційно локально