# HG changeset patch # User Dan Nicolaescu # Date 1206306332 0 # Node ID c4dc2a72d5559c37bdff0cecbd74cef032fdd167 # Parent 849abb573acb0e54ec7d51f1274dc61f80a04f75 (vc-status-mark-buffer-changed): Add an optional file parameter. (vc-resynch-buffer): Use it. (vc-delete-file): Expand the file name before using it. Be careful to not create a new buffer with the old file contents. Update the VC state after performing the operation. diff -r 849abb573acb -r c4dc2a72d555 lisp/ChangeLog --- a/lisp/ChangeLog Sun Mar 23 20:50:52 2008 +0000 +++ b/lisp/ChangeLog Sun Mar 23 21:05:32 2008 +0000 @@ -20,6 +20,11 @@ Reset vc-status-process-buffer. (vc-status-refresh): Don't run two refreshes at a time. (vc-status): If the buffer is already in vc-status-mode only refresh. + (vc-status-mark-buffer-changed): Add an optional file parameter. + (vc-resynch-buffer): Use it. + (vc-delete-file): Expand the file name before using it. Be + careful to not create a new buffer with the old file contents. + Update the VC state after performing the operation. 2008-03-23 Andreas Schwab diff -r 849abb573acb -r c4dc2a72d555 lisp/vc.el --- a/lisp/vc.el Sun Mar 23 20:50:52 2008 +0000 +++ b/lisp/vc.el Sun Mar 23 21:05:32 2008 +0000 @@ -1789,8 +1789,7 @@ (vc-dired-resynch-file file) (when (memq 'vc-status-mark-buffer-changed after-save-hook) (let ((buffer (get-file-buffer file))) - (with-current-buffer buffer - (when buffer (vc-status-mark-buffer-changed)))))) + (vc-status-mark-buffer-changed file)))) (defun vc-start-entry (files rev comment initial-contents msg action &optional after-hook) @@ -3154,8 +3153,8 @@ vc-status (lambda (crt) (not (eq (vc-status-fileinfo->state crt) 'up-to-date))))) -(defun vc-status-mark-buffer-changed () - (let* ((file (expand-file-name buffer-file-name)) +(defun vc-status-mark-buffer-changed (&optional fname) + (let* ((file (or fname (expand-file-name buffer-file-name))) (state (and (vc-backend file) (vc-state file))) (found-vc-status-buf nil)) (save-excursion @@ -3529,6 +3528,7 @@ (defun vc-delete-file (file) "Delete file and mark it as such in the version control system." (interactive "fVC delete file: ") + (setq file (expand-file-name file)) (let ((buf (get-file-buffer file)) (backend (vc-backend file))) (unless backend @@ -3544,10 +3544,17 @@ (unless (or (file-directory-p file) (null make-backup-files)) (with-current-buffer (or buf (find-file-noselect file)) (let ((backup-inhibited nil)) - (backup-buffer)))) + (backup-buffer)) + ;; If we didn't have a buffer visiting the file before this + ;; command, kill the buffer created by the above + ;; `find-file-noselect' call. + (unless buf (kill-buffer (current-buffer))))) (vc-call delete-file file) ;; If the backend hasn't deleted the file itself, let's do it for him. - (if (file-exists-p file) (delete-file file)))) + (if (file-exists-p file) (delete-file file)) + ;; Forget what VC knew about the file. + (vc-file-clearprops file) + (vc-resynch-buffer file buf t))) ;;;###autoload (defun vc-rename-file (old new)