changeset 74532:2acf2de66673

(Man-xref-button-action): New function. If the `Man-target-string' button property is a function, assume it accepts a position argument. (Man-abstract-xref-man-page): Use it. (Man-default-man-entry): New optional arg POS.
author Chong Yidong <cyd@stupidchicken.com>
date Sat, 09 Dec 2006 17:42:28 +0000
parents 76a88b32996a
children 07e8643936d5
files lisp/man.el
diffstat 1 files changed, 15 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/man.el	Sat Dec 09 17:41:44 2006 +0000
+++ b/lisp/man.el	Sat Dec 09 17:42:28 2006 +0000
@@ -428,13 +428,17 @@
   'follow-link t
   'help-echo "mouse-2, RET: display this man page"
   'func nil
-  'action (lambda (button) 
-	    (funcall 
-	     (button-get button 'func)
-	     (let ((func (button-get button 'Man-target-string)))
-	       (if func
-		   (if (functionp func) (funcall func) func)
-		 (button-label button))))))
+  'action #'Man-xref-button-action)
+
+(defun Man-xref-button-action (button) 
+  (let ((target (button-get button 'Man-target-string)))
+    (funcall 
+     (button-get button 'func)
+     (cond ((null target)
+	    (button-label button))
+	   ((functionp target)
+	    (funcall target (button-start button)))
+	   (t target)))))
 
 (define-button-type 'Man-xref-man-page 
   :supertype 'Man-abstract-xref-man-page
@@ -636,11 +640,12 @@
 ;; ======================================================================
 ;; default man entry: get word under point
 
-(defsubst Man-default-man-entry ()
-  "Make a guess at a default manual entry.
-This guess is based on the text surrounding the cursor."
+(defsubst Man-default-man-entry (&optional pos)
+  "Make a guess at a default manual entry based on the text at POS.
+If POS is nil, the current point is used."
   (let (word)
     (save-excursion
+      (if pos (goto-char pos))
       ;; Default man entry title is any word the cursor is on, or if
       ;; cursor not on a word, then nearest preceding word.
       (skip-chars-backward "-a-zA-Z0-9._+:")