bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: M-x man could better guess neighboring word


From: martin rudalics
Subject: Re: M-x man could better guess neighboring word
Date: Sun, 16 Dec 2007 11:11:17 +0100
User-agent: Mozilla Thunderbird 1.0 (Windows/20041206)

Principles: always offer at least two default choices, one
forwards/beneath, one backwards/beneath the cursor. The topmost of
which should be the closest to the cursor. Skip past punctuation at
the ends of sentences too...

Does the attached patch obey these principles?  I'm not quite sure
which characters shall consitute punctuation.
*** man.el.~1.175.~     Sat Dec  8 10:07:02 2007
--- man.el      Sun Dec 16 11:06:08 2007
***************
*** 647,672 ****
  (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)
      (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))))
        ;; If looking at something like *strcat(... , remove the '*'
!       (if (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
--- 647,685 ----
  (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 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, nearest preceding or next word 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 '*'
!       (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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]