# HG changeset patch # User Stefan Monnier # Date 1251391984 0 # Node ID ef4820f099a182735582d9702d1d8370154d1d36 # Parent 17ba24e6c4d0a6569f2796cb9ddfd8d5e10c685f (vc-read-revision): New function. (vc-version-diff, vc-merge): Use it. diff -r 17ba24e6c4d0 -r ef4820f099a1 lisp/ChangeLog --- a/lisp/ChangeLog Thu Aug 27 16:18:26 2009 +0000 +++ b/lisp/ChangeLog Thu Aug 27 16:53:04 2009 +0000 @@ -1,3 +1,8 @@ +2009-08-27 Stefan Monnier + + * vc.el (vc-read-revision): New function. + (vc-version-diff, vc-merge): Use it. + 2009-08-27 Sam Steingold * simple.el (kill-do-not-save-duplicates): New user option. @@ -9,8 +14,8 @@ * net/tramp.el (tramp-handle-process-file): Do not flush all caches when `process-file-side-effects' is set. (tramp-handle-vc-registered): Use `tramp-get-file-exists-command' - instead of `tramp-find-file-exists-command'. Unset - `process-file-side-effects'. + instead of `tramp-find-file-exists-command'. + Unset `process-file-side-effects'. 2009-08-27 Michael Albinus @@ -30,8 +35,7 @@ (tramp-get-ls-command, tramp-get-test-command) (tramp-get-file-exists-command, tramp-get-remote-ln) (tramp-get-remote-perl, tramp-get-remote-stat) - (tramp-get-remote-id): Remove - superfluous `with-current-buffer'. + (tramp-get-remote-id): Remove superfluous `with-current-buffer'. * net/tramp-cache.el (top): Autoload `tramp-time-less-p'. (tramp-cache-inhibit-cache): Extend doc string. It allows also diff -r 17ba24e6c4d0 -r ef4820f099a1 lisp/vc.el --- a/lisp/vc.el Thu Aug 27 16:18:26 2009 +0000 +++ b/lisp/vc.el Thu Aug 27 16:53:04 2009 +0000 @@ -1515,6 +1515,20 @@ ;; because we don't know that yet. t))) +(defun vc-read-revision (prompt &optional files backend default initial-input) + (cond + ((null files) + (let ((vc-fileset (vc-deduce-fileset t))) ;FIXME: why t? --Stef + (setq files (cadr vc-fileset)) + (setq backend (car vc-fileset)))) + ((null backend) (setq backend (vc-backend (car files))))) + (let ((completion-table + (vc-call-backend backend 'revision-completion-table files))) + (if completion-table + (completing-read prompt completion-table + nil nil initial-input nil default) + (read-string prompt initial-input nil default)))) + ;;;###autoload (defun vc-version-diff (files rev1 rev2) "Report diffs between revisions of the fileset in the repository history." @@ -1523,8 +1537,6 @@ (files (cadr vc-fileset)) (backend (car vc-fileset)) (first (car files)) - (completion-table - (vc-call-backend backend 'revision-completion-table files)) (rev1-default nil) (rev2-default nil)) (cond @@ -1551,14 +1563,8 @@ "Older revision: ")) (rev2-prompt (concat "Newer revision (default " (or rev2-default "current source") "): ")) - (rev1 (if completion-table - (completing-read rev1-prompt completion-table - nil nil nil nil rev1-default) - (read-string rev1-prompt nil nil rev1-default))) - (rev2 (if completion-table - (completing-read rev2-prompt completion-table - nil nil nil nil rev2-default) - (read-string rev2-prompt nil nil rev2-default)))) + (rev1 (vc-read-revision rev1-prompt files backend rev1-default)) + (rev2 (vc-read-revision rev2-prompt files backend rev2-default))) (when (string= rev1 "") (setq rev1 nil)) (when (string= rev2 "") (setq rev2 nil)) (list files rev1 rev2)))) @@ -1598,13 +1604,9 @@ (interactive (save-current-buffer (vc-ensure-vc-buffer) - (let ((completion-table - (vc-call revision-completion-table (list buffer-file-name))) - (prompt "Revision to visit (default is working revision): ")) - (list - (if completion-table - (completing-read prompt completion-table) - (read-string prompt)))))) + (list + (vc-read-revision "Revision to visit (default is working revision): " + (list buffer-file-name))))) (vc-ensure-vc-buffer) (let* ((file buffer-file-name) (revision (if (string-equal rev "") @@ -1730,16 +1732,22 @@ (vc-checkout file t) (error "Merge aborted")))) (setq first-revision - (read-string (concat "Branch or revision to merge from " - "(default news on current branch): "))) + (vc-read-revision + (concat "Branch or revision to merge from " + "(default news on current branch): ") + (list file) + backend)) (if (string= first-revision "") (setq status (vc-call-backend backend 'merge-news file)) (if (not (vc-find-backend-function backend 'merge)) (error "Sorry, merging is not implemented for %s" backend) (if (not (vc-branch-p first-revision)) (setq second-revision - (read-string "Second revision: " - (concat (vc-branch-part first-revision) "."))) + (vc-read-revision + "Second revision: " + (list file) backend nil + ;; FIXME: This is CVS/RCS/SCCS specific. + (concat (vc-branch-part first-revision) "."))) ;; We want to merge an entire branch. Set revisions ;; accordingly, so that vc-BACKEND-merge understands us. (setq second-revision first-revision)