# HG changeset patch # User Eric S. Raymond # Date 1210101154 0 # Node ID f46fc59d6e9e9611137570e324cf539642fb254b # Parent cc771c0403a4523e3778c3ee0bf2569227e57dd3 More refactoring. diff -r cc771c0403a4 -r f46fc59d6e9e lisp/ChangeLog --- a/lisp/ChangeLog Tue May 06 18:27:54 2008 +0000 +++ b/lisp/ChangeLog Tue May 06 19:12:34 2008 +0000 @@ -3,6 +3,7 @@ * vc-hooks.el (vc-find-file-hook), vc-dispatcher.el (vc-resynch-window): Decouple vc-dispatcher further from vc.el. + * vc.el (vc-dir-mode): Move VC-specific context menu entries here. 2008-05-06 Wilson Snyder diff -r cc771c0403a4 -r f46fc59d6e9e lisp/vc-dispatcher.el --- a/lisp/vc-dispatcher.el Tue May 06 18:27:54 2008 +0000 +++ b/lisp/vc-dispatcher.el Tue May 06 19:12:34 2008 +0000 @@ -852,7 +852,6 @@ (defun vc-directory-resynch-file (file) "Update the entries for FILE in any VC Dired buffers that list it." - ;;FIXME This needs to be implemented so it works for vc-dir (let ((buffers (vc-dired-buffers-for-dir (file-name-directory file)))) (when buffers (mapcar (lambda (buffer) @@ -1013,42 +1012,6 @@ (define-key map [open] '(menu-item "Open file" vc-dir-find-file :help "Find the file on the current line")) - ;; FIXME: Stuff starting here should be appended by vc - ;; VC info details - (define-key map [sepvcdet] '("--")) - (define-key map [remup] - '(menu-item "Hide up-to-date" vc-dir-hide-up-to-date - :help "Hide up-to-date items from display")) - ;; FIXME: This needs a key binding. And maybe a better name - ;; ("Insert" like PCL-CVS uses does not sound that great either)... - (define-key map [ins] - '(menu-item "Show File" vc-dir-show-fileentry - :help "Show a file in the VC status listing even though it might be up to date")) - (define-key map [annotate] - '(menu-item "Annotate" vc-annotate - :help "Display the edit history of the current file using colors")) - (define-key map [diff] - '(menu-item "Compare with Base Version" vc-diff - :help "Compare file set with the base version")) - (define-key map [log] - '(menu-item "Show history" vc-print-log - :help "List the change log of the current file set in a window")) - ;; VC commands. - (define-key map [sepvccmd] '("--")) - (define-key map [update] - '(menu-item "Update to latest version" vc-update - :help "Update the current fileset's files to their tip revisions")) - (define-key map [revert] - '(menu-item "Revert to base version" vc-revert - :help "Revert working copies of the selected fileset to their repository contents.")) - (define-key map [next-action] - ;; FIXME: This really really really needs a better name! - ;; And a key binding too. - '(menu-item "Check In/Out" vc-next-action - :help "Do the next logical version control operation on the current fileset")) - (define-key map [register] - '(menu-item "Register" vc-dir-register - :help "Register file set into the version control system")) map) "Menu for VC status") @@ -1079,16 +1042,8 @@ (define-key map "\C-c\C-c" 'vc-dir-kill-dir-status-process) (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 - ;; This is used so that client modes can add mode-specific - ;; menu items to vc-dir-menu-map. - "VC Status" vc-dir-menu-map :filter vc-dir-menu-map-filter)) map) - "Keymap for VC status") + "Keymap for VC dispatcher commands") (defmacro vc-at-event (event &rest body) "Evaluate `body' wich point located at event-start of `event'. @@ -1104,7 +1059,7 @@ (defun vc-dir-menu (e) "Popup the VC status menu." (interactive "e") - (vc-at-event e (popup-menu vc-dir-menu-map e))) + (vc-at-event e (popup-menu right-menu-map e))) (defvar vc-dir-tool-bar-map (let ((map (make-sparse-keymap))) @@ -1612,6 +1567,7 @@ (setq buffer-read-only t) (use-local-map vc-dir-mode-map) (set (make-local-variable 'tool-bar-map) vc-dir-tool-bar-map) + (set (make-local-variable 'right-menu-map) vc-dir-menu-map) (set (make-local-variable 'vc-client-mode) client-object) (let ((buffer-read-only nil)) (erase-buffer) diff -r cc771c0403a4 -r f46fc59d6e9e lisp/vc.el --- a/lisp/vc.el Tue May 06 18:27:54 2008 +0000 +++ b/lisp/vc.el Tue May 06 19:12:34 2008 +0000 @@ -2134,8 +2134,51 @@ (define-key map "R" 'vc-revert) ;; u is taken by dispatcher unmark. (define-key map "A" 'vc-annotate) ;; g is taken by dispatcher referesh (define-key map "l" 'vc-print-log) ;; C-x v l - (define-key map "x" 'vc-dir-hide-up-to-date) - )))) + (define-key map "x" 'vc-dir-hide-up-to-date)) + ;; Add VC-specific context menu items + (let ((map right-menu-map)) + ;; VC info details + (define-key map [sepvcdet] '("--")) + (define-key map [remup] + '(menu-item "Hide up-to-date" vc-dir-hide-up-to-date + :help "Hide up-to-date items from display")) + ;; FIXME: This needs a key binding. And maybe a better name + ;; ("Insert" like PCL-CVS uses does not sound that great either)... + (define-key map [ins] + '(menu-item "Show File" vc-dir-show-fileentry + :help "Show a file in the VC status listing even though it might be up to date")) + (define-key map [annotate] + '(menu-item "Annotate" vc-annotate + :help "Display the edit history of the current file using colors")) + (define-key map [diff] + '(menu-item "Compare with Base Version" vc-diff + :help "Compare file set with the base version")) + (define-key map [log] + '(menu-item "Show history" vc-print-log + :help "List the change log of the current file set in a window")) + ;; VC commands. + (define-key map [sepvccmd] '("--")) + (define-key map [update] + '(menu-item "Update to latest version" vc-update + :help "Update the current fileset's files to their tip revisions")) + (define-key map [revert] + '(menu-item "Revert to base version" vc-revert + :help "Revert working copies of the selected fileset to their repository contents.")) + (define-key map [next-action] + ;; FIXME: This really really really needs a better name! + ;; And a key binding too. + '(menu-item "Check In/Out" vc-next-action + :help "Do the next logical version control operation on the current fileset")) + (define-key map [register] + '(menu-item "Register" vc-dir-register + :help "Register file set into the version control system"))) + ;; Hook up the menu. + (define-key (current-local-map) [menu-bar vc-dir-mode] + '(menu-item + ;; This is used so that back ends can add mode-specific + ;; menu items to vc-dir-menu-map. + "VC Status" vc-dir-menu-map :filter vc-dir-menu-map-filter)) + ))) ;; Named-configuration entry points