GNU bug report logs - #52167
29.0.50; [ada-mode] Preserve default value of project-read-file-name-function

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs, ada-mode; Reported by: Kévin Le Gouguec <kevin.legouguec@HIDDEN>; Keywords: patch; dated Sun, 28 Nov 2021 20:40:01 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.
Added tag(s) patch. Request was from Lars Ingebrigtsen <larsi@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 28 Nov 2021 20:39:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 28 15:39:46 2021
Received: from localhost ([127.0.0.1]:36424 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mrQxe-0003de-BM
	for submit <at> debbugs.gnu.org; Sun, 28 Nov 2021 15:39:46 -0500
Received: from lists.gnu.org ([209.51.188.17]:46982)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <kevin.legouguec@HIDDEN>) id 1mrQxc-0003dW-0t
 for submit <at> debbugs.gnu.org; Sun, 28 Nov 2021 15:39:45 -0500
Received: from eggs.gnu.org ([209.51.188.92]:33294)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <kevin.legouguec@HIDDEN>)
 id 1mrQxb-00072R-R2
 for bug-gnu-emacs@HIDDEN; Sun, 28 Nov 2021 15:39:43 -0500
Received: from [2a00:1450:4864:20::335] (port=43771
 helo=mail-wm1-x335.google.com)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <kevin.legouguec@HIDDEN>)
 id 1mrQxZ-00031C-8V
 for bug-gnu-emacs@HIDDEN; Sun, 28 Nov 2021 15:39:43 -0500
Received: by mail-wm1-x335.google.com with SMTP id
 o19-20020a1c7513000000b0033a93202467so10952922wmc.2
 for <bug-gnu-emacs@HIDDEN>; Sun, 28 Nov 2021 12:39:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=from:to:subject:date:message-id:mime-version;
 bh=XnKiUrtOA58/3HT67ij/NS8Ee/KOhyTZduCVRWMbOKI=;
 b=EFatTmRPVK6q70c+LtXjsE37toKHGrsc+N4l8mCJy2gzPYvxYNatc+h8IMV/wic8Z4
 gcVJC+Os8VhWQXM0Lj+D73eA2HxkJzYz0VJjGI880oWAzvsmvE/LGs8yuaFOW752ZMPK
 uO5VjJScvu7EG97jRCkSMha8dYl/E/jE3GXGxNToPMZr4tccfznXAz25KxXtJAGiW283
 vpOBXZ5RWjAtaHIjsCPa1EiQvFle7G6hi6kxntstvD6sPwLHb83GriRXHTA+a/V4aEjL
 Zw5VyH1CXm7b3f/qCz0ilBR2yzeQsGiX/iYOLsk4tjF1+px2ObaV4GSUSawHgvtcWzw8
 z3gA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:from:to:subject:date:message-id:mime-version;
 bh=XnKiUrtOA58/3HT67ij/NS8Ee/KOhyTZduCVRWMbOKI=;
 b=ZE0TVXxllSy7E63jD+FlKmHt/gXWHbLPZdrxsW+5VWYMrcsZC0mf1eLKLAub0pkV8z
 f4Ey/NRVmfDbe4iLA2NNndQcLyotDrxyRv5q6sSmigYWYXC2JPp+BS3pSCyqeShbTx2z
 sc1exM+U4I8br1MZf6mYhM4/VR/I0cN1MH3zCNdoTFVSoJ0qnBClxfoM1YvB8pinm/RM
 NTp0KP/sxpyO7pO69C7RC3yP9qAqqadMZXMCElcuYk4+ltaAadgvt2f/oyoas/c1RUxQ
 6F45ReV6PgpiepXB98HYSakPJbaE108Gq6SqlOteWJazHgV48xZNLkK41/k/I3rEeOy6
 4Qqw==
X-Gm-Message-State: AOAM531+j1mtfXTQupH7tcAl9WxrkuYgz4nLfgEc9MbECTkX6HlutpkH
 Qh4/7zUc+tAcCuVegDUjTtZRFpoEcxw=
X-Google-Smtp-Source: ABdhPJy/TL5L2idmQlUJxZRzdqwntmTcrJa5mJyLBMagxS6Yhy3VFOyFXNkOiTx2hsIZH+SFx765QA==
X-Received: by 2002:a05:600c:3788:: with SMTP id
 o8mr31051067wmr.82.1638131979473; 
 Sun, 28 Nov 2021 12:39:39 -0800 (PST)
Received: from hirondell ([109.190.253.16])
 by smtp.gmail.com with ESMTPSA id h18sm13029257wre.46.2021.11.28.12.39.37
 for <bug-gnu-emacs@HIDDEN>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 28 Nov 2021 12:39:38 -0800 (PST)
From: =?utf-8?Q?K=C3=A9vin_Le_Gouguec?= <kevin.legouguec@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 29.0.50; [ada-mode] Preserve default value of
 project-read-file-name-function
