どうすればibufferにバッファーのリストを自動更新させることができますか?


11
  1. M-x ibuffer
  2. バッファを選択
  3. そのバッファを殺す

バッファが削除された後、ibufferバッファが再び表示されますが、ステップ3で削除されたバッファ名が引き続き表示されます。

ibufferにバッファのリストを自動更新させることは可能ですか?


ibufferでCtrl-x Ctrl-bをもう一度押すと、自動更新が行われます。
ofenerci 2017

@ofenerci For me(v25.2.2)Cx Cbは現在のバッファーのリストを含む追加のウィンドウ*バッファーリスト*を開きますが、* Ibuffer *は変更されません
user2740

回答:


13

ibuffer-auto-modeIbufferバッファーでコマンドを実行すると、各対話型コマンドの後に表示が更新されます。

自動的に有効にする直接的な方法はないようです。これをinitファイルに入れることができます:

(add-hook 'ibuffer-mode-hook (lambda () (ibuffer-auto-mode 1)))

1
この受け入れられたソリューションは、他のバッファでの選択を壊します。そのフックを有効にすると、バッファーで選択を行ってからを呼び出すibufferと、選択が失われます。
甥である2017年

8

これを行う正しい方法は、ibufferforにサポートを導入することです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)。


1
この方法を優先する理由はありibuffer-auto-modeますか?
nispio 2014年

1
よくauto-revert-modeタイマーをibuffer-auto-mode使用し、を使用post-command-hookしているため、明らかな違いがあります。ただ、一方が他方より好ましいかどうかは、私には言えませんでした。
Phils 2014年

4
@nispio私はアドホックなソリューションよりも一般的なソリューションを好む傾向があると思います。したがって、その意味では、ibuffer古いコンテンツを更新する際にバッファを他のバッファのように動作させることは、私にとってよりクリーンに感じられます。また、私は一般的にpost-command-hookそのように乱用することを嫌います:バッファーでまったく無関係なことをした場合、それは本当にやり過ぎです。最後に、コンテンツを更新するために何らかのキーストロークが必要な場合は、それも同様にgである可能性があります。これは、コンテンツを明示的に更新する方法です。しかし、当然のことながら、それはおそらく哲学的な問題です:)
シグマ

1
この方法を使用すると、メッセージが表示さReverting buffer `*Ibuffer*'. れ続けるミニバッファーで作業していると、メッセージが邪魔になり続けて邪魔になります。ibufferバッファが表示されているかどうかにかかわらず、メッセージが表示されます。
nispio 2014年

1
@nispio (setq auto-revert-verbose nil)、ローカルで可能性がある
シグマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.