summaryrefslogtreecommitdiff
path: root/lisp/woman.el
diff options
context:
space:
mode:
authorMiles Bader <miles@gnu.org>2001-10-07 12:41:03 +0000
committerMiles Bader <miles@gnu.org>2001-10-07 12:41:03 +0000
commite664497b5f023561ed2bfe12f4335cff999fb9ad (patch)
treef0b48d0a66dab5d755999d67e27320cab133cb1f /lisp/woman.el
parentd876f455d1080aac92467b7328c71a7e08adccd8 (diff)
downloademacs-e664497b5f023561ed2bfe12f4335cff999fb9ad.tar.gz
(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 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.
Diffstat (limited to 'lisp/woman.el')
-rw-r--r--lisp/woman.el33
1 files changed, 17 insertions, 16 deletions
diff --git a/lisp/woman.el b/lisp/woman.el
index c837e5306da..e4440be4690 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -1033,6 +1033,13 @@ Should include ?e, ?o (page even/odd) and either ?n (nroff) or ?t (troff).
Default is '(?n ?e ?o). Set via `woman-emulation'.")
+;;; Button types:
+
+(define-button-type 'woman-xref
+ 'action (lambda (button) (woman (button-label button)))
+ 'help-echo "RET, mouse-2: display this man page")
+
+
;;; Specialized utility functions:
;;; Fast deletion without saving on the kill ring (cf. simple.el):
@@ -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)))))
;;; Buffer handling: