Mercurial > emacs
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