Czy istnieje tryb Emacsa, który podkreśla różnice w stosunku do zatwierdzonej wersji?


31

Jedną z funkcji Xcode, które moim zdaniem jest całkiem fajne, jest tryb „Porównanie”, który stale pokazuje różnice między bieżącym buforem a ostatnim zatwierdzeniem.

Tryb porównania

Czy jest coś takiego dla Emacsa? Tak naprawdę nie dbam o jednoczesne widoki obok siebie. Samo podkreślenie tła wszelkich zmienionych linii byłoby bardzo pomocne.

Wiem, że zawsze mogę to zrobić C-x v =, ale jest to statyczny widok jednego punktu w czasie i pokazuje tylko różnice. Chcę zobaczyć cały mój plik, edytowalny, z wyróżnionymi różnicami.

Odpowiedzi:


30

Biblioteka diff-hl Dmitrija Gutova zapewnia diff-hl-mode, która daje wyróżnienie frędzli pokazane w górnym oknie na poniższym zrzucie ekranu (z rzeczywistym porównaniem pokazanym w dolnym oknie do porównania):

zrzut ekranu diff-hl

Wykorzystuje ogólną vcfunkcjonalność Emacsa, aby być agnostycznym wobec VCS. Readme mówi: „Testowane z Git, Mercurial, Bazaar i SVN. Może współpracować także z innymi backendami VC”.

Zauważ, że diff-hl-margin-modemożna go zastosować, jeśli używasz terminalowego Emacsa zamiast GUI Emacsa.

Domyślnie diff-hlpodkreśla tylko różnice między zapisanym plikiem a repozytorium; ale diff-hl-flydiff-modeumożliwia również wyróżnienie niezapisanych różnic, abyś mógł zobaczyć zmiany podczas edycji.

Zwróć także uwagę na wbudowane (do standardowych Emacsa) highlight-changes-mode. To tak naprawdę nie rozwiązuje problemu od razu po wyjęciu z pudełka, ale highlight-compare-*funkcje mogą ułatwić rozwiązanie.


# 33 zostało rozwiązane.
Dmitry

1
Dmitry: Rzeczywiście - próbowałem tego od kilku dni i mogę potwierdzić, że ta funkcja działa bardzo dobrze :)
phils

Miło mi to słyszeć; zostało napisane przez jednego bardzo cierpliwego współpracownika. Dziękujemy za aktualizację odpowiedzi!
Dmitry

10

Nie określasz, jakiego systemu kontroli wersji używasz, ale jeśli jest to git, możesz użyć git-gutter, aby umieścić wskaźnik na marginesach, gdy linia została dodana, usunięta lub zmodyfikowana. Jest dostępny w MELPA przez M-x package-install git-gutter.


Wygląda to dość blisko tego, co sobie wyobrażałem, ale wydaje się, że aktualizuje rynnę tylko wtedy, gdy bufor jest zapisany. Zastanawiam się, jak trudno byłoby zintegrować się z (lub w inny sposób zachowywać się bardziej) flymake ...
Ken

10

Powinieneś sprawdzić Ediffa . Może wyświetlać różnice i działać jako (3-drożne) narzędzie scalające. Pozwala łatwo cofnąć zmiany, a także uwypukla wyrafinowane różnice, aby pokazać tylko te części przystani, które faktycznie się zmieniły.

zrzut ekranu Ediff

ediff-revision pozwoli ci łatwo porównać z ostatnim zatwierdzeniem lub dowolnymi wcześniejszymi zatwierdzeniami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.