버퍼 목록을 자동으로 새로 고치려면 어떻게해야합니까?


11
  1. M-x ibuffer
  2. 버퍼를 선택하십시오
  3. 그 버퍼를 죽여

버퍼가 종료 된 후에는 ibuffer 버퍼가 다시 나타나지만 여전히 3 단계에서 종료 된 버퍼 이름이 표시됩니다.

버퍼 목록을 자동으로 새로 고칠 수 있습니까?


Ibuffer에서 Ctrl-x Ctrl-b를 다시 누르면 자동 새로 고침이 수행됩니다.
ofenerci

나 (v25.2.2) CX 인증 기관은 버퍼의 현재 목록에 추가 창 * 버퍼 목록 *을 열리지 만 * Ibuffer *이 변경되지 않습니다를 들어 @ofenerci
user2740

답변:


13

ibuffer-auto-modeIbuffer 버퍼에서 명령 을 실행하면 각 대화식 명령 후에 화면이 새로 고쳐집니다.

자동으로 직접 활성화하는 방법은 없습니다. 이것을 init 파일에 넣을 수 있습니다 :

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

1
이 허용 된 솔루션은 다른 버퍼에서 선택을 중단합니다. 해당 후크를 활성화하면 버퍼에서 선택을 한 다음 invoke ibuffer를 선택하면 선택이 손실됩니다.
nephewtom

8

올바른 방법은에 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)


1
이 방법을 선호하는 이유가 ibuffer-auto-mode있습니까?
nispio

1
auto-revert-mode타이머 및 사용 ibuffer-auto-mode용도를 post-command-hook분명이 그래서, 차이 ; 그러나 손을 나는 하나가 다른 쪽보다 선호되는지 말할 수 없었다.
phils

4
@nispio 나는 임시 솔루션보다 일반적인 솔루션을 선호하는 경향이 있다고 생각합니다. 그런 의미에서 ibuffer오래된 콘텐츠를 새로 고칠 때 버퍼를 다른 것처럼 사용 하게 만드는 것이 더 깨끗합니다. 또한, 나는 일반적으로 post-command-hook그런 식 으로 학대하는 것을 좋아하지 않습니다. 버퍼와 완전히 관련이없는 것을 할 때 실제로 과도합니다. 마지막으로, 컨텐츠를 새로 고치기 위해 어떤 종류의 키 입력이 필요한 경우에는 컨텐츠를 g업데이트하는 명시적인 방법 일 수도 있습니다 . 그러나 그것은 아마도 철학적 인 문제 일 것입니다 :)
Sigma

1
이 방법을 사용할 때 Reverting buffer `*Ibuffer*'. 메시지가 계속 나타납니다. 미니 버퍼에서 작업 할 때 메시지가 계속 방해되므로 메시지가 방해가됩니다. ibuffer버퍼가 표시 되는지 여부에 대한 메시지가 나타납니다 .
nispio

1
@nispio (setq auto-revert-verbose nil), 잠재적으로 로컬
Sigma
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.