Date: Sun, 28 Nov 2021 21:39:22 +0100
Message-ID: <871r30ypz9.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::335
 (failed)
Received-SPF: pass client-ip=2a00:1450:4864:20::335;
 envelope-from=kevin.legouguec@HIDDEN; helo=mail-wm1-x335.google.com
X-Spam_score_int: -12
X-Spam_score: -1.3
X-Spam_bar: -
X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)

--=-=-=
Content-Type: text/plain

Package: emacs, ada-mode
X-Debbugs-CC: ada-mode-users@HIDDEN

Hello,

ada-mode depends on uniquify-files, which ends with this:

> ;;;###autoload
> (setq-default project-read-file-name-function #'uniq-file-read)

This unconditionally changes the prompt for project-find-file at
startup.  I think this is a bit of an overreach: users who install
ada-mode are not necessarily looking for a new project-find-file prompt
for *all* their projects, including those unrelated to Ada.

I'm attaching

- a patch for uniquify-files to remove the above snippet, and add a bit
  of commentary explaining how to opt in to uniq-file-read,

- a patch for ada-mode to explicitly let-bind
  project-read-file-name-function before calling project-find-file,

- two more patches for ada-mode, which I didn't squash with the first
  one because I'm not 100% sure they are desirable: one to make
  ada-find-file support future Emacs versions; another to use
  ada-find-file in ada-mode-menu.

Let me know if this needs more work; thanks for your time.



--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0001-Preserve-default-value-of-project-read-file-name-fun.patch

From 38a1d0ae71b13b7676ea0ede0a605ff6f23aceed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= <kevin.legouguec@HIDDEN>
Date: Sat, 27 Nov 2021 23:52:50 +0100
Subject: [PATCH] Preserve default value of project-read-file-name-function

This package can be pulled as a dependency (e.g. of ada-mode),
unbeknownst to the user who might not expect nor desire this setting.

* uniquify-files.el: Do not unconditionally change
project-read-file-name-function; expand commentary to let users know
how to opt in.
---
 uniquify-files.el | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/uniquify-files.el b/uniquify-files.el
index d9430539fe..a314d001fc 100644
--- a/uniquify-files.el
+++ b/uniquify-files.el
@@ -33,6 +33,11 @@
 ;; We accomplish this by preprocessing the list of absolute file names
 ;; to be in that style, in an alist with the original absolute file
 ;; names, and do completion on that alist.
+;;
+;; To use it with `project-find-file', customize
+;; `project-read-file-name-function':
+;;
+;; (setq project-read-file-name-function 'uniq-file-read)
 
 (require 'cl-lib)
 (require 'files)
@@ -317,8 +322,5 @@ done on UNIQIFIED-NAME, PRED is called with ABS-NAME."
                  prompt table predicate hist default)))
     (cdr (assoc found alist))))
 
