2009-02-25 3 views
6

Estoy usando emacs con cvs y tengo el modo cvs habilitado. Me gustaría obtener resaltado línea por línea de los cambios de la última versión en CVS. He visto esto hecho en intellij donde hay una indicación verde para líneas añadidas y otra indicación para líneas modificadas y un tercer símbolo para líneas borradas.¿Cómo destaco los cambios de CVS en Emacs?

¿Hay un modo de resaltado cvs para que emacs muestre los cambios de la última versión de cvs? No estoy buscando una funcionalidad de tipo cvs diff que se abriría en un nuevo búfer, pero algo que indicaría en mi búfer actual qué líneas se han modificado.

En la siguiente imagen hay un rectángulo azul en el lado izquierdo en lo que Intellij llama el "canal" para indicar que el código es diferente de lo que está en control de fuente.

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

Busco una funcionalidad similar en emacs.

+0

por favor s/cvs/vcs para que podamos obtener una respuesta para cualquier git/bzr/hg/svn ... – elmarco

Respuesta

0

Tal vez le gustaría Ediff, que parece hacer exactamente lo que quiere.

+1

No es exactamente lo que estoy buscando. Quiero un modo menor para que siempre pueda estar encendido cuando edito el código. También quiero comparar directamente contra CVS sin obtener una segunda copia local de la versión original. –

+0

¿Cómo maneja IntelliJ esto? Parece que lo que estás preguntando es terriblemente caro ... – dwc

2

Aquí hay otra respuesta que tampoco hace lo que quiere, pero puede ser útil.

C-x v g 

ejecuta el comando vc-annotate.

Aparecerá un nuevo búfer (lo sé, no lo desea), pero tendrá todas las líneas marcadas con quién las tocó cuando. Y, como extra, están codificados por colores con un mapa de calor (el rojo es el más reciente, el azul es el mínimo), para una fácil identificación de los cambios recientes.

Por supuesto, la versión incorporada de vc-annotate no se desplaza la memoria intermedia adecuada, por lo que querrá este consejo:

(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

Ha sido útil al menos para mí :) – claf

1

¿Quieres vc-diff, que está en C-x v = por defecto. Esto le da salida de diff cruda en un buffer temporal. El buffer usa diff-mode, que tiene algunos trucos aseados ... por ejemplo, puede usar C-c C-e para aplicar el diff como un parche a otro archivo. Use describe-mode (C-h m por defecto) en el búfer diff para encontrar los otros trucos.

4

Ahora puede consultar diff-hl, que proporciona resaltado en la franja de la ventana izquierda.

Hasta ahora solo lo he probado en algunos DVCS modernos, pero si todavía está utilizando CVS y no funciona tan bien, presente un problema.

Cuestiones relacionadas