2014-12-19 4 views
4

global-auto-revert-mode을 사용하면 다른 도구로 개발/디버그하는 훌륭한 방법입니다. 디스크의 파일에 대한 변경 사항은 해당 emacs 버퍼에 반영됩니다.`dired-auto-revert-buffer`를 서브 디렉토리가 삽입되지 않은 Dired 버퍼에만 어떻게 사용할 수 있습니까?

dired-auto-revert-buffer은 dired 버퍼를 동일하게 만들지 만 dired 버퍼를 되돌릴 수있게 설정하면 재귀 적 디렉토리를 사용할 수 없게됩니다. 그들은 너무 오랫동안 재 장전한다.

dired-auto-revert-buffer은 삽입 (dired-maybe-insert-subdir)이나 특히 재귀 삽입을 실행하지 않는 dired 버퍼에 어떻게 활성화 할 수 있습니까?

답변

3

좋은 질문입니다. 아마도 다른 사람이 더 좋은 아이디어를 얻을 수 있지만, 내가 볼 수있는 한 dired-auto-revert-buffer을 삽입 된 하위 디렉토리가 없을 때만 non-nil을 반환하는 함수 (t 아님)로 설정해야합니다.

트릭 수행해야합니다

(setq dired-auto-revert-buffer (lambda (_dir) (null (cdr dired-subdir-alist)))) 

을하지만 dired-auto-revert-buffer는 기존 Dired 버퍼를 "방문"만 효과가 있다는 사실을 양지해야합니다. 예를 들어 창을 다시 선택하거나 버퍼를 현재 상태로 만드는 것만으로는 충분하지 않습니다. C-x d을 사용하여 다시 방문하면 하위 디렉토리가 삽입되지 않은 경우 자동 되돌릴 수 있습니다.

1

하나의 매개 변수 (디렉토리 이름)로 호출되는 함수에 dired-auto-revert-buffer을 바인드 할 수 있습니다. 이 함수가 nil이 아닌 값을 반환하면 dired 버퍼가 되돌려진다.