1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-19 18:13:55 +00:00

(Man-default-man-entry): When looking for default man

entry title search text preceding point.  Use when instead of if.
This commit is contained in:
Martin Rudalics 2007-12-19 09:24:01 +00:00
parent 5b57e6c628
commit ccf721a625

View File

@ -647,26 +647,39 @@ a new value."
(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