GNU bug report logs - #79173
30.1; TRAMP simplified syntax produces empty completing-read candidates

Previous Next

Package: emacs;

Reported by: Reuben Thomas <rrt <at> sc3d.org>

Date: Mon, 4 Aug 2025 23:17:01 UTC

Severity: normal

Tags: patch

Found in version 30.1

Fixed in version 30.3

Done: Michael Albinus <michael.albinus <at> gmx.de>

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Michael Albinus <michael.albinus <at> gmx.de>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#79173: closed (30.1; TRAMP simplified syntax produces empty
 completing-read candidates)
Date: Thu, 07 Aug 2025 14:49:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 07 Aug 2025 16:47:51 +0200
with message-id <87ikiz9oiw.fsf <at> gmx.de>
and subject line Re: bug#79173: 30.1; TRAMP simplified syntax produces empty completing-read candidates
has caused the debbugs.gnu.org bug report #79173,
regarding 30.1; TRAMP simplified syntax produces empty completing-read candidates
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
79173: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=79173
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Reuben Thomas <rrt <at> sc3d.org>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.1; TRAMP simplified syntax produces empty completing-read
 candidates
Date: Mon, 04 Aug 2025 23:55:02 +0100
I’m a bit unsure how to demonstrate this bug in vanilla Emacs. See
https://github.com/minad/vertico/discussions/623 for the original
context in which I found this problem, using the vertico package. The
author assures me this is an Emacs bug, and gives his reasoning there.

Also, according to him it is possible that it has already been fixed on
master.

The problem is that when `tramp-syntax` is set to `simplified`, then
`find-file` can produce an empty completion for `completing-read`. (The
vertico author’s suggestion is that empty completions are invalid.)

Emacs then tries to add a text property to a one-character span of this
empty completion candidate, which of course does not work.

I give steps to reproduce in the bug report above, but they require the
use of vertico, which is obviously not ideal, apologies. It seems that
in vanilla Emacs the bug does not have obvious consequences.

I can confirm at least that the bug also manifests when the user has no
`.ssh/config` file.

In GNU Emacs 30.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.41,
 cairo version 1.18.0) of 2025-02-25, modified by Debian built on
 lcy02-amd64-066
Windowing system distributor 'The X.Org Foundation', version 11.0.12101011
System Description: Ubuntu 24.04.2 LTS

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --build
 x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/libexec --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd
 --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/30.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/30.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --with-cairo
 --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars
 'CFLAGS=-g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer
 -ffile-prefix-map=/build/emacs-XzQpMq/emacs-30.1=.
 -fstack-protector-strong -fstack-clash-protection -Wformat
 -Werror=format-security -fcf-protection
 -fdebug-prefix-map=/build/emacs-XzQpMq/emacs-30.1=/usr/src/emacs-1:30.1-0build1~ubuntu2404
 -Wall' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=3'
 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro''

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

Important settings:
  value of $LC_MONETARY: en_GB.UTF-8
  value of $LC_NUMERIC: en_GB.UTF-8
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: @im=local
  locale-coding-system: utf-8-unix

Major mode: Markdown

Minor modes in effect:
  global-jinx-mode: t
  jinx-mode: t
  window-margin-mode: t
  adaptive-wrap-prefix-mode: t
  word-wrap-whitespace-mode: t
  goto-address-mode: t
  smart-quotes-mode: t
  global-git-commit-mode: t
  override-global-mode: t
  server-mode: t
  global-flycheck-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  vertico-multiform-mode: t
  vertico-mode: t
  savehist-mode: t
  save-place-mode: t
  repeat-mode: t
  recentf-mode: t
  minibuffer-electric-default-mode: t
  marginalia-mode: t
  global-whitespace-mode: t
  global-auto-revert-mode: t
  electric-pair-mode: t
  editorconfig-mode: t
  dtrt-indent-global-mode: t
  dtrt-indent-mode: t
  ctrlf-mode: t
  ctrlf-local-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-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
  visual-line-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  auto-save-visited-mode: t

Load-path shadows:
/home/rrt/.emacs.d/elpa/editorconfig-20250219.1528/editorconfig-core hides /usr/share/emacs/30.1/lisp/editorconfig-core
/home/rrt/.emacs.d/elpa/editorconfig-20250219.1528/editorconfig-conf-mode hides /usr/share/emacs/30.1/lisp/editorconfig-conf-mode
/home/rrt/.emacs.d/elpa/transient-0.9.4/transient hides /usr/share/emacs/30.1/lisp/transient
/home/rrt/.emacs.d/elpa/editorconfig-20250219.1528/editorconfig-fnmatch hides /usr/share/emacs/30.1/lisp/editorconfig-fnmatch
/home/rrt/.emacs.d/elpa/editorconfig-20250219.1528/editorconfig hides /usr/share/emacs/30.1/lisp/editorconfig
/home/rrt/.emacs.d/elpa/editorconfig-20250219.1528/editorconfig-tools hides /usr/share/emacs/30.1/lisp/editorconfig-tools
/home/rrt/.emacs.d/elpa/editorconfig-20250219.1528/editorconfig-core-handle hides /usr/share/emacs/30.1/lisp/editorconfig-core-handle
/home/rrt/.emacs.d/elpa/python-0.30/python hides /usr/share/emacs/30.1/lisp/progmodes/python
/home/rrt/.emacs.d/elpa/dictionary-20201001.1727/dictionary hides /usr/share/emacs/30.1/lisp/net/dictionary

