Получение vc-diff для использования ediff в Emacs 23.2 - PullRequest
4 голосов
/ 15 сентября 2010

Хорошо ли это работало в Emacs 23.1.x, но, похоже, оно сломалось при переходе на Emacs 23.2

Я хочу использовать ediff при сравнении рабочей копии файла с SVN HEAD.

Обычно я нажимаю C-x v = , и ediff запускается из-за следующей конфигурации в моем .emacs

;; Use ediff and not diff 
(setq diff-command "ediff")

Но, увы, я все еще получаю нормальный буфер vc-diff, появляющийся и не сеанс ediff ...

Кто-нибудь еще сталкивался с этим и знает, в чем может быть проблема?

Ответы [ 3 ]

8 голосов
/ 15 сентября 2010

Я немного скептически отношусь к тому, что вышеуказанные настройки сделали то, что вы сказали, что сделали.

Тем не менее, это связывает '=' с использованием 'ediff-revision:

(eval-after-load "vc-hooks"
         '(define-key vc-prefix-map "=" 'ediff-revision))
4 голосов
/ 17 апреля 2013

Я использую команду vc-ediff, чтобы пропустить ввод имен файлов: просто сравните текущую измененную копию с базовой версией (HEAD).

(eval-after-load "vc-hooks"
         '(define-key vc-prefix-map "=" 'vc-ediff))

Затем C-x v = вызовет сеанс Ediff.

4 голосов
/ 15 сентября 2010

Обнаружено, что я могу просто привязать C-x v = к следующему:

(defun ediff-current-buffer-revision () 
  "Run Ediff to diff current buffer's file against VC depot. 
Uses `vc.el' or `rcs.el' depending on `ediff-version-control-package'." 
  (interactive) 
  (let ((file (or (buffer-file-name) 
          (error "Current buffer is not visiting a file")))) 
(if (and (buffer-modified-p) 
     (y-or-n-p (message "Buffer %s is modified. Save buffer? " 
                (buffer-name)))) 
    (save-buffer (current-buffer))) 
(ediff-load-version-control) 
(funcall 
 (intern (format "ediff-%S-internal" ediff-version-control-package)) 
 "" "" nil))) 

Этот подход означает, что вам не нужно указывать версии для сравнения, поскольку по умолчанию сравнивается HEAD и текущее состояние файла.

Источник: http://www.groupsrv.com/computers/about152826.html

...