GNU bug report logs - #78596
30.1; recentf-open ought to use a completion table and category

Previous Next

Package: emacs;

Reported by: dino chiesa <dpchiesa <at> hotmail.com>

Date: Mon, 26 May 2025 20:04:02 UTC

Severity: normal

Found in version 30.1

To reply to this bug, email your comments to 78596 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Mon, 26 May 2025 20:04:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to dino chiesa <dpchiesa <at> hotmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 26 May 2025 20:04:02 GMT) Full text and rfc822 format available.

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

From: dino chiesa <dpchiesa <at> hotmail.com>
To: "bug-gnu-emacs <at> gnu.org" <bug-gnu-emacs <at> gnu.org>
Subject: 30.1; recentf-open ought to use a completion table and category
Date: Mon, 26 May 2025 19:57:39 +0000
This isn't a bug report, more of an enhancement request.

Summary
I would like recentf-open to use "Programmed Completion" via 
a completion function. (see 21.6.7 Programmed Completion)  
That function ought to return metadata with a category that 
is specific to recentf.

Background
I've been configuring icomplete-vertical-mode for various things.  I
learned that by default, when there is no completion table, completion
in the minibuffer uses `completion-all-sorted-completions' which is
defined in minibuffer.el; by default it uses a function called
`minibuffer--sort-by-length-alpha', which sorts candidates first by
length, then alphabetically. The result is an aesthetically pleasing
pyramid of choices shown vertically in the minibuffer, but it is sort of 
non-intuitive for things like "open one of the files I've recently visited".

This default sorting applies to buffer names, filenames (find-file),
command names (M-x), and various other things. 

I learned also that it is possible to override that default sorting, via 
`completion-category-overrides`.  To make this work, I must add an
item to that list with a symbol denoting a category, and then make
sure the use of completing-read uses (a) a completion _function_, not 
just a list of candidates; and (b) that category name in the metadata
returned by the completion function.

