2010-09-14 46 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