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:
parent
5b57e6c628
commit
ccf721a625
45
lisp/man.el
45
lisp/man.el
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user