Чи існує режим Emacs, який підкреслює відмінності від довіреної версії?


31

Однією з особливостей Xcode, яка, на мою думку, є досить акуратною, є режим "Порівняння", який постійно показує відмінності між поточним буфером та останнім комітом.

Режим порівняння

Чи є щось подібне для Emacs? Мені не дуже цікаво одночасні погляди поруч. Просто виділення фону будь-яких змінених ліній було б чудовою підмогою.

Я знаю, що завжди можу зробити C-x v =, але це статичний вигляд одного моменту часу і показує лише розбіжності. Я хочу побачити весь файл, який можна редагувати, з різними кольорами.

Відповіді:


30

Бібліотека Дмитра Гутова надає бібліотеку diff-hldiff-hl-mode , яка дає вам підсвічування бахроми, показане у верхньому вікні на наступному знімку екрана (з фактичним відмінністю відображається у нижньому вікні для порівняння):

скріншот diff-hl

Він використовує загальну vcфункціональність у Emacs, щоб бути VCS-агностиком. У читанні написано: "Тестовано з Git, Mercurial, Bazaar та SVN. Можливо, також працювати з іншими VC-пакетами".

Зауважте, що diff-hl-margin-modeїх можна використовувати, якщо ви використовуєте термінал Emacs, а не GUI Emacs.

За замовчуванням diff-hlпідкреслює лише відмінності між збереженим файлом та сховищем; але diff-hl-flydiff-modeдозволяє також виділити незбережені відмінності, щоб ви могли бачити зміни під час редагування.

Також зверніть увагу на вбудований (до стандартного Emacs) highlight-changes-mode. Це насправді не вирішує вашу проблему нестандартно, але highlight-compare-*функції можуть полегшити рішення.


№ 33 було вирішено.
Дмитро

1
Дмитро: Дійсно - я насправді пробував це протягом останніх кількох днів, і можу підтвердити, що ця функція працює дуже добре :)
філс

Я радий це почути; її написав один дуже терплячий дописувач. Дякуємо за оновлення відповіді!
Дмитро

10

Ви не вказуєте, яку систему управління версіями ви використовуєте, але якщо це git, ви можете використовувати git-gutter, щоб поставити індикатор на полях, коли рядок додано, видалено чи змінено. Доступно в MELPA через M-x package-install git-gutter.


Це виглядає досить близько до того, що я уявляв, але, схоже, він оновлює жолоб лише тоді, коли буфер зберігається. Цікаво, як важко було б інтегруватися з (або інакше діяти більше, як) мухомор ...
Кен

10

Ви повинні перевірити Едіфф . Він може одночасно відображати різні та діяти як (тристоронній) інструмент злиття. Це дозволяє легко повернути зміни, а також виділяє уточнені відмінності, щоб показати вам лише ті частини кожної частини, які фактично змінилися.

скріншот едіффа

ediff-revision дозволить вам легко порівнювати з останніми зобов’язаннями або будь-якими попередніми зобов'язаннями.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.