changeset 87335:8ca08c950560

(Man-default-man-entry): When looking for default man entry title search text preceding point. Use when instead of if.
author Martin Rudalics <rudalics@gmx.at>
date Wed, 19 Dec 2007 09:24:01 +0000
parents c2f285e949e8
children 9088a29785d1
files lisp/man.el
diffstat 1 files changed, 29 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/man.el	Wed Dec 19 02:56:45 2007 +0000
+++ b/lisp/man.el	Wed Dec 19 09:24:01 2007 +0000
@@ -647,26 +647,39 @@
 (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)
+  (let (word start original-pos distance)
     (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._+:")
-      (let ((start (point)))
-	(skip-chars-forward "-a-zA-Z0-9._+:")
-	;; If there is a continuation at the end of line, check the
-	;; following line too, eg:
-	;;     see this-
-	;;     command-here(1)
-	(setq word (buffer-substring-no-properties start (point)))
-	(if (looking-at "[ \t\r\n]+\\([-a-zA-Z0-9._+:]+\\)([0-9])")
-	    (setq word (concat word (match-string 1)))))
-      (if (string-match "[._]+$" word)
-	  (setq word (substring word 0 (match-beginning 0))))
+      ;; cursor not on a word, nearest preceding or next word-like
+      ;; object on this line.
+      (if (not (zerop (skip-chars-backward "-a-zA-Z0-9._+:")))
+	  (setq start (point))
+	(setq original-pos (point))
+	(setq distance (abs (skip-chars-backward ",; \t")))
+	(if (not (zerop (skip-chars-backward "-a-zA-Z0-9._+:")))
+	    (progn
+	      (setq start (point))
+	      (goto-char original-pos)
+	      (if (and (< (skip-chars-forward ",; \t") distance)
+		       (looking-at "[-a-zA-Z0-9._+:]"))
+		  (setq start (point))
+		(goto-char start)))
+	  (skip-chars-forward ",; \t")
+	  (setq start (point))))
+      (skip-chars-forward "-a-zA-Z0-9._+:")
+      (setq word (buffer-substring-no-properties start (point)))
+      ;; If there is a continuation at the end of line, check the
+      ;; following line too, eg:
+      ;;     see this-
+      ;;     command-here(1)
+      (when (looking-at "[ \t\r\n]+\\([-a-zA-Z0-9._+:]+\\)([0-9])")
+	(setq word (concat word (match-string-no-properties 1))))
+      (when (string-match "[._]+$" word)
+	(setq word (substring word 0 (match-beginning 0))))
       ;; If looking at something like *strcat(... , remove the '*'
-      (if (string-match "^*" word)
-	  (setq word (substring word 1)))
+      (when (string-match "^*" word)
+	(setq word (substring word 1)))
       ;; If looking at something like ioctl(2) or brc(1M), include the
       ;; section number in the returned value.  Remove text properties.
       (concat word