From 97275f80a9c17f3fb6c8cd126fda6038d0ab6cb3 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Thu, 15 May 2008 13:50:55 +0000 Subject: [PATCH] Move vc-dir menu hook back to vc-dispatcher. --- lisp/ChangeLog | 2 ++ lisp/vc-dispatcher.el | 20 +++++++++++++++++--- lisp/vc.el | 20 +++++--------------- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 71f5f8797f..15445ce113 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -3,6 +3,8 @@ * vc-dispatcher.el: Fix an incorrect buffer name and remove an unneeded defalias. + * vc.el, vc-dispatcher.el (vc-dir-menu-map-filter): Moved. + 2008-05-15 Glenn Morris * vc-hooks.el (vc-directory-resynch-file): Fix declaration. diff --git a/lisp/vc-dispatcher.el b/lisp/vc-dispatcher.el index 876ea020d4..f04dc4dc7c 100644 --- a/lisp/vc-dispatcher.el +++ b/lisp/vc-dispatcher.el @@ -656,14 +656,16 @@ See `run-hooks'." file-to-info file-to-state file-to-extra - updater)) + updater + extra-menu)) (:conc-name vc-client-object->)) name headers file-to-info file-to-state file-to-extra - updater) + updater + extra-menu) (defvar vc-ewoc nil) (defvar vc-dir-process-buffer nil @@ -750,6 +752,19 @@ See `run-hooks'." map) "Menu for dispatcher status") +;; This is used to that vlient modes can add mode-specific menu +;; items to vc-dir-menu-map. +(defun vc-dir-menu-map-filter (orig-binding) + (when (and (symbolp orig-binding) (fboundp orig-binding)) + (setq orig-binding (indirect-function orig-binding))) + (let ((ext-binding + (funcall (vc-client-object->extra-menu vc-client-mode)))) + (if (null ext-binding) + orig-binding + (append orig-binding + '("----") + ext-binding)))) + (defvar vc-dir-mode-map (let ((map (make-keymap))) (suppress-keymap map) @@ -781,7 +796,6 @@ See `run-hooks'." (define-key map [(down-mouse-3)] 'vc-dir-menu) (define-key map [(mouse-2)] 'vc-dir-toggle-mark) - ;; FIXME: Calls back into vc.el ;; Hook up the menu. (define-key map [menu-bar vc-dir-mode] '(menu-item diff --git a/lisp/vc.el b/lisp/vc.el index b332f0e844..0f522ffb9c 100644 --- a/lisp/vc.el +++ b/lisp/vc.el @@ -1836,20 +1836,6 @@ specific headers." (defun vc-default-extra-status-menu (backend) nil) -;; This is used to that VC backends could add backend specific menu -;; items to vc-dir-menu-map. -(defun vc-dir-menu-map-filter (orig-binding) - (when (and (symbolp orig-binding) (fboundp orig-binding)) - (setq orig-binding (indirect-function orig-binding))) - (let ((ext-binding - (vc-call-backend (vc-responsible-backend default-directory) - 'extra-status-menu))) - (if (null ext-binding) - orig-binding - (append orig-binding - '("----") - ext-binding)))) - (defun vc-dir-refresh-files (files default-state) "Refresh some files in the VC status buffer." (let ((backend (vc-responsible-backend default-directory)) @@ -1978,6 +1964,9 @@ outside of VC) and one wants to do some operation on it." (let ((backend (vc-responsible-backend dir))) (vc-dir-headers backend dir))) +(defun vc-dir-extra-menu () + (vc-call-backend (vc-responsible-backend default-directory) 'extra-status-menu)) + (defun vc-make-backend-object (file-or-dir) "Create the backend capability object needed by vc-dispatcher." (vc-create-client-object @@ -1987,7 +1976,8 @@ outside of VC) and one wants to do some operation on it." #'vc-generic-status-printer #'vc-generic-state #'vc-generic-status-fileinfo-extra - #'vc-dir-refresh)) + #'vc-dir-refresh + #'vc-dir-extra-menu)) ;;;###autoload (defun vc-dir (dir) -- 2.20.1