* vc-arch.el (vc-arch-extra-menu-map): New var and fun.
* vc-hooks.el (vc-menu-entry): New var. (vc-mode-line-map): Use it so that this menu also uses the extra-menu. (menu-bar-tools-menu): Add the VC menu here rather than in menu-bar.el. (vc-menu-map): Declare and initialize in one step. * menu-bar.el (vc-menu-map): Don't setup any more. Instead, just create the proper spot in the menu. * vc.el: Document new VC operation `extra-menu'. * vc-hooks.el (vc-default-extra-menu, vc-menu-map-filter): New function.
This commit is contained in:
parent
7262a148b6
commit
793a22023e
5 changed files with 102 additions and 33 deletions
|
@ -1,3 +1,23 @@
|
|||
2007-09-18 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* vc-arch.el (vc-arch-extra-menu-map): New var and fun.
|
||||
|
||||
* vc-hooks.el (vc-menu-entry): New var.
|
||||
(vc-mode-line-map): Use it so that this menu also uses the extra-menu.
|
||||
(menu-bar-tools-menu): Add the VC menu here rather than in menu-bar.el.
|
||||
(vc-menu-map): Declare and initialize in one step.
|
||||
|
||||
* menu-bar.el (vc-menu-map): Don't setup any more.
|
||||
Instead, just create the proper spot in the menu.
|
||||
|
||||
2007-09-18 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* vc.el: Document new VC operation `extra-menu'.
|
||||
|
||||
* vc-hooks.el (vc-default-extra-menu, vc-menu-map-filter): New
|
||||
function.
|
||||
|
||||
2007-09-17 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* vc-git.el (vc-git-log-view-mode): Add font-lock patterns for
|
||||
|
|
|
@ -1160,11 +1160,9 @@ mail status in mode line"))
|
|||
(define-key menu-bar-tools-menu [separator-vc]
|
||||
'("--"))
|
||||
|
||||
(defvar vc-menu-map (make-sparse-keymap "Version Control"))
|
||||
(define-key menu-bar-tools-menu [pcl-cvs]
|
||||
'(menu-item "PCL-CVS" cvs-global-menu))
|
||||
(define-key menu-bar-tools-menu [vc]
|
||||
(list 'menu-item "Version Control" vc-menu-map))
|
||||
(define-key menu-bar-tools-menu [vc] nil) ;Create the place for the VC menu.
|
||||
|
||||
(define-key menu-bar-tools-menu [separator-compare]
|
||||
'("--"))
|
||||
|
|
|
@ -444,6 +444,15 @@ Return non-nil if FILE is unchanged."
|
|||
(table (vc-arch--version-completion-table root string)))
|
||||
(complete-with-action action table string pred)))))
|
||||
|
||||
(defvar vc-arch-extra-menu-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map [add-tagline]
|
||||
'(menu-item "Add tagline" vc-arch-add-tagline))
|
||||
map))
|
||||
|
||||
(defun vc-arch-extra-menu () vc-arch-extra-menu-map)
|
||||
|
||||
|
||||
;;; Less obvious implementations.
|
||||
|
||||
(defun vc-arch-find-version (file rev buffer)
|
||||
|
|
|
@ -707,6 +707,21 @@ Before doing that, check if there are any old backups and get rid of them."
|
|||
;; any VC Dired buffer to synchronize.
|
||||
(vc-dired-resynch-file file)))))
|
||||
|
||||
(defvar vc-menu-entry
|
||||
'(menu-item "Version Control" vc-menu-map
|
||||
:filter vc-menu-map-filter))
|
||||
|
||||
(when (boundp 'menu-bar-tools-menu)
|
||||
;; We do not need to worry here about the placement of this entry
|
||||
;; because menu-bar.el has already created the proper spot for us
|
||||
;; and this will simply use it.
|
||||
(define-key menu-bar-tools-menu [vc] vc-menu-entry))
|
||||
|
||||
(defconst vc-mode-line-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map [mode-line down-mouse-1] vc-menu-entry)
|
||||
map))
|
||||
|
||||
(defun vc-mode-line (file)
|
||||
"Set `vc-mode' to display type of version control for FILE.
|
||||
The value is set in the current buffer, which should be the buffer
|
||||
|
@ -880,36 +895,54 @@ Used in `find-file-not-found-functions'."
|
|||
(fset 'vc-prefix-map vc-prefix-map)
|
||||
(define-key global-map "\C-xv" 'vc-prefix-map)
|
||||
|
||||
(if (not (boundp 'vc-menu-map))
|
||||
;; Don't do the menu bindings if menu-bar.el wasn't loaded to defvar
|
||||
;; vc-menu-map.
|
||||
()
|
||||
;;(define-key vc-menu-map [show-files]
|
||||
;; '("Show Files under VC" . (vc-directory t)))
|
||||
(define-key vc-menu-map [vc-retrieve-snapshot]
|
||||
'("Retrieve Snapshot" . vc-retrieve-snapshot))
|
||||
(define-key vc-menu-map [vc-create-snapshot]
|
||||
'("Create Snapshot" . vc-create-snapshot))
|
||||
(define-key vc-menu-map [vc-directory] '("VC Directory Listing" . vc-directory))
|
||||
(define-key vc-menu-map [separator1] '("----"))
|
||||
(define-key vc-menu-map [vc-annotate] '("Annotate" . vc-annotate))
|
||||
(define-key vc-menu-map [vc-rename-file] '("Rename File" . vc-rename-file))
|
||||
(define-key vc-menu-map [vc-version-other-window]
|
||||
'("Show Other Version" . vc-version-other-window))
|
||||
(define-key vc-menu-map [vc-diff] '("Compare with Base Version" . vc-diff))
|
||||
(define-key vc-menu-map [vc-update-change-log]
|
||||
'("Update ChangeLog" . vc-update-change-log))
|
||||
(define-key vc-menu-map [vc-print-log] '("Show History" . vc-print-log))
|
||||
(define-key vc-menu-map [separator2] '("----"))
|
||||
(define-key vc-menu-map [vc-insert-header]
|
||||
'("Insert Header" . vc-insert-headers))
|
||||
(define-key vc-menu-map [undo] '("Undo Last Check-In" . vc-cancel-version))
|
||||
(define-key vc-menu-map [vc-revert-buffer]
|
||||
'("Revert to Base Version" . vc-revert-buffer))
|
||||
(define-key vc-menu-map [vc-update]
|
||||
'("Update to Latest Version" . vc-update))
|
||||
(define-key vc-menu-map [vc-next-action] '("Check In/Out" . vc-next-action))
|
||||
(define-key vc-menu-map [vc-register] '("Register" . vc-register)))
|
||||
(defvar vc-menu-map
|
||||
(let ((map (make-sparse-keymap "Version Control")))
|
||||
;;(define-key map [show-files]
|
||||
;; '("Show Files under VC" . (vc-directory t)))
|
||||
(define-key map [vc-retrieve-snapshot]
|
||||
'("Retrieve Snapshot" . vc-retrieve-snapshot))
|
||||
(define-key map [vc-create-snapshot]
|
||||
'("Create Snapshot" . vc-create-snapshot))
|
||||
(define-key map [vc-directory] '("VC Directory Listing" . vc-directory))
|
||||
(define-key map [separator1] '("----"))
|
||||
(define-key map [vc-annotate] '("Annotate" . vc-annotate))
|
||||
(define-key map [vc-rename-file] '("Rename File" . vc-rename-file))
|
||||
(define-key map [vc-version-other-window]
|
||||
'("Show Other Version" . vc-version-other-window))
|
||||
(define-key map [vc-diff] '("Compare with Base Version" . vc-diff))
|
||||
(define-key map [vc-update-change-log]
|
||||
'("Update ChangeLog" . vc-update-change-log))
|
||||
(define-key map [vc-print-log] '("Show History" . vc-print-log))
|
||||
(define-key map [separator2] '("----"))
|
||||
(define-key map [vc-insert-header]
|
||||
'("Insert Header" . vc-insert-headers))
|
||||
(define-key map [undo] '("Undo Last Check-In" . vc-cancel-version))
|
||||
(define-key map [vc-revert-buffer]
|
||||
'("Revert to Base Version" . vc-revert-buffer))
|
||||
(define-key map [vc-update]
|
||||
'("Update to Latest Version" . vc-update))
|
||||
(define-key map [vc-next-action] '("Check In/Out" . vc-next-action))
|
||||
(define-key map [vc-register] '("Register" . vc-register))
|
||||
map))
|
||||
|
||||
(defalias 'vc-menu-map vc-menu-map)
|
||||
|
||||
(defun vc-menu-map-filter (orig-binding)
|
||||
(if (and (symbolp orig-binding) (fboundp orig-binding))
|
||||
(setq orig-binding (indirect-function orig-binding)))
|
||||
(let ((ext-binding
|
||||
(if vc-mode (vc-call-backend (vc-backend buffer-file-name)
|
||||
'extra-menu))))
|
||||
;; Give the VC backend a chance to add menu entries
|
||||
;; specific for that backend.
|
||||
(if (null ext-binding)
|
||||
orig-binding
|
||||
(append orig-binding
|
||||
'((ext-menu-separator "---"))
|
||||
ext-binding))))
|
||||
|
||||
(defun vc-default-extra-menu (backend)
|
||||
nil)
|
||||
|
||||
;; These are not correct and it's not currently clear how doing it
|
||||
;; better (with more complicated expressions) might slow things down
|
||||
|
|
|
@ -463,6 +463,15 @@
|
|||
;;
|
||||
;; Operation called in current buffer when opening a non-existing file.
|
||||
;; By default, this asks the user if she wants to check out the file.
|
||||
;;
|
||||
;; - extra-menu ()
|
||||
;;
|
||||
;; Return a menu keymap, the items in the keymap will appear at the
|
||||
;; end of the Version Control menu. The goal is to allow backends
|
||||
;; to specify extra menu items that appear in the VC menu. This way
|
||||
;; you can provide menu entries for functionality that is specific
|
||||
;; to your backend and which does not map to any of the VC generic
|
||||
;; concepts.
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue