Mercurial > emacs
changeset 92345:4ffd887822d7
* vc.el (vc-status-crt-marked): New variable.
(vc-status-mode): Make it local.
(vc-status-refresh): Use it to save the marked files.
(vc-update-vc-status-buffer): Use it to restore the marked files.
* vc-svn.el (vc-svn-after-dir-status):
* vc-hg.el (vc-hg-after-dir-status): Clean up the temporary buffer.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Fri, 29 Feb 2008 19:13:54 +0000 |
parents | 1ecac29c5fcc |
children | 0ad96a7f6183 |
files | lisp/ChangeLog lisp/vc-hg.el lisp/vc-hooks.el lisp/vc-svn.el lisp/vc.el |
diffstat | 5 files changed, 42 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Fri Feb 29 07:55:05 2008 +0000 +++ b/lisp/ChangeLog Fri Feb 29 19:13:54 2008 +0000 @@ -1,3 +1,13 @@ +2008-02-29 Dan Nicolaescu <dann@ics.uci.edu> + + * vc.el (vc-status-crt-marked): New variable. + (vc-status-mode): Make it local. + (vc-status-refresh): Use it to save the marked files. + (vc-update-vc-status-buffer): Use it to restore the marked files. + + * vc-svn.el (vc-svn-after-dir-status): + * vc-hg.el (vc-hg-after-dir-status): Clean up the temporary buffer. + 2008-02-29 Glenn Morris <rgm@gnu.org> * allout.el (allout-topic-encryption-bullet)
--- a/lisp/vc-hg.el Fri Feb 29 07:55:05 2008 +0000 +++ b/lisp/vc-hg.el Fri Feb 29 19:13:54 2008 +0000 @@ -482,7 +482,7 @@ (define-derived-mode vc-hg-incoming-mode vc-hg-log-view-mode "Hg-Incoming") ;; XXX Experimental function for the vc-dired replacement. -(defun vc-hg-after-dir-status (update-function buff) +(defun vc-hg-after-dir-status (update-function status-buffer) (let ((status-char nil) (file nil) (translation '((?= . up-to-date) @@ -505,7 +505,9 @@ (when (and translated (not (eq (cdr translated) 'up-to-date))) (push (cons file (cdr translated)) result)) (forward-line)) - (funcall update-function result buff))) + ;; Remove the temporary buffer. + (kill-buffer (current-buffer)) + (funcall update-function result status-buffer))) ;; XXX Experimental function for the vc-dired replacement. (defun vc-hg-dir-status (dir update-function status-buffer)
--- a/lisp/vc-hooks.el Fri Feb 29 07:55:05 2008 +0000 +++ b/lisp/vc-hooks.el Fri Feb 29 19:13:54 2008 +0000 @@ -605,6 +605,8 @@ ;; Backward compatibility. (define-obsolete-function-alias 'vc-workfile-version 'vc-working-revision "23.1") +(define-obsolete-function-alias + 'vc-previous-version 'vc-previous-revision "23.1") (defun vc-default-working-revision (backend file) (message "`working-revision' not found: using the old `workfile-version' instead")
--- a/lisp/vc-svn.el Fri Feb 29 07:55:05 2008 +0000 +++ b/lisp/vc-svn.el Fri Feb 29 19:13:54 2008 +0000 @@ -175,6 +175,7 @@ (filename (match-string 2))) (when state (setq result (cons (cons filename state) result))))) + (kill-buffer (current-buffer)) (funcall callback result buffer))) (defun vc-svn-dir-status (dir callback buffer)
--- a/lisp/vc.el Fri Feb 29 07:55:05 2008 +0000 +++ b/lisp/vc.el Fri Feb 29 19:13:54 2008 +0000 @@ -2824,12 +2824,16 @@ (defvar vc-status-process-buffer nil "The buffer used for the asynchronous call that computes the VC status.") +(defvar vc-status-crt-marked nil + "The list of marked files before `vc-status-refresh'.") + (defun vc-status-mode () "Major mode for VC status. \\{vc-status-mode-map}" (setq mode-name "*VC Status*") (setq major-mode 'vc-status-mode) (setq buffer-read-only t) + (set (make-local-variable 'vc-status-crt-marked) nil) (use-local-map vc-status-mode-map) (let ((buffer-read-only nil) (backend (vc-responsible-backend default-directory)) @@ -2846,17 +2850,38 @@ (defun vc-update-vc-status-buffer (entries buffer) (with-current-buffer buffer (when entries + ;; Insert the entries we got into the ewoc. (dolist (entry entries) (ewoc-enter-last vc-status (vc-status-create-fileinfo (cdr entry) (car entry)))) + ;; If we had marked items before the refresh, try mark them here. + ;; XXX: there should be a better way to do this... + (when vc-status-crt-marked + (ewoc-map + (lambda (arg) + (when (member (vc-status-fileinfo->name arg) vc-status-crt-marked) + (setf (vc-status-fileinfo->marked arg) t))) + vc-status)) (ewoc-goto-node vc-status (ewoc-nth vc-status 0))) + ;; We are done, turn of the in progress message in the mode-line. (setq mode-line-process nil))) (defun vc-status-refresh () "Refresh the contents of the VC status buffer." (interactive) + ;; This is not very efficient; ewoc could use a new function here. + ;; We clear the ewoc, but remember the marked files so that we can + ;; mark them after the refresh is done. + (setq vc-status-crt-marked + (mapcar + (lambda (elem) + (vc-status-fileinfo->name elem)) + (ewoc-collect + vc-status + (lambda (crt) (vc-status-fileinfo->marked crt))))) (ewoc-filter vc-status (lambda (node) nil)) + (let ((backend (vc-responsible-backend default-directory))) (vc-set-mode-line-busy-indicator) ;; Call the dir-status backend function. dir-status is supposed to