# HG changeset patch # User Martin Rudalics # Date 1198056241 0 # Node ID 8ca08c950560f4b4e27af7bdf5a341c53df40a98 # Parent c2f285e949e8929f9ceb9f715d5314f127e27a79 (Man-default-man-entry): When looking for default man entry title search text preceding point. Use when instead of if. diff -r c2f285e949e8 -r 8ca08c950560 lisp/man.el --- 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