But not all uses of `completing-read' employ a completion
function. Without that, I think overriding the sort is unwieldy. recentf-open 
is one of those cases that does not currently use a completion function.

So I propose to modify recentf-open to use a completion function:

< (defun recentf-open (file)
<   "Prompt for FILE in `recentf-list' and visit it.
< Enable `recentf-mode' if it isn't already."
<   (interactive
<    (list
<     (progn (unless recentf-mode (recentf-mode 1))
<            (completing-read (format-prompt "Open recent file" nil)
<                             (recentf--programmed-completion recentf-list)
<                             nil t))))
---
> (defun recentf-open (file)
>   "Prompt for FILE in `recentf-list' and visit it.
> Enable `recentf-mode' if it isn't already."
>   (interactive
>    (list
>     (progn (unless recentf-mode (recentf-mode 1))
>            (completing-read (format-prompt "Open recent file" nil)
>                             recentf-list nil t))))
>

And the completion function, I think, can be like this.

  (defun recentf--programmed-completion (candidates)
    "Returns a function to be used as the completions parameter in
`completing-read' for `recentf-open'. Main purpose is to set metadata,
specifically the category, which will allow sorting, completion styles, etc."
    (let ((candidates candidates))
      (lambda (string pred action)
        (if (eq action 'metadata)
            `(metadata (category . recentf))
          (complete-with-action action candidates string pred)))))

If that is done, then users of `recentf-open` who also use `icomplete-vertical-mode`
can do something as simple as the following to disable the default "by length then
by alpha" sorting for recentf-open:

   (add-to-list 'completion-category-overrides
                 `(recentf
                   (styles . (substring))
                   (cycle-sort-function . ,#'identity)))

I believe this should have no impact on existing users of `recentf-open'. 

====================================================================

In GNU Emacs 30.1 (build 2, x86_64-w64-mingw32) of 2025-02-23 built on
 AVALON
Windowing system distributor 'Microsoft Corp.', version 10.0.26100
System Description: Microsoft Windows 10 Home (v10.0.2009.26100.4061)

Configured using:
 'configure --with-modules --without-dbus --with-native-compilation=aot
 --without-compress-install --with-tree-sitter CFLAGS=-O2
 prefix=/g/rel/install/emacs-30.1'

Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB

(NATIVE_COMP present but libgccjit not available)

Important settings:
  value of $LANG: ENU
  locale-coding-system: cp1252

Major mode: ELisp/l

Minor modes in effect:
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  default-text-scale-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  company-box-mode: t
  company-mode: t
  indent-bars-mode: t
  display-line-numbers-mode: t
  auto-revert-mode: t
  recentf-mode: t
  flycheck-mode: t
  marginalia-mode: t
  icomplete-vertical-mode: t
  icomplete-mode: t
  override-global-mode: t
  global-hl-line-mode: t
  hl-line-mode: t
  apheleia-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
~/elisp/json-reformat hides c:/users/dpchi/.emacs.d/elpa/json-reformat-20220905.2342/json-reformat
~/elisp/protobuf-mode hides c:/users/dpchi/.emacs.d/elpa/protobuf-mode-20240823.1417/protobuf-mode
~/elisp/rego-mode hides c:/users/dpchi/.emacs.d/elpa/rego-mode-20201102.1420/rego-mode
~/elisp/wgrep hides c:/users/dpchi/.emacs.d/elpa/wgrep-20230203.1214/wgrep
c:/users/dpchi/.emacs.d/elpa/transient-20250520.1040/transient hides c:/emacs/share/emacs/30.1/lisp/transient
c:/users/dpchi/.emacs.d/elpa/verilog-mode-2025.1.1.100165202/verilog-mode hides c:/emacs/share/emacs/30.1/lisp/progmodes/verilog-mode
c:/users/dpchi/.emacs.d/elpa/idlwave-6.5.1/idlwave hides c:/emacs/share/emacs/30.1/lisp/progmodes/idlwave
c:/users/dpchi/.emacs.d/elpa/idlwave-6.5.1/idlw-toolbar hides c:/emacs/share/emacs/30.1/lisp/progmodes/idlw-toolbar
c:/users/dpchi/.emacs.d/elpa/idlwave-6.5.1/idlw-shell hides c:/emacs/share/emacs/30.1/lisp/progmodes/idlw-shell
c:/users/dpchi/.emacs.d/elpa/idlwave-6.5.1/idlw-help hides c:/emacs/share/emacs/30.1/lisp/progmodes/idlw-help
c:/users/dpchi/.emacs.d/elpa/idlwave-6.5.1/idlw-complete-structtag hides c:/emacs/share/emacs/30.1/lisp/progmodes/idlw-complete-structtag
c:/users/dpchi/.emacs.d/elpa/flymake-1.4.1/flymake hides c:/emacs/share/emacs/30.1/lisp/progmodes/flymake
c:/users/dpchi/.emacs.d/elpa/eglot-1.18/eglot hides c:/emacs/share/emacs/30.1/lisp/progmodes/eglot
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox hides c:/emacs/share/emacs/30.1/lisp/org/ox
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-texinfo hides c:/emacs/share/emacs/30.1/lisp/org/ox-texinfo
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-publish hides c:/emacs/share/emacs/30.1/lisp/org/ox-publish
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-org hides c:/emacs/share/emacs/30.1/lisp/org/ox-org
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-odt hides c:/emacs/share/emacs/30.1/lisp/org/ox-odt
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-md hides c:/emacs/share/emacs/30.1/lisp/org/ox-md
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-man hides c:/emacs/share/emacs/30.1/lisp/org/ox-man
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-latex hides c:/emacs/share/emacs/30.1/lisp/org/ox-latex
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-koma-letter hides c:/emacs/share/emacs/30.1/lisp/org/ox-koma-letter
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-icalendar hides c:/emacs/share/emacs/30.1/lisp/org/ox-icalendar
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-html hides c:/emacs/share/emacs/30.1/lisp/org/ox-html
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-beamer hides c:/emacs/share/emacs/30.1/lisp/org/ox-beamer
c:/users/dpchi/.emacs.d/elpa/org-20210929/ox-ascii hides c:/emacs/share/emacs/30.1/lisp/org/ox-ascii
c:/users/dpchi/.emacs.d/elpa/org-20210929/org hides c:/emacs/share/emacs/30.1/lisp/org/org
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-version hides c:/emacs/share/emacs/30.1/lisp/org/org-version
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-timer hides c:/emacs/share/emacs/30.1/lisp/org/org-timer
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-tempo hides c:/emacs/share/emacs/30.1/lisp/org/org-tempo
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-table hides c:/emacs/share/emacs/30.1/lisp/org/org-table
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-src hides c:/emacs/share/emacs/30.1/lisp/org/org-src
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-refile hides c:/emacs/share/emacs/30.1/lisp/org/org-refile
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-protocol hides c:/emacs/share/emacs/30.1/lisp/org/org-protocol
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-plot hides c:/emacs/share/emacs/30.1/lisp/org/org-plot
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-pcomplete hides c:/emacs/share/emacs/30.1/lisp/org/org-pcomplete
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-num hides c:/emacs/share/emacs/30.1/lisp/org/org-num
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-mouse hides c:/emacs/share/emacs/30.1/lisp/org/org-mouse
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-mobile hides c:/emacs/share/emacs/30.1/lisp/org/org-mobile
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-macs hides c:/emacs/share/emacs/30.1/lisp/org/org-macs
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-macro hides c:/emacs/share/emacs/30.1/lisp/org/org-macro
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-loaddefs hides c:/emacs/share/emacs/30.1/lisp/org/org-loaddefs
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-list hides c:/emacs/share/emacs/30.1/lisp/org/org-list
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-lint hides c:/emacs/share/emacs/30.1/lisp/org/org-lint
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-keys hides c:/emacs/share/emacs/30.1/lisp/org/org-keys
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-inlinetask hides c:/emacs/share/emacs/30.1/lisp/org/org-inlinetask
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-indent hides c:/emacs/share/emacs/30.1/lisp/org/org-indent
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-id hides c:/emacs/share/emacs/30.1/lisp/org/org-id
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-habit hides c:/emacs/share/emacs/30.1/lisp/org/org-habit
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-goto hides c:/emacs/share/emacs/30.1/lisp/org/org-goto
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-footnote hides c:/emacs/share/emacs/30.1/lisp/org/org-footnote
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-feed hides c:/emacs/share/emacs/30.1/lisp/org/org-feed
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-faces hides c:/emacs/share/emacs/30.1/lisp/org/org-faces
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-entities hides c:/emacs/share/emacs/30.1/lisp/org/org-entities
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-element hides c:/emacs/share/emacs/30.1/lisp/org/org-element
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-duration hides c:/emacs/share/emacs/30.1/lisp/org/org-duration
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-datetree hides c:/emacs/share/emacs/30.1/lisp/org/org-datetree
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-ctags hides c:/emacs/share/emacs/30.1/lisp/org/org-ctags
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-crypt hides c:/emacs/share/emacs/30.1/lisp/org/org-crypt
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-compat hides c:/emacs/share/emacs/30.1/lisp/org/org-compat
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-colview hides c:/emacs/share/emacs/30.1/lisp/org/org-colview
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-clock hides c:/emacs/share/emacs/30.1/lisp/org/org-clock
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-capture hides c:/emacs/share/emacs/30.1/lisp/org/org-capture
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-attach hides c:/emacs/share/emacs/30.1/lisp/org/org-attach
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-attach-git hides c:/emacs/share/emacs/30.1/lisp/org/org-attach-git
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-archive hides c:/emacs/share/emacs/30.1/lisp/org/org-archive
c:/users/dpchi/.emacs.d/elpa/org-20210929/org-agenda hides c:/emacs/share/emacs/30.1/lisp/org/org-agenda
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol hides c:/emacs/share/emacs/30.1/lisp/org/ol
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-w3m hides c:/emacs/share/emacs/30.1/lisp/org/ol-w3m
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-rmail hides c:/emacs/share/emacs/30.1/lisp/org/ol-rmail
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-mhe hides c:/emacs/share/emacs/30.1/lisp/org/ol-mhe
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-irc hides c:/emacs/share/emacs/30.1/lisp/org/ol-irc
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-info hides c:/emacs/share/emacs/30.1/lisp/org/ol-info
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-gnus hides c:/emacs/share/emacs/30.1/lisp/org/ol-gnus
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-eww hides c:/emacs/share/emacs/30.1/lisp/org/ol-eww
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-eshell hides c:/emacs/share/emacs/30.1/lisp/org/ol-eshell
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-doi hides c:/emacs/share/emacs/30.1/lisp/org/ol-doi
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-docview hides c:/emacs/share/emacs/30.1/lisp/org/ol-docview
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-bibtex hides c:/emacs/share/emacs/30.1/lisp/org/ol-bibtex
c:/users/dpchi/.emacs.d/elpa/org-20210929/ol-bbdb hides c:/emacs/share/emacs/30.1/lisp/org/ol-bbdb
c:/users/dpchi/.emacs.d/elpa/org-20210929/oc hides c:/emacs/share/emacs/30.1/lisp/org/oc
c:/users/dpchi/.emacs.d/elpa/org-20210929/oc-natbib hides c:/emacs/share/emacs/30.1/lisp/org/oc-natbib
c:/users/dpchi/.emacs.d/elpa/org-20210929/oc-csl hides c:/emacs/share/emacs/30.1/lisp/org/oc-csl
c:/users/dpchi/.emacs.d/elpa/org-20210929/oc-biblatex hides c:/emacs/share/emacs/30.1/lisp/org/oc-biblatex
c:/users/dpchi/.emacs.d/elpa/org-20210929/oc-basic hides c:/emacs/share/emacs/30.1/lisp/org/oc-basic
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob hides c:/emacs/share/emacs/30.1/lisp/org/ob
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-tangle hides c:/emacs/share/emacs/30.1/lisp/org/ob-tangle
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-table hides c:/emacs/share/emacs/30.1/lisp/org/ob-table
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-sqlite hides c:/emacs/share/emacs/30.1/lisp/org/ob-sqlite
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-sql hides c:/emacs/share/emacs/30.1/lisp/org/ob-sql
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-shell hides c:/emacs/share/emacs/30.1/lisp/org/ob-shell
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-sed hides c:/emacs/share/emacs/30.1/lisp/org/ob-sed
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-screen hides c:/emacs/share/emacs/30.1/lisp/org/ob-screen
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-scheme hides c:/emacs/share/emacs/30.1/lisp/org/ob-scheme
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-sass hides c:/emacs/share/emacs/30.1/lisp/org/ob-sass
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-ruby hides c:/emacs/share/emacs/30.1/lisp/org/ob-ruby
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-ref hides c:/emacs/share/emacs/30.1/lisp/org/ob-ref
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-R hides c:/emacs/share/emacs/30.1/lisp/org/ob-R
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-python hides c:/emacs/share/emacs/30.1/lisp/org/ob-python
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-processing hides c:/emacs/share/emacs/30.1/lisp/org/ob-processing
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-plantuml hides c:/emacs/share/emacs/30.1/lisp/org/ob-plantuml
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-perl hides c:/emacs/share/emacs/30.1/lisp/org/ob-perl
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-org hides c:/emacs/share/emacs/30.1/lisp/org/ob-org
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-octave hides c:/emacs/share/emacs/30.1/lisp/org/ob-octave
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-ocaml hides c:/emacs/share/emacs/30.1/lisp/org/ob-ocaml
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-maxima hides c:/emacs/share/emacs/30.1/lisp/org/ob-maxima
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-matlab hides c:/emacs/share/emacs/30.1/lisp/org/ob-matlab
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-makefile hides c:/emacs/share/emacs/30.1/lisp/org/ob-makefile
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-lua hides c:/emacs/share/emacs/30.1/lisp/org/ob-lua
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-lob hides c:/emacs/share/emacs/30.1/lisp/org/ob-lob
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-lisp hides c:/emacs/share/emacs/30.1/lisp/org/ob-lisp
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-lilypond hides c:/emacs/share/emacs/30.1/lisp/org/ob-lilypond
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-latex hides c:/emacs/share/emacs/30.1/lisp/org/ob-latex
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-julia hides c:/emacs/share/emacs/30.1/lisp/org/ob-julia
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-js hides c:/emacs/share/emacs/30.1/lisp/org/ob-js
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-java hides c:/emacs/share/emacs/30.1/lisp/org/ob-java
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-haskell hides c:/emacs/share/emacs/30.1/lisp/org/ob-haskell
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-groovy hides c:/emacs/share/emacs/30.1/lisp/org/ob-groovy
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-gnuplot hides c:/emacs/share/emacs/30.1/lisp/org/ob-gnuplot
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-fortran hides c:/emacs/share/emacs/30.1/lisp/org/ob-fortran
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-forth hides c:/emacs/share/emacs/30.1/lisp/org/ob-forth
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-exp hides c:/emacs/share/emacs/30.1/lisp/org/ob-exp
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-eval hides c:/emacs/share/emacs/30.1/lisp/org/ob-eval
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-eshell hides c:/emacs/share/emacs/30.1/lisp/org/ob-eshell
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-emacs-lisp hides c:/emacs/share/emacs/30.1/lisp/org/ob-emacs-lisp
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-dot hides c:/emacs/share/emacs/30.1/lisp/org/ob-dot
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-ditaa hides c:/emacs/share/emacs/30.1/lisp/org/ob-ditaa
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-css hides c:/emacs/share/emacs/30.1/lisp/org/ob-css
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-core hides c:/emacs/share/emacs/30.1/lisp/org/ob-core
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-comint hides c:/emacs/share/emacs/30.1/lisp/org/ob-comint
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-clojure hides c:/emacs/share/emacs/30.1/lisp/org/ob-clojure
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-calc hides c:/emacs/share/emacs/30.1/lisp/org/ob-calc
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-C hides c:/emacs/share/emacs/30.1/lisp/org/ob-C
c:/users/dpchi/.emacs.d/elpa/org-20210929/ob-awk hides c:/emacs/share/emacs/30.1/lisp/org/ob-awk
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/trampver hides c:/emacs/share/emacs/30.1/lisp/net/trampver
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp hides c:/emacs/share/emacs/30.1/lisp/net/tramp
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-uu hides c:/emacs/share/emacs/30.1/lisp/net/tramp-uu
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-sudoedit hides c:/emacs/share/emacs/30.1/lisp/net/tramp-sudoedit
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-sshfs hides c:/emacs/share/emacs/30.1/lisp/net/tramp-sshfs
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-smb hides c:/emacs/share/emacs/30.1/lisp/net/tramp-smb
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-sh hides c:/emacs/share/emacs/30.1/lisp/net/tramp-sh
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-rclone hides c:/emacs/share/emacs/30.1/lisp/net/tramp-rclone
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-message hides c:/emacs/share/emacs/30.1/lisp/net/tramp-message
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-loaddefs hides c:/emacs/share/emacs/30.1/lisp/net/tramp-loaddefs
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-integration hides c:/emacs/share/emacs/30.1/lisp/net/tramp-integration
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-gvfs hides c:/emacs/share/emacs/30.1/lisp/net/tramp-gvfs
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-fuse hides c:/emacs/share/emacs/30.1/lisp/net/tramp-fuse
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-ftp hides c:/emacs/share/emacs/30.1/lisp/net/tramp-ftp
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-crypt hides c:/emacs/share/emacs/30.1/lisp/net/tramp-crypt
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-container hides c:/emacs/share/emacs/30.1/lisp/net/tramp-container
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-compat hides c:/emacs/share/emacs/30.1/lisp/net/tramp-compat
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-cmds hides c:/emacs/share/emacs/30.1/lisp/net/tramp-cmds
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-cache hides c:/emacs/share/emacs/30.1/lisp/net/tramp-cache
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-archive hides c:/emacs/share/emacs/30.1/lisp/net/tramp-archive
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-androidsu hides c:/emacs/share/emacs/30.1/lisp/net/tramp-androidsu
c:/users/dpchi/.emacs.d/elpa/tramp-2.7.2.3.1/tramp-adb hides c:/emacs/share/emacs/30.1/lisp/net/tramp-adb
c:/users/dpchi/.emacs.d/elpa/track-changes-1.4/track-changes hides c:/emacs/share/emacs/30.1/lisp/emacs-lisp/track-changes
c:/users/dpchi/.emacs.d/elpa/faceup-20170925.1946/faceup hides c:/emacs/share/emacs/30.1/lisp/emacs-lisp/faceup
c:/emacs/share/emacs/30.1/lisp/emacs-lisp/compat hides c:/users/dpchi/.emacs.d/elpa/compat-30.1.0.0/compat
c:/emacs/share/emacs/30.1/lisp/emacs-lisp/eldoc hides c:/users/dpchi/.emacs.d/elpa/eldoc-1.15.0/eldoc
c:/emacs/share/emacs/30.1/lisp/erc/erc hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc
c:/emacs/share/emacs/30.1/lisp/erc/erc-xdcc hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-xdcc
c:/emacs/share/emacs/30.1/lisp/erc/erc-truncate hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-truncate
c:/emacs/share/emacs/30.1/lisp/erc/erc-track hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-track
c:/emacs/share/emacs/30.1/lisp/erc/erc-status-sidebar hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-status-sidebar
c:/emacs/share/emacs/30.1/lisp/erc/erc-stamp hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-stamp
c:/emacs/share/emacs/30.1/lisp/erc/erc-spelling hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-spelling
c:/emacs/share/emacs/30.1/lisp/erc/erc-speedbar hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-speedbar
c:/emacs/share/emacs/30.1/lisp/erc/erc-sound hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-sound
c:/emacs/share/emacs/30.1/lisp/erc/erc-services hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-services
c:/emacs/share/emacs/30.1/lisp/erc/erc-sasl hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-sasl
c:/emacs/share/emacs/30.1/lisp/erc/erc-ring hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-ring
c:/emacs/share/emacs/30.1/lisp/erc/erc-replace hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-replace
c:/emacs/share/emacs/30.1/lisp/erc/erc-pcomplete hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-pcomplete
c:/emacs/share/emacs/30.1/lisp/erc/erc-page hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-page
c:/emacs/share/emacs/30.1/lisp/erc/erc-notify hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-notify
c:/emacs/share/emacs/30.1/lisp/erc/erc-nicks hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-nicks
c:/emacs/share/emacs/30.1/lisp/erc/erc-networks hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-networks
c:/emacs/share/emacs/30.1/lisp/erc/erc-netsplit hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-netsplit
c:/emacs/share/emacs/30.1/lisp/erc/erc-menu hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-menu
c:/emacs/share/emacs/30.1/lisp/erc/erc-match hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-match
c:/emacs/share/emacs/30.1/lisp/erc/erc-log hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-log
c:/emacs/share/emacs/30.1/lisp/erc/erc-loaddefs hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-loaddefs
c:/emacs/share/emacs/30.1/lisp/erc/erc-list hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-list
c:/emacs/share/emacs/30.1/lisp/erc/erc-lang hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-lang
c:/emacs/share/emacs/30.1/lisp/erc/erc-join hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-join
c:/emacs/share/emacs/30.1/lisp/erc/erc-imenu hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-imenu
c:/emacs/share/emacs/30.1/lisp/erc/erc-identd hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-identd
c:/emacs/share/emacs/30.1/lisp/erc/erc-ibuffer hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-ibuffer
c:/emacs/share/emacs/30.1/lisp/erc/erc-goodies hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-goodies
c:/emacs/share/emacs/30.1/lisp/erc/erc-fill hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-fill
c:/emacs/share/emacs/30.1/lisp/erc/erc-ezbounce hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-ezbounce
c:/emacs/share/emacs/30.1/lisp/erc/erc-desktop-notifications hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-desktop-notifications
c:/emacs/share/emacs/30.1/lisp/erc/erc-dcc hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-dcc
c:/emacs/share/emacs/30.1/lisp/erc/erc-compat hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-compat
c:/emacs/share/emacs/30.1/lisp/erc/erc-common hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-common
c:/emacs/share/emacs/30.1/lisp/erc/erc-capab hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-capab
c:/emacs/share/emacs/30.1/lisp/erc/erc-button hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-button
c:/emacs/share/emacs/30.1/lisp/erc/erc-backend hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-backend
c:/emacs/share/emacs/30.1/lisp/erc/erc-autoaway hides c:/users/dpchi/.emacs.d/elpa/erc-5.6/erc-autoaway
c:/emacs/share/emacs/30.1/lisp/jsonrpc hides c:/users/dpchi/.emacs.d/elpa/jsonrpc-1.0.25/jsonrpc
c:/emacs/share/emacs/30.1/lisp/progmodes/project hides c:/users/dpchi/.emacs.d/elpa/project-0.11.1/project
c:/emacs/share/emacs/30.1/lisp/emacs-lisp/seq hides c:/users/dpchi/.emacs.d/elpa/seq-2.24/seq
c:/emacs/share/emacs/30.1/lisp/net/soap-inspect hides c:/users/dpchi/.emacs.d/elpa/soap-client-3.2.3/soap-inspect
c:/emacs/share/emacs/30.1/lisp/net/soap-client hides c:/users/dpchi/.emacs.d/elpa/soap-client-3.2.3/soap-client
c:/emacs/share/emacs/30.1/lisp/use-package/use-package hides c:/users/dpchi/.emacs.d/elpa/use-package-2.4.6/use-package
c:/emacs/share/emacs/30.1/lisp/use-package/use-package-lint hides c:/users/dpchi/.emacs.d/elpa/use-package-2.4.6/use-package-lint
c:/emacs/share/emacs/30.1/lisp/use-package/use-package-jump hides c:/users/dpchi/.emacs.d/elpa/use-package-2.4.6/use-package-jump
c:/emacs/share/emacs/30.1/lisp/use-package/use-package-ensure hides c:/users/dpchi/.emacs.d/elpa/use-package-2.4.6/use-package-ensure
c:/emacs/share/emacs/30.1/lisp/use-package/use-package-ensure-system-package hides c:/users/dpchi/.emacs.d/elpa/use-package-2.4.6/use-package-ensure-system-package
c:/emacs/share/emacs/30.1/lisp/use-package/use-package-diminish hides c:/users/dpchi/.emacs.d/elpa/use-package-2.4.6/use-package-diminish
c:/emacs/share/emacs/30.1/lisp/use-package/use-package-delight hides c:/users/dpchi/.emacs.d/elpa/use-package-2.4.6/use-package-delight
c:/emacs/share/emacs/30.1/lisp/use-package/use-package-core hides c:/users/dpchi/.emacs.d/elpa/use-package-2.4.6/use-package-core
c:/emacs/share/emacs/30.1/lisp/use-package/use-package-bind-key hides c:/users/dpchi/.emacs.d/elpa/use-package-2.4.6/use-package-bind-key
c:/emacs/share/emacs/30.1/lisp/progmodes/xref hides c:/users/dpchi/.emacs.d/elpa/xref-1.7.0/xref

Features:
(shadow sort mail-extr emacsbug rfc-mode x509-mode x509-asn1-mode
aidermacs aidermacs-output ediff ediff-merg ediff-mult ediff-wind
ediff-diff ediff-help ediff-init ediff-util aidermacs-models
aidermacs-backends aidermacs-backend-comint markdown-mode find-dired
tramp trampver tramp-integration files-x tramp-message tramp-compat xdg
parse-time iso8601 tramp-loaddefs cl-print completion apheleia
apheleia-rcs apheleia-dp apheleia-formatters apheleia-utils apheleia-log
apheleia-formatter-context tabify time-stamp mule-util misearch
multi-isearch shortdoc comp-common help-fns radix-tree vc-git
vc-dispatcher go-mode find-file ffap magit-submodule magit-blame
magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit magit-repos magit-apply
magit-wip magit-log which-func magit-diff smerge-mode git-commit
log-edit message sendmail yank-media puny dino-dired-fixups dired-aux
dired dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068
epg-config gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils
gmm-utils mailheader pcvs-util add-log magit-core magit-autorevert
time-date magit-margin magit-transient magit-process with-editor server
magit-mode transient benchmark magit-git magit-base magit-section
cursor-sensor crm llama default-text-scale gptel-gemini dpc-gemini gptel
gptel-openai wsd-mode wsd-flycheck company-wsdmode ob-wsdmode ob
ob-tangle ol org-src ob-ref ob-lob ob-table ob-exp ob-comint ob-core
ob-eval org-keys oc org-compat org-macs format-spec wsd-core yasnippet
electric-operator cc-mode cc-fonts cc-guess cc-menus cc-cmds company-box
company-box-icons company-box-doc company-box-util msgu frame-local
company-oddmuse company-keywords company-etags etags fileloop generator
company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-capf company-cmake company-semantic
company-template company-bbdb company indent-bars face-remap noutline
outline color highlight-chars display-line-numbers autorevert recentf
tree-widget cc-styles cc-align cc-engine cc-vars cc-defs dtrt-indent
cus-edit cus-load wid-edit skeleton httpget dpc-jsonnet-mode-fixups
jsonnet-mode smie powershell advice shell pcomplete eglot
external-completion jsonrpc xref flymake thingatpt project diff
diff-mode track-changes ert pp ewoc debug backtrace filenotify warnings
compile text-property-search comint ansi-osc ring imenu flycheck
ansi-color find-func marginalia compat icomplete edmacro kmacro
use-package-bind-key bind-key hl-line finder-inf dino-utility memoize
dash dpc-sys-windows-nt s cl-extra help-mode use-package-ensure
use-package-core aidermacs-autoloads apheleia-autoloads easy-mmode
async-autoloads caddyfile-mode-autoloads chatgpt-shell-autoloads
command-log-mode-autoloads company-box-autoloads company-autoloads
default-text-scale-autoloads eglot-autoloads eglot-booster-autoloads
electric-operator-autoloads expand-region-autoloads f-autoloads
faceup-autoloads flycheck-autoloads flymake-autoloads
frame-local-autoloads gnu-elpa-keyring-update-autoloads
go-mode-autoloads google-gemini-autoloads gptel-autoloads ht-autoloads
idlwave-autoloads indent-bars-autoloads json-mode-autoloads
json-snatcher-autoloads jsonnet-mode-autoloads logito-autoloads
loop-autoloads lv-autoloads magit-autoloads pcase
magit-section-autoloads llama-autoloads marginalia-autoloads
markdown-mode-autoloads memoize-autoloads msgu-autoloads
multiple-cursors-autoloads org-autoloads path-helper-autoloads
popup-autoloads powershell-autoloads protobuf-mode-autoloads
rego-mode-autoloads reformatter-autoloads request-autoloads
rfc-mode-autoloads rg-autoloads s-autoloads shell-maker-autoloads
spinner-autoloads sr-speedbar-autoloads tblui-autoloads
tablist-autoloads magit-popup-autoloads track-changes-autoloads
tramp-autoloads rx transient-autoloads typescript-mode-autoloads
verilog-mode-autoloads wgrep-autoloads with-editor-autoloads
wsd-mode-autoloads x509-mode-autoloads yaml-mode-autoloads
yasnippet-autoloads yaxception-autoloads info dash-autoloads package
browse-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs icons
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
touch-screen dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars
term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads w32notify w32 lcms2 multi-tty move-toolbar make-network-process
native-compile emacs)

Memory information:
((conses 16 672435 122634) (symbols 48 39095 1) (strings 32 196605 7313)
 (string-bytes 1 5493821) (vectors 16 73230) (vector-slots 8 1545967 128424)
 (floats 8 462 15256) (intervals 56 9860 577) (buffers 992 21))



Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Tue, 27 May 2025 14:09:02 GMT) Full text and rfc822 format available.

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

From: Eshel Yaron <me <at> eshelyaron.com>
To: dino chiesa <dpchiesa <at> hotmail.com>
Cc: 78596 <at> debbugs.gnu.org
Subject: Re: bug#78596: 30.1; recentf-open ought to use a completion table
 and category
Date: Tue, 27 May 2025 16:08:52 +0200
Hi,

dino chiesa <dpchiesa <at> hotmail.com> writes:

> This isn't a bug report, more of an enhancement request.
>
> Summary
> I would like recentf-open to use "Programmed Completion" via 
> a completion function. (see 21.6.7 Programmed Completion)  
> That function ought to return metadata with a category that 
> is specific to recentf.

Good idea.  Could you please check if the following patch works for you?

diff --git a/lisp/recentf.el b/lisp/recentf.el
index a773ea9ec01..006b3159bb9 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -505,7 +505,9 @@ recentf-open
    (list
     (progn (unless recentf-mode (recentf-mode 1))
            (completing-read (format-prompt "Open recent file" nil)
-                            recentf-list nil t))))
+                            (completion-table-with-metadata
+                             recentf-list '((category . recentf)))
+                            nil t))))
   (when file
     (funcall recentf-menu-action file)))
 


The completion-table-with-metadata function is a new helper function
that is very useful when we just want to enrich some existing completion
table with some metadata.  

We should probably document it in the manual, BTW.  Here's a draft:

diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 3cc206d2e1d..2e91f2c21b4 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -2123,6 +2123,15 @@ Programmed Completion
 when a slow operation is involved, such as calling an external process.
 @end defun
 
+@defun completion-table-with-metadata table metadata
+This function creates a completion table that behaves like the existing
+completion table @var{table}, except with additional metadata given in
+@var{metadata}, which is an alist of completion metadata.  If
+@var{table} already provides completion metadata, it is merged with
+@var{metadata}, giving precedence to @var{metadata} if an entry appears
+both in @var{metadata} and in the metadata that @var{table} produces.
+@end defun
+
 @node Completion in Buffers
 @subsection Completion in Ordinary Buffers
 @cindex inline completion



Best,

Eshel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sun, 01 Jun 2025 00:33:02 GMT) Full text and rfc822 format available.

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

From: dino chiesa <dpchiesa <at> hotmail.com>
To: "78596 <at> debbugs.gnu.org" <78596 <at> debbugs.gnu.org>
Subject: Re: bug#78596: 30.1; recentf-open ought to use a completion table
Date: Sun, 1 Jun 2025 00:32:26 +0000
Thank you, 
that will work nicely. 



Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sat, 07 Jun 2025 08:45:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Eshel Yaron <me <at> eshelyaron.com>, dino chiesa <dpchiesa <at> hotmail.com>
Cc: 78596 <at> debbugs.gnu.org
Subject: Re: bug#78596: 30.1; recentf-open ought to use a completion table
Date: Sat, 07 Jun 2025 11:44:03 +0300
> From: dino chiesa <dpchiesa <at> hotmail.com>
> Date: Sun, 1 Jun 2025 00:32:26 +0000
> msip_labels: 
> 
> Thank you, 
> that will work nicely. 

Thanks.

Eshel, would you please therefore install your changes?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sat, 07 Jun 2025 20:15:01 GMT) Full text and rfc822 format available.

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

From: Eshel Yaron <me <at> eshelyaron.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 78596 <at> debbugs.gnu.org, dino chiesa <dpchiesa <at> hotmail.com>
Subject: Re: bug#78596: 30.1; recentf-open ought to use a completion table
Date: Sat, 07 Jun 2025 22:14:05 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: dino chiesa <dpchiesa <at> hotmail.com>
>> Date: Sun, 1 Jun 2025 00:32:26 +0000
>> msip_labels: 
>> 
>> Thank you, 
>> that will work nicely. 
>
> Thanks.
>
> Eshel, would you please therefore install your changes?

Sure, I've now pushed the change to recentf-open in commit b7560fb63dc.
Should I also push the part that documents
completion-table-with-metadata in the ELisp manual?


Eshel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sun, 08 Jun 2025 04:36:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Eshel Yaron <me <at> eshelyaron.com>
Cc: 78596 <at> debbugs.gnu.org, dpchiesa <at> hotmail.com
Subject: Re: bug#78596: 30.1; recentf-open ought to use a completion table
Date: Sun, 08 Jun 2025 07:35:20 +0300
> From: Eshel Yaron <me <at> eshelyaron.com>
> Cc: dino chiesa <dpchiesa <at> hotmail.com>,  78596 <at> debbugs.gnu.org
> Date: Sat, 07 Jun 2025 22:14:05 +0200
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> >> From: dino chiesa <dpchiesa <at> hotmail.com>
> >> Date: Sun, 1 Jun 2025 00:32:26 +0000
> >> msip_labels: 
> >> 
> >> Thank you, 
> >> that will work nicely. 
> >
> > Thanks.
> >
> > Eshel, would you please therefore install your changes?
> 
> Sure, I've now pushed the change to recentf-open in commit b7560fb63dc.
> Should I also push the part that documents
> completion-table-with-metadata in the ELisp manual?

Yes.  If what you say there is correct for Emacs 30 as well, please
install that part on the release branch.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sun, 08 Jun 2025 19:13:02 GMT) Full text and rfc822 format available.

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

From: Eshel Yaron <me <at> eshelyaron.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 78596 <at> debbugs.gnu.org, dpchiesa <at> hotmail.com
Subject: Re: bug#78596: 30.1; recentf-open ought to use a completion table
Date: Sun, 08 Jun 2025 21:12:00 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Eshel Yaron <me <at> eshelyaron.com>
>> Cc: dino chiesa <dpchiesa <at> hotmail.com>,  78596 <at> debbugs.gnu.org
>> Date: Sat, 07 Jun 2025 22:14:05 +0200
>> 
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>> 
>> >> From: dino chiesa <dpchiesa <at> hotmail.com>
>> >> Date: Sun, 1 Jun 2025 00:32:26 +0000
>> >> msip_labels: 
>> >> 
>> >> Thank you, 
>> >> that will work nicely. 
>> >
>> > Thanks.
>> >
>> > Eshel, would you please therefore install your changes?
>> 
>> Sure, I've now pushed the change to recentf-open in commit b7560fb63dc.
>> Should I also push the part that documents
>> completion-table-with-metadata in the ELisp manual?
>
> Yes.  If what you say there is correct for Emacs 30 as well, please
> install that part on the release branch.

AFAICT completion-table-with-metadata was only added on master,
so I pushed it to master in commit 4be63c85d2a.


Regards,

Eshel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sun, 08 Jun 2025 19:29:02 GMT) Full text and rfc822 format available.

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

From: Daniel Mendler <mail <at> daniel-mendler.de>
To: Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text
 editors" <bug-gnu-emacs <at> gnu.org>
Cc: 78596 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>,
 Eshel Yaron <me <at> eshelyaron.com>, dpchiesa <at> hotmail.com
Subject: Re: bug#78596: 30.1; recentf-open ought to use a completion table
Date: Sun, 08 Jun 2025 21:28:34 +0200
Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text
editors" <bug-gnu-emacs <at> gnu.org> writes:

> Eli Zaretskii <eliz <at> gnu.org> writes:
>
>>> From: Eshel Yaron <me <at> eshelyaron.com>
>>> Cc: dino chiesa <dpchiesa <at> hotmail.com>,  78596 <at> debbugs.gnu.org
>>> Date: Sat, 07 Jun 2025 22:14:05 +0200
>>> 
>>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>> 
>>> >> From: dino chiesa <dpchiesa <at> hotmail.com>
>>> >> Date: Sun, 1 Jun 2025 00:32:26 +0000
>>> >> msip_labels: 
>>> >> 
>>> >> Thank you, 
>>> >> that will work nicely. 
>>> >
>>> > Thanks.
>>> >
>>> > Eshel, would you please therefore install your changes?
>>> 
>>> Sure, I've now pushed the change to recentf-open in commit b7560fb63dc.
>>> Should I also push the part that documents
>>> completion-table-with-metadata in the ELisp manual?
>>
>> Yes.  If what you say there is correct for Emacs 30 as well, please
>> install that part on the release branch.
>
> AFAICT completion-table-with-metadata was only added on master,
> so I pushed it to master in commit 4be63c85d2a.

`completion-table-with-metadata' does not merge the metadata. The
function only adds metadata to a table without metadata, like a list of
strings.

> Regards,
>
> Eshel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sun, 08 Jun 2025 19:29:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sun, 08 Jun 2025 20:05:02 GMT) Full text and rfc822 format available.

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

From: Eshel Yaron <me <at> eshelyaron.com>
To: Daniel Mendler <mail <at> daniel-mendler.de>
Cc: "Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text
 editors" <bug-gnu-emacs <at> gnu.org>, 78596 <at> debbugs.gnu.org,
 Eli Zaretskii <eliz <at> gnu.org>, dpchiesa <at> hotmail.com
Subject: Re: bug#78596: 30.1; recentf-open ought to use a completion table
Date: Sun, 08 Jun 2025 22:04:37 +0200
Hi Daniel,

Daniel Mendler <mail <at> daniel-mendler.de> writes:

> Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text
> editors" <bug-gnu-emacs <at> gnu.org> writes:
>
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>
>>>> From: Eshel Yaron <me <at> eshelyaron.com>
>>>> Cc: dino chiesa <dpchiesa <at> hotmail.com>,  78596 <at> debbugs.gnu.org
>>>> Date: Sat, 07 Jun 2025 22:14:05 +0200
>>>> 
>>>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>>> 
>>>> >> From: dino chiesa <dpchiesa <at> hotmail.com>
>>>> >> Date: Sun, 1 Jun 2025 00:32:26 +0000
>>>> >> msip_labels: 
>>>> >> 
>>>> >> Thank you, 
>>>> >> that will work nicely. 
>>>> >
>>>> > Thanks.
>>>> >
>>>> > Eshel, would you please therefore install your changes?
>>>> 
>>>> Sure, I've now pushed the change to recentf-open in commit b7560fb63dc.
>>>> Should I also push the part that documents
>>>> completion-table-with-metadata in the ELisp manual?
>>>
>>> Yes.  If what you say there is correct for Emacs 30 as well, please
>>> install that part on the release branch.
>>
>> AFAICT completion-table-with-metadata was only added on master,
>> so I pushed it to master in commit 4be63c85d2a.
>
> `completion-table-with-metadata' does not merge the metadata. The
> function only adds metadata to a table without metadata, like a list of
> strings.

Oh my, right, I had another version of that function in mind.
I've pushed a fix in 86eb733aef4, does that seem accurate?


Thanks,

Eshel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sun, 08 Jun 2025 20:05:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sun, 08 Jun 2025 20:14:01 GMT) Full text and rfc822 format available.

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

From: Daniel Mendler <mail <at> daniel-mendler.de>
To: Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text
 editors" <bug-gnu-emacs <at> gnu.org>
Cc: 78596 <at> debbugs.gnu.org, eliz <at> gnu.org, Eshel Yaron <me <at> eshelyaron.com>,
 dpchiesa <at> hotmail.com
Subject: Re: bug#78596: 30.1; recentf-open ought to use a completion table
Date: Sun, 08 Jun 2025 22:13:09 +0200
Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text
editors" <bug-gnu-emacs <at> gnu.org> writes:

> Hi Daniel,
>
> Daniel Mendler <mail <at> daniel-mendler.de> writes:
>
>> Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text
>> editors" <bug-gnu-emacs <at> gnu.org> writes:
>>
>>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>>
>>>>> From: Eshel Yaron <me <at> eshelyaron.com>
>>>>> Cc: dino chiesa <dpchiesa <at> hotmail.com>,  78596 <at> debbugs.gnu.org
>>>>> Date: Sat, 07 Jun 2025 22:14:05 +0200
>>>>> 
>>>>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>>>> 
>>>>> >> From: dino chiesa <dpchiesa <at> hotmail.com>
>>>>> >> Date: Sun, 1 Jun 2025 00:32:26 +0000
>>>>> >> msip_labels: 
>>>>> >> 
>>>>> >> Thank you, 
>>>>> >> that will work nicely. 
>>>>> >
>>>>> > Thanks.
>>>>> >
>>>>> > Eshel, would you please therefore install your changes?
>>>>> 
>>>>> Sure, I've now pushed the change to recentf-open in commit b7560fb63dc.
>>>>> Should I also push the part that documents
>>>>> completion-table-with-metadata in the ELisp manual?
>>>>
>>>> Yes.  If what you say there is correct for Emacs 30 as well, please
>>>> install that part on the release branch.
>>>
>>> AFAICT completion-table-with-metadata was only added on master,
>>> so I pushed it to master in commit 4be63c85d2a.
>>
>> `completion-table-with-metadata' does not merge the metadata. The
>> function only adds metadata to a table without metadata, like a list of
>> strings.
>
> Oh my, right, I had another version of that function in mind.
> I've pushed a fix in 86eb733aef4, does that seem accurate?

Yes, thanks.

> Thanks,
>
> Eshel




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78596; Package emacs. (Sun, 08 Jun 2025 20:14:02 GMT) Full text and rfc822 format available.

This bug report was last modified 6 days ago.

Previous Next


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