Subject: bug#66668: closed (Re: bug#66668: [PATCH] Teach ffap to look for paths under the root of project)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 30 Oct 2023 01:01:02 +0000

Your bug report

#66668: [PATCH] Teach ffap to look for paths under the root of project

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].

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

Subject: Re: bug#66668: [PATCH] Teach ffap to look for paths under the root of project
From: Dmitry Gutov <[email-masked]>
To: Eli Zaretskii <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Mon, 30 Oct 2023 02:59:28 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 30.1

On 29/10/2023 14:56, Eli Zaretskii wrote:
>> Date: Sun, 29 Oct 2023 14:43:32 +0200
>> Cc: [email-masked]
>> From: Dmitry Gutov <[email-masked]>
>>
>> On 29/10/2023 14:23, Eli Zaretskii wrote:
>>>> From: Spencer Baugh<[email-masked]>
>>>> Cc:[email-masked],[email-masked]
>>>> Date: Wed, 25 Oct 2023 11:08:12 -0400
>>>>
>>>> Eli Zaretskii<[email-masked]>  writes:
>>>>>> Cc: Dmitry Gutov<[email-masked]>
>>>>>> From: Spencer Baugh<[email-masked]>
>>>>>> Date: Sat, 21 Oct 2023 14:37:45 -0400
>>>>>>
>>>>>> Subject: [PATCH] Teach ffap to look for paths under the root of project
>>>>> Please don't use "path" when you mean "file name".  The GNU Coding
>>>>> Standards frown on such uses of "path".
>>>> Oops, fixed.
>>>>
>>>> (Also fixed a byte-compiler warning from not declaring project-root)
>>> Dmitry, any comments?
>>
>> If the way it works is useful for people (probably will be), I'm good
>> with it.
>>
>> Ideally, it possibly would check whether the file belongs to the
>> project-files fileset, but that's going to be slower, and thus probably
>> not worth the marginal improvement.
> 
> Then I guess we should install this?

Sure, installed.

Thanks, and closing!

Subject: [PATCH] Teach ffap to look for paths under the root of project
From: Spencer Baugh <[email-masked]>
To: [email-masked]
Cc: Dmitry Gutov <[email-masked]>
Date: Sat, 21 Oct 2023 14:37:45 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Tags: patch

This is a nice little quality of life feature.

In GNU Emacs 29.1.50 (build 12, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.15.12, Xaw scroll bars) of 2023-10-19 built on
 igm-qws-u22796a
Repository revision: 9163e634e296435aa7a78bc6b77b4ee90666d2ac
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Rocky Linux 8.8 (Green Obsidian)

Configured using:
 'configure --config-cache --with-x-toolkit=lucid
 --with-gif=ifavailable'

>From 521116073821c5259130c415640265cb25c03ef3 Mon Sep 17 00:00:00 2001
From: Spencer Baugh <[email-masked]>
Date: Sat, 21 Oct 2023 14:35:53 -0400
Subject: [PATCH] Teach ffap to look for paths under the root of project

Now file-name-at-point-functions, which runs
ffap-guess-file-name-at-point, will pick up on a file name at point if
that file name is a path starting from the root of the project.

For example, in test/lisp/progmodes/eglot-tests.el there is the string
lisp/progmodes/eglot.el; if you put point on that and C-x C-f,
lisp/progmodes/eglot.el under the root of the Emacs repo will now be
part of future history.

* lisp/ffap.el (ffap-alist): Add entry for ffap-in-project.
(ffap-in-project): Add.
---
 lisp/ffap.el | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lisp/ffap.el b/lisp/ffap.el
index 2c99f88d505..fe0aa16c22f 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -734,6 +734,7 @@ ffap-locate-file
 (defvar ffap-alist
   '(
     ("" . ffap-completable)		; completion, slow on some systems
+    ("" . ffap-in-project)		; maybe in the root of the project
     ("\\.info\\'" . ffap-info)		; gzip.info
     ("\\`info/" . ffap-info-2)		; info/emacs
     ("\\`[-[:lower:]]+\\'" . ffap-info-3) ; (emacs)Top [only in the parentheses]
@@ -797,6 +798,10 @@ ffap-completable
 	 (cmp (file-name-completion (file-name-nondirectory name) dir)))
     (and cmp (concat dir cmp))))
 
+(defun ffap-in-project (name)
+  (when-let (project (project-current))
+    (file-name-concat (project-root project) name)))
+
 (defun ffap-home (name) (ffap-locate-file name t '("~")))
 
 (defun ffap-info (name)
-- 
2.39.3