gitを使用してバージョン管理下のプロジェクトで作業するとき、開いているファイルの多くに影響を与えるシェルでいくつかのことを実行したい場合があります。次に、開いているすべてのバッファを元に戻して、新しいバージョンを誤って上書きしないようにします。私が開いていたもので。私が知っているmagit
、ここで参考にすることができますが、私はシェルで私のワークフローに使用していると私は今のところそれを維持したいと思います。そのため、代わりに、開いているすべてのバッファを元に戻し、おそらく存在git checkout
しなくなったもの(たとえば、そのファイルがなくなったブランチのため)を閉じます。
私はGoogle検索から取得した次のelispのスニペットを持っています。
(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
あなたの例でどのようなエラーがバッファを元に戻すのを妨げていますか?私は非常によく似た関数(おそらくこのスニペットから派生したもの)を使用していますが、うまく機能しています。