]> git.eshelyaron.com Git - emacs.git/commitdiff
(woman-mode-map): Copy button-buffer-map instead of
authorMiles Bader <miles@gnu.org>
Sun, 7 Oct 2001 12:41:03 +0000 (12:41 +0000)
committerMiles Bader <miles@gnu.org>
Sun, 7 Oct 2001 12:41:03 +0000 (12:41 +0000)
making a new keymap.  Don't bind mouse-2.  Bind M-mouse-2 to
`woman-follow-word' instead of `woman-mouse-2'.
(woman-follow-word): Renamed from `woman-mouse-2'.
Follow unconditionally, since this function is now only
bound to M-mouse-2.  Use accessor functions.
(WoMan-highlight-references): Use `make-text-button'.
(woman-xref): New button type.

lisp/ChangeLog
lisp/woman.el

index 4078c0643067b294424b442365f61ef060b89018..59e6451fd04ed9fe2abaa463a8c98b2d9b58964e 100644 (file)
@@ -1,5 +1,14 @@
 2001-10-07  Miles Bader  <miles@gnu.org>
 
+       * woman.el (woman-mode-map): Copy button-buffer-map instead of
+       making a new keymap.  Don't bind mouse-2.  Bind M-mouse-2 to
+       `woman-follow-word' instead of `woman-mouse-2'.
+       (woman-follow-word): Renamed from `woman-mouse-2'.
+       Follow current unconditionally, since this function is now only
+       bound to M-mouse-2.  Use accessor functions.
+       (WoMan-highlight-references): Use `make-text-button'.
+       (woman-xref): New button type.
+
        * loadup.el ("faces"): Move load before loading "loaddefs.el".
        ("button"): New load, just before "help" (which uses it).
 
index c837e5306da9e801473560e24ea3f7a88adfad61..e4440be46903498b0f5641643a7f1ea773c8742c 100644 (file)
@@ -1032,6 +1032,13 @@ The ordinal numbers start from 0.")
 Should include ?e, ?o (page even/odd) and either ?n (nroff) or ?t (troff).
 Default is '(?n ?e ?o).  Set via `woman-emulation'.")
 
+\f
+;;; Button types:
+
+(define-button-type 'woman-xref
+  'action (lambda (button) (woman (button-label button)))
+  'help-echo "RET, mouse-2: display this man page")
+
 \f
 ;;; Specialized utility functions:
 
@@ -1700,8 +1707,10 @@ Leave point at end of new text.  Return length of inserted text."
 
 (if woman-mode-map
     ()
-  ;; Set up the keymap, mostly inherited from Man-mode-map:
-  (setq woman-mode-map (make-sparse-keymap))
+  ;; Set up the keymap, mostly inherited from Man-mode-map.  Normally
+  ;; button-buffer-map is used as a parent keymap, but we can't have two
+  ;; parents, so we just copy it.
+  (setq woman-mode-map (copy-keymap button-buffer-map))
   (set-keymap-parent woman-mode-map Man-mode-map)
   ;; Above two lines were
   ;; (setq woman-mode-map (cons 'keymap Man-mode-map))
@@ -1709,19 +1718,14 @@ Leave point at end of new text.  Return length of inserted text."
   (define-key woman-mode-map "w" 'woman)
   (define-key woman-mode-map "\en" 'WoMan-next-manpage)
   (define-key woman-mode-map "\ep" 'WoMan-previous-manpage)
-  (define-key woman-mode-map [mouse-2] 'woman-mouse-2)
-  (define-key woman-mode-map [M-mouse-2] 'woman-mouse-2))
+  (define-key woman-mode-map [M-mouse-2] 'woman-follow-word))
 
-(defun woman-mouse-2 (event)
+(defun woman-follow-word (event)
   "Run WoMan with word under mouse as topic.
-Require it to be mouse-highlighted unless Meta key used.
 Argument EVENT is the invoking mouse event."
   (interactive "e")                    ; mouse event
-  (let ((pos (cadr (cadr event))))     ; extract buffer position
-    (when (or (eq (car event) 'M-mouse-2)
-             (get-text-property pos 'mouse-face))
-      (goto-char pos)
-      (woman (current-word t)))))
+  (goto-char (posn-point (event-start event)))
+  (woman (current-word t)))
 
 ;; WoMan menu bar and pop-up menu:
 (easy-menu-define                      ; (SYMBOL MAPS DOC MENU)
@@ -1944,11 +1948,8 @@ Otherwise use Man and record start of formatting time."
       (while (re-search-forward Man-reference-regexp end t)
        ;; Highlight reference when mouse is over it.
        ;; (NB: WoMan does not hyphenate!)
-       ;; [See (elisp)Clickable Text]
-       (add-text-properties (match-beginning 1) (match-end 1)
-                            '(mouse-face highlight
-                              help-echo "mouse-2: display this man page"))
-       ))))
+       (make-text-button (match-beginning 1) (match-end 1)
+                         'type 'woman-xref)))))
 
 \f
 ;;; Buffer handling: