]> git.eshelyaron.com Git - emacs.git/commitdiff
In vc, abolish the dir-status method.
authorEric S. Raymond <esr@thyrsus.com>
Tue, 2 Dec 2014 15:10:55 +0000 (10:10 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Tue, 2 Dec 2014 15:11:48 +0000 (10:11 -0500)
13 files changed:
lisp/ChangeLog
lisp/vc/vc-arch.el
lisp/vc/vc-bzr.el
lisp/vc/vc-cvs.el
lisp/vc/vc-dir.el
lisp/vc/vc-git.el
lisp/vc/vc-hg.el
lisp/vc/vc-mtn.el
lisp/vc/vc-rcs.el
lisp/vc/vc-sccs.el
lisp/vc/vc-src.el
lisp/vc/vc-svn.el
lisp/vc/vc.el

index 8226b3d3c365cbbece555ba1133887d5711aac5a..364d28e1bb748a03c2ffcd60ebabba8248271cf3 100644 (file)
@@ -1,5 +1,8 @@
 2014-12-02  Eric S. Raymond  <esr@snark.thyrsus.com>
 
+       *  vc.el, all backends: API simplification: Abolish dir-status.
+       It's replaced by dir-status-files.
+
        * vc.el, all backends: API simplification: Remove 4th
        'default-state' argument from vc-dir-status files and its backend
        methods - no backend method ever set it.  It was used only in the
index 1bdad2a04f96d0d261f5a36f0bbc8b304fdc182c..d1344f2b1ccd2a1b993ec178d9a721cb8a740abf 100644 (file)
@@ -310,10 +310,11 @@ Only the value `maybe' can be trusted :-(."
                    'up-to-date
                  'edited)))))))))
 
-;; -dir-status called from vc-dir, which loads vc, which loads vc-dispatcher.
+;; dir-status-files called from vc-dir, which loads vc,
+;; which loads vc-dispatcher.
 (declare-function vc-exec-after "vc-dispatcher" (code))
 
-(defun vc-arch-dir-status (dir callback)
+(defun vc-arch-dir-status-files (dir _files callback)
   "Run 'tla inventory' for DIR and pass results to CALLBACK.
 CALLBACK expects (ENTRIES &optional MORE-TO-COME); see
 `vc-dir-refresh'."
index a534a1ced3fe75620dd821d7c6a30c6c71c0da1b..1963f4e39acc5c4daed3c92cd24badedc83ab689 100644 (file)
@@ -967,9 +967,9 @@ stream.  Standard error output is discarded."
         (forward-line))
       (funcall update-function result)))
 
