* vc-hooks.el (vc-default-mode-line-string): Add a mouse face,
authorDan Nicolaescu <dann@ics.uci.edu>
Wed, 11 Jul 2007 18:37:38 +0000 (18:37 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Wed, 11 Jul 2007 18:37:38 +0000 (18:37 +0000)
mouse binding and a tooltip.
* menu-bar.el (vc-menu-map): New defalias.

lisp/ChangeLog
lisp/menu-bar.el
lisp/vc-hooks.el

index 07bdcb3..2bf592f 100644 (file)
@@ -1,3 +1,12 @@
+2007-07-11  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * vc-hooks.el (vc-default-mode-line-string): Add a mouse face,
+       mouse binding and a tooltip.
+
+2007-07-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * menu-bar.el (vc-menu-map): New defalias.
+
 2007-07-10  Jim Meyering  <jim@meyering.net>  (tiny change)
 
        * emacs-lisp/copyright.el (copyright-current-gpl-version): Set to 3.
index 7ad91df..5fae638 100644 (file)
@@ -1161,6 +1161,7 @@ mail status in mode line"))
   '("--"))
 
 (defvar vc-menu-map (make-sparse-keymap "Version Control"))
+(defalias 'vc-menu-map vc-menu-map)
 (define-key menu-bar-tools-menu [pcl-cvs]
   '(menu-item "PCL-CVS" cvs-global-menu))
 (define-key menu-bar-tools-menu [vc]
index 89d2714..6ab95b3 100644 (file)
@@ -742,17 +742,27 @@ Format:
 This function assumes that the file is registered."
   (setq backend (symbol-name backend))
   (let ((state   (vc-state file))
+       (state-echo nil)
        (rev     (vc-workfile-version file)))
-    (cond ((or (eq state 'up-to-date)
-              (eq state 'needs-patch))
-          (concat backend "-" rev))
-          ((stringp state)
-          (concat backend ":" state ":" rev))
-          (t
-           ;; Not just for the 'edited state, but also a fallback
-           ;; for all other states.  Think about different symbols
-           ;; for 'needs-patch and 'needs-merge.
-           (concat backend ":" rev)))))
+    (propertize
+     (cond ((or (eq state 'up-to-date)
+               (eq state 'needs-patch))
+           (setq state-echo "Up to date file")
+           (concat backend "-" rev))
+          ((stringp state)
+           (setq state-echo (concat "File locked by" state))
+           (concat backend ":" state ":" rev))
+          (t
+           ;; Not just for the 'edited state, but also a fallback
+           ;; for all other states.  Think about different symbols
+           ;; for 'needs-patch and 'needs-merge.
+           (setq state-echo "Edited file")
+           (concat backend ":" rev)))
+     'mouse-face 'mode-line-highlight
+     'local-map (let ((map (make-sparse-keymap)))
+                 (define-key map [mode-line down-mouse-1] 'vc-menu-map) map)
+     'help-echo (concat state-echo " under the " backend 
+                       " version control system\nmouse-1: VC Menu"))))
 
 (defun vc-follow-link ()
   "If current buffer visits a symbolic link, visit the real file.