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

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

Re: man mode mouse over SEE ALSO items


From: Kevin Rodgers
Subject: Re: man mode mouse over SEE ALSO items
Date: Fri, 23 Apr 2004 12:47:19 -0600

Kevin Rodgers writes:
> > Here's a patch.  Note that it does not handle hyphenated references.
> 
> That patch seems to have been corrupted, so I'm resending it.
> 
> > 2004-04-20  Kevin Rodgers  <address@hidden>
> > 
> >     * man.el (Man-mode-reference-map): New variable and prefix command.
> >     (Man-mouse-follow-manual-reference): New command.
> >     (Man-build-references-alist): Add mouse-face, keymap, help-echo,
> >     and Man-manual-reference text properties to each reference.

I now have hyphenated references working as well.  Since RMS indicated
that my previous patch will be accepted, I'm sending an add-on patch
(instead of a replacement).


2004-04-22  Kevin Rodgers  <address@hidden>

        * man.el (Man-build-references-alist): Extend text properties
          over hyphenated references; avoid consing up a text property
          list for each reference; use match-string instead of
          Man-match-substring.


*** emacs-21.3/lisp//man.el~    Tue Apr 20 10:27:15 2004
--- emacs-21.3/lisp//man.el     Thu Apr 22 09:04:05 2004
***************
*** 903,909 ****
              (end (progn
                     (Man-next-section 1)
                     (point)))
!             hyphenated
              (runningpoint -1))
          (save-restriction
            (narrow-to-region start end)
--- 903,911 ----
              (end (progn
                     (Man-next-section 1)
                     (point)))
!               hyphenated-ref            ; string
!               hyphenated-ref-beg        ; buffer position
!               hyphenated-ref-end        ; buffer position
              (runningpoint -1))
          (save-restriction
            (narrow-to-region start end)
***************
*** 912,936 ****
            (while (and (not (eobp)) (/= (point) runningpoint))
              (setq runningpoint (point))
              (if (re-search-forward Man-hyphenated-reference-regexp end t)
!                 (let* ((word (Man-match-substring 0))
!                        (len (1- (length word)))
                         (inhibit-read-only t))
!                   (add-text-properties (match-beginning 0) (match-end 0)
!                                          `(mouse-face highlight
!                                          keymap Man-mode-reference-map
!                                          help-echo "mouse-2: \
! follow this reference"
!                                          Man-manual-reference ,word))
!                   (if hyphenated
!                       (setq word (concat hyphenated word)
!                             hyphenated nil
!                             ;; Update len, in case a reference spans
!                             ;; more than two lines (paranoia).
!                             len (1- (length word))))
!                   (if (= (aref word len) ?-)
!                       (setq hyphenated (substring word 0 len)))
!                   (if (string-match Man-reference-regexp word)
!                       (aput 'Man-refpages-alist word))))
              (skip-chars-forward " \t\n,"))))))
    (setq Man-refpages-alist (nreverse Man-refpages-alist)))
  
--- 914,946 ----
            (while (and (not (eobp)) (/= (point) runningpoint))
              (setq runningpoint (point))
              (if (re-search-forward Man-hyphenated-reference-regexp end t)
!                 (let* ((ref (match-string 0))
!                        (ref-len (length ref))
!                        (ref-beg (match-beginning 0))
!                        (ref-end (match-end 0))
!                        (ref-props '(mouse-face highlight
!                                     keymap Man-mode-reference-map
!                                     help-echo "mouse-2: \
! follow this reference"))
                         (inhibit-read-only t))
!                   (if hyphenated-ref
!                       (progn
!                         (setq ref (concat hyphenated-ref ref)
!                               ref-len (length ref))
!                         (add-text-properties hyphenated-ref-end ref-beg
!                                              ref-props)
!                         (put-text-property hyphenated-ref-beg ref-beg
!                                            'Man-manual-reference ref)))
!                   (add-text-properties ref-beg ref-end ref-props)
!                   (put-text-property ref-beg ref-end
!                                      'Man-manual-reference ref)
!                   (if (= (aref ref (1- ref-len)) ?-)
!                       (setq hyphenated-ref-beg ref-beg
!                             hyphenated-ref-end ref-end
!                             hyphenated-ref (substring ref 0 (1- ref-len)))
!                     (setq hyphenated-ref nil))
!                   (if (string-match Man-reference-regexp ref)
!                       (aput 'Man-refpages-alist ref))))
              (skip-chars-forward " \t\n,"))))))
    (setq Man-refpages-alist (nreverse Man-refpages-alist)))
  

-- 
Kevin Rodgers





reply via email to

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