Answers:
ibuffer-auto-mode
在Ibuffer缓冲区中运行命令会使它在每次交互命令后刷新显示。
似乎没有直接激活它的直接方法。您可以将其放入您的init文件中:
(add-hook 'ibuffer-mode-hook (lambda () (ibuffer-auto-mode 1)))
ibuffer
,那么选择将丢失。
正确的方法是在ibuffer
for中引入支持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)
,潜在地局部