Как я могу заставить Emacs возвращать все неизмененные буферы при переключении ветвей в git?

StackOverflow https://stackoverflow.com/questions/665600

  •  21-08-2019
  •  | 
  •  

Вопрос

Часто, когда я переключаю ветки в 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).Его описание вы можете найти здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top