From 484c3092516f4f65d6d77f827e82bf9d9c67a713 Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Sun, 23 Mar 2008 21:05:32 +0000 Subject: [PATCH] (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. --- lisp/ChangeLog | 5 +++++ lisp/vc.el | 19 +++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b64aa9a09f4..54a4c6c080a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 --git a/lisp/vc.el b/lisp/vc.el index d849fc22d34..1e3f2b9ff2a 100644 --- a/lisp/vc.el +++ b/lisp/vc.el @@ -1789,8 +1789,7 @@ rather than user editing!" (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 @@ that share the same state." 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 @@ backend to NEW-BACKEND, and unregister FILE from the current backend. (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 @@ backend to NEW-BACKEND, and unregister FILE from the current backend. (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) -- 2.39.2