Subject: bug#23899: closed (Re: bug#23899: 24.5; mouse-on-link-p breaks for positions)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 07 Jul 2016 16:17:02 +0000

Your bug report

#23899: 24.5; mouse-on-link-p breaks for positions

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
23899: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23899
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#23899: 24.5; mouse-on-link-p breaks for positions
From: Eli Zaretskii <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Thu, 07 Jul 2016 19:16:20 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: [email-masked]
> Date: Tue, 05 Jul 2016 13:32:49 -0400
> 
> The documentation for mouse-on-link-p says:
>     POS must be a buffer position in the current buffer or a mouse
>     event location in the selected window (see `event-start').
> However, doing M-: (mouse-on-link-p (point)) fails with a type
> error. And, in general, passing a buffer position to mouse-on-link-p
> fails with a type error.
> 
> This appears to be due to this section of mouse-on-link-p:
>     (let ((area (posn-area pos)))
>       (when area
>         (key-binding (vector area 'follow-link) nil t pos)))
> 
> I would recommend wrapping this in a (and (consp pos) ...) to avoid
> running posn-area on buffer positions. The rest of the function works
> fine, this part was added later.

I don't think any code changes are required.  This is just a
documentation problem: what the doc string fails to tell is that the
function needs POS as a mouse-click position, which is a list.  If you
want to invoke the function at point, you can get the argument by
calling posn-at-point.

I installed a change to that effect on the emacs-25 branch, and I'm
marking this bug "done".

Thanks.

Subject: 24.5; mouse-on-link-p breaks for positions
From: [email-masked]
To: [email-masked]
Date: Tue, 05 Jul 2016 13:32:49 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

The documentation for mouse-on-link-p says:
    POS must be a buffer position in the current buffer or a mouse
    event location in the selected window (see `event-start').
However, doing M-: (mouse-on-link-p (point)) fails with a type
error. And, in general, passing a buffer position to mouse-on-link-p
fails with a type error.

This appears to be due to this section of mouse-on-link-p:
    (let ((area (posn-area pos)))
      (when area
        (key-binding (vector area 'follow-link) nil t pos)))

I would recommend wrapping this in a (and (consp pos) ...) to avoid
running posn-area on buffer positions. The rest of the function works
fine, this part was added later.