Как выделить изменения CVS в Emacs? - PullRequest
6 голосов
/ 26 февраля 2009

Я использую emacs с cvs и у меня включен режим cvs. Я хотел бы получить построчную подсветку изменений по сравнению с последней версией в CVS. Я видел, что это было сделано в intellij, где есть зеленая индикация для добавленных линий и другая индикация для измененных строк и третий символ для удаленных строк.

Есть ли в emacs режим подсветки cvs для отображения изменений по сравнению с последней версией cvs? Я не ищу функциональность типа cvs diff, которая открывалась бы в новом буфере, но что-то, что указывало бы в моем текущем буфере, какие строки были изменены.

На следующем рисунке слева показан синий прямоугольник, который Intellij называет «желобом», чтобы указать, что код отличается от того, что находится в управлении исходным кодом.

intellij example
(источник: jetbrains.com )

Я ищу похожие функции в emacs.

Ответы [ 4 ]

4 голосов
/ 26 июня 2012

Теперь вы можете проверить diff-hl , который обеспечивает подсветку в левой части окна.

Пока что я тестировал его только на нескольких современных DVCS, но если вы все еще используете CVS, и он не работает так же, пожалуйста, сообщите о проблеме.

2 голосов
/ 26 февраля 2009

Вот еще один ответ, который тоже не делает то, что вы хотите, но может быть полезен.

C-x v g 

запускает команду vc-annotate.

Это вызовет новый буфер (я знаю, вы его не хотели), но на нем будут все строки, помеченные тем, кто их трогал, когда. И, кроме того, они имеют цветовую кодировку с тепловой картой (красный - самый последний, синий - наименьший), что позволяет легко идентифицировать последние изменения.

Конечно, встроенная версия vc-annotate не прокручивает буфер должным образом, поэтому вам понадобится следующий совет:

(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)
1 голос
/ 26 февраля 2009

Вы хотите vc-diff, что по умолчанию C-x v =. Это дает вам необработанный вывод diff во временном буфере. В буфере используется diff-mode, в котором есть несколько хитрых трюков ... например, вы можете использовать C-c C-e, чтобы применить diff в качестве патча для другого файла. Используйте describe-mode (C-h m по умолчанию) в буфере сравнения, чтобы найти другие приемы.

0 голосов
/ 26 февраля 2009

Возможно, вы хотели бы Ediff , который, кажется, делает именно то, что вы хотите.

...