GNU bug report logs - #67688
30.0.50; ffap prepends buffers default-directory to guessed file name in case of tramp's file name syntax

Previous Next

Package: emacs;

Reported by: Gregor Zattler <grfz <at> gmx.de>

Date: Thu, 7 Dec 2023 13:47:02 UTC

Severity: normal

Found in version 30.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #20 received at 67688 <at> debbugs.gnu.org (full text, mbox):

From: Visuwesh <visuweshm <at> gmail.com>
To: Michael Albinus <michael.albinus <at> gmx.de>
Cc: grfz <at> gmx.de, 67688 <at> debbugs.gnu.org
Subject: Re: bug#67688: 30.0.50; ffap prepends buffers default-directory to
 guessed file name in case of tramp's file name syntax
Date: Tue, 12 Dec 2023 20:23:51 +0530
[Friday December 08, 2023] Michael Albinus wrote:

> Gregor Zattler via "Bug reports for GNU Emacs, the Swiss army knife of
> text editors" <bug-gnu-emacs <at> gnu.org> writes:
>
>> Dear Emacs developers,
>
> Hi Gregor,
>
>> following this recipe (in
>> some Gnu/Linux shell):
>>
>> $ cd /tmp
>> tmp$ emacs -Q -nw
>> # type /ssh:user <at> server:/home/test
>> # type M-x ffap RET
>>
>> the proposed file name in minibuffer then is:
>> /tmp/ssh:user <at> server:/home/test
>> instead of
>> /ssh:user <at> server:/home/test
>>
>> Therefore it's not possible to just hit RET in order
>> to open that file.  But that would be nice.
>
> I can reproduce the behavior for all Emacsen down to Emacs 25 (the
> oldest I have a running copy of), so I guess it didn't work ever. 

You were quite close.  That was when ffap-lax-url was set to t, previous
versions would have done the right thing I think.

> The problem is, that `ffap-guesser' returns "ssh:user <at> server:/home/test",
> which looks like a relative file name. Therefore, it is expanded to the
> default directory "/tmp/".
>
> I have no idea about ffap.el and thingatpt.el, so I fear I cannot do too
> much. Somebody else who knows these libraries might fix it.

With the default value of ffap-lax-url=t,
thing-at-point-bounds-url-at-point does not check the scheme of the url
so it ends up matching ssh:user <at> server alone.  With the nil value, ffap
correctly suggests /ssh:user <at> server:/home/test because the correct
scheme is ssh:// not ssh:.
But with ffap-lax-url=nil, you lose the ability to insert
mailto:user <at> host when the point is on user <at> host because it is not a
"well-formed" url [1] and thusly does not get picked up by
thing-at-point-url-at-point.  I hope my explanation is understandable.

I'm not sure what to do here frankly.

Hmm... looking at the region history for the defcustom, it was changed
to t by Eli for bug#25264: the user wanted the email address like
user <at> host to be matched by ffap.  I suppose we can try to see if the
point is on an email address in ffap-guesser after URL and filename
guesses, then we can turn ffap-lax-url back to nil and everyone will be
happy.

1. See thing-at-point--bounds-of-well-formed-url.




This bug report was last modified 1 year and 153 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.