2009-02-25 9 views
6

Sto usando emacs con cvs e la modalità cvs è abilitata. Mi piacerebbe ottenere l'evidenziazione riga per riga delle modifiche dall'ultima versione in CVS. Ho visto questo fatto in intellij dove c'è un'indicazione verde per le linee aggiunte e un'altra indicazione per le linee modificate e un terzo simbolo per le righe cancellate.Come si evidenziano le modifiche CVS in Emacs?

Esiste una modalità di evidenziazione cvs per emacs per mostrare le modifiche dall'ultima versione di cvs? Non sto cercando una funzionalità di tipo cvs diff che si aprirà in un nuovo buffer, ma qualcosa che indichi nel mio buffer corrente quali righe sono state modificate.

Nell'immagine seguente c'è un rettangolo blu sul lato sinistro in quello che Intellij chiama "gutter" per indicare che il codice è diverso da quello che è nel controllo sorgente.

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

Sto cercando una funzionalità simile in emacs.

+0

per favore s/cvs/vcs quindi otteniamo una risposta per qualsiasi git/bzr/hg/svn ... – elmarco

risposta

0

Forse ti piacerebbe Ediff, che sembra fare esattamente quello che vuoi.

+1

Non esattamente quello che sto cercando. Voglio una modalità secondaria in modo che possa essere sempre attiva durante la modifica del codice. Voglio anche confrontare direttamente CVS senza ottenere una seconda copia locale della versione originale. –

+0

In che modo gestisce IntelliJ? Sembra che quello che stai chiedendo sia terribilmente costoso ... – dwc

2

Ecco un'altra risposta che non fa quello che vuoi, ma può essere utile.

C-x v g 

esegue il comando vc-annotate.

Apparirà un nuovo buffer (lo so, non ne volevi uno), ma avrà tutte le linee contrassegnate con chi le ha toccate quando. E, bonus, sono codificati a colori con una heatmap (il rosso è il più recente, il blu è il minimo), per una facile identificazione delle modifiche recenti.

Naturalmente la versione built-in di VC-annotate non scorre il buffer in modo appropriato, per cui ti consigliamo questo consiglio:

(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

È stato utile almeno per me :) – claf

1

Volete vc-diff, che si trova sulla C-x v = per impostazione predefinita. Questo ti dà un output diff crudo in un buffer temporaneo. Il buffer utilizza la modalità diff, che ha alcuni trucchi netti ... ad esempio, è possibile utilizzare C-c C-e per applicare il diff come patch a un altro file. Utilizzare describe-mode (C-h m per impostazione predefinita) nel buffer diff per trovare gli altri trucchi.

4

Ora è possibile controllare diff-hl, che fornisce l'evidenziazione sul margine sinistro della finestra.

Finora l'ho provato solo su alcuni DVCS moderni, ma se si sta ancora utilizzando CVS e non funziona altrettanto bene, si prega di presentare un problema.

Problemi correlati