-(defun vc-bzr-dir-status (dir update-function)
+(defun vc-bzr-dir-status-files (dir files update-function)
   "Return a list of conses (file . state) for DIR."
-  (vc-bzr-command "status" (current-buffer) 'async dir "-v" "-S")
+  (apply 'vc-bzr-command "status" (current-buffer) 'async dir "-v" "-S" files)
   (vc-run-delayed
    (vc-bzr-after-dir-status update-function
                             ;; "bzr status" results are relative to
@@ -981,13 +981,6 @@ stream.  Standard error output is discarded."
                             ;; frob the results accordingly.
                             (file-relative-name dir (vc-bzr-root dir)))))
 
-(defun vc-bzr-dir-status-files (dir files update-function)
-  "Return a list of conses (file . state) for DIR."
-  (apply 'vc-bzr-command "status" (current-buffer) 'async dir "-v" "-S" files)
-  (vc-run-delayed
-   (vc-bzr-after-dir-status update-function
-                            (file-relative-name dir (vc-bzr-root dir)))))
-
 (defvar vc-bzr-shelve-map
   (let ((map (make-sparse-keymap)))
     ;; Turn off vc-dir marking
index b07a05c658691050fe7a54f38410ec77fcfb564e..a5b50c16e0976463f64273a51d6ccbedfbf918e1 100644 (file)
@@ -1069,13 +1069,14 @@ state."
     (if basedir result
       (funcall update-function result))))
 
-(defun vc-cvs-dir-status (dir update-function)
-  "Create a list of conses (file . state) for DIR."
-  ;; FIXME check all files in DIR instead?
+(defun vc-cvs-dir-status-files (dir files update-function)
+  "Create a list of conses (file . state) for FILES in DIR.
+Query all files in DIR if files is nil."
   (let ((local (vc-cvs-stay-local-p dir)))
-    (if (and local (not (eq local 'only-file)))
+    (if (and (not files) local (not (eq local 'only-file)))
        (vc-cvs-dir-status-heuristic dir update-function)
-      (vc-cvs-command (current-buffer) 'async dir "-f" "status")
+      (if (not files) (setq files (vc-expand-dirs (list dir) 'CVS)))
+      (vc-cvs-command (current-buffer) 'async dir "-f" "status" files)
       ;; Alternative implementation: use the "update" command instead of
       ;; the "status" command.
       ;; (vc-cvs-command (current-buffer) 'async
@@ -1084,12 +1085,6 @@ state."
       (vc-run-delayed
        (vc-cvs-after-dir-status update-function)))))
 
-(defun vc-cvs-dir-status-files (dir files update-function)
-  "Create a list of conses (file . state) for DIR."
-  (apply 'vc-cvs-command (current-buffer) 'async dir "-f" "status" files)
-  (vc-run-delayed
-   (vc-cvs-after-dir-status update-function)))
-
 (defun vc-cvs-file-to-string (file)
   "Read the content of FILE and return it as a string."
   (condition-case nil
index d97b9cd6a64771d9988a971adf8b6c8a44e5c0bc..7e4bc13bd800eea1e239e8ad2a33388813269fa4 100644 (file)
@@ -1097,7 +1097,7 @@ Throw an error if another update process is in progress."
           (setq default-directory def-dir)
           (erase-buffer)
           (vc-call-backend
-           backend 'dir-status def-dir
+           backend 'dir-status-files def-dir nil
            (lambda (entries &optional more-to-come)
              ;; ENTRIES is a list of (FILE VC_STATE EXTRA) items.
              ;; If MORE-TO-COME is true, then more updates will come from
index fad834bcee868accb0a0a61c03ffc3e5264416d4..048857b605d189290a32fe8ed12e5ea092037ea9 100644 (file)
@@ -50,8 +50,7 @@
 ;; STATE-QUERYING FUNCTIONS
 ;; * registered (file)                             OK
 ;; * state (file)                                  OK
-;; * dir-status (dir update-function)              OK
-;; - dir-status-files (dir files uf)               NOT NEEDED
+;; - dir-status-files (dir files uf)               OK
 ;; * working-revision (file)                       OK
 ;; - latest-on-branch-p (file)                     NOT NEEDED
 ;; * checkout-model (files)                        OK
@@ -474,15 +473,11 @@ or an empty string if none."
   (vc-run-delayed
    (vc-git-after-dir-status-stage stage files update-function)))
 
-(defun vc-git-dir-status (_dir update-function)
+(defun vc-git-dir-status-files (_dir files update-function)
   "Return a list of (FILE STATE EXTRA) entries for DIR."
   ;; Further things that would have to be fixed later:
   ;; - how to handle unregistered directories
   ;; - how to support vc-dir on a subdir of the project tree
-  (vc-git-dir-status-goto-stage 'update-index nil update-function))
-
-(defun vc-git-dir-status-files (_dir files update-function)
-  "Return a list of (FILE STATE EXTRA) entries for FILES in DIR."
   (vc-git-dir-status-goto-stage 'update-index files update-function))
 
 (defvar vc-git-stash-map
index bfd1447aa317032456e3dbc7edfde02dec834713..7099defb37c16ae6a711bb3d60a334f00f17e0d5 100644 (file)
@@ -43,7 +43,6 @@
 ;; STATE-QUERYING FUNCTIONS
 ;; * registered (file)                         OK
 ;; * state (file)                              OK
-;; - dir-status (dir update-function)          OK
 ;; - dir-status-files (dir files uf)           OK
 ;; - dir-extra-headers (dir)                   OK
 ;; - dir-printer (fileinfo)                    OK
@@ -613,11 +612,6 @@ REV is the revision to check out into WORKFILE."
 ;; Follows vc-exec-after.
 (declare-function vc-set-async-update "vc-dispatcher" (process-buffer))
 
-(defun vc-hg-dir-status (dir update-function)
-  (vc-hg-command (current-buffer) 'async dir "status" "-C")
-  (vc-run-delayed
-   (vc-hg-after-dir-status update-function)))
-
 (defun vc-hg-dir-status-files (dir files update-function)
   (apply 'vc-hg-command (current-buffer) 'async dir "status" "-mardui" "-C" files)
   (vc-run-delayed
index 85aaf3dc5428067b76a90002fa46717301537003..f35e87e2e2edbd305c303480977d4ac1ad92204a 100644 (file)
@@ -126,10 +126,11 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
             ((match-end 2) (push (list (match-string 3) 'added) result))))
     (funcall update-function result)))
 
-;; -dir-status called from vc-dir, which loads vc, which loads vc-dispatcher.
+;; dir-status-files called from vc-dir, which loads vc,
+;; which loads vc-dispatcher.
 (declare-function vc-exec-after "vc-dispatcher" (code))
 
-(defun vc-mtn-dir-status (dir update-function)
+(defun vc-mtn-dir-status-files (dir _files update-function)
   (vc-mtn-command (current-buffer) 'async dir "status")
   (vc-run-delayed
    (vc-mtn-after-dir-status update-function)))
index 5b375868a800dfdc57b5aced1eeac0435c5e49cd..20b292f5fe8dd1ff8725897477523a578e3dcc9c 100644 (file)
@@ -157,12 +157,10 @@ For a description of possible values, see `vc-check-master-templates'."
 
 (autoload 'vc-expand-dirs "vc")
 
-(defun vc-rcs-dir-status (dir update-function)
-  ;; Doing individual vc-state calls is painful but there
-  ;; is no better way in RCS-land.
-  (let ((flist (vc-expand-dirs (list dir) 'RCS))
-       (result nil))
-    (dolist (file flist)
+(defun vc-rcs-dir-status-files (dir files update-function)
+  (if (not files) (setq files (vc-expand-dirs (list dir) 'RCS)))
+  (let ((result nil))
+    (dolist (file files)
       (let ((state (vc-state file))
            (frel (file-relative-name file)))
        (when (and (eq (vc-backend file) 'RCS)
index 514748e8283650ee7469865368c98d9ceb89b5c2..c7144c0a223916ee92ec23bd73e47832b82af73a 100644 (file)
@@ -134,12 +134,10 @@ For a description of possible values, see `vc-check-master-templates'."
 
 (autoload 'vc-expand-dirs "vc")
 
-(defun vc-sccs-dir-status (dir update-function)
-  ;; Doing lots of individual VC-state calls is painful, but
-  ;; there is no better option in SCCS-land.
-  (let ((flist (vc-expand-dirs (list dir) 'SCCS))
-       (result nil))
-    (dolist (file flist)
+(defun vc-sccs-dir-status-files (dir files update-function)
+  (if (not files) (setq files (vc-expand-dirs (list dir) 'RCS)))
+  (let ((result nil))
+    (dolist (file files)
       (let ((state (vc-state file))
            (frel (file-relative-name file)))
        (when (and (eq (vc-backend file) 'SCCS)
index a2ebeef22b987268721601b36aaf5bf1c5c4fb40..3186d7254cbf5ae81844cff6599a90106ae6822b 100644 (file)
@@ -31,8 +31,7 @@
 ;; STATE-QUERYING FUNCTIONS
 ;; * registered (file)                         OK
 ;; * state (file)                              OK
-;; * dir-status (dir update-function)          OK
-;; - dir-status-files (dir files uf)           ??
+;; - dir-status-files (dir files uf)           OK
 ;; - dir-extra-headers (dir)                   NOT NEEDED
 ;; - dir-printer (fileinfo)                    ??
 ;; * working-revision (file)                   OK
@@ -179,11 +178,11 @@ For a description of possible values, see `vc-check-master-templates'."
 
 (autoload 'vc-expand-dirs "vc")
 
-(defun vc-src-dir-status (dir update-function)
+(defun vc-src-dir-status-files (dir files update-function)
   ;; FIXME: Use one src status -a call for this
-  (let ((flist (vc-expand-dirs (list dir) 'SRC))
-       (result nil))
-    (dolist (file flist)
+  (if (not files) (setq files (vc-expand-dirs (list dir) 'RCS)))
+  (let ((result nil))
+    (dolist (file files)
       (let ((state (vc-state file))
            (frel (file-relative-name file)))
        (when (and (eq (vc-backend file) 'SRC)
index 8ca8a0978e30edabfed48928b305b3ca89ca74b5..abeeac0be14d8b4cc2e8d3212850ae2b03555113 100644 (file)
@@ -195,22 +195,20 @@ If you want to force an empty list of arguments, use t."
          (setq result (cons (list filename state) result)))))
     (funcall callback result)))
 
-;; -dir-status called from vc-dir, which loads vc, which loads vc-dispatcher.
+;; dir-status-files called from vc-dir, which loads vc,
+;; which loads vc-dispatcher.
 (declare-function vc-exec-after "vc-dispatcher" (code))
 
-(defun vc-svn-dir-status (_dir callback)
+(autoload 'vc-expand-dirs "vc")
+
+(defun vc-svn-dir-status-files (dir files callback)
   "Run 'svn status' for DIR and update BUFFER via CALLBACK.
 CALLBACK is called as (CALLBACK RESULT BUFFER), where
 RESULT is a list of conses (FILE . STATE) for directory DIR."
-  ;; FIXME should this rather be all the files in dir?
-    (vc-svn-command (current-buffer) 'async nil "status" "-u")
+  (if (not files) (setq files (vc-expand-dirs (list dir) 'SVN)))
+  (vc-svn-command (current-buffer) 'async nil "status" "-u" files)
   (vc-run-delayed (vc-svn-after-dir-status callback)))
 
-(defun vc-svn-dir-status-files (_dir files callback)
-  (apply 'vc-svn-command (current-buffer) 'async nil "status" files)
-  (vc-run-delayed
-   (vc-svn-after-dir-status callback)))
-
 (defun vc-svn-dir-extra-headers (_dir)
   "Generate extra status headers for a Subversion working copy."
   (let (process-file-side-effects)
index c4810cf8b8b4cb47c9c54158d90011eabc1827ef..6e0e2c657b1707cb095afc70b7cef73423e1da4d 100644 (file)
 ;;   reliable state computation; it is usually called immediately after
 ;;   C-x v v.
 ;;
-;; - dir-status (dir update-function)
+;; - dir-status-files (dir files update-function)
 ;;
 ;;   Produce RESULT: a list of lists of the form (FILE VC-STATE EXTRA)
-;;   for the files in DIR.
+;;   for FILES in DIR.  If FILES is nil. report on all files in DIR.
+;;   (It is OK, though possibly inefficient, to ignore the FILES argument
+;;   and always report on all files in DIR.)
+;;
 ;;   EXTRA can be used for backend specific information about FILE.
 ;;   If a command needs to be run to compute this list, it should be
 ;;   run asynchronously using (current-buffer) as the buffer for the
-;;   command.  When RESULT is computed, it should be passed back by
-;;   doing: (funcall UPDATE-FUNCTION RESULT nil).
-;;   If the backend uses a process filter, hence it produces partial results,
-;;   they can be passed back by doing:
-;;      (funcall UPDATE-FUNCTION RESULT t)
-;;   and then do a (funcall UPDATE-FUNCTION RESULT nil)
-;;   when all the results have been computed.
+;;   command.
+;;
+;;   When RESULT is computed, it should be passed back by doing:
+;;   (funcall UPDATE-FUNCTION RESULT nil).  If the backend uses a
+;;   process filter, hence it produces partial results, they can be
+;;   passed back by doing: (funcall UPDATE-FUNCTION RESULT t) and then
+;;   do a (funcall UPDATE-FUNCTION RESULT nil) when all the results
+;;   have been computed.
+;;
 ;;   To provide more backend specific functionality for `vc-dir'
 ;;   the following functions might be needed: `dir-extra-headers',
-;;   `dir-printer', `extra-dir-menu' and `dir-status-files'.
+;;   `dir-printer', and `extra-dir-menu'.
 ;;
-;; - dir-status-files (dir files update-function)
-;;
-;;   This function is identical to dir-status except that it should
-;;   only report status for the specified FILES. Also it needs to
-;;   report on all requested files, including up-to-date or ignored
-;;   files. If not provided, the default is to consider that the files
-;;   are in 'up-to-date state.
+;;   This function should report on all requested files, including
+;;   up-to-date or ignored files. If it is not provided, the default is to
+;;   consider that all files are in 'up-to-date state.
 ;;
 ;; - dir-extra-headers (dir)
 ;;
 ;;   the backend command.  It should return a status of either 0 (no
 ;;   differences found), or 1 (either non-empty diff or the diff is
 ;;   run asynchronously).
-
 ;;
 ;; - revision-completion-table (files)
 ;;
 ;; - INCOMPATIBLE CHANGE: The old fourth 'default-state' argument of
 ;;   vc-dir-status-files is gone; none of the back ends actually used it.
 ;;
+;; - vc-dir-status is no longer a public method; it has been replaced
+;;   by vc-dir-status-files.
+;;
 ;; - vc-state-heuristic is no longer a public method (the CVS backend
 ;;   retains it as a private one).
 ;;
 ;;
 ;;;; Internal cleanups:
 ;;
-;; - Another important thing: merge all the status-like backend operations.
-;;   We should remove dir-status, state, and dir-status-files, and
-;;   replace them with just `status' which takes a fileset and a continuation
-;;   (like dir-status) and returns a buffer in which the process(es) are run
-;;   (or nil if it worked synchronously).  Hopefully we can define the old
-;;   4 operations in term of this one.
+;; - Another important thing: merge all the status-like backend
+;;   operations.  We should remove dir-status-files and state and
+;;   replace them with just `status' which takes a fileset and a
+;;   continuation (like dir-status-files) and returns a buffer in
+;;   which the process(es) are run (or nil if it worked
+;;   synchronously).  Hopefully we can define the old operations in
+;;   term of this one.
 ;;
 ;;;; Unify two different versions of the amend capability
 ;;