Features:
(shadow sort mail-extr emacsbug help-fns radix-tree mule-util
vertico-sort ispell jinx window-margin adaptive-wrap word-wrap-mode
goto-addr smart-quotes smart-mode-line advice rich-minority zetteldeft
ace-window avy deft typescript-ts-mode js c-ts-common cc-mode cc-fonts
cc-guess cc-menus cc-cmds texinfo texinfo-loaddefs iimage flycheck-nim
nim-mode commenter nim-fill nim-smie let-alist smie nim-helper nim-util
nim-syntax nim-rx nim-vars git-commit log-edit message sendmail
yank-media rfc822 mml mml-sec epa 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
go-mode find-file ffap etags fileloop generator dired-x cc-styles
cc-align cc-engine derived lsp lsp-mode lsp-protocol xref project
spinner network-stream puny nsm markdown-mode color noutline outline lv
inline imenu ht f s ewoc epg rfc6068 epg-config dash compile
text-property-search ctrlf hl-line orderless use-package-ensure
use-package-bind-key bind-key magit-process with-editor server
magit-mode transient pp edmacro kmacro benchmark magit-git magit-base
magit-section cursor-sensor crm llama comp comp-cstr warnings comp-run
comp-common use-package-core bug-reference-github bug-reference
thingatpt vc-git diff-mode track-changes vc-dispatcher flycheck
find-func cl-extra tramp-cache time-stamp tramp-cmds
smart-mode-line-dark-theme rrt-theme yasnippet vertico-multiform vertico
savehist saveplace tramp trampver tramp-integration files-x
tramp-message help-mode tramp-compat xdg shell pcomplete comint ansi-osc
ring parse-time iso8601 time-date format-spec ansi-color tramp-loaddefs
repeat recentf tree-widget wid-edit minibuf-eldef marginalia compat
whitespace autorevert filenotify elec-pair editorconfig
editorconfig-core editorconfig-core-handle editorconfig-fnmatch
dtrt-indent desktop frameset cus-load user-site-loaddefs cc-vars cc-defs
treesit 0blayout-autoloads ada-mode-autoloads adoc-mode-autoloads
apache-mode-autoloads async-autoloads auctex-latexmk-autoloads
auctex-autoloads tex-site browse-kill-ring-autoloads
bug-reference-github-autoloads cmake-mode-autoloads company-autoloads
consult-lsp-autoloads csv-autoloads csv-mode-autoloads ctrlf-autoloads
easy-mmode cython-mode-autoloads dictionary-autoloads
connection-autoloads dired-atool-autoloads dired-efap-autoloads
direnv-autoloads dmacro-autoloads dockerfile-mode-autoloads
dos-autoloads dpkg-dev-el-autoloads debian-el-autoloads debian-el dired
dired-loaddefs dynamic-fonts-autoloads editorconfig-autoloads
eldoc-extension-autoloads embark-consult-autoloads consult-autoloads
embark-autoloads flymake-cursor-autoloads forge-autoloads
closql-autoloads emacsql-autoloads fuzzy-autoloads
geiser-guile-autoloads geiser-autoloads ggo-mode-autoloads
ghub-autoloads gnat-compiler-autoloads go-eldoc-autoloads
go-mode-autoloads graphviz-dot-mode-autoloads haskell-mode-autoloads
highlight-indentation-autoloads hover-autoloads hyperspace-autoloads
inputrc-mode-autoloads jade-mode-autoloads jedi-autoloads
auto-complete-autoloads jedi-core-autoloads jinx-autoloads
json-mode-autoloads json-reformat-autoloads json-snatcher-autoloads
link-autoloads lsp-pyright-autoloads lsp-ui-autoloads lsp-mode-autoloads
ht-autoloads f-autoloads lua-mode-autoloads magit-autoloads pcase
magit-section-autoloads llama-autoloads marginalia-autoloads
markdown-preview-mode-autoloads markdown-mode-autoloads
meson-mode-autoloads nim-mode-autoloads flycheck-nimsuggest-autoloads
flycheck-autoloads commenter-autoloads epc-autoloads ctable-autoloads
concurrent-autoloads orderless-autoloads org-bullets-autoloads
org-real-autoloads boxy-autoloads package-lint-autoloads
paredit-autoloads perl-completion-autoloads popup-autoloads
posframe-autoloads projectile-autoloads protobuf-mode-autoloads
python-autoloads python-environment-autoloads deferred-autoloads
python-isort-autoloads reformatter-autoloads
region-occurrences-highlighter-autoloads request-autoloads
rust-mode-autoloads s-autoloads smart-mode-line-autoloads
sws-mode-autoloads systemd-autoloads rx transient-autoloads
treepy-autoloads unicode-fonts-autoloads font-utils-autoloads
unicode-whitespace-autoloads ucs-utils-autoloads
persistent-soft-autoloads list-utils-autoloads pcache-autoloads
dash-autoloads vertico-autoloads websocket-autoloads wgrep-autoloads
wisi-autoloads with-editor-autoloads info writeroom-mode-autoloads
visual-fill-column-autoloads yaml-autoloads yaml-mode-autoloads
deft-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 term/x-win x-win term/common-win x-dnd touch-screen
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 dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process native-compile emacs)

Memory information:
((conses 16 499678 539672) (symbols 48 35095 5) (strings 32 184136 126360)
 (string-bytes 1 7603928) (vectors 16 72623) (vector-slots 8 815144 81032)
 (floats 8 299 1827) (intervals 56 3798 745) (buffers 992 12))

-- 
https://rrt.sc3d.org


[Message part 3 (message/rfc822, inline)]
From: Michael Albinus <michael.albinus <at> gmx.de>
To: Reuben Thomas <rrt <at> sc3d.org>
Cc: Daniel Mendler <mail <at> daniel-mendler.de>, 79173-done <at> debbugs.gnu.org
Subject: Re: bug#79173: 30.1; TRAMP simplified syntax produces empty
 completing-read candidates
Date: Thu, 07 Aug 2025 16:47:51 +0200
Version: 30.3

Reuben Thomas <rrt <at> sc3d.org> writes:

Hi Reuben,

> Great, I can confirm this works for me too, also with my standard
> setup.

Thanks for the feedback. So I'm closing this bug for "Emacs 30.3". I
don't know whether this release will happen, but the current release
under test, Emacs 30.2, won't get this patch.

Best regards, Michael.


This bug report was last modified 8 days ago.

Previous Next


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