diff options
| -rw-r--r-- | lisp/ChangeLog | 2 | ||||
| -rw-r--r-- | lisp/vc-dispatcher.el | 20 | ||||
| -rw-r--r-- | lisp/vc.el | 20 |
3 files changed, 24 insertions, 18 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 71f5f8797f1..15445ce113b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -3,6 +3,8 @@ | |||
| 3 | * vc-dispatcher.el: Fix an incorrect buffer name and remove an | 3 | * vc-dispatcher.el: Fix an incorrect buffer name and remove an |
| 4 | unneeded defalias. | 4 | unneeded defalias. |
| 5 | 5 | ||
| 6 | * vc.el, vc-dispatcher.el (vc-dir-menu-map-filter): Moved. | ||
| 7 | |||
| 6 | 2008-05-15 Glenn Morris <rgm@gnu.org> | 8 | 2008-05-15 Glenn Morris <rgm@gnu.org> |
| 7 | 9 | ||
| 8 | * vc-hooks.el (vc-directory-resynch-file): Fix declaration. | 10 | * vc-hooks.el (vc-directory-resynch-file): Fix declaration. |
diff --git a/lisp/vc-dispatcher.el b/lisp/vc-dispatcher.el index 876ea020d4f..f04dc4dc7cd 100644 --- a/lisp/vc-dispatcher.el +++ b/lisp/vc-dispatcher.el | |||
| @@ -656,14 +656,16 @@ See `run-hooks'." | |||
| 656 | file-to-info | 656 | file-to-info |
| 657 | file-to-state | 657 | file-to-state |
| 658 | file-to-extra | 658 | file-to-extra |
| 659 | updater)) | 659 | updater |
| 660 | extra-menu)) | ||
| 660 | (:conc-name vc-client-object->)) | 661 | (:conc-name vc-client-object->)) |
| 661 | name | 662 | name |
| 662 | headers | 663 | headers |
| 663 | file-to-info | 664 | file-to-info |
| 664 | file-to-state | 665 | file-to-state |
| 665 | file-to-extra | 666 | file-to-extra |
| 666 | updater) | 667 | updater |
| 668 | extra-menu) | ||
| 667 | 669 | ||
| 668 | (defvar vc-ewoc nil) | 670 | (defvar vc-ewoc nil) |
| 669 | (defvar vc-dir-process-buffer nil | 671 | (defvar vc-dir-process-buffer nil |
| @@ -750,6 +752,19 @@ See `run-hooks'." | |||
| 750 | map) | 752 | map) |
| 751 | "Menu for dispatcher status") | 753 | "Menu for dispatcher status") |
| 752 | 754 | ||
| 755 | ;; This is used to that vlient modes can add mode-specific menu | ||
| 756 | ;; items to vc-dir-menu-map. | ||
| 757 | (defun vc-dir-menu-map-filter (orig-binding) | ||
| 758 | (when (and (symbolp orig-binding) (fboundp orig-binding)) | ||
| 759 | (setq orig-binding (indirect-function orig-binding))) | ||
| 760 | (let ((ext-binding | ||
| 761 | (funcall (vc-client-object->extra-menu vc-client-mode)))) | ||
| 762 | (if (null ext-binding) | ||
| 763 | orig-binding | ||
| 764 | (append orig-binding | ||
| 765 | '("----") | ||
| 766 | ext-binding)))) | ||
| 767 | |||
| 753 | (defvar vc-dir-mode-map | 768 | (defvar vc-dir-mode-map |
| 754 | (let ((map (make-keymap))) | 769 | (let ((map (make-keymap))) |
| 755 | (suppress-keymap map) | 770 | (suppress-keymap map) |
| @@ -781,7 +796,6 @@ See `run-hooks'." | |||
| 781 | (define-key map [(down-mouse-3)] 'vc-dir-menu) | 796 | (define-key map [(down-mouse-3)] 'vc-dir-menu) |
| 782 | (define-key map [(mouse-2)] 'vc-dir-toggle-mark) | 797 | (define-key map [(mouse-2)] 'vc-dir-toggle-mark) |
| 783 | 798 | ||
| 784 | ;; FIXME: Calls back into vc.el | ||
| 785 | ;; Hook up the menu. | 799 | ;; Hook up the menu. |
| 786 | (define-key map [menu-bar vc-dir-mode] | 800 | (define-key map [menu-bar vc-dir-mode] |
| 787 | '(menu-item | 801 | '(menu-item |
diff --git a/lisp/vc.el b/lisp/vc.el index b332f0e8446..0f522ffb9c4 100644 --- a/lisp/vc.el +++ b/lisp/vc.el | |||
| @@ -1836,20 +1836,6 @@ specific headers." | |||
| 1836 | (defun vc-default-extra-status-menu (backend) | 1836 | (defun vc-default-extra-status-menu (backend) |
| 1837 | nil) | 1837 | nil) |
| 1838 | 1838 | ||
| 1839 | ;; This is used to that VC backends could add backend specific menu | ||
| 1840 | ;; items to vc-dir-menu-map. | ||
| 1841 | (defun vc-dir-menu-map-filter (orig-binding) | ||
| 1842 | (when (and (symbolp orig-binding) (fboundp orig-binding)) | ||
| 1843 | (setq orig-binding (indirect-function orig-binding))) | ||
| 1844 | (let ((ext-binding | ||
| 1845 | (vc-call-backend (vc-responsible-backend default-directory) | ||
| 1846 | 'extra-status-menu))) | ||
| 1847 | (if (null ext-binding) | ||
| 1848 | orig-binding | ||
| 1849 | (append orig-binding | ||
| 1850 | '("----") | ||
| 1851 | ext-binding)))) | ||
| 1852 | |||
| 1853 | (defun vc-dir-refresh-files (files default-state) | 1839 | (defun vc-dir-refresh-files (files default-state) |
| 1854 | "Refresh some files in the VC status buffer." | 1840 | "Refresh some files in the VC status buffer." |
| 1855 | (let ((backend (vc-responsible-backend default-directory)) | 1841 | (let ((backend (vc-responsible-backend default-directory)) |
| @@ -1978,6 +1964,9 @@ outside of VC) and one wants to do some operation on it." | |||
| 1978 | (let ((backend (vc-responsible-backend dir))) | 1964 | (let ((backend (vc-responsible-backend dir))) |
| 1979 | (vc-dir-headers backend dir))) | 1965 | (vc-dir-headers backend dir))) |
| 1980 | 1966 | ||
| 1967 | (defun vc-dir-extra-menu () | ||
| 1968 | (vc-call-backend (vc-responsible-backend default-directory) 'extra-status-menu)) | ||
| 1969 | |||
| 1981 | (defun vc-make-backend-object (file-or-dir) | 1970 | (defun vc-make-backend-object (file-or-dir) |
| 1982 | "Create the backend capability object needed by vc-dispatcher." | 1971 | "Create the backend capability object needed by vc-dispatcher." |
| 1983 | (vc-create-client-object | 1972 | (vc-create-client-object |
| @@ -1987,7 +1976,8 @@ outside of VC) and one wants to do some operation on it." | |||
| 1987 | #'vc-generic-status-printer | 1976 | #'vc-generic-status-printer |
| 1988 | #'vc-generic-state | 1977 | #'vc-generic-state |
| 1989 | #'vc-generic-status-fileinfo-extra | 1978 | #'vc-generic-status-fileinfo-extra |
| 1990 | #'vc-dir-refresh)) | 1979 | #'vc-dir-refresh |
| 1980 | #'vc-dir-extra-menu)) | ||
| 1991 | 1981 | ||
| 1992 | ;;;###autoload | 1982 | ;;;###autoload |
| 1993 | (defun vc-dir (dir) | 1983 | (defun vc-dir (dir) |