2009-02-25 4 views
6

Ich benutze Emacs mit CVS und haben cvs-Modus aktiviert. Ich möchte Zeile für Zeile markieren, Änderungen von der neuesten Version in CVS. Ich habe das in intellij gesehen, wo es eine grüne Anzeige für hinzugefügte Zeilen und eine andere Anzeige für geänderte Zeilen und ein drittes Symbol für gelöschte Zeilen gibt.Wie kann ich CVS-Änderungen in Emacs hervorheben?

Gibt es einen cvs-Hervorhebungsmodus für Emacs, um Änderungen von der neuesten Version von cvs anzuzeigen? Ich bin nicht auf der Suche nach einer cvs diff Typ-Funktionalität, die in einem neuen Puffer öffnen würde, aber etwas, das in meinem aktuellen Puffer anzeigen würde, welche Zeilen geändert wurden.

In der folgenden Abbildung befindet sich auf der linken Seite ein blaues Rechteck, in dem Intellij den "Gutter" angibt, um anzuzeigen, dass der Code anders als in der Quellcodeverwaltung ist.

intellij example http://www.jetbrains.com/idea/features/screenshots/60/actions.gif

Ich suche eine ähnliche Funktionalität in Emacs.

+0

bitte s/cvs/vcs so erhalten wir eine Antwort für jede git/bzr/hg/svn ... – elmarco

Antwort

0

Vielleicht möchten Sie Ediff, die genau das zu tun scheint, was Sie wollen.

+1

Nicht genau das, was ich suche. Ich möchte einen untergeordneten Modus, damit er beim Bearbeiten von Code immer aktiviert sein kann. Ich möchte auch direkt mit CVS vergleichen, ohne eine zweite lokale Kopie der ursprünglichen Version zu erhalten. –

+0

Wie geht IntelliJ damit um? Es scheint, als ob das, was Sie fragen, ist sehr teuer ... – dwc

2

Hier ist eine andere Antwort, die nicht das tut, was Sie wollen, aber kann nützlich sein.

C-x v g 

startet den Befehl vc-annotate.

Das wird einen neuen Puffer auftauchen (ich weiß, du wolltest keinen), aber es werden alle Linien mit markiert wer sie wann berührt hat. Und, Bonus, sie sind farbcodiert mit einer Heatmap (rot ist am neuesten, blau ist am wenigsten), um die letzten Änderungen leicht zu erkennen.

Natürlich ist die integrierte Version von vc-annotate Bildlauf nicht den Puffer in geeigneter Weise, so dass Sie diese Ratschläge wollen:

(defadvice vc-annotate (around vc-annotate-and-scroll) 
    "scroll buffer to view current line in the annotated buffer" 
    (let ((pos (count-lines (point-min) (point)))) 
    ad-do-it 
    (let ((orig-window (selected-window)) 
      (window (other-window-for-scrolling))) 
     (select-window window) 
     (goto-line pos) 
     (select-window orig-window)))) 

(ad-activate 'vc-annotate) 
+0

Es war nützlich zumindest für mich :) – claf

1

Sie vc-diff wollen, die auf C-x v = standardmäßig ist. Dies gibt Ihnen Roh-Diff-Ausgabe in einem Temp-Puffer. Der Puffer verwendet den Diff-Modus, der ein paar nette Tricks hat ... zum Beispiel können Sie C-c C-e verwenden, um das diff als Patch auf eine andere Datei anzuwenden. Benutze describe-mode (C-h m als Voreinstellung) im diff-Puffer, um die anderen Tricks zu finden.

4

Sie können jetzt überprüfen, diff-hl, die Hervorhebung auf der linken Fensterrand bietet.

Bis jetzt habe ich es nur auf ein paar modernen DVCS getestet, aber wenn Sie immer noch CVS verwenden, und es nicht so gut funktioniert, bitte ein Problem.

Verwandte Themen