emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/vc-dispatcher.el,v


From: Dan Nicolaescu
Subject: [Emacs-diffs] Changes to emacs/lisp/vc-dispatcher.el,v
Date: Tue, 27 May 2008 05:36:07 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Dan Nicolaescu <dann>   08/05/27 05:36:06

Index: vc-dispatcher.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc-dispatcher.el,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -b -r1.57 -r1.58
--- vc-dispatcher.el    27 May 2008 01:13:25 -0000      1.57
+++ vc-dispatcher.el    27 May 2008 05:36:03 -0000      1.58
@@ -503,7 +503,10 @@
       (when buffer
        (with-current-buffer buffer
          (vc-resynch-window file keep noquery)))))
-  (vc-directory-resynch-file file))
+  ;; Try to avoid unnecessary work, a *vc-dir* buffer is only present
+  ;; if this is true.
+  (when (memq 'vc-dir-resynch-file after-save-hook)
+    (vc-dir-resynch-file file)))
 
 (defun vc-buffer-sync (&optional not-urgent)
   "Make sure the current buffer and its working file are in sync.
@@ -580,7 +583,7 @@
   (unless nocomment
     (run-hooks 'vc-logentry-check-hook))
   ;; Sync parent buffer in case the user modified it while editing the comment.
-  ;; But not if it is a vc-directory buffer.
+  ;; But not if it is a vc-dir buffer.
   (with-current-buffer vc-parent-buffer
     (or (vc-dispatcher-browsing) (vc-buffer-sync)))
   (unless vc-log-operation
@@ -1025,8 +1028,9 @@
     (funcall mark-unmark-function)))
 
 (defun vc-string-prefix-p (prefix string)
-  (and (>= (length string) (length prefix))
-       (eq t (compare-strings prefix nil nil string nil (length prefix)))))
+  (let ((lpref (length prefix)))
+    (and (>= (length string) lpref)
+        (eq t (compare-strings prefix nil nil string nil lpref)))))
 
 (defun vc-dir-parent-marked-p (arg)
   ;; Return nil if none of the parent directories of arg is marked.
@@ -1289,20 +1293,24 @@
       (push (expand-file-name (vc-dir-fileinfo->name crt-data)) result))
     result))
 
-(defun vc-directory-resynch-file (&optional fname)
+(defun vc-dir-resynch-file (&optional fname)
   "Update the entries for FILE in any directory buffers that list it."
   (let ((file (or fname (expand-file-name buffer-file-name))))
-    ;; The vc-dir case
+    (if (file-directory-p file)
+       ;; FIXME: Maybe this should never happen? 
+        ;; FIXME: But it is useful to update the state of a directory
+       ;; (more precisely the files in the directory) after some VC
+       ;; operations.
+       nil
     (let ((found-vc-dir-buf nil))
       (save-excursion
        (dolist (status-buf (buffer-list))
          (set-buffer status-buf)
          ;; look for a vc-dir buffer that might show this file.
-         (when (eq major-mode 'vc-dir-mode)
+           (when (derived-mode-p 'vc-dir-mode)
            (setq found-vc-dir-buf t)
            (let ((ddir (expand-file-name default-directory)))
-             ;; This test is cvs-string-prefix-p
-             (when (eq t (compare-strings file nil (length ddir) ddir nil nil))
+               (when (vc-string-prefix-p ddir file)
                (let*
                    ((file-short (substring file (length ddir)))
                     (state
@@ -1316,7 +1324,7 @@
                  (vc-dir-update (list entry) status-buf))))))
        ;; We didn't find any vc-dir buffers, remove the hook, it is
        ;; not needed.
-       (unless found-vc-dir-buf (remove-hook 'after-save-hook 
'vc-directory-resynch-file))))))
+         (unless found-vc-dir-buf (remove-hook 'after-save-hook 
'vc-dir-resynch-file)))))))
 
 (defun vc-dir-mode (client-object)
   "Major mode for dispatcher directory buffers.
@@ -1351,7 +1359,7 @@
     (set (make-local-variable 'vc-ewoc)
         (ewoc-create (vc-client-object->file-to-info client-object)
                      (vc-client-object->headers client-object)))
-    (add-hook 'after-save-hook 'vc-directory-resynch-file)
+    (add-hook 'after-save-hook 'vc-dir-resynch-file)
     ;; Make sure that if the directory buffer is killed, the update
     ;; process running in the background is also killed.
     (add-hook 'kill-buffer-query-functions 'vc-dir-kill-query nil t)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]