git으로 버전 관리중인 프로젝트에서 작업 할 때 종종 열려있는 많은 파일에 영향을 미치는 쉘에서 몇 가지 작업을 수행 한 다음 실수로 새 버전을 방해하지 않도록 열려있는 모든 버퍼를 되돌리려 고합니다. 내가 열었던 건 뭐든지 magit
여기서 도움 이 될 수 있지만 셸의 워크 플로에 익숙하며 지금은 유지하고 싶습니다. 대신 열려있는 모든 버퍼를 되돌리고 기존 git checkout
파일을 더 이상 가지고 있지 않은 분기로 인해 기존에 중지 된 것을 닫고 싶습니다 .
Google 검색에서 얻은 다음 코드 조각이 있습니다.
(defun revert-all-buffers ()
"Refreshes all open buffers from their respective files"
(interactive)
(let* ((list (buffer-list))
(buffer (car list)))
(while buffer
(when (and (buffer-file-name buffer)
(not (buffer-modified-p buffer)))
(set-buffer buffer)
(revert-buffer t t t))
(setq list (cdr list))
(setq buffer (car list))))
(message "Refreshed open files"))
그러나이 휴식이 복귀 할 때, 즉 내 열려있는 파일 중 하나에 오류가 안타 B1
, B2
, B3
, ..., Bn
복귀하는 동안 오류 B2
방지를 B3
- Bn
에서이 복귀된다.
이 경우에 나타나는 오류를 emacs에 무시하도록하려면 어떻게해야합니까? global-auto-revert-mode
각 되돌리기가 자동 완성 및 구문 검사기에서 파일을 다시 구문 분석하고 emacs를 1 초 정도 걸고 구문 검사기와 같은 무거운 물건을 트리거 하기 때문에 사용하고 싶지 않습니다 .
C-x s
"file no longer exists"
.. 아하! 내 버전은 다음과 같이 수정됩니다. :) 곧 게시합니다.
B2
예제 에서 버퍼를 되돌릴 수 없습니다. 나는 매우 비슷한 기능을 사용하고 있으며 (이 코드 조각에서 파생되었을 가능성이 높습니다) 제대로 작동했습니다.