Subject: bug#60359: 29.0.60; completion-auto-select set to t skips first argument when completing files

From: Philip Kaludercic <[email-masked]>
Date: Tue, 27 Dec 2022 17:10:52 +0000

If the user option 'completion-auto-select' is set to t, then pressing
tab should pop up the completions buffer and select the first option.
This works well, unless a file name is being completed.  In that case,
tab doesn't jump to completion buffer.  In fact it appears not to even
open it by default.  A second press opens the buffer, but only jumps if
you don't do anything else for about half a second.  A third press of
the tab key jumps to the second option.  So if you press tab three
times, without waiting, you always skip the first completion suggestion.

The issue can be reproduced with emacs -Q, by evaluating
(setq completion-auto-select t) and then opening a file using C-x C-f,
in presumably any directory.

In GNU Emacs 29.0.60 (build 9, x86_64-pc-linux-gnu, GTK+ Version
 3.24.35, cairo version 1.16.0) of 2022-12-25 built on quetzal
Repository revision: 940ab2423ca7c7a12aef069804435559d11f68e8
Repository branch: emacs-29
System Description: Debian GNU/Linux bookworm/sid

Configured using:
 'configure --with-pgtk --with-imagemagick'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES
NOTIFY INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER XIM GTK3 ZLIB

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

Major mode: ELisp/l

Minor modes in effect:
  TeX-PDF-mode: t
  rcirc-color-mode: t
  rcirc-track-minor-mode: t
  bug-reference-prog-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  auto-revert-mode: t
  server-mode: t
  shell-dirtrack-mode: t
  outline-minor-mode: t
  flymake-mode: t
  yas-minor-mode: t
  editorconfig-mode: t
  flyspell-mode: t
  repeat-mode: t
  display-battery-mode: t
  display-time-mode: t
  diff-hl-flydiff-mode: t
  diff-hl-mode: t
  winner-mode: t
  windmove-mode: t
  corfu-history-mode: t
  corfu-mode: t
  vertico-multiform-mode: t
  electric-pair-mode: t
  recentf-mode: t
  save-place-mode: t
  savehist-mode: t
  pixel-scroll-precision-mode: t
  pixel-scroll-mode: t
  xterm-mouse-mode: t
  which-function-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/philip/.config/emacs/elpa/transient-0.3.7/transient hides /home/philip/Source/emacs/lisp/transient

Features:
(shadow emacsbug reposition printing ps-print ps-print-loaddefs lpr
edebug aggressive-completion consult-icomplete icomplete
aggressive-completion-autoloads tex-info tex texmathp texinfo
texinfo-loaddefs goto-addr org-element org-persist org-id org-refile
avl-tree oc-basic ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe ol-irc
ol-info ol-gnus nnselect ol-docview doc-view image-mode exif ol-bibtex
bibtex ol-bbdb ol-w3m ol-doi org-link-doi org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-src ob-comint org-pcomplete org-list
org-footnote org-faces org-entities ob-emacs-lisp ob-core ob-eval
org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs
org-version org-compat org-macs vertico-buffer consult-imenu
loaddefs-gen tar-mode arc-mode archive-mode package-vc inline url-cache
url-http url-auth url-gw display-line-numbers quail cl-print
modus-vivendi-theme package-x magit-extras jka-compr whitespace
sh-script smie treesit executable markdown-mode eglot
external-completion array jsonrpc ert debug backtrace solar cal-dst
holidays holiday-loaddefs cal-move cal-menu calendar cal-loaddefs
mailalias smtpmail ecomplete find-func avy nroff-mode dictionary
dictionary-connection emacs-news-mode char-fold misearch multi-isearch
rcirc-color rcirc qp flow-fill shortdoc help-fns radix-tree mm-archive
sort smiley gnus-cite mail-extr textsec uni-scripts idna-mapping
ucs-normalize uni-confusable textsec-check gnus-bcklg dired-aux
gnus-dired mule-util bug-reference pulse color sql view grep face-remap
magit-bookmark magit-submodule magit-obsolete 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
magit-diff smerge-mode git-commit log-edit add-log magit-core
magit-autorevert autorevert filenotify magit-margin magit-transient
magit-process with-editor server magit-mode transient edmacro magit-git
magit-section magit-utils crm dash cap-words superword subword go-mode
find-file ffap etags fileloop generator xref find-dired
vertico-directory orderless vertico-flat buffer-env vc-svn vc-git
tramp-cache tramp-sh tramp tramp-loaddefs trampver tramp-integration
cus-start files-x tramp-compat shell pcomplete ls-lisp consult-register
consult-vertico consult compat-28 compat compat-macs kmacro bookmark
vc-backup copyright time-stamp gnus-async gnus-ml disp-table nndraft
nnmh utf-7 nnfolder epa-file network-stream nsm gnus-agent gnus-srvr
gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view
mml-smime smime gnutls dig nntp gnus-cache gnus-sum shr pixel-fill
kinsoku url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus
gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time iso8601
gnus-spec gnus-int gnus-range message yank-media puny dired-x dired
dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
gnus-win noutline outline checkdoc lisp-mnt flymake-proc flymake
yasnippet-snippets warnings yasnippet editorconfig editorconfig-core
editorconfig-core-handle editorconfig-fnmatch flyspell ispell init
repeat project format-spec battery dbus xml shell-command+ thingatpt rx
time sendmail rfc2047 rfc2045 ietf-drums gnus nnheader gnus-util
time-date mail-utils range mm-util mail-prsvr compile
text-property-search diff-hl-flydiff diff diff-hl log-view pcvs-util
vc-dir ewoc vc vc-dispatcher diff-mode derived easy-mmode hippie-exp
comint ansi-osc winner windmove corfu-history corfu vertico-multiform
vertico cl-extra help-mode elec-pair recentf tree-widget saveplace
savehist pixel-scroll cua-base ring xt-mouse modus-operandi-theme
modus-themes pcase ansi-color which-func imenu cus-edit pp cus-load
icons wid-edit setup finder-inf 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 password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib info
shell-command+-autoloads consult-autoloads flymake-proselint-autoloads
corfu-autoloads diff-hl-autoloads focus-autoloads haskell-mode-autoloads
buffer-env-autoloads avy-autoloads yasnippet-snippets-autoloads
magit-autoloads geiser-mit-autoloads inspector-autoloads
vc-backup-autoloads bash-completion-autoloads setup-autoloads
auctex-autoloads tex-site git-commit-autoloads with-editor-autoloads
geiser-guile-autoloads geiser-autoloads transient-autoloads
magit-section-autoloads 0x0-autoloads sp-tutor-autoloads
debbugs-autoloads package-lint-autoloads compat-autoloads
editorconfig-autoloads rcirc-color-autoloads orderless-autoloads
vertico-autoloads yasnippet-autoloads markdown-mode-autoloads
slime-autoloads macrostep-autoloads writegood-mode-autoloads
standard-themes-autoloads go-mode-autoloads dash-autoloads rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win
term/common-win pgtk-dnd 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 dynamic-setting system-font-setting
font-render-setting cairo gtk pgtk lcms2 multi-tty make-network-process
emacs)

Memory information:
((conses 16 1202524 189548)
 (symbols 48 49426 399)
 (strings 32 221461 19471)
 (string-bytes 1 6254926)
 (vectors 16 123799)
 (vector-slots 8 2325456 126251)
 (floats 8 1449 694)
 (intervals 56 63711 8599)
 (buffers 984 101))