2010-09-14 45 views
4

有了这个工作以及在Emacs 23.1.x,但它似乎有打破了转会Emacs的23.2获得VC-DIFF使用ediff在Emacs 23.2

我想用一个比较文件的工作副本时ediff与SVN头。

通常我按CX V =和ediff在我的.emacs

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

运行,因为下面的配置,但是,唉我仍然得到显示正常VC-DIFF缓冲区,并没有ediff会话.. 。

有没有其他人遇到过这种情况,并知道可能是什么问题?

回答

4

发现我可能只是重新绑定CX 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

+0

我需要在代码工作之前先加载ediff数据包。 '(require'ediff)' – sebs 2011-11-17 00:30:51

8

对于上述设置做了你所说的那样,我有点怀疑。

这就是说,这将绑定 '=' 使用'ediff-revision

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

我用命令vc-ediff跳过输入文件名:只是比较基础版本(HEAD)当前修改后的副本。

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

然后C-x v =会调出Ediff会话。

+0

您正在复制@ trey的答案 – 2013-04-26 17:47:43

+0

@DavorCubranic'vc-ediff'和'ediff-revision'是不同的命令。 – 2013-05-30 03:13:24

+0

@MichaelHoffman是正确的,这是一个有用的答案,我的不好。另一方面,它也和Trey很相似,它也可以作为评论。 – 2013-07-26 16:17:47