diff options
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 4 | ||||
| -rw-r--r-- | lisp/vc-hooks.el | 10 | ||||
| -rw-r--r-- | lisp/vc.el | 527 |
3 files changed, 274 insertions, 267 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ceda67a44c8..d68feaf4bf1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2008-04-16 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * vc.el: Rename vc-status to vc-dir and the vc-status var to vc-ewoc. | ||
| 4 | |||
| 1 | 2008-04-15 Stefan Monnier <monnier@iro.umontreal.ca> | 5 | 2008-04-15 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 6 | ||
| 3 | * mouse-drag.el (mouse-throw-magnifier-with-scroll-bar) | 7 | * mouse-drag.el (mouse-throw-magnifier-with-scroll-bar) |
diff --git a/lisp/vc-hooks.el b/lisp/vc-hooks.el index 93a98e01bc1..7f1806168cd 100644 --- a/lisp/vc-hooks.el +++ b/lisp/vc-hooks.el | |||
| @@ -989,7 +989,7 @@ Used in `find-file-not-found-functions'." | |||
| 989 | (define-key map "a" 'vc-update-change-log) | 989 | (define-key map "a" 'vc-update-change-log) |
| 990 | (define-key map "b" 'vc-switch-backend) | 990 | (define-key map "b" 'vc-switch-backend) |
| 991 | (define-key map "c" 'vc-rollback) | 991 | (define-key map "c" 'vc-rollback) |
| 992 | (define-key map "d" 'vc-status) | 992 | (define-key map "d" 'vc-dir) |
| 993 | (define-key map "g" 'vc-annotate) | 993 | (define-key map "g" 'vc-annotate) |
| 994 | (define-key map "h" 'vc-insert-headers) | 994 | (define-key map "h" 'vc-insert-headers) |
| 995 | (define-key map "i" 'vc-register) | 995 | (define-key map "i" 'vc-register) |
| @@ -1002,8 +1002,8 @@ Used in `find-file-not-found-functions'." | |||
| 1002 | (define-key map "+" 'vc-update) | 1002 | (define-key map "+" 'vc-update) |
| 1003 | (define-key map "=" 'vc-diff) | 1003 | (define-key map "=" 'vc-diff) |
| 1004 | (define-key map "~" 'vc-revision-other-window) | 1004 | (define-key map "~" 'vc-revision-other-window) |
| 1005 | ;; `vc-status' is a not-quite-ready replacement for `vc-directory' | 1005 | ;; `vc-dir' is a not-quite-ready replacement for `vc-directory' |
| 1006 | ;; (define-key map "?" 'vc-status) | 1006 | ;; (define-key map "?" 'vc-dir) |
| 1007 | map)) | 1007 | map)) |
| 1008 | (fset 'vc-prefix-map vc-prefix-map) | 1008 | (fset 'vc-prefix-map vc-prefix-map) |
| 1009 | (define-key global-map "\C-xv" 'vc-prefix-map) | 1009 | (define-key global-map "\C-xv" 'vc-prefix-map) |
| @@ -1057,8 +1057,8 @@ Used in `find-file-not-found-functions'." | |||
| 1057 | (define-key map [vc-register] | 1057 | (define-key map [vc-register] |
| 1058 | '(menu-item "Register" vc-register | 1058 | '(menu-item "Register" vc-register |
| 1059 | :help "Register file set into a version control system")) | 1059 | :help "Register file set into a version control system")) |
| 1060 | (define-key map [vc-status] | 1060 | (define-key map [vc-dir] |
| 1061 | '(menu-item "VC Status" vc-status | 1061 | '(menu-item "VC Dir" vc-dir |
| 1062 | :help "Show the VC status of files in a directory")) | 1062 | :help "Show the VC status of files in a directory")) |
| 1063 | map)) | 1063 | map)) |
| 1064 | 1064 | ||
diff --git a/lisp/vc.el b/lisp/vc.el index 2626ad6f068..cf92102c4c5 100644 --- a/lisp/vc.el +++ b/lisp/vc.el | |||
| @@ -182,11 +182,11 @@ | |||
| 182 | ;; (funcall UPDATE-FUNCTION RESULT t) | 182 | ;; (funcall UPDATE-FUNCTION RESULT t) |
| 183 | ;; and then do a (funcall UPDATE-FUNCTION RESULT nil) | 183 | ;; and then do a (funcall UPDATE-FUNCTION RESULT nil) |
| 184 | ;; when all the results have been computed. | 184 | ;; when all the results have been computed. |
| 185 | ;; To provide more backend specific functionality for `vc-status' | 185 | ;; To provide more backend specific functionality for `vc-dir' |
| 186 | ;; the following functions might be needed: `status-extra-headers', | 186 | ;; the following functions might be needed: `status-extra-headers', |
| 187 | ;; `status-printer', `extra-status-menu' and `dir-status-files'. | 187 | ;; `status-printer', `extra-status-menu' and `dir-status-files'. |
| 188 | ;; This function is used by `vc-status', a replacement for | 188 | ;; This function is used by `vc-dir', a replacement for |
| 189 | ;; `vc-dired'. vc-status is still under development, and is NOT | 189 | ;; `vc-dired'. vc-dir is still under development, and is NOT |
| 190 | ;; feature complete. As such, the requirements for this function | 190 | ;; feature complete. As such, the requirements for this function |
| 191 | ;; might change. This is a replacement for `dir-state'. | 191 | ;; might change. This is a replacement for `dir-state'. |
| 192 | ;; | 192 | ;; |
| @@ -200,19 +200,19 @@ | |||
| 200 | ;; | 200 | ;; |
| 201 | ;; - status-extra-headers (dir) | 201 | ;; - status-extra-headers (dir) |
| 202 | ;; | 202 | ;; |
| 203 | ;; Return a string that will be added to the *vc-status* buffer header. | 203 | ;; Return a string that will be added to the *vc-dir* buffer header. |
| 204 | ;; | 204 | ;; |
| 205 | ;; - status-printer (fileinfo) | 205 | ;; - status-printer (fileinfo) |
| 206 | ;; | 206 | ;; |
| 207 | ;; Pretty print the `vc-status-fileinfo' FILEINFO. | 207 | ;; Pretty print the `vc-dir-fileinfo' FILEINFO. |
| 208 | ;; If a backend needs to show more information than the default FILE | 208 | ;; If a backend needs to show more information than the default FILE |
| 209 | ;; and STATE in the vc-status listing, it can store that extra | 209 | ;; and STATE in the vc-dir listing, it can store that extra |
| 210 | ;; information in `vc-status-fileinfo->extra'. This function can be | 210 | ;; information in `vc-dir-fileinfo->extra'. This function can be |
| 211 | ;; used to display that extra information in the *vc-status* buffer. | 211 | ;; used to display that extra information in the *vc-dir* buffer. |
| 212 | ;; | 212 | ;; |
| 213 | ;; - status-fileinfo-extra (file) | 213 | ;; - status-fileinfo-extra (file) |
| 214 | ;; | 214 | ;; |
| 215 | ;; Compute `vc-status-fileinfo->extra' for FILE. | 215 | ;; Compute `vc-dir-fileinfo->extra' for FILE. |
| 216 | ;; | 216 | ;; |
| 217 | ;; * working-revision (file) | 217 | ;; * working-revision (file) |
| 218 | ;; | 218 | ;; |
| @@ -590,7 +590,7 @@ | |||
| 590 | 590 | ||
| 591 | ;;; Todo: | 591 | ;;; Todo: |
| 592 | 592 | ||
| 593 | ;; - vc-status-kill-dir-status-process should not be specific to dir-status, | 593 | ;; - vc-dir-kill-dir-status-process should not be specific to dir-status, |
| 594 | ;; it should work for other async commands as well (pull/push/...). | 594 | ;; it should work for other async commands as well (pull/push/...). |
| 595 | ;; | 595 | ;; |
| 596 | ;; - vc-update/vc-merge should deal with VC systems that don't | 596 | ;; - vc-update/vc-merge should deal with VC systems that don't |
| @@ -633,24 +633,24 @@ | |||
| 633 | ;; - vc-next-action should do something about 'missing files. Maybe | 633 | ;; - vc-next-action should do something about 'missing files. Maybe |
| 634 | ;; just warn, or offer to checkout. | 634 | ;; just warn, or offer to checkout. |
| 635 | ;; | 635 | ;; |
| 636 | ;; - display the directory names in vc-status, similar to what PCL-CVS | 636 | ;; - display the directory names in vc-dir, similar to what PCL-CVS |
| 637 | ;; does. | 637 | ;; does. |
| 638 | ;; | 638 | ;; |
| 639 | ;; - most vc-status backends need more work. They might need to | 639 | ;; - most vc-dir backends need more work. They might need to |
| 640 | ;; provide custom headers, use the `extra' field and deal with all | 640 | ;; provide custom headers, use the `extra' field and deal with all |
| 641 | ;; possible VC states. | 641 | ;; possible VC states. |
| 642 | ;; | 642 | ;; |
| 643 | ;; - add function that calls vc-status to `find-directory-functions'. | 643 | ;; - add function that calls vc-dir to `find-directory-functions'. |
| 644 | ;; | 644 | ;; |
| 645 | ;; - vc-status needs mouse bindings. | 645 | ;; - vc-dir needs mouse bindings. |
| 646 | ;; | 646 | ;; |
| 647 | ;; - vc-status needs more key bindings for VC actions. | 647 | ;; - vc-dir needs more key bindings for VC actions. |
| 648 | ;; | 648 | ;; |
| 649 | ;; - vc-status toolbar needs more icons. | 649 | ;; - vc-dir toolbar needs more icons. |
| 650 | ;; | 650 | ;; |
| 651 | ;; - vc-diff, vc-annotate, etc. need to deal better with unregistered | 651 | ;; - vc-diff, vc-annotate, etc. need to deal better with unregistered |
| 652 | ;; files. Now that unregistered and ignored files are shown in | 652 | ;; files. Now that unregistered and ignored files are shown in |
| 653 | ;; vc-dired/vc-status, it is possible that these commands are called | 653 | ;; vc-dired/vc-dir, it is possible that these commands are called |
| 654 | ;; for unregistered/ignored files. | 654 | ;; for unregistered/ignored files. |
| 655 | ;; | 655 | ;; |
| 656 | ;; - do not default to RCS anymore when the current directory is not | 656 | ;; - do not default to RCS anymore when the current directory is not |
| @@ -1437,14 +1437,14 @@ Otherwise, throw an error." | |||
| 1437 | (unless (eq (vc-backend f) firstbackend) | 1437 | (unless (eq (vc-backend f) firstbackend) |
| 1438 | (error "All members of a fileset must be under the same version-control system.")))) | 1438 | (error "All members of a fileset must be under the same version-control system.")))) |
| 1439 | marked)) | 1439 | marked)) |
| 1440 | ((eq major-mode 'vc-status-mode) | 1440 | ((eq major-mode 'vc-dir-mode) |
| 1441 | (or (vc-status-marked-files) | 1441 | (or (vc-dir-marked-files) |
| 1442 | (list (vc-status-current-file)))) | 1442 | (list (vc-dir-current-file)))) |
| 1443 | ((vc-backend buffer-file-name) | 1443 | ((vc-backend buffer-file-name) |
| 1444 | (list buffer-file-name)) | 1444 | (list buffer-file-name)) |
| 1445 | ((and vc-parent-buffer (or (buffer-file-name vc-parent-buffer) | 1445 | ((and vc-parent-buffer (or (buffer-file-name vc-parent-buffer) |
| 1446 | (with-current-buffer vc-parent-buffer | 1446 | (with-current-buffer vc-parent-buffer |
| 1447 | (or vc-dired-mode (eq major-mode 'vc-status-mode))))) | 1447 | (or vc-dired-mode (eq major-mode 'vc-dir-mode))))) |
| 1448 | (progn | 1448 | (progn |
| 1449 | (set-buffer vc-parent-buffer) | 1449 | (set-buffer vc-parent-buffer) |
| 1450 | (vc-deduce-fileset))) | 1450 | (vc-deduce-fileset))) |
| @@ -1472,8 +1472,8 @@ Otherwise, throw an error." | |||
| 1472 | (cond | 1472 | (cond |
| 1473 | (vc-dired-mode | 1473 | (vc-dired-mode |
| 1474 | (set-buffer (find-file-noselect (dired-get-filename)))) | 1474 | (set-buffer (find-file-noselect (dired-get-filename)))) |
| 1475 | ((eq major-mode 'vc-status-mode) | 1475 | ((eq major-mode 'vc-dir-mode) |
| 1476 | (set-buffer (find-file-noselect (vc-status-current-file)))) | 1476 | (set-buffer (find-file-noselect (vc-dir-current-file)))) |
| 1477 | (t | 1477 | (t |
| 1478 | (while (and vc-parent-buffer | 1478 | (while (and vc-parent-buffer |
| 1479 | (buffer-live-p vc-parent-buffer) | 1479 | (buffer-live-p vc-parent-buffer) |
| @@ -1578,7 +1578,7 @@ merge in the changes into your working copy." | |||
| 1578 | (dolist (file files) | 1578 | (dolist (file files) |
| 1579 | (let ((visited (get-file-buffer file))) | 1579 | (let ((visited (get-file-buffer file))) |
| 1580 | (when visited | 1580 | (when visited |
| 1581 | (if (or vc-dired-mode (eq major-mode 'vc-status-mode)) | 1581 | (if (or vc-dired-mode (eq major-mode 'vc-dir-mode)) |
| 1582 | (switch-to-buffer-other-window visited) | 1582 | (switch-to-buffer-other-window visited) |
| 1583 | (set-buffer visited)) | 1583 | (set-buffer visited)) |
| 1584 | ;; Check relation of buffer and file, and make sure | 1584 | ;; Check relation of buffer and file, and make sure |
| @@ -1838,9 +1838,9 @@ rather than user editing!" | |||
| 1838 | (with-current-buffer buffer | 1838 | (with-current-buffer buffer |
| 1839 | (vc-resynch-window file keep noquery))))) | 1839 | (vc-resynch-window file keep noquery))))) |
| 1840 | (vc-dired-resynch-file file) | 1840 | (vc-dired-resynch-file file) |
| 1841 | (when (memq 'vc-status-mark-buffer-changed after-save-hook) | 1841 | (when (memq 'vc-dir-mark-buffer-changed after-save-hook) |
| 1842 | (let ((buffer (get-file-buffer file))) | 1842 | (let ((buffer (get-file-buffer file))) |
| 1843 | (vc-status-mark-buffer-changed file)))) | 1843 | (vc-dir-mark-buffer-changed file)))) |
| 1844 | 1844 | ||
| 1845 | 1845 | ||
| 1846 | (defun vc-start-entry (files rev comment initial-contents msg action &optional after-hook) | 1846 | (defun vc-start-entry (files rev comment initial-contents msg action &optional after-hook) |
| @@ -1855,7 +1855,7 @@ empty comment. Remember the file's buffer in `vc-parent-buffer' | |||
| 1855 | \(current one if no file). AFTER-HOOK specifies the local value | 1855 | \(current one if no file). AFTER-HOOK specifies the local value |
| 1856 | for `vc-log-after-operation-hook'." | 1856 | for `vc-log-after-operation-hook'." |
| 1857 | (let ((parent | 1857 | (let ((parent |
| 1858 | (if (or (eq major-mode 'vc-dired-mode) (eq major-mode 'vc-status-mode)) | 1858 | (if (or (eq major-mode 'vc-dired-mode) (eq major-mode 'vc-dir-mode)) |
| 1859 | ;; If we are called from VC dired, the parent buffer is | 1859 | ;; If we are called from VC dired, the parent buffer is |
| 1860 | ;; the current buffer. | 1860 | ;; the current buffer. |
| 1861 | (current-buffer) | 1861 | (current-buffer) |
| @@ -2002,7 +2002,7 @@ the buffer contents as a comment." | |||
| 2002 | ;; Sync parent buffer in case the user modified it while editing the comment. | 2002 | ;; Sync parent buffer in case the user modified it while editing the comment. |
| 2003 | ;; But not if it is a vc-dired buffer. | 2003 | ;; But not if it is a vc-dired buffer. |
| 2004 | (with-current-buffer vc-parent-buffer | 2004 | (with-current-buffer vc-parent-buffer |
| 2005 | (or vc-dired-mode (eq major-mode 'vc-status-mode) (vc-buffer-sync))) | 2005 | (or vc-dired-mode (eq major-mode 'vc-dir-mode) (vc-buffer-sync))) |
| 2006 | (if (not vc-log-operation) | 2006 | (if (not vc-log-operation) |
| 2007 | (error "No log operation is pending")) | 2007 | (error "No log operation is pending")) |
| 2008 | ;; save the parameters held in buffer-local variables | 2008 | ;; save the parameters held in buffer-local variables |
| @@ -2034,7 +2034,7 @@ the buffer contents as a comment." | |||
| 2034 | (mapc | 2034 | (mapc |
| 2035 | (lambda (file) (vc-resynch-buffer file vc-keep-workfiles t)) | 2035 | (lambda (file) (vc-resynch-buffer file vc-keep-workfiles t)) |
| 2036 | log-fileset)) | 2036 | log-fileset)) |
| 2037 | (if (or vc-dired-mode (eq major-mode 'vc-status-mode)) | 2037 | (if (or vc-dired-mode (eq major-mode 'vc-dir-mode)) |
| 2038 | (dired-move-to-filename)) | 2038 | (dired-move-to-filename)) |
| 2039 | (run-hooks after-hook 'vc-finish-logentry-hook))) | 2039 | (run-hooks after-hook 'vc-finish-logentry-hook))) |
| 2040 | 2040 | ||
| @@ -2701,13 +2701,13 @@ With prefix arg READ-SWITCHES, specify a value to override | |||
| 2701 | 2701 | ||
| 2702 | ;; Used to store information for the files displayed in the *VC status* buffer. | 2702 | ;; Used to store information for the files displayed in the *VC status* buffer. |
| 2703 | ;; Each item displayed corresponds to one of these defstructs. | 2703 | ;; Each item displayed corresponds to one of these defstructs. |
| 2704 | (defstruct (vc-status-fileinfo | 2704 | (defstruct (vc-dir-fileinfo |
| 2705 | (:copier nil) | 2705 | (:copier nil) |
| 2706 | (:type list) ;So we can use `member' on lists of FIs. | 2706 | (:type list) ;So we can use `member' on lists of FIs. |
| 2707 | (:constructor | 2707 | (:constructor |
| 2708 | ;; We could define it as an alias for `list'. | 2708 | ;; We could define it as an alias for `list'. |
| 2709 | vc-status-create-fileinfo (name state &optional extra marked)) | 2709 | vc-dir-create-fileinfo (name state &optional extra marked)) |
| 2710 | (:conc-name vc-status-fileinfo->)) | 2710 | (:conc-name vc-dir-fileinfo->)) |
| 2711 | name ;Keep it as first, for `member'. | 2711 | name ;Keep it as first, for `member'. |
| 2712 | state | 2712 | state |
| 2713 | ;; For storing backend specific information. | 2713 | ;; For storing backend specific information. |
| @@ -2718,7 +2718,7 @@ With prefix arg READ-SWITCHES, specify a value to override | |||
| 2718 | ;; To distinguish files and directories. | 2718 | ;; To distinguish files and directories. |
| 2719 | directoryp) | 2719 | directoryp) |
| 2720 | 2720 | ||
| 2721 | (defvar vc-status nil) | 2721 | (defvar vc-ewoc nil) |
| 2722 | 2722 | ||
| 2723 | (defun vc-default-status-extra-headers (backend dir) | 2723 | (defun vc-default-status-extra-headers (backend dir) |
| 2724 | ;; Be loud by default to remind people to add coded to display | 2724 | ;; Be loud by default to remind people to add coded to display |
| @@ -2726,7 +2726,7 @@ With prefix arg READ-SWITCHES, specify a value to override | |||
| 2726 | ;; XXX: change this to return nil before the release. | 2726 | ;; XXX: change this to return nil before the release. |
| 2727 | "Extra : Add backend specific headers here") | 2727 | "Extra : Add backend specific headers here") |
| 2728 | 2728 | ||
| 2729 | (defun vc-status-headers (backend dir) | 2729 | (defun vc-dir-headers (backend dir) |
| 2730 | "Display the headers in the *VC status* buffer. | 2730 | "Display the headers in the *VC status* buffer. |
| 2731 | It calls the `status-extra-headers' backend method to display backend | 2731 | It calls the `status-extra-headers' backend method to display backend |
| 2732 | specific headers." | 2732 | specific headers." |
| @@ -2740,13 +2740,13 @@ specific headers." | |||
| 2740 | 2740 | ||
| 2741 | (defun vc-default-status-printer (backend fileentry) | 2741 | (defun vc-default-status-printer (backend fileentry) |
| 2742 | "Pretty print FILEENTRY." | 2742 | "Pretty print FILEENTRY." |
| 2743 | (if (vc-status-fileinfo->directoryp fileentry) | 2743 | (if (vc-dir-fileinfo->directoryp fileentry) |
| 2744 | (insert " Directory: %s" (vc-status-fileinfo->name fileentry)) | 2744 | (insert " Directory: %s" (vc-dir-fileinfo->name fileentry)) |
| 2745 | ;; If you change the layout here, change vc-status-move-to-goal-column. | 2745 | ;; If you change the layout here, change vc-dir-move-to-goal-column. |
| 2746 | (let ((state (vc-status-fileinfo->state fileentry))) | 2746 | (let ((state (vc-dir-fileinfo->state fileentry))) |
| 2747 | (insert | 2747 | (insert |
| 2748 | (propertize | 2748 | (propertize |
| 2749 | (format "%c" (if (vc-status-fileinfo->marked fileentry) ?* ? )) | 2749 | (format "%c" (if (vc-dir-fileinfo->marked fileentry) ?* ? )) |
| 2750 | 'face 'font-lock-type-face) | 2750 | 'face 'font-lock-type-face) |
| 2751 | " " | 2751 | " " |
| 2752 | (propertize | 2752 | (propertize |
| @@ -2757,111 +2757,110 @@ specific headers." | |||
| 2757 | 'mouse-face 'highlight) | 2757 | 'mouse-face 'highlight) |
| 2758 | " " | 2758 | " " |
| 2759 | (propertize | 2759 | (propertize |
| 2760 | (format "%s" (vc-status-fileinfo->name fileentry)) | 2760 | (format "%s" (vc-dir-fileinfo->name fileentry)) |
| 2761 | 'face 'font-lock-function-name-face | 2761 | 'face 'font-lock-function-name-face |
| 2762 | 'mouse-face 'highlight))))) | 2762 | 'mouse-face 'highlight))))) |
| 2763 | 2763 | ||
| 2764 | (defun vc-status-printer (fileentry) | 2764 | (defun vc-dir-printer (fileentry) |
| 2765 | (let ((backend (vc-responsible-backend default-directory))) | 2765 | (let ((backend (vc-responsible-backend default-directory))) |
| 2766 | (vc-call-backend backend 'status-printer fileentry))) | 2766 | (vc-call-backend backend 'status-printer fileentry))) |
| 2767 | 2767 | ||
| 2768 | (defun vc-status-move-to-goal-column () | 2768 | (defun vc-dir-move-to-goal-column () |
| 2769 | ;; Used to keep the cursor on the file name column. | 2769 | ;; Used to keep the cursor on the file name column. |
| 2770 | (beginning-of-line) | 2770 | (beginning-of-line) |
| 2771 | ;; Must be in sync with vc-default-status-printer. | 2771 | ;; Must be in sync with vc-default-status-printer. |
| 2772 | (forward-char 25)) | 2772 | (forward-char 25)) |
| 2773 | 2773 | ||
| 2774 | (defun vc-status-prepare-status-buffer (dir &optional create-new) | 2774 | (defun vc-dir-prepare-status-buffer (dir &optional create-new) |
| 2775 | "Find a *vc-status* buffer showing DIR, or create a new one." | 2775 | "Find a *vc-dir* buffer showing DIR, or create a new one." |
| 2776 | (setq dir (expand-file-name dir)) | 2776 | (setq dir (expand-file-name dir)) |
| 2777 | (let* ((bname "*vc-status*") | 2777 | (let* ((bname "*vc-dir*") |
| 2778 | ;; Look for another *vc-status* buffer visiting the same directory. | 2778 | ;; Look for another *vc-dir* buffer visiting the same directory. |
| 2779 | (buf (save-excursion | 2779 | (buf (save-excursion |
| 2780 | (unless create-new | 2780 | (unless create-new |
| 2781 | (dolist (buffer (buffer-list)) | 2781 | (dolist (buffer (buffer-list)) |
| 2782 | (set-buffer buffer) | 2782 | (set-buffer buffer) |
| 2783 | (when (and (eq major-mode 'vc-status-mode) | 2783 | (when (and (eq major-mode 'vc-dir-mode) |
| 2784 | (string= (expand-file-name default-directory) dir)) | 2784 | (string= (expand-file-name default-directory) dir)) |
| 2785 | (return buffer))))))) | 2785 | (return buffer))))))) |
| 2786 | (if buf | 2786 | (or buf |
| 2787 | buf | 2787 | ;; Create a new *vc-dir* buffer. |
| 2788 | ;; Create a new *vc-status* buffer. | 2788 | (with-current-buffer (create-file-buffer bname) |
| 2789 | (with-current-buffer (create-file-buffer bname) | 2789 | (cd dir) |
| 2790 | (cd dir) | 2790 | (vc-setup-buffer (current-buffer)) |
| 2791 | (vc-setup-buffer (current-buffer)) | 2791 | ;; Reset the vc-parent-buffer-name so that it does not appear |
| 2792 | ;; Reset the vc-parent-buffer-name so that it does not appear | 2792 | ;; in the mode-line. |
| 2793 | ;; in the mode-line. | 2793 | (setq vc-parent-buffer-name nil) |
| 2794 | (setq vc-parent-buffer-name nil) | 2794 | (current-buffer))))) |
| 2795 | (current-buffer))))) | ||
| 2796 | 2795 | ||
| 2797 | ;;;###autoload | 2796 | ;;;###autoload |
| 2798 | (defun vc-status (dir) | 2797 | (defun vc-dir (dir) |
| 2799 | "Show the VC status for DIR." | 2798 | "Show the VC status for DIR." |
| 2800 | (interactive "DVC status for directory: ") | 2799 | (interactive "DVC status for directory: ") |
| 2801 | (switch-to-buffer (vc-status-prepare-status-buffer dir)) | 2800 | (switch-to-buffer (vc-dir-prepare-status-buffer dir)) |
| 2802 | (if (eq major-mode 'vc-status-mode) | 2801 | (if (eq major-mode 'vc-dir-mode) |
| 2803 | (vc-status-refresh) | 2802 | (vc-dir-refresh) |
| 2804 | (vc-status-mode))) | 2803 | (vc-dir-mode))) |
| 2805 | 2804 | ||
| 2806 | (defvar vc-status-menu-map | 2805 | (defvar vc-dir-menu-map |
| 2807 | (let ((map (make-sparse-keymap "VC-status"))) | 2806 | (let ((map (make-sparse-keymap "VC-dir"))) |
| 2808 | (define-key map [quit] | 2807 | (define-key map [quit] |
| 2809 | '(menu-item "Quit" bury-buffer | 2808 | '(menu-item "Quit" bury-buffer |
| 2810 | :help "Quit")) | 2809 | :help "Quit")) |
| 2811 | (define-key map [kill] | 2810 | (define-key map [kill] |
| 2812 | '(menu-item "Kill Update Command" vc-status-kill-dir-status-process | 2811 | '(menu-item "Kill Update Command" vc-dir-kill-dir-status-process |
| 2813 | :enable (vc-status-busy) | 2812 | :enable (vc-dir-busy) |
| 2814 | :help "Kill the command that updates VC status buffer")) | 2813 | :help "Kill the command that updates VC status buffer")) |
| 2815 | (define-key map [refresh] | 2814 | (define-key map [refresh] |
| 2816 | '(menu-item "Refresh" vc-status-refresh | 2815 | '(menu-item "Refresh" vc-dir-refresh |
| 2817 | :enable (not (vc-status-busy)) | 2816 | :enable (not (vc-dir-busy)) |
| 2818 | :help "Refresh the contents of the VC status buffer")) | 2817 | :help "Refresh the contents of the VC status buffer")) |
| 2819 | (define-key map [remup] | 2818 | (define-key map [remup] |
| 2820 | '(menu-item "Hide up-to-date" vc-status-hide-up-to-date | 2819 | '(menu-item "Hide up-to-date" vc-dir-hide-up-to-date |
| 2821 | :help "Hide up-to-date items from display")) | 2820 | :help "Hide up-to-date items from display")) |
| 2822 | ;; Movement. | 2821 | ;; Movement. |
| 2823 | (define-key map [sepmv] '("--")) | 2822 | (define-key map [sepmv] '("--")) |
| 2824 | (define-key map [next-line] | 2823 | (define-key map [next-line] |
| 2825 | '(menu-item "Next line" vc-status-next-line | 2824 | '(menu-item "Next line" vc-dir-next-line |
| 2826 | :help "Go to the next line" :keys "n")) | 2825 | :help "Go to the next line" :keys "n")) |
| 2827 | (define-key map [previous-line] | 2826 | (define-key map [previous-line] |
| 2828 | '(menu-item "Previous line" vc-status-previous-line | 2827 | '(menu-item "Previous line" vc-dir-previous-line |
| 2829 | :help "Go to the previous line")) | 2828 | :help "Go to the previous line")) |
| 2830 | ;; Marking. | 2829 | ;; Marking. |
| 2831 | (define-key map [sepmrk] '("--")) | 2830 | (define-key map [sepmrk] '("--")) |
| 2832 | (define-key map [unmark-all] | 2831 | (define-key map [unmark-all] |
| 2833 | '(menu-item "Unmark All" vc-status-unmark-all-files | 2832 | '(menu-item "Unmark All" vc-dir-unmark-all-files |
| 2834 | :help "Unmark all files that are in the same state as the current file\ | 2833 | :help "Unmark all files that are in the same state as the current file\ |
| 2835 | \nWith prefix argument unmark all files")) | 2834 | \nWith prefix argument unmark all files")) |
| 2836 | (define-key map [unmark-previous] | 2835 | (define-key map [unmark-previous] |
| 2837 | '(menu-item "Unmark previous " vc-status-unmark-file-up | 2836 | '(menu-item "Unmark previous " vc-dir-unmark-file-up |
| 2838 | :help "Move to the previous line and unmark the file")) | 2837 | :help "Move to the previous line and unmark the file")) |
| 2839 | 2838 | ||
| 2840 | (define-key map [mark-all] | 2839 | (define-key map [mark-all] |
| 2841 | '(menu-item "Mark All" vc-status-mark-all-files | 2840 | '(menu-item "Mark All" vc-dir-mark-all-files |
| 2842 | :help "Mark all files that are in the same state as the current file\ | 2841 | :help "Mark all files that are in the same state as the current file\ |
| 2843 | \nWith prefix argument mark all files")) | 2842 | \nWith prefix argument mark all files")) |
| 2844 | (define-key map [unmark] | 2843 | (define-key map [unmark] |
| 2845 | '(menu-item "Unmark" vc-status-unmark | 2844 | '(menu-item "Unmark" vc-dir-unmark |
| 2846 | :help "Unmark the current file or all files in the region")) | 2845 | :help "Unmark the current file or all files in the region")) |
| 2847 | 2846 | ||
| 2848 | (define-key map [mark] | 2847 | (define-key map [mark] |
| 2849 | '(menu-item "Mark" vc-status-mark | 2848 | '(menu-item "Mark" vc-dir-mark |
| 2850 | :help "Mark the current file or all files in the region")) | 2849 | :help "Mark the current file or all files in the region")) |
| 2851 | 2850 | ||
| 2852 | (define-key map [sepopn] '("--")) | 2851 | (define-key map [sepopn] '("--")) |
| 2853 | (define-key map [open-other] | 2852 | (define-key map [open-other] |
| 2854 | '(menu-item "Open in other window" vc-status-find-file-other-window | 2853 | '(menu-item "Open in other window" vc-dir-find-file-other-window |
| 2855 | :help "Find the file on the current line, in another window")) | 2854 | :help "Find the file on the current line, in another window")) |
| 2856 | (define-key map [open] | 2855 | (define-key map [open] |
| 2857 | '(menu-item "Open file" vc-status-find-file | 2856 | '(menu-item "Open file" vc-dir-find-file |
| 2858 | :help "Find the file on the current line")) | 2857 | :help "Find the file on the current line")) |
| 2859 | ;; VC info details | 2858 | ;; VC info details |
| 2860 | (define-key map [sepvcdet] '("--")) | 2859 | (define-key map [sepvcdet] '("--")) |
| 2861 | ;; FIXME: This needs a key binding. And maybe a better name | 2860 | ;; FIXME: This needs a key binding. And maybe a better name |
| 2862 | ;; ("Insert" like PCL-CVS uses does not sound that great either)... | 2861 | ;; ("Insert" like PCL-CVS uses does not sound that great either)... |
| 2863 | (define-key map [ins] | 2862 | (define-key map [ins] |
| 2864 | '(menu-item "Show File" vc-status-show-fileentry | 2863 | '(menu-item "Show File" vc-dir-show-fileentry |
| 2865 | :help "Show a file in the VC status listing even though it might be up to date")) | 2864 | :help "Show a file in the VC status listing even though it might be up to date")) |
| 2866 | (define-key map [annotate] | 2865 | (define-key map [annotate] |
| 2867 | '(menu-item "Annotate" vc-annotate | 2866 | '(menu-item "Annotate" vc-annotate |
| @@ -2886,31 +2885,31 @@ specific headers." | |||
| 2886 | '(menu-item "Check In/Out" vc-next-action | 2885 | '(menu-item "Check In/Out" vc-next-action |
| 2887 | :help "Do the next logical version control operation on the current fileset")) | 2886 | :help "Do the next logical version control operation on the current fileset")) |
| 2888 | (define-key map [register] | 2887 | (define-key map [register] |
| 2889 | '(menu-item "Register" vc-status-register | 2888 | '(menu-item "Register" vc-dir-register |
| 2890 | :help "Register file set into the version control system")) | 2889 | :help "Register file set into the version control system")) |
| 2891 | map) | 2890 | map) |
| 2892 | "Menu for VC status") | 2891 | "Menu for VC status") |
| 2893 | 2892 | ||
| 2894 | (defalias 'vc-status-menu-map vc-status-menu-map) | 2893 | (defalias 'vc-dir-menu-map vc-dir-menu-map) |
| 2895 | 2894 | ||
| 2896 | (defvar vc-status-mode-map | 2895 | (defvar vc-dir-mode-map |
| 2897 | (let ((map (make-keymap))) | 2896 | (let ((map (make-keymap))) |
| 2898 | (suppress-keymap map) | 2897 | (suppress-keymap map) |
| 2899 | ;; Marking. | 2898 | ;; Marking. |
| 2900 | (define-key map "m" 'vc-status-mark) | 2899 | (define-key map "m" 'vc-dir-mark) |
| 2901 | (define-key map "M" 'vc-status-mark-all-files) | 2900 | (define-key map "M" 'vc-dir-mark-all-files) |
| 2902 | (define-key map "u" 'vc-status-unmark) | 2901 | (define-key map "u" 'vc-dir-unmark) |
| 2903 | (define-key map "\C-?" 'vc-status-unmark-file-up) | 2902 | (define-key map "\C-?" 'vc-dir-unmark-file-up) |
| 2904 | (define-key map "\M-\C-?" 'vc-status-unmark-all-files) | 2903 | (define-key map "\M-\C-?" 'vc-dir-unmark-all-files) |
| 2905 | ;; Movement. | 2904 | ;; Movement. |
| 2906 | (define-key map "n" 'vc-status-next-line) | 2905 | (define-key map "n" 'vc-dir-next-line) |
| 2907 | (define-key map " " 'vc-status-next-line) | 2906 | (define-key map " " 'vc-dir-next-line) |
| 2908 | (define-key map "\t" 'vc-status-next-line) | 2907 | (define-key map "\t" 'vc-dir-next-line) |
| 2909 | (define-key map "p" 'vc-status-previous-line) | 2908 | (define-key map "p" 'vc-dir-previous-line) |
| 2910 | (define-key map [backtab] 'vc-status-previous-line) | 2909 | (define-key map [backtab] 'vc-dir-previous-line) |
| 2911 | ;; VC commands. | 2910 | ;; VC commands. |
| 2912 | (define-key map "=" 'vc-diff) ;; C-x v = | 2911 | (define-key map "=" 'vc-diff) ;; C-x v = |
| 2913 | (define-key map "a" 'vc-status-register) | 2912 | (define-key map "a" 'vc-dir-register) |
| 2914 | (define-key map "+" 'vc-update) ;; C-x v + | 2913 | (define-key map "+" 'vc-update) ;; C-x v + |
| 2915 | 2914 | ||
| 2916 | ;;XXX: Maybe use something else here, so we can use 'U' for unmark | 2915 | ;;XXX: Maybe use something else here, so we can use 'U' for unmark |
| @@ -2921,23 +2920,23 @@ specific headers." | |||
| 2921 | (define-key map "A" 'vc-annotate) | 2920 | (define-key map "A" 'vc-annotate) |
| 2922 | (define-key map "l" 'vc-print-log) ;; C-x v l | 2921 | (define-key map "l" 'vc-print-log) ;; C-x v l |
| 2923 | ;; The remainder. | 2922 | ;; The remainder. |
| 2924 | (define-key map "f" 'vc-status-find-file) | 2923 | (define-key map "f" 'vc-dir-find-file) |
| 2925 | (define-key map "\C-m" 'vc-status-find-file) | 2924 | (define-key map "\C-m" 'vc-dir-find-file) |
| 2926 | (define-key map "o" 'vc-status-find-file-other-window) | 2925 | (define-key map "o" 'vc-dir-find-file-other-window) |
| 2927 | (define-key map "x" 'vc-status-hide-up-to-date) | 2926 | (define-key map "x" 'vc-dir-hide-up-to-date) |
| 2928 | (define-key map "q" 'bury-buffer) | 2927 | (define-key map "q" 'bury-buffer) |
| 2929 | (define-key map "g" 'vc-status-refresh) | 2928 | (define-key map "g" 'vc-dir-refresh) |
| 2930 | (define-key map "\C-c\C-c" 'vc-status-kill-dir-status-process) | 2929 | (define-key map "\C-c\C-c" 'vc-dir-kill-dir-status-process) |
| 2931 | ;; Not working yet. Functions like vc-status-find-file need to | 2930 | ;; Not working yet. Functions like vc-dir-find-file need to |
| 2932 | ;; find the file from the mouse position, not `point'. | 2931 | ;; find the file from the mouse position, not `point'. |
| 2933 | ;; (define-key map [(down-mouse-3)] 'vc-status-menu) | 2932 | ;; (define-key map [(down-mouse-3)] 'vc-dir-menu) |
| 2934 | 2933 | ||
| 2935 | ;; Hook up the menu. | 2934 | ;; Hook up the menu. |
| 2936 | (define-key map [menu-bar vc-status-mode] | 2935 | (define-key map [menu-bar vc-dir-mode] |
| 2937 | '(menu-item | 2936 | '(menu-item |
| 2938 | ;; This is used to that VC backends could add backend specific | 2937 | ;; This is used to that VC backends could add backend specific |
| 2939 | ;; menu items to vc-status-menu-map. | 2938 | ;; menu items to vc-dir-menu-map. |
| 2940 | "VC Status" vc-status-menu-map :filter vc-status-menu-map-filter)) | 2939 | "VC Status" vc-dir-menu-map :filter vc-dir-menu-map-filter)) |
| 2941 | map) | 2940 | map) |
| 2942 | "Keymap for VC status") | 2941 | "Keymap for VC status") |
| 2943 | 2942 | ||
| @@ -2945,8 +2944,8 @@ specific headers." | |||
| 2945 | nil) | 2944 | nil) |
| 2946 | 2945 | ||
| 2947 | ;; This is used to that VC backends could add backend specific menu | 2946 | ;; This is used to that VC backends could add backend specific menu |
| 2948 | ;; items to vc-status-menu-map. | 2947 | ;; items to vc-dir-menu-map. |
| 2949 | (defun vc-status-menu-map-filter (orig-binding) | 2948 | (defun vc-dir-menu-map-filter (orig-binding) |
| 2950 | (when (and (symbolp orig-binding) (fboundp orig-binding)) | 2949 | (when (and (symbolp orig-binding) (fboundp orig-binding)) |
| 2951 | (setq orig-binding (indirect-function orig-binding))) | 2950 | (setq orig-binding (indirect-function orig-binding))) |
| 2952 | (let ((ext-binding | 2951 | (let ((ext-binding |
| @@ -2958,71 +2957,71 @@ specific headers." | |||
| 2958 | '("----") | 2957 | '("----") |
| 2959 | ext-binding)))) | 2958 | ext-binding)))) |
| 2960 | 2959 | ||
| 2961 | (defun vc-status-menu (e) | 2960 | (defun vc-dir-menu (e) |
| 2962 | "Popup the VC status menu." | 2961 | "Popup the VC status menu." |
| 2963 | (interactive "e") | 2962 | (interactive "e") |
| 2964 | (popup-menu vc-status-menu-map e)) | 2963 | (popup-menu vc-dir-menu-map e)) |
| 2965 | 2964 | ||
| 2966 | (defvar vc-status-tool-bar-map | 2965 | (defvar vc-dir-tool-bar-map |
| 2967 | (let ((map (make-sparse-keymap))) | 2966 | (let ((map (make-sparse-keymap))) |
| 2968 | (tool-bar-local-item-from-menu 'vc-status-find-file "open" | 2967 | (tool-bar-local-item-from-menu 'vc-dir-find-file "open" |
| 2969 | map vc-status-mode-map) | 2968 | map vc-dir-mode-map) |
| 2970 | (tool-bar-local-item "bookmark_add" | 2969 | (tool-bar-local-item "bookmark_add" |
| 2971 | 'vc-status-toggle-mark 'vc-status-toggle-mark map | 2970 | 'vc-dir-toggle-mark 'vc-dir-toggle-mark map |
| 2972 | :help "Toggle mark on current item") | 2971 | :help "Toggle mark on current item") |
| 2973 | (tool-bar-local-item-from-menu 'vc-status-previous-line "left-arrow" | 2972 | (tool-bar-local-item-from-menu 'vc-dir-previous-line "left-arrow" |
| 2974 | map vc-status-mode-map | 2973 | map vc-dir-mode-map |
| 2975 | :rtl "right-arrow") | 2974 | :rtl "right-arrow") |
| 2976 | (tool-bar-local-item-from-menu 'vc-status-next-line "right-arrow" | 2975 | (tool-bar-local-item-from-menu 'vc-dir-next-line "right-arrow" |
| 2977 | map vc-status-mode-map | 2976 | map vc-dir-mode-map |
| 2978 | :rtl "left-arrow") | 2977 | :rtl "left-arrow") |
| 2979 | (tool-bar-local-item-from-menu 'vc-print-log "info" | 2978 | (tool-bar-local-item-from-menu 'vc-print-log "info" |
| 2980 | map vc-status-mode-map) | 2979 | map vc-dir-mode-map) |
| 2981 | (tool-bar-local-item-from-menu 'vc-status-refresh "refresh" | 2980 | (tool-bar-local-item-from-menu 'vc-dir-refresh "refresh" |
| 2982 | map vc-status-mode-map) | 2981 | map vc-dir-mode-map) |
| 2983 | (tool-bar-local-item-from-menu 'nonincremental-search-forward | 2982 | (tool-bar-local-item-from-menu 'nonincremental-search-forward |
| 2984 | "search" map) | 2983 | "search" map) |
| 2985 | (tool-bar-local-item-from-menu 'vc-status-kill-dir-status-process "cancel" | 2984 | (tool-bar-local-item-from-menu 'vc-dir-kill-dir-status-process "cancel" |
| 2986 | map vc-status-mode-map) | 2985 | map vc-dir-mode-map) |
| 2987 | (tool-bar-local-item-from-menu 'bury-buffer "exit" | 2986 | (tool-bar-local-item-from-menu 'bury-buffer "exit" |
| 2988 | map vc-status-mode-map) | 2987 | map vc-dir-mode-map) |
| 2989 | map)) | 2988 | map)) |
| 2990 | 2989 | ||
| 2991 | (defvar vc-status-process-buffer nil | 2990 | (defvar vc-dir-process-buffer nil |
| 2992 | "The buffer used for the asynchronous call that computes the VC status.") | 2991 | "The buffer used for the asynchronous call that computes the VC status.") |
| 2993 | 2992 | ||
| 2994 | (defun vc-status-mode () | 2993 | (defun vc-dir-mode () |
| 2995 | "Major mode for VC status. | 2994 | "Major mode for VC status. |
| 2996 | \\{vc-status-mode-map}" | 2995 | \\{vc-dir-mode-map}" |
| 2997 | (setq mode-name "VC Status") | 2996 | (setq mode-name "VC Status") |
| 2998 | (setq major-mode 'vc-status-mode) | 2997 | (setq major-mode 'vc-dir-mode) |
| 2999 | (setq buffer-read-only t) | 2998 | (setq buffer-read-only t) |
| 3000 | (use-local-map vc-status-mode-map) | 2999 | (use-local-map vc-dir-mode-map) |
| 3001 | (set (make-local-variable 'tool-bar-map) vc-status-tool-bar-map) | 3000 | (set (make-local-variable 'tool-bar-map) vc-dir-tool-bar-map) |
| 3002 | (let ((buffer-read-only nil) | 3001 | (let ((buffer-read-only nil) |
| 3003 | (backend (vc-responsible-backend default-directory)) | 3002 | (backend (vc-responsible-backend default-directory)) |
| 3004 | entries) | 3003 | entries) |
| 3005 | (erase-buffer) | 3004 | (erase-buffer) |
| 3006 | (set (make-local-variable 'vc-status-process-buffer) nil) | 3005 | (set (make-local-variable 'vc-dir-process-buffer) nil) |
| 3007 | (set (make-local-variable 'vc-status) | 3006 | (set (make-local-variable 'vc-ewoc) |
| 3008 | (ewoc-create #'vc-status-printer | 3007 | (ewoc-create #'vc-dir-printer |
| 3009 | (vc-status-headers backend default-directory))) | 3008 | (vc-dir-headers backend default-directory))) |
| 3010 | (add-hook 'after-save-hook 'vc-status-mark-buffer-changed) | 3009 | (add-hook 'after-save-hook 'vc-dir-mark-buffer-changed) |
| 3011 | ;; Make sure that if the VC status buffer is killed, the update | 3010 | ;; Make sure that if the VC status buffer is killed, the update |
| 3012 | ;; process running in the background is also killed. | 3011 | ;; process running in the background is also killed. |
| 3013 | (add-hook 'kill-buffer-query-functions 'vc-status-kill-query nil t) | 3012 | (add-hook 'kill-buffer-query-functions 'vc-dir-kill-query nil t) |
| 3014 | (vc-status-refresh))) | 3013 | (vc-dir-refresh))) |
| 3015 | 3014 | ||
| 3016 | (put 'vc-status-mode 'mode-class 'special) | 3015 | (put 'vc-dir-mode 'mode-class 'special) |
| 3017 | 3016 | ||
| 3018 | (defun vc-status-update (entries buffer &optional noinsert) | 3017 | (defun vc-dir-update (entries buffer &optional noinsert) |
| 3019 | "Update BUFFER's ewoc from the list of ENTRIES. | 3018 | "Update BUFFER's ewoc from the list of ENTRIES. |
| 3020 | If NOINSERT, ignore elements on ENTRIES which are not in the ewoc." | 3019 | If NOINSERT, ignore elements on ENTRIES which are not in the ewoc." |
| 3021 | ;; Add ENTRIES to the vc-status buffer BUFFER. | 3020 | ;; Add ENTRIES to the vc-dir buffer BUFFER. |
| 3022 | (with-current-buffer buffer | 3021 | (with-current-buffer buffer |
| 3023 | ;; Insert the entries sorted by name into the ewoc. | 3022 | ;; Insert the entries sorted by name into the ewoc. |
| 3024 | ;; We assume the ewoc is sorted too, which should be the | 3023 | ;; We assume the ewoc is sorted too, which should be the |
| 3025 | ;; case if we always add entries with vc-status-update. | 3024 | ;; case if we always add entries with vc-dir-update. |
| 3026 | (setq entries | 3025 | (setq entries |
| 3027 | ;; Sort: first files and then subdirectories. | 3026 | ;; Sort: first files and then subdirectories. |
| 3028 | ;; XXX: this is VERY inefficient, it computes the directory | 3027 | ;; XXX: this is VERY inefficient, it computes the directory |
| @@ -3036,36 +3035,36 @@ If NOINSERT, ignore elements on ENTRIES which are not in the ewoc." | |||
| 3036 | ((not (string= dir1 dir2)) nil) | 3035 | ((not (string= dir1 dir2)) nil) |
| 3037 | ((string< (car entry1) (car entry2)))))))) | 3036 | ((string< (car entry1) (car entry2)))))))) |
| 3038 | (let ((entry (car entries)) | 3037 | (let ((entry (car entries)) |
| 3039 | (node (ewoc-nth vc-status 0))) | 3038 | (node (ewoc-nth vc-ewoc 0))) |
| 3040 | (while (and entry node) | 3039 | (while (and entry node) |
| 3041 | (let ((entryfile (car entry)) | 3040 | (let ((entryfile (car entry)) |
| 3042 | (nodefile (vc-status-fileinfo->name (ewoc-data node)))) | 3041 | (nodefile (vc-dir-fileinfo->name (ewoc-data node)))) |
| 3043 | (cond | 3042 | (cond |
| 3044 | ((string-lessp nodefile entryfile) | 3043 | ((string-lessp nodefile entryfile) |
| 3045 | (setq node (ewoc-next vc-status node))) | 3044 | (setq node (ewoc-next vc-ewoc node))) |
| 3046 | ((string-lessp entryfile nodefile) | 3045 | ((string-lessp entryfile nodefile) |
| 3047 | (unless noinsert | 3046 | (unless noinsert |
| 3048 | (ewoc-enter-before vc-status node | 3047 | (ewoc-enter-before vc-ewoc node |
| 3049 | (apply 'vc-status-create-fileinfo entry))) | 3048 | (apply 'vc-dir-create-fileinfo entry))) |
| 3050 | (setq entries (cdr entries) entry (car entries))) | 3049 | (setq entries (cdr entries) entry (car entries))) |
| 3051 | (t | 3050 | (t |
| 3052 | (setf (vc-status-fileinfo->state (ewoc-data node)) (nth 1 entry)) | 3051 | (setf (vc-dir-fileinfo->state (ewoc-data node)) (nth 1 entry)) |
| 3053 | (setf (vc-status-fileinfo->extra (ewoc-data node)) (nth 2 entry)) | 3052 | (setf (vc-dir-fileinfo->extra (ewoc-data node)) (nth 2 entry)) |
| 3054 | (setf (vc-status-fileinfo->needs-update (ewoc-data node)) nil) | 3053 | (setf (vc-dir-fileinfo->needs-update (ewoc-data node)) nil) |
| 3055 | (ewoc-invalidate vc-status node) | 3054 | (ewoc-invalidate vc-ewoc node) |
| 3056 | (setq entries (cdr entries) entry (car entries)) | 3055 | (setq entries (cdr entries) entry (car entries)) |
| 3057 | (setq node (ewoc-next vc-status node)))))) | 3056 | (setq node (ewoc-next vc-ewoc node)))))) |
| 3058 | (unless (or node noinsert) | 3057 | (unless (or node noinsert) |
| 3059 | ;; We're past the last node, all remaining entries go to the end. | 3058 | ;; We're past the last node, all remaining entries go to the end. |
| 3060 | (while entries | 3059 | (while entries |
| 3061 | (ewoc-enter-last vc-status | 3060 | (ewoc-enter-last vc-ewoc |
| 3062 | (apply 'vc-status-create-fileinfo (pop entries)))))))) | 3061 | (apply 'vc-dir-create-fileinfo (pop entries)))))))) |
| 3063 | 3062 | ||
| 3064 | (defun vc-status-busy () | 3063 | (defun vc-dir-busy () |
| 3065 | (and (buffer-live-p vc-status-process-buffer) | 3064 | (and (buffer-live-p vc-dir-process-buffer) |
| 3066 | (get-buffer-process vc-status-process-buffer))) | 3065 | (get-buffer-process vc-dir-process-buffer))) |
| 3067 | 3066 | ||
| 3068 | (defun vc-status-refresh-files (files default-state) | 3067 | (defun vc-dir-refresh-files (files default-state) |
| 3069 | "Refresh some files in the VC status buffer." | 3068 | "Refresh some files in the VC status buffer." |
| 3070 | (let ((backend (vc-responsible-backend default-directory)) | 3069 | (let ((backend (vc-responsible-backend default-directory)) |
| 3071 | (status-buffer (current-buffer)) | 3070 | (status-buffer (current-buffer)) |
| @@ -3074,13 +3073,13 @@ If NOINSERT, ignore elements on ENTRIES which are not in the ewoc." | |||
| 3074 | ;; Call the `dir-status-file' backend function. | 3073 | ;; Call the `dir-status-file' backend function. |
| 3075 | ;; `dir-status-file' is supposed to be asynchronous. | 3074 | ;; `dir-status-file' is supposed to be asynchronous. |
| 3076 | ;; It should compute the results, and then call the function | 3075 | ;; It should compute the results, and then call the function |
| 3077 | ;; passed as an argument in order to update the vc-status buffer | 3076 | ;; passed as an argument in order to update the vc-dir buffer |
| 3078 | ;; with the results. | 3077 | ;; with the results. |
| 3079 | (unless (buffer-live-p vc-status-process-buffer) | 3078 | (unless (buffer-live-p vc-dir-process-buffer) |
| 3080 | (setq vc-status-process-buffer | 3079 | (setq vc-dir-process-buffer |
| 3081 | (generate-new-buffer (format " *VC-%s* tmp status" backend)))) | 3080 | (generate-new-buffer (format " *VC-%s* tmp status" backend)))) |
| 3082 | (lexical-let ((buffer (current-buffer))) | 3081 | (lexical-let ((buffer (current-buffer))) |
| 3083 | (with-current-buffer vc-status-process-buffer | 3082 | (with-current-buffer vc-dir-process-buffer |
| 3084 | (cd def-dir) | 3083 | (cd def-dir) |
| 3085 | (erase-buffer) | 3084 | (erase-buffer) |
| 3086 | (vc-call-backend | 3085 | (vc-call-backend |
| @@ -3090,17 +3089,21 @@ If NOINSERT, ignore elements on ENTRIES which are not in the ewoc." | |||
| 3090 | ;; If MORE-TO-COME is true, then more updates will come from | 3089 | ;; If MORE-TO-COME is true, then more updates will come from |
| 3091 | ;; the asynchronous process. | 3090 | ;; the asynchronous process. |
| 3092 | (with-current-buffer buffer | 3091 | (with-current-buffer buffer |
| 3093 | (vc-status-update entries buffer) | 3092 | (vc-dir-update entries buffer) |
| 3094 | (unless more-to-come | 3093 | (unless more-to-come |
| 3095 | (setq mode-line-process nil) | 3094 | (setq mode-line-process nil) |
| 3096 | ;; Remove the ones that haven't been updated at all | 3095 | ;; Remove the ones that haven't been updated at all. |
| 3097 | (ewoc-filter vc-status (lambda (info) (not (vc-status-fileinfo->needs-update info)))))))))))) | 3096 | ;; Those not-updated are those whose state is nil because the |
| 3098 | 3097 | ;; file/dir doesn't exist and isn't versioned. | |
| 3099 | (defun vc-status-refresh () | 3098 | (ewoc-filter vc-ewoc |
| 3099 | (lambda (info) | ||
| 3100 | (not (vc-dir-fileinfo->needs-update info)))))))))))) | ||
| 3101 | |||
| 3102 | (defun vc-dir-refresh () | ||
| 3100 | "Refresh the contents of the VC status buffer. | 3103 | "Refresh the contents of the VC status buffer. |
| 3101 | Throw an error if another update process is in progress." | 3104 | Throw an error if another update process is in progress." |
| 3102 | (interactive) | 3105 | (interactive) |
| 3103 | (if (vc-status-busy) | 3106 | (if (vc-dir-busy) |
| 3104 | (error "Another update process is in progress, cannot run two at a time") | 3107 | (error "Another update process is in progress, cannot run two at a time") |
| 3105 | (let ((backend (vc-responsible-backend default-directory)) | 3108 | (let ((backend (vc-responsible-backend default-directory)) |
| 3106 | (status-buffer (current-buffer)) | 3109 | (status-buffer (current-buffer)) |
| @@ -3109,22 +3112,22 @@ Throw an error if another update process is in progress." | |||
| 3109 | ;; Call the `dir-status' backend function. | 3112 | ;; Call the `dir-status' backend function. |
| 3110 | ;; `dir-status' is supposed to be asynchronous. | 3113 | ;; `dir-status' is supposed to be asynchronous. |
| 3111 | ;; It should compute the results, and then call the function | 3114 | ;; It should compute the results, and then call the function |
| 3112 | ;; passed as an argument in order to update the vc-status buffer | 3115 | ;; passed as an argument in order to update the vc-dir buffer |
| 3113 | ;; with the results. | 3116 | ;; with the results. |
| 3114 | 3117 | ||
| 3115 | ;; Create a buffer that can be used by `dir-status' and call | 3118 | ;; Create a buffer that can be used by `dir-status' and call |
| 3116 | ;; `dir-status' with this buffer as the current buffer. Use | 3119 | ;; `dir-status' with this buffer as the current buffer. Use |
| 3117 | ;; `vc-status-process-buffer' to remember this buffer, so that | 3120 | ;; `vc-dir-process-buffer' to remember this buffer, so that |
| 3118 | ;; it can be used later to kill the update process in case it | 3121 | ;; it can be used later to kill the update process in case it |
| 3119 | ;; takes too long. | 3122 | ;; takes too long. |
| 3120 | (unless (buffer-live-p vc-status-process-buffer) | 3123 | (unless (buffer-live-p vc-dir-process-buffer) |
| 3121 | (setq vc-status-process-buffer | 3124 | (setq vc-dir-process-buffer |
| 3122 | (generate-new-buffer (format " *VC-%s* tmp status" backend)))) | 3125 | (generate-new-buffer (format " *VC-%s* tmp status" backend)))) |
| 3123 | ;; set the needs-update flag on all entries | 3126 | ;; set the needs-update flag on all entries |
| 3124 | (ewoc-map (lambda (info) (setf (vc-status-fileinfo->needs-update info) t) nil) | 3127 | (ewoc-map (lambda (info) (setf (vc-dir-fileinfo->needs-update info) t) nil) |
| 3125 | vc-status) | 3128 | vc-ewoc) |
| 3126 | (lexical-let ((buffer (current-buffer))) | 3129 | (lexical-let ((buffer (current-buffer))) |
| 3127 | (with-current-buffer vc-status-process-buffer | 3130 | (with-current-buffer vc-dir-process-buffer |
| 3128 | (cd def-dir) | 3131 | (cd def-dir) |
| 3129 | (erase-buffer) | 3132 | (erase-buffer) |
| 3130 | (vc-call-backend | 3133 | (vc-call-backend |
| @@ -3134,49 +3137,49 @@ Throw an error if another update process is in progress." | |||
| 3134 | ;; If MORE-TO-COME is true, then more updates will come from | 3137 | ;; If MORE-TO-COME is true, then more updates will come from |
| 3135 | ;; the asynchronous process. | 3138 | ;; the asynchronous process. |
| 3136 | (with-current-buffer buffer | 3139 | (with-current-buffer buffer |
| 3137 | (vc-status-update entries buffer) | 3140 | (vc-dir-update entries buffer) |
| 3138 | (unless more-to-come | 3141 | (unless more-to-come |
| 3139 | (let ((remaining | 3142 | (let ((remaining |
| 3140 | (ewoc-collect | 3143 | (ewoc-collect |
| 3141 | vc-status 'vc-status-fileinfo->needs-update))) | 3144 | vc-ewoc 'vc-dir-fileinfo->needs-update))) |
| 3142 | (if remaining | 3145 | (if remaining |
| 3143 | (vc-status-refresh-files | 3146 | (vc-dir-refresh-files |
| 3144 | (mapcar 'vc-status-fileinfo->name remaining) | 3147 | (mapcar 'vc-dir-fileinfo->name remaining) |
| 3145 | 'up-to-date) | 3148 | 'up-to-date) |
| 3146 | (setq mode-line-process nil)))))))))))) | 3149 | (setq mode-line-process nil)))))))))))) |
| 3147 | 3150 | ||
| 3148 | (defun vc-status-kill-dir-status-process () | 3151 | (defun vc-dir-kill-dir-status-process () |
| 3149 | "Kill the temporary buffer and associated process." | 3152 | "Kill the temporary buffer and associated process." |
| 3150 | (interactive) | 3153 | (interactive) |
| 3151 | (when (buffer-live-p vc-status-process-buffer) | 3154 | (when (buffer-live-p vc-dir-process-buffer) |
| 3152 | (let ((proc (get-buffer-process vc-status-process-buffer))) | 3155 | (let ((proc (get-buffer-process vc-dir-process-buffer))) |
| 3153 | (when proc (delete-process proc)) | 3156 | (when proc (delete-process proc)) |
| 3154 | (setq vc-status-process-buffer nil) | 3157 | (setq vc-dir-process-buffer nil) |
| 3155 | (setq mode-line-process nil)))) | 3158 | (setq mode-line-process nil)))) |
| 3156 | 3159 | ||
| 3157 | (defun vc-status-kill-query () | 3160 | (defun vc-dir-kill-query () |
| 3158 | ;; Make sure that when the VC status buffer is killed the update | 3161 | ;; Make sure that when the VC status buffer is killed the update |
| 3159 | ;; process running in background is also killed. | 3162 | ;; process running in background is also killed. |
| 3160 | (when (vc-status-busy) | 3163 | (when (vc-dir-busy) |
| 3161 | (when (y-or-n-p "Status update process running, really kill status buffer?") | 3164 | (when (y-or-n-p "Status update process running, really kill status buffer?") |
| 3162 | (vc-status-kill-dir-status-process) | 3165 | (vc-dir-kill-dir-status-process) |
| 3163 | t))) | 3166 | t))) |
| 3164 | 3167 | ||
| 3165 | (defun vc-status-next-line (arg) | 3168 | (defun vc-dir-next-line (arg) |
| 3166 | "Go to the next line. | 3169 | "Go to the next line. |
| 3167 | If a prefix argument is given, move by that many lines." | 3170 | If a prefix argument is given, move by that many lines." |
| 3168 | (interactive "p") | 3171 | (interactive "p") |
| 3169 | (ewoc-goto-next vc-status arg) | 3172 | (ewoc-goto-next vc-ewoc arg) |
| 3170 | (vc-status-move-to-goal-column)) | 3173 | (vc-dir-move-to-goal-column)) |
| 3171 | 3174 | ||
| 3172 | (defun vc-status-previous-line (arg) | 3175 | (defun vc-dir-previous-line (arg) |
| 3173 | "Go to the previous line. | 3176 | "Go to the previous line. |
| 3174 | If a prefix argument is given, move by that many lines." | 3177 | If a prefix argument is given, move by that many lines." |
| 3175 | (interactive "p") | 3178 | (interactive "p") |
| 3176 | (ewoc-goto-prev vc-status arg) | 3179 | (ewoc-goto-prev vc-ewoc arg) |
| 3177 | (vc-status-move-to-goal-column)) | 3180 | (vc-dir-move-to-goal-column)) |
| 3178 | 3181 | ||
| 3179 | (defun vc-status-mark-unmark (mark-unmark-function) | 3182 | (defun vc-dir-mark-unmark (mark-unmark-function) |
| 3180 | (if (use-region-p) | 3183 | (if (use-region-p) |
| 3181 | (let ((firstl (line-number-at-pos (region-beginning))) | 3184 | (let ((firstl (line-number-at-pos (region-beginning))) |
| 3182 | (lastl (line-number-at-pos (region-end)))) | 3185 | (lastl (line-number-at-pos (region-end)))) |
| @@ -3186,25 +3189,25 @@ If a prefix argument is given, move by that many lines." | |||
| 3186 | (funcall mark-unmark-function)))) | 3189 | (funcall mark-unmark-function)))) |
| 3187 | (funcall mark-unmark-function))) | 3190 | (funcall mark-unmark-function))) |
| 3188 | 3191 | ||
| 3189 | (defun vc-status-mark-file () | 3192 | (defun vc-dir-mark-file () |
| 3190 | ;; Mark the current file and move to the next line. | 3193 | ;; Mark the current file and move to the next line. |
| 3191 | (let* ((crt (ewoc-locate vc-status)) | 3194 | (let* ((crt (ewoc-locate vc-ewoc)) |
| 3192 | (file (ewoc-data crt))) | 3195 | (file (ewoc-data crt))) |
| 3193 | (setf (vc-status-fileinfo->marked file) t) | 3196 | (setf (vc-dir-fileinfo->marked file) t) |
| 3194 | (ewoc-invalidate vc-status crt) | 3197 | (ewoc-invalidate vc-ewoc crt) |
| 3195 | (vc-status-next-line 1))) | 3198 | (vc-dir-next-line 1))) |
| 3196 | 3199 | ||
| 3197 | (defun vc-status-mark () | 3200 | (defun vc-dir-mark () |
| 3198 | "Mark the current file or all files in the region. | 3201 | "Mark the current file or all files in the region. |
| 3199 | If the region is active, mark all the files in the region. | 3202 | If the region is active, mark all the files in the region. |
| 3200 | Otherwise mark the file on the current line and move to the next | 3203 | Otherwise mark the file on the current line and move to the next |
| 3201 | line." | 3204 | line." |
| 3202 | (interactive) | 3205 | (interactive) |
| 3203 | (vc-status-mark-unmark 'vc-status-mark-file)) | 3206 | (vc-dir-mark-unmark 'vc-dir-mark-file)) |
| 3204 | 3207 | ||
| 3205 | 3208 | ||
| 3206 | ;; XXX: Should this take the region into consideration? | 3209 | ;; XXX: Should this take the region into consideration? |
| 3207 | (defun vc-status-mark-all-files (arg) | 3210 | (defun vc-dir-mark-all-files (arg) |
| 3208 | "Mark all files with the same state as the current one. | 3211 | "Mark all files with the same state as the current one. |
| 3209 | With a prefix argument mark all files. | 3212 | With a prefix argument mark all files. |
| 3210 | 3213 | ||
| @@ -3215,49 +3218,49 @@ share the same state." | |||
| 3215 | (if arg | 3218 | (if arg |
| 3216 | (ewoc-map | 3219 | (ewoc-map |
| 3217 | (lambda (filearg) | 3220 | (lambda (filearg) |
| 3218 | (unless (vc-status-fileinfo->marked filearg) | 3221 | (unless (vc-dir-fileinfo->marked filearg) |
| 3219 | (setf (vc-status-fileinfo->marked filearg) t) | 3222 | (setf (vc-dir-fileinfo->marked filearg) t) |
| 3220 | t)) | 3223 | t)) |
| 3221 | vc-status) | 3224 | vc-ewoc) |
| 3222 | (let* ((crt (ewoc-locate vc-status)) | 3225 | (let* ((crt (ewoc-locate vc-ewoc)) |
| 3223 | (crt-state (vc-status-fileinfo->state (ewoc-data crt)))) | 3226 | (crt-state (vc-dir-fileinfo->state (ewoc-data crt)))) |
| 3224 | (ewoc-map | 3227 | (ewoc-map |
| 3225 | (lambda (filearg) | 3228 | (lambda (filearg) |
| 3226 | (when (and (not (vc-status-fileinfo->marked filearg)) | 3229 | (when (and (not (vc-dir-fileinfo->marked filearg)) |
| 3227 | (eq (vc-status-fileinfo->state filearg) crt-state)) | 3230 | (eq (vc-dir-fileinfo->state filearg) crt-state)) |
| 3228 | (setf (vc-status-fileinfo->marked filearg) t) | 3231 | (setf (vc-dir-fileinfo->marked filearg) t) |
| 3229 | t)) | 3232 | t)) |
| 3230 | vc-status)))) | 3233 | vc-ewoc)))) |
| 3231 | 3234 | ||
| 3232 | (defun vc-status-unmark-file () | 3235 | (defun vc-dir-unmark-file () |
| 3233 | ;; Unmark the current file and move to the next line. | 3236 | ;; Unmark the current file and move to the next line. |
| 3234 | (let* ((crt (ewoc-locate vc-status)) | 3237 | (let* ((crt (ewoc-locate vc-ewoc)) |
| 3235 | (file (ewoc-data crt))) | 3238 | (file (ewoc-data crt))) |
| 3236 | (setf (vc-status-fileinfo->marked file) nil) | 3239 | (setf (vc-dir-fileinfo->marked file) nil) |
| 3237 | (ewoc-invalidate vc-status crt) | 3240 | (ewoc-invalidate vc-ewoc crt) |
| 3238 | (vc-status-next-line 1))) | 3241 | (vc-dir-next-line 1))) |
| 3239 | 3242 | ||
| 3240 | (defun vc-status-unmark () | 3243 | (defun vc-dir-unmark () |
| 3241 | "Unmark the current file or all files in the region. | 3244 | "Unmark the current file or all files in the region. |
| 3242 | If the region is active, unmark all the files in the region. | 3245 | If the region is active, unmark all the files in the region. |
| 3243 | Otherwise mark the file on the current line and move to the next | 3246 | Otherwise mark the file on the current line and move to the next |
| 3244 | line." | 3247 | line." |
| 3245 | (interactive) | 3248 | (interactive) |
| 3246 | (vc-status-mark-unmark 'vc-status-unmark-file)) | 3249 | (vc-dir-mark-unmark 'vc-dir-unmark-file)) |
| 3247 | 3250 | ||
| 3248 | (defun vc-status-unmark-file-up () | 3251 | (defun vc-dir-unmark-file-up () |
| 3249 | "Move to the previous line and unmark the file." | 3252 | "Move to the previous line and unmark the file." |
| 3250 | (interactive) | 3253 | (interactive) |
| 3251 | ;; If we're on the first line, we won't move up, but we will still | 3254 | ;; If we're on the first line, we won't move up, but we will still |
| 3252 | ;; remove the mark. This seems a bit odd but it is what buffer-menu | 3255 | ;; remove the mark. This seems a bit odd but it is what buffer-menu |
| 3253 | ;; does. | 3256 | ;; does. |
| 3254 | (let* ((prev (ewoc-goto-prev vc-status 1)) | 3257 | (let* ((prev (ewoc-goto-prev vc-ewoc 1)) |
| 3255 | (file (ewoc-data prev))) | 3258 | (file (ewoc-data prev))) |
| 3256 | (setf (vc-status-fileinfo->marked file) nil) | 3259 | (setf (vc-dir-fileinfo->marked file) nil) |
| 3257 | (ewoc-invalidate vc-status prev) | 3260 | (ewoc-invalidate vc-ewoc prev) |
| 3258 | (vc-status-move-to-goal-column))) | 3261 | (vc-dir-move-to-goal-column))) |
| 3259 | 3262 | ||
| 3260 | (defun vc-status-unmark-all-files (arg) | 3263 | (defun vc-dir-unmark-all-files (arg) |
| 3261 | "Unmark all files with the same state as the current one. | 3264 | "Unmark all files with the same state as the current one. |
| 3262 | With a prefix argument mark all files. | 3265 | With a prefix argument mark all files. |
| 3263 | 3266 | ||
| @@ -3268,86 +3271,86 @@ that share the same state." | |||
| 3268 | (if arg | 3271 | (if arg |
| 3269 | (ewoc-map | 3272 | (ewoc-map |
| 3270 | (lambda (filearg) | 3273 | (lambda (filearg) |
| 3271 | (when (vc-status-fileinfo->marked filearg) | 3274 | (when (vc-dir-fileinfo->marked filearg) |
| 3272 | (setf (vc-status-fileinfo->marked filearg) nil) | 3275 | (setf (vc-dir-fileinfo->marked filearg) nil) |
| 3273 | t)) | 3276 | t)) |
| 3274 | vc-status) | 3277 | vc-ewoc) |
| 3275 | (let* ((crt (ewoc-locate vc-status)) | 3278 | (let* ((crt (ewoc-locate vc-ewoc)) |
| 3276 | (crt-state (vc-status-fileinfo->state (ewoc-data crt)))) | 3279 | (crt-state (vc-dir-fileinfo->state (ewoc-data crt)))) |
| 3277 | (ewoc-map | 3280 | (ewoc-map |
| 3278 | (lambda (filearg) | 3281 | (lambda (filearg) |
| 3279 | (when (and (vc-status-fileinfo->marked filearg) | 3282 | (when (and (vc-dir-fileinfo->marked filearg) |
| 3280 | (eq (vc-status-fileinfo->state filearg) crt-state)) | 3283 | (eq (vc-dir-fileinfo->state filearg) crt-state)) |
| 3281 | (setf (vc-status-fileinfo->marked filearg) nil) | 3284 | (setf (vc-dir-fileinfo->marked filearg) nil) |
| 3282 | t)) | 3285 | t)) |
| 3283 | vc-status)))) | 3286 | vc-ewoc)))) |
| 3284 | 3287 | ||
| 3285 | (defun vc-status-toggle-mark-file () | 3288 | (defun vc-dir-toggle-mark-file () |
| 3286 | (let* ((crt (ewoc-locate vc-status)) | 3289 | (let* ((crt (ewoc-locate vc-ewoc)) |
| 3287 | (file (ewoc-data crt))) | 3290 | (file (ewoc-data crt))) |
| 3288 | (if (vc-status-fileinfo->marked file) | 3291 | (if (vc-dir-fileinfo->marked file) |
| 3289 | (vc-status-unmark-file) | 3292 | (vc-dir-unmark-file) |
| 3290 | (vc-status-mark-file)))) | 3293 | (vc-dir-mark-file)))) |
| 3291 | 3294 | ||
| 3292 | (defun vc-status-toggle-mark () | 3295 | (defun vc-dir-toggle-mark () |
| 3293 | (interactive) | 3296 | (interactive) |
| 3294 | (vc-status-mark-unmark 'vc-status-toggle-mark-file)) | 3297 | (vc-dir-mark-unmark 'vc-dir-toggle-mark-file)) |
| 3295 | 3298 | ||
| 3296 | (defun vc-status-register () | 3299 | (defun vc-dir-register () |
| 3297 | "Register the marked files, or the current file if no marks." | 3300 | "Register the marked files, or the current file if no marks." |
| 3298 | (interactive) | 3301 | (interactive) |
| 3299 | ;; FIXME: Just pass the fileset to vc-register. | 3302 | ;; FIXME: Just pass the fileset to vc-register. |
| 3300 | (mapc 'vc-register (or (vc-status-marked-files) | 3303 | (mapc 'vc-register (or (vc-dir-marked-files) |
| 3301 | (list (vc-status-current-file))))) | 3304 | (list (vc-dir-current-file))))) |
| 3302 | 3305 | ||
| 3303 | (defun vc-status-show-fileentry (file) | 3306 | (defun vc-dir-show-fileentry (file) |
| 3304 | "Insert an entry for a specific file into the current VC status listing. | 3307 | "Insert an entry for a specific file into the current VC status listing. |
| 3305 | This is typically used if the file is up-to-date (or has been added | 3308 | This is typically used if the file is up-to-date (or has been added |
| 3306 | outside of VC) and one wants to do some operation on it." | 3309 | outside of VC) and one wants to do some operation on it." |
| 3307 | (interactive "fShow file: ") | 3310 | (interactive "fShow file: ") |
| 3308 | (vc-status-update (list (list (file-relative-name file) (vc-state file))) (current-buffer))) | 3311 | (vc-dir-update (list (list (file-relative-name file) (vc-state file))) (current-buffer))) |
| 3309 | 3312 | ||
| 3310 | (defun vc-status-find-file () | 3313 | (defun vc-dir-find-file () |
| 3311 | "Find the file on the current line." | 3314 | "Find the file on the current line." |
| 3312 | (interactive) | 3315 | (interactive) |
| 3313 | (find-file (vc-status-current-file))) | 3316 | (find-file (vc-dir-current-file))) |
| 3314 | 3317 | ||
| 3315 | (defun vc-status-find-file-other-window () | 3318 | (defun vc-dir-find-file-other-window () |
| 3316 | "Find the file on the current line, in another window." | 3319 | "Find the file on the current line, in another window." |
| 3317 | (interactive) | 3320 | (interactive) |
| 3318 | (find-file-other-window (vc-status-current-file))) | 3321 | (find-file-other-window (vc-dir-current-file))) |
| 3319 | 3322 | ||
| 3320 | (defun vc-status-current-file () | 3323 | (defun vc-dir-current-file () |
| 3321 | (let ((node (ewoc-locate vc-status))) | 3324 | (let ((node (ewoc-locate vc-ewoc))) |
| 3322 | (unless node | 3325 | (unless node |
| 3323 | (error "No file available.")) | 3326 | (error "No file available.")) |
| 3324 | (expand-file-name (vc-status-fileinfo->name (ewoc-data node))))) | 3327 | (expand-file-name (vc-dir-fileinfo->name (ewoc-data node))))) |
| 3325 | 3328 | ||
| 3326 | (defun vc-status-marked-files () | 3329 | (defun vc-dir-marked-files () |
| 3327 | "Return the list of marked files" | 3330 | "Return the list of marked files" |
| 3328 | (mapcar | 3331 | (mapcar |
| 3329 | (lambda (elem) (expand-file-name (vc-status-fileinfo->name elem))) | 3332 | (lambda (elem) (expand-file-name (vc-dir-fileinfo->name elem))) |
| 3330 | (ewoc-collect vc-status 'vc-status-fileinfo->marked))) | 3333 | (ewoc-collect vc-ewoc 'vc-dir-fileinfo->marked))) |
| 3331 | 3334 | ||
| 3332 | (defun vc-status-hide-up-to-date () | 3335 | (defun vc-dir-hide-up-to-date () |
| 3333 | "Hide up-to-date items from display." | 3336 | "Hide up-to-date items from display." |
| 3334 | (interactive) | 3337 | (interactive) |
| 3335 | (ewoc-filter | 3338 | (ewoc-filter |
| 3336 | vc-status | 3339 | vc-ewoc |
| 3337 | (lambda (crt) (not (eq (vc-status-fileinfo->state crt) 'up-to-date))))) | 3340 | (lambda (crt) (not (eq (vc-dir-fileinfo->state crt) 'up-to-date))))) |
| 3338 | 3341 | ||
| 3339 | (defun vc-default-status-fileinfo-extra (backend file) | 3342 | (defun vc-default-status-fileinfo-extra (backend file) |
| 3340 | nil) | 3343 | nil) |
| 3341 | 3344 | ||
| 3342 | (defun vc-status-mark-buffer-changed (&optional fname) | 3345 | (defun vc-dir-mark-buffer-changed (&optional fname) |
| 3343 | (let* ((file (or fname (expand-file-name buffer-file-name))) | 3346 | (let* ((file (or fname (expand-file-name buffer-file-name))) |
| 3344 | (found-vc-status-buf nil)) | 3347 | (found-vc-dir-buf nil)) |
| 3345 | (save-excursion | 3348 | (save-excursion |
| 3346 | (dolist (status-buf (buffer-list)) | 3349 | (dolist (status-buf (buffer-list)) |
| 3347 | (set-buffer status-buf) | 3350 | (set-buffer status-buf) |
| 3348 | ;; look for a vc-status buffer that might show this file. | 3351 | ;; look for a vc-dir buffer that might show this file. |
| 3349 | (when (eq major-mode 'vc-status-mode) | 3352 | (when (eq major-mode 'vc-dir-mode) |
| 3350 | (setq found-vc-status-buf t) | 3353 | (setq found-vc-dir-buf t) |
| 3351 | (let ((ddir (expand-file-name default-directory))) | 3354 | (let ((ddir (expand-file-name default-directory))) |
| 3352 | ;; This test is cvs-string-prefix-p | 3355 | ;; This test is cvs-string-prefix-p |
| 3353 | (when (eq t (compare-strings file nil (length ddir) ddir nil nil)) | 3356 | (when (eq t (compare-strings file nil (length ddir) ddir nil nil)) |
| @@ -3360,10 +3363,10 @@ outside of VC) and one wants to do some operation on it." | |||
| 3360 | (vc-call-backend backend 'status-fileinfo-extra file))) | 3363 | (vc-call-backend backend 'status-fileinfo-extra file))) |
| 3361 | (entry | 3364 | (entry |
| 3362 | (list file-short (if state state 'unregistered) extra))) | 3365 | (list file-short (if state state 'unregistered) extra))) |
| 3363 | (vc-status-update (list entry) status-buf)))))) | 3366 | (vc-dir-update (list entry) status-buf)))))) |
| 3364 | ;; We didn't find any vc-status buffers, remove the hook, it is | 3367 | ;; We didn't find any vc-dir buffers, remove the hook, it is |
| 3365 | ;; not needed. | 3368 | ;; not needed. |
| 3366 | (unless found-vc-status-buf (remove-hook 'after-save-hook 'vc-status-mark-buffer-changed))))) | 3369 | (unless found-vc-dir-buf (remove-hook 'after-save-hook 'vc-dir-mark-buffer-changed))))) |
| 3367 | 3370 | ||
| 3368 | ;; Named-configuration entry points | 3371 | ;; Named-configuration entry points |
| 3369 | 3372 | ||