cod*_*one 4 emacs version-control diff
如果这在Emacs 23.1.x中运行良好,但似乎已经打破了向Emacs 23.2的转变
我想在将文件的工作副本与SVN HEAD进行比较时使用ediff.
通常我按Cx v =和ediff运行,因为我的.emacs中有以下配置
;; Use ediff and not diff
(setq diff-command "ediff")
Run Code Online (Sandbox Code Playgroud)
但是,唉,我仍然会出现正常的vc-diff缓冲区而没有ediff会话......
有没有其他人遇到这个,知道可能是什么问题?
有点怀疑上述设置是否符合您的说法.
也就是说,这将绑定'='使用'ediff-revision:
(eval-after-load "vc-hooks"
'(define-key vc-prefix-map "=" 'ediff-revision))
Run Code Online (Sandbox Code Playgroud)
小智 5
我使用命令vc-ediff跳过输入文件名:只需将当前修改的副本与基本版本 (HEAD) 进行比较。
(eval-after-load "vc-hooks"
'(define-key vc-prefix-map "=" 'vc-ediff))
Run Code Online (Sandbox Code Playgroud)
然后C-x v =将调出 Ediff 会话。
发现我可以重新绑定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)))
Run Code Online (Sandbox Code Playgroud)
这种方法意味着您不必指定要比较的版本,因为它默认比较 HEAD 和当前文件状态。
资料来源: http: //www.groupsrv.com/computers/about152826.html