Как я могу заставить Emacs возвращать все неизмененные буферы при переключении ветвей в git?
Вопрос
Часто, когда я переключаю ветки в git, если файлы открыты в emacs, emacs спрашивает, хочу ли я вернуть их обратно (поскольку он думает, что они изменились на диске), даже если содержимое идентично.
Во-первых, я хотел бы найти способ, чтобы emacs вообще не спрашивал меня об этом, если содержимое на диске идентично содержимому в буфере.
Во-вторых, я хотел бы команду, которая вернула (без запроса) все мои открытые буферы, в которых нет несохраненных изменений, и запросила меня о тех, в которых есть несохраненные изменения.
В качестве альтернативы, я был бы открыт для предложений о других решениях, способах работы и т.д., которые я мог бы попробовать.Я вполне доволен написанием emacs-lisp, если люди могут подсказать мне, с чего начать.
PS Я использую Aquamacs на OSX, если это имеет значение.
Редактировать:
Что ж, я обнаружил, что пакет revbuffs - это в значительной степени то, что мне нужно.Конечно, достаточно, чтобы у меня не возникло желания самому попробовать написать что-нибудь новое.(Я сопоставил revbuffs с Cmd-R, который работает довольно хорошо.Вроде как похоже на Cmd-R в других приложениях Mac).
Режим глобального автоматического возврата был бы совершенно прекрасным решением, и я хотел бы выбрать два варианта ответа.Я предпочитаю ревбаффы просто из-за, возможно, иррационального чувства желания контролировать то, что происходит.
Я вроде как догадывался, что если бы я получил доступ к git из emacs, то, вероятно, с этим можно было бы справиться проще, но в настоящее время я предпочитаю получать доступ к git через командную строку.(Я недостаточно долго использую emacs, чтобы сделать его своей операционной системой).Однако я изучу magit немного более тщательно.
Редактировать 2:
Я использую magit уже год и могу настоятельно рекомендовать его для работы с git из emacs.Однако я по-прежнему использую revbuffs всякий раз, когда выполняю перебазирование за пределами emacs.
Решение
Попробуйте пакет revbufs:
revbufs.el
это крошечный пакет Emacs, который безопасно восстанавливает ваши буферы при редактировании файлов как в Emacs, так и с помощью внешних инструментов (например, генераторов кода, таких как Джомтул)...
Другие советы
Возможно, вам понравится режим глобального автоматического возврата.Попробуй бежать global-auto-revert-mode
и если вам это нравится, вы можете добавить (global-auto-revert-mode)
в ваш файл ~/.emacs.
Пакет Magit делает это автоматически, когда вы активируете magit-ionotify-mode
(для inotify нужен emacs 24.4 в Linux).Его описание вы можете найти здесь.