-;;;###autoload
-(setq-default project-read-file-name-function #'uniq-file-read)
-
 (provide 'uniquify-files)
 ;;; uniquify-files.el ends here
-- 
2.34.0


--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0001-Explicitly-bind-project-read-file-name-function.patch

From 5ee3ab88fb9c439165a23fad03468c62e2f3ce4c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= <kevin.legouguec@HIDDEN>
Date: Sun, 28 Nov 2021 00:19:20 +0100
Subject: [PATCH 1/3] Explicitly bind project-read-file-name-function

* ada-mode.el (ada-find-file): let-bind
project-read-file-name-function.
* NEWS: announce the change.
---
 NEWS        | 13 +++++++++++++
 ada-mode.el |  9 +++++----
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/NEWS b/NEWS
index fe3e518f11..ff64186a13 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,19 @@ Please send ada-mode bug reports to bug-gnu-emacs@HIDDEN, with
 'ada-mode' in the subject. If possible, use M-x report-emacs-bug.
 
 
+* Ada Mode x.x.x
+xx Xxx xxxx
+
+** Adapt to change in uniquify-files.
+   uniquify-files no longer sets project-read-file-name-function by
+   default.  ada-find-file (C-c C-t) will still use this package's
+   completion style, but project-find-file (C-x p f) will not by
+   default.
+
+   Set project-read-file-name-function to uniq-file-read if you would
+   like to keep using uniquify-files's completion style outside of
+   ada-find-file.
+
 * Ada Mode 7.2.0
 21 Nov 2021
 
diff --git a/ada-mode.el b/ada-mode.el
index a65c7b47da..9997f35c99 100644
--- a/ada-mode.el
+++ b/ada-mode.el
@@ -1462,12 +1462,13 @@ For `wisi-indent-calculate-functions'.
   "Find a file in the current project.
 Prompts with completion, defaults to filename at point."
   (interactive)
-  ;; In emacs 27, we can just call 'project-find-file;
-  ;; project-read-file-name-function handles the uniquify-files alist
-  ;; completion table. In emacs 26, we must do that ourselves.
+  ;; In emacs 27, we can just set project-read-file-name-function to
+  ;; tell 'project-find-file to use the uniquify-files alist
+  ;; completion table.  In emacs 26, we must do that ourselves.
   (cl-ecase emacs-major-version
     (27
-     (project-find-file))
+     (let ((project-read-file-name-function #'uniq-file-read))
+       (project-find-file)))
 
     (26
      (let* ((def (thing-at-point 'filename))
-- 
2.34.0


--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0002-ada-mode.el-ada-mode-menu-Prefer-ada-find-file.patch

From a221c350e7697c6000c1b0030d964501426a1b2b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= <kevin.legouguec@HIDDEN>
Date: Sun, 28 Nov 2021 00:46:48 +0100
Subject: [PATCH 2/3] * ada-mode.el (ada-mode-menu): Prefer ada-find-file

---
 ada-mode.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ada-mode.el b/ada-mode.el
index 9997f35c99..fa2c4a4f7a 100644
--- a/ada-mode.el
+++ b/ada-mode.el
@@ -246,7 +246,7 @@ nil, only the file name."
      )
     ("Navigate"
      ["Other file"                    ada-find-other-file          t]
-     ["Find file in project"          project-find-file            t]
+     ["Find file in project"          ada-find-file                t]
      ["Goto declaration/body"         wisi-goto-spec/body          t]
      ["Goto next statement keyword"   forward-sexp   t]
      ["Goto prev statement keyword"   backward-sexp   t]
-- 
2.34.0


--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0003-ada-mode.el-ada-find-file-Support-future-Emacs-versi.patch

From b0bd0e796333f80a21c5d73d2cde97d7cf18b095 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= <kevin.legouguec@HIDDEN>
Date: Sun, 28 Nov 2021 00:48:35 +0100
Subject: [PATCH 3/3] * ada-mode.el (ada-find-file): Support future Emacs
 versions

---
 ada-mode.el | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/ada-mode.el b/ada-mode.el
index fa2c4a4f7a..980fcb081e 100644
--- a/ada-mode.el
+++ b/ada-mode.el
@@ -1465,23 +1465,20 @@ Prompts with completion, defaults to filename at point."
   ;; In emacs 27, we can just set project-read-file-name-function to
   ;; tell 'project-find-file to use the uniquify-files alist
   ;; completion table.  In emacs 26, we must do that ourselves.
-  (cl-ecase emacs-major-version
-    (27
-     (let ((project-read-file-name-function #'uniq-file-read))
-       (project-find-file)))
-
-    (26
-     (let* ((def (thing-at-point 'filename))
-	    (project (project-current))
-	    (all-files (project-files project nil))
-	    (alist (uniq-file-uniquify all-files))
-	    (table (apply-partially #'uniq-file-completion-table alist))
-            (file (project--completing-read-strict
-                   "Find file" table nil nil def)))
-       (if (string= file "")
-           (user-error "You didn't specify the file")
-	 (find-file (cdr (assoc file alist))))))
-    ))
+  (require 'project)
+  (if (boundp 'project-read-file-name-function)
+      (let ((project-read-file-name-function #'uniq-file-read))
+        (project-find-file))
+    (let* ((def (thing-at-point 'filename))
+	   (project (project-current))
+	   (all-files (project-files project nil))
+	   (alist (uniq-file-uniquify all-files))
+	   (table (apply-partially #'uniq-file-completion-table alist))
+           (file (project--completing-read-strict
+                  "Find file" table nil nil def)))
+      (if (string= file "")
+          (user-error "You didn't specify the file")
+	(find-file (cdr (assoc file alist)))))))
 
 ;;;; compatibility with previous ada-mode versions
 
-- 
2.34.0


--=-=-=
Content-Type: text/plain


In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0)
 of 2021-11-26 built on hirondell
Repository revision: 11860f89a593a8cfe7efb94e86370bbbe4318fba
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Debian GNU/Linux 11 (bullseye)

Configured using:
 'configure --with-xwidgets --with-cairo --with-gconf --with-xinput2'

Configured features:
ACL CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES
NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

--=-=-=--




Acknowledgement sent to Kévin Le Gouguec <kevin.legouguec@HIDDEN>:
New bug report received and forwarded. Copy sent to ada-mode-users@HIDDEN, bug-gnu-emacs@HIDDEN, stephen_leake@HIDDEN. Full text available.
Report forwarded to ada-mode-users@HIDDEN, bug-gnu-emacs@HIDDEN, stephen_leake@HIDDEN:
bug#52167; Package emacs, ada-mode. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 29 Nov 2021 15:30:02 UTC

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