M-x ibuffer
- Selecione um buffer
- Mate esse buffer
Depois que o buffer é eliminado, o buffer de ibuffer reaparece, mas ainda mostra o nome do buffer eliminado na etapa 3.
É possível que o ibuffer atualize automaticamente a lista de buffers?
M-x ibuffer
Depois que o buffer é eliminado, o buffer de ibuffer reaparece, mas ainda mostra o nome do buffer eliminado na etapa 3.
É possível que o ibuffer atualize automaticamente a lista de buffers?
Respostas:
A execução do comando ibuffer-auto-mode
em um buffer Ibuffer faz com que você atualize a exibição após cada comando interativo.
Não parece haver uma maneira direta de ativá-lo automaticamente. Você pode colocar isso no seu arquivo init:
(add-hook 'ibuffer-mode-hook (lambda () (ibuffer-auto-mode 1)))
ibuffer
, a seleção será perdida.
A maneira certa de fazer isso é introduzir suporte ibuffer
para auto-revert-mode
. Isso pode ser alcançado definindo buffer-stale-function
para esses buffers. Indiscutivelmente, como buffer-menu
suporta esse recurso, seria bom tê-lo a montante ibuffer
também, mas isso não parece ser o caso por enquanto.
De qualquer forma, aqui está uma maneira de fazê-lo:
(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)
Nota: em geral, seria necessário definir um valor para revert-buffer-function
, mas ibuffer
já o faz (está definido como ibuffer-update
)
ibuffer-auto-mode
?
auto-revert-mode
usa temporizadores e ibuffer-auto-mode
usa post-command-hook
, então há uma diferença óbvia ; mas de imediato eu não sabia dizer se um era preferível ao outro.
ibuffer
buffers se comportem como os outros quando se trata de atualizar conteúdo desatualizado parece mais limpo para mim. Além disso, geralmente não gosto de abusar post-command-hook
dessa maneira: é realmente um exagero quando você faz algo completamente não relacionado no buffer. Por fim, se for necessário algum tipo de pressionamento de tecla para que o conteúdo seja atualizado, é possível que seja g
, que é a maneira explícita de atualizar o conteúdo. Mas concedido, é provavelmente uma questão filosófica :) #
Reverting buffer `*Ibuffer*'.
A mensagem é intrusiva, pois me interrompe quando estou trabalhando no minibuffer. A mensagem aparece se o ibuffer
buffer está visível ou não.
(setq auto-revert-verbose nil)
, potencialmente localmente