From e664497b5f023561ed2bfe12f4335cff999fb9ad Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Sun, 7 Oct 2001 12:41:03 +0000 Subject: [PATCH] (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. --- lisp/ChangeLog | 9 +++++++++ lisp/woman.el | 33 +++++++++++++++++---------------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4078c064306..59e6451fd04 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,14 @@ 2001-10-07 Miles Bader + * 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). diff --git a/lisp/woman.el b/lisp/woman.el index c837e5306da..e4440be4690 100644 --- a/lisp/woman.el +++ b/lisp/woman.el @@ -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'.") + +;;; 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: @@ -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: -- 2.39.2