GNU bug report logs - #53604
29.0.50; read-buffer-to-switch unconditonally overrides minibuffer-completion-table

Previous Next

Package: emacs;

Reported by: Visuwesh <visuweshm <at> gmail.com>

Date: Fri, 28 Jan 2022 14:46:01 UTC

Severity: normal

Found in version 29.0.50

To reply to this bug, email your comments to 53604 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#53604; Package emacs. (Fri, 28 Jan 2022 14:46:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Visuwesh <visuweshm <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 28 Jan 2022 14:46:02 GMT) Full text and rfc822 format available.

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

From: Visuwesh <visuweshm <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; read-buffer-to-switch unconditonally overrides
 minibuffer-completion-table
Date: Fri, 28 Jan 2022 19:29:33 +0530
`read-buffer-to-switch', used by `switch-to-buffer', unconditionally
sets `minibuffer-completion-table' to `rbts-completion-table'.  It
should only do that when `read-buffer-function' is set to nil since
`read-buffer-function' cannot do its job properly.

As a minimal reproduction, consider the following [a]

    1. emacs -Q
    2. Evaluate the following form,
        (let ((read-buffer-function
               (lambda (&rest _)
                 (completing-read "prompt: " (list "1" "2")))))
          (call-interactively #'switch-to-buffer))
    3. Type TAB.
    4. *Completions* buffer does not show "1" "2".  If you replace
       (call-interactively ...) with (read-buffer ""), it does.

a. To justify my request, I will write my problem here.  I wrote a
custom read-buffer-function to include "virtual" buffer candidates
(popularised by ivy, helm, etc.) like recentf files, bookmarks, etc.,
but the current behaviour makes my job much harder (or uglier i.e.,
advice) as I have to write custom switch-to-buffer-* commands and remap
the standard switch-to-buffer-*.



BTW, should the docstring of `switch-to-buffer' mention
`read-buffer-to-switch'?  I see that Lars decided against it in bug#23131
(https://lists.gnu.org/archive/html/bug-gnu-emacs/2021-07/msg00703.html).

In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw scroll bars)
Repository revision: 4b7e73432cd07612e5225189e18696f755c8f954
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12013000
System Description: NixOS 21.11 (Porcupine)

Configured using:
 'configure
 --prefix=/nix/store/rsgfliii3k06j8i77zn295yp87qbq0yr-emacs-git-20211221.0
 --disable-build-details --with-modules --with-x-toolkit=lucid
 --with-xft --with-cairo --with-native-compilation'

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

Important settings:
  value of $EMACSLOADPATH: 
  value of $EMACSNATIVELOADPATH: /nix/store/x6fjznfj7wks7nvs6xgsk1q4fcd5rjrw-emacs-packages-deps/share/emacs/native-lisp::
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Help

Minor modes in effect:
  semantic-minor-modes-format: ((:eval (if (or semantic-highlight-edits-mode semantic-show-unmatched-syntax-mode)  S)))
  shell-dirtrack-mode: t
  recentf-mode: t
  eros-mode: t
  pdf-occur-global-minor-mode: t
  minibuffer-depth-indicate-mode: t
  repeat-mode: t
  display-time-mode: t
  display-battery-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  indent-tabs-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/viz/.nix-profile/share/emacs/site-lisp/site-start hides /nix/store/x6fjznfj7wks7nvs6xgsk1q4fcd5rjrw-emacs-packages-deps/share/emacs/site-lisp/site-start
/home/viz/lib/emacs/straight/build/map/map hides /nix/store/rsgfliii3k06j8i77zn295yp87qbq0yr-emacs-git-20211221.0/share/emacs/29.0.50/lisp/emacs-lisp/map
/home/viz/lib/emacs/straight/build/let-alist/let-alist hides /nix/store/rsgfliii3k06j8i77zn295yp87qbq0yr-emacs-git-20211221.0/share/emacs/29.0.50/lisp/emacs-lisp/let-alist
/nix/store/rsgfliii3k06j8i77zn295yp87qbq0yr-emacs-git-20211221.0/share/emacs/29.0.50/lisp/emacs-lisp/eieio-compat hides /nix/store/rsgfliii3k06j8i77zn295yp87qbq0yr-emacs-git-20211221.0/share/emacs/29.0.50/lisp/obsolete/eieio-compat

Features:
(shadow emacsbug sendmail vc-annotate add-log log-view pcvs-util
find-dired grep vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs
vc etags fileloop info-look ucs-normalize debug edebug backtrace
expand-region text-mode-expansions cc-mode-expansions
the-org-mode-expansions er-basic-expansions expand-region-core
expand-region-custom tramp tramp-loaddefs trampver tramp-integration
files-x tramp-compat ls-lisp comp comp-cstr minibuf-eldef
ement-room-list ement ement-notify notifications ement-room ewoc
ement-api ement-structs ement-macros plz dns ts s dash dictionary
dictionary-connection shell-command+ help-at-pt olivetti xref apropos
cal-iso tabify calc-bin calc-vec org-capture doct calc-comb calc-poly
calc-stuff calc-prog calc-frac calcalg2 calc-trail lacarte icomplete
calc-cplx calc-incom calc-undo calc-yank calc-store calc-math calccomp
calc-arith calc-misc calc-alg calc-ext calc-aent calc-menu calc
calc-loaddefs rect calc-macs cus-start view writegood-mode cal-islam
holidays hol-loaddefs mule-util cal-move nnfolder cl-print timezone
ob-ditaa ob-plantuml org-crypt org-habit org-clock org-colview org-plot
misc flyspell ispell org-pdftools org-noter org-indent shortdoc help-fns
radix-tree flow-fill nndoc crm bug-reference shr-color smerge-mode diff
mm-archive gnus-fun gnus-cite mail-extr gnus-bcklg qp gnus-async sort
gnus-ml pulse color latexenc ox-odt rng-loc rng-uri rng-parse rng-match
rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util
ox-latex ox-icalendar org-agenda org-refile ox-html table ox-ascii
ox-publish ox org-element avl-tree generator goto-addr pdf-sync
pdf-annot facemenu pdf-outline pdf-links ob-C cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ob-shell
ob-racket async ob-async tempo ol-eww ol-rmail ol-mhe ol-irc ol-info
ol-gnus nnselect gnus-search eieio-opt speedbar ezimage dframe
ol-docview doc-view ol-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-footnote org-src
ob-comint org-pcomplete org-list org-faces org-entities org-version
ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex ol org-keys oc
org-compat org-macs org-loaddefs pdf-history misearch multi-isearch
dired-aux face-remap shell pcomplete nndraft nnmh nnmaildir nnagent nnml
nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg
gnus-art mm-uu mml2015 mm-view mml-smime smime dig nntp gnus-cache
gnus-sum gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap
nnmail mail-source utf7 netrc nnoo parse-time iso8601 gnus-spec gnus-int
gnus-range message yank-media rfc822 mml mml-sec epa epg rfc6068
epg-config mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader
gnus-win executable time-stamp reveal noutline outline recentf
tree-widget vc-git diff-mode vc-dispatcher gnutls network-stream
url-http url-gw nsm rmc url-cache url-auth eww xdg url-queue shr
pixel-fill kinsoku svg dom puny mm-url gnus nnheader gnus-util
mail-utils server paredit edmacro kmacro eros time-date checkdoc
lisp-mnt mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr flymake-proc flymake project warnings thingatpt hl-todo
writegood-mode-autoloads wordel-autoloads sokoban-autoloads
ement-autoloads ts-autoloads s-autoloads map-autoloads plz-autoloads
nov-autoloads esxml-autoloads kv-autoloads transmission-autoloads
lua-mode-autoloads nix-mode-autoloads magit-section-autoloads
dash-autoloads racket-mode-autoloads eros-autoloads
flymake-shellcheck-autoloads avy avy-autoloads siege-mode-autoloads
paredit-autoloads puni-autoloads expand-region-autoloads
filladapt-autoloads compose quail scroll-other-window
org-pdftools-autoloads org-noter-autoloads finder-inf
math-delimiters-autoloads doct-autoloads ob-async-autoloads
async-autoloads emacs-ob-racket-autoloads valign-autoloads
org-starless-autoloads cdlatex-autoloads auctex-autoloads tex-site
easy-mmode pdf-occur ibuf-ext ibuffer ibuffer-loaddefs tablist advice
tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local find-func cedet
pdf-isearch let-alist pdf-misc imenu pdf-tools package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap url-handlers url-parse auth-source eieio
eieio-core eieio-loaddefs json map url-vars compile comint ansi-color
ring cus-edit wid-edit pdf-view password-cache bookmark
text-property-search pp jka-compr pdf-cache pdf-info tq pdf-util
pdf-macs image-mode dired-x dired dired-loaddefs exif
pdf-tools-autoloads let-alist-autoloads tablist-autoloads derived
mb-depth cus-load repeat visual-fill-autoloads olivetti-autoloads
hl-todo-autoloads time format-spec battery dbus filenotify xml
disp-table lacarte-autoloads shell-command-plus-autoloads rx icalendar
diary-lib diary-loaddefs cal-menu calendar cal-loaddefs
chemtable-autoloads molar-mass-autoloads pcase straight-autoloads info
cl-seq cl-extra help-mode straight cl-macs cl-loaddefs cl-lib
vz-nh-theme seq gv subr-x byte-opt bytecomp byte-compile cconv
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-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 cl-generic
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 simple abbrev obarray
cl-preloaded nadvice button 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 x-toolkit x multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 2050564 584582)
 (symbols 48 54221 486)
 (strings 32 273447 55866)
 (string-bytes 1 203473076)
 (vectors 16 143788)
 (vector-slots 8 2972964 406447)
 (floats 8 139821 6723)
 (intervals 56 158849 33066)
 (buffers 992 101))




This bug report was last modified 3 years and 139 days ago.

Previous Next


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