From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?K=C3=A9vin?= Le Gouguec Newsgroups: gmane.emacs.bugs Subject: bug#52167: 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@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="20270"; mail-complaints-to="usenet@ciao.gmane.io" Cc: ada-mode-users@nongnu.org To: 52167@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Nov 28 21:48:15 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mrR5q-00052x-A0 for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 28 Nov 2021 21:48:14 +0100 Original-Received: from localhost ([::1]:48918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mrR5o-0001Yt-HL for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 28 Nov 2021 15:48:12 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:33316) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mrQxu-000777-69; Sun, 28 Nov 2021 15:40:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:53112) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mrQxt-00031y-Tk; Sun, 28 Nov 2021 15:40:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mrQxt-0003eI-Nl; Sun, 28 Nov 2021 15:40:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?K=C3=A9vin?= Le Gouguec Original-Sender: "Debbugs-submit" Resent-CC: ada-mode-users@nongnu.org, bug-gnu-emacs@gnu.org, stephen_leake@stephe-leake.org Resent-Date: Sun, 28 Nov 2021 20:40:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 52167 X-GNU-PR-Package: emacs, ada-mode X-Debbugs-Original-To: bug-gnu-emacs@gnu.org X-Debbugs-Original-Xcc: ada-mode-users@nongnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.163813198713995 (code B ref -1); Sun, 28 Nov 2021 20:40:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 28 Nov 2021 20:39:47 +0000 Original-Received: from localhost ([127.0.0.1]:36424 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mrQxe-0003de-BM for submit@debbugs.gnu.org; Sun, 28 Nov 2021 15:39:46 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:46982) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mrQxc-0003dW-0t for submit@debbugs.gnu.org; Sun, 28 Nov 2021 15:39:45 -0500 Original-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 ) id 1mrQxb-00072R-R2 for bug-gnu-emacs@gnu.org; Sun, 28 Nov 2021 15:39:43 -0500 Original-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 ) id 1mrQxZ-00031C-8V for bug-gnu-emacs@gnu.org; Sun, 28 Nov 2021 15:39:43 -0500 Original-Received: by mail-wm1-x335.google.com with SMTP id o19-20020a1c7513000000b0033a93202467so10952922wmc.2 for ; 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) Original-Received: from hirondell ([109.190.253.16]) by smtp.gmail.com with ESMTPSA id h18sm13029257wre.46.2021.11.28.12.39.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Nov 2021 12:39:38 -0800 (PST) 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@gmail.com; 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-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:220978 Archived-At: --=-=-= Content-Type: text/plain Package: emacs, ada-mode X-Debbugs-CC: ada-mode-users@nongnu.org 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?= 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?= 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@gnu.org, 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?= 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?= 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 --=-=-=--