unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
@ 2023-01-03 19:05 Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-01-03 20:14 ` Drew Adams
                   ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-01-03 19:05 UTC (permalink / raw)
  To: 60527

Package: Emacs
Version: 30.0.50


I wish the SPC binding to `minibuffer-complete-word` would go because it
makes it hard to type SPC in the minibuffer whenever there's completion.

Typing a SPC in a "minibuffer with completion" can be needed when the
things we want to complete contains a SPC character (e.g. file names,
which is why we disable that SPC binding when completing file names),
but also when using completion styles like `orderless` which make the
use of a SPC character to specify how to select the
completion candidates.

So my favorite option is indeed to simply remove this binding.
Those few users who like it and use it (probably long-time users of
Emacs) could easily get it back with:

    (define-key minibuffer-local-completion-map
                " " 'minibuffer-complete-word)

Another option is to change `minibuffer-complete-word` so that instead
of beeping "No match", it inserts a SPC when there's no completion and
`require-match` is nil (after checking that the command was invoked via
SPC).

Yet another option would be to let callers of `completing-read` indicate
that it's likely the users will sometimes want to type a SPC character
for this specific minibuffer input (i.e. `completing-read` would then
use a map like `minibuffer-local-filename-completion-map`).

Currently packages which want to use `completing-read` to let the users
enter a string that will often contain spaces are reduced the either
telling their users "Add this `define-key` thingy in your .emacs because
the defaults suck" or having to use a `minibuffer-with-setup-hook`
workaround that forcefully rebinds SPC during that minibuffer session,
which may be the wrong thing to do if SPC was binding to something else
than `minibuffer-complete-word`.
Both of those options are undesirable, IMO.  We should instead improve
the defaults to make such recommendations and workarounds unnecessary.


        Stefan


 In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.16.0, Xaw3d scroll bars) of 2023-01-01 built on pastel
Repository revision: a1dce171667209f9dc5b63fd1cf9a067d8ab419a
Repository branch: work
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Debian GNU/Linux 11 (bullseye)

Configured using:
 'configure -C --enable-checking --enable-check-lisp-object-type --with-modules --with-cairo --with-tiff=ifavailable
 'CFLAGS=-Wall -g3 -Og -Wno-pointer-sign'
 PKG_CONFIG_PATH=/home/monnier/lib/pkgconfig'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
THREADS TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XAW3D XDBE XIM XINPUT2
XPM LUCID ZLIB

Important settings:
  value of $LANG: fr_CH.UTF-8
  locale-coding-system: utf-8-unix

Major mode: InactiveMinibuffer

Minor modes in effect:
  server-mode: t
  electric-pair-mode: t
  global-reveal-mode: t
  reveal-mode: t
  auto-insert-mode: t
  savehist-mode: t
  minibuffer-electric-default-mode: t
  global-compact-docstrings-mode: t
  global-corfu-mode: t
  url-handler-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  file-name-shadow-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/monnier/src/emacs/nongnu/packages/org-contrib/org-contrib-autoloads hides /home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/org-contrib-autoloads
/home/monnier/src/emacs/nongnu/packages/php-mode/php-mode-autoloads hides /home/monnier/src/emacs/nongnu/packages/php-mode/lisp/php-mode-autoloads
/home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/ob-arduino hides /home/monnier/src/emacs/nongnu/packages/arduino-mode/ob-arduino
/home/monnier/src/emacs/nongnu/packages/stylus-mode/jade-mode hides /home/monnier/src/emacs/nongnu/packages/jade-mode/jade-mode
/home/monnier/src/emacs/nongnu/packages/stylus-mode/sws-mode hides /home/monnier/src/emacs/nongnu/packages/jade-mode/sws-mode
/home/monnier/src/emacs/nongnu/packages/stylus-mode/stylus-mode hides /home/monnier/src/emacs/nongnu/packages/jade-mode/stylus-mode
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-psql hides /home/monnier/src/emacs/nongnu/packages/emacsql-mysql/emacsql-psql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-mysql hides /home/monnier/src/emacs/nongnu/packages/emacsql-mysql/emacsql-mysql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-pg hides /home/monnier/src/emacs/nongnu/packages/emacsql-mysql/emacsql-pg
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql hides /home/monnier/src/emacs/nongnu/packages/emacsql-mysql/emacsql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite-builtin hides /home/monnier/src/emacs/nongnu/packages/emacsql-mysql/emacsql-sqlite-builtin
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite hides /home/monnier/src/emacs/nongnu/packages/emacsql-mysql/emacsql-sqlite
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-compiler hides /home/monnier/src/emacs/nongnu/packages/emacsql-mysql/emacsql-compiler
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite-module hides /home/monnier/src/emacs/nongnu/packages/emacsql-mysql/emacsql-sqlite-module
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-psql hides /home/monnier/src/emacs/nongnu/packages/emacsql-sqlite/emacsql-psql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-mysql hides /home/monnier/src/emacs/nongnu/packages/emacsql-sqlite/emacsql-mysql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-pg hides /home/monnier/src/emacs/nongnu/packages/emacsql-sqlite/emacsql-pg
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql hides /home/monnier/src/emacs/nongnu/packages/emacsql-sqlite/emacsql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite-builtin hides /home/monnier/src/emacs/nongnu/packages/emacsql-sqlite/emacsql-sqlite-builtin
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite hides /home/monnier/src/emacs/nongnu/packages/emacsql-sqlite/emacsql-sqlite
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-compiler hides /home/monnier/src/emacs/nongnu/packages/emacsql-sqlite/emacsql-compiler
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite-module hides /home/monnier/src/emacs/nongnu/packages/emacsql-sqlite/emacsql-sqlite-module
/home/monnier/src/emacs/nongnu/packages/notmuch/notmuch-autoloads hides /home/monnier/src/emacs/nongnu/packages/notmuch/emacs/notmuch-autoloads
/home/monnier/src/emacs/nongnu/packages/magit/magit-autoloads hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/magit-autoloads
/home/monnier/src/emacs/nongnu/packages/magit/git-commit-autoloads hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/git-commit-autoloads
/home/monnier/src/emacs/nongnu/packages/magit/magit-pkg hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/magit-pkg
/home/monnier/src/emacs/nongnu/packages/magit/magit-section-autoloads hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/magit-section-autoloads
/home/monnier/src/emacs/nongnu/packages/magit/git-commit-pkg hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/git-commit-pkg
/home/monnier/src/emacs/nongnu/packages/magit/magit-section-pkg hides /home/monnier/src/emacs/nongnu/packages/magit/lisp/magit-section-pkg
/home/monnier/src/emacs/nongnu/packages/pdf-tools/pdf-tools-autoloads hides /home/monnier/src/emacs/nongnu/packages/pdf-tools/lisp/pdf-tools-autoloads
/home/monnier/src/emacs/nongnu/packages/geiser-kawa/geiser-kawa-autoloads hides /home/monnier/src/emacs/nongnu/packages/geiser-kawa/elisp/geiser-kawa-autoloads
/home/monnier/src/emacs/nongnu/packages/with-editor/with-editor-autoloads hides /home/monnier/src/emacs/nongnu/packages/with-editor/lisp/with-editor-autoloads
/home/monnier/src/emacs/nongnu/packages/geiser/geiser-autoloads hides /home/monnier/src/emacs/nongnu/packages/geiser/elisp/geiser-autoloads
/home/monnier/src/emacs/nongnu/packages/subed/subed-autoloads hides /home/monnier/src/emacs/nongnu/packages/subed/subed/subed-autoloads
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-psql hides /home/monnier/src/emacs/nongnu/packages/emacsql-psql/emacsql-psql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-mysql hides /home/monnier/src/emacs/nongnu/packages/emacsql-psql/emacsql-mysql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-pg hides /home/monnier/src/emacs/nongnu/packages/emacsql-psql/emacsql-pg
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql hides /home/monnier/src/emacs/nongnu/packages/emacsql-psql/emacsql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite-builtin hides /home/monnier/src/emacs/nongnu/packages/emacsql-psql/emacsql-sqlite-builtin
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite hides /home/monnier/src/emacs/nongnu/packages/emacsql-psql/emacsql-sqlite
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-compiler hides /home/monnier/src/emacs/nongnu/packages/emacsql-psql/emacsql-compiler
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite-module hides /home/monnier/src/emacs/nongnu/packages/emacsql-psql/emacsql-sqlite-module
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-psql hides /home/monnier/src/emacs/nongnu/packages/emacsql/emacsql-psql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-mysql hides /home/monnier/src/emacs/nongnu/packages/emacsql/emacsql-mysql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-pg hides /home/monnier/src/emacs/nongnu/packages/emacsql/emacsql-pg
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql hides /home/monnier/src/emacs/nongnu/packages/emacsql/emacsql
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite-builtin hides /home/monnier/src/emacs/nongnu/packages/emacsql/emacsql-sqlite-builtin
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite hides /home/monnier/src/emacs/nongnu/packages/emacsql/emacsql-sqlite
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-compiler hides /home/monnier/src/emacs/nongnu/packages/emacsql/emacsql-compiler
/home/monnier/src/emacs/nongnu/packages/emacsql-sqlite-builtin/emacsql-sqlite-module hides /home/monnier/src/emacs/nongnu/packages/emacsql/emacsql-sqlite-module
/home/monnier/src/emacs/nongnu/packages/flx-ido/flx-ido hides /home/monnier/src/emacs/nongnu/packages/flx/flx-ido
/home/monnier/src/emacs/nongnu/packages/flx-ido/flx hides /home/monnier/src/emacs/nongnu/packages/flx/flx
/home/monnier/src/emacs/nongnu/packages/mastodon/mastodon-autoloads hides /home/monnier/src/emacs/nongnu/packages/mastodon/lisp/mastodon-autoloads
/home/monnier/src/emacs/elpa/packages/bbdb/bbdb-autoloads hides /home/monnier/src/emacs/elpa/packages/bbdb/lisp/bbdb-autoloads
/home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/org-notify hides /home/monnier/src/emacs/elpa/packages/org-notify/org-notify
/home/monnier/src/emacs/elpa/packages/srht/srht-autoloads hides /home/monnier/src/emacs/elpa/packages/srht/lisp/srht-autoloads
/home/monnier/src/emacs/elpa/packages/transient/transient-autoloads hides /home/monnier/src/emacs/elpa/packages/transient/lisp/transient-autoloads
/home/monnier/src/emacs/nongnu/packages/paredit/test hides /home/monnier/src/emacs/elpa/packages/num3-mode/test
/home/monnier/src/emacs/elpa/packages/gpr-query/gpr-query hides /home/monnier/src/emacs/elpa/packages/ada-mode/gpr-query
/home/monnier/src/emacs/elpa/packages/gpr-query/prj hides /home/monnier/src/emacs/elpa/packages/ada-mode/prj
/home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/org-contacts hides /home/monnier/src/emacs/elpa/packages/org-contacts/org-contacts
/home/monnier/src/emacs/elpa/packages/taxy-magit-section/taxy-magit-section hides /home/monnier/src/emacs/elpa/packages/taxy/taxy-magit-section
/home/monnier/src/emacs/nongnu/packages/forth-mode/build hides /home/monnier/src/emacs/elpa/packages/lentic/build
/home/monnier/src/emacs/elpa/packages/realgud-lldb/cask-install hides /home/monnier/src/emacs/elpa/packages/realgud-trepan-ni/cask-install
/home/monnier/src/emacs/nongnu/packages/mentor/url-scgi hides /home/monnier/src/emacs/elpa/packages/url-scgi/url-scgi
/home/monnier/src/emacs/elpa/packages/ada-mode/gpr-mode hides /home/monnier/src/emacs/elpa/packages/gpr-mode/gpr-mode
/home/monnier/src/emacs/elpa/packages/ada-mode/gpr-skel hides /home/monnier/src/emacs/elpa/packages/gpr-mode/gpr-skel
/home/monnier/src/emacs/elpa/packages/ada-mode/gpr-process hides /home/monnier/src/emacs/elpa/packages/gpr-mode/gpr-process
/home/monnier/src/emacs/elpa/packages/ada-mode/gpr-indent-user-options hides /home/monnier/src/emacs/elpa/packages/gpr-mode/gpr-indent-user-options
/home/monnier/src/emacs/elpa/packages/ada-mode/gnat-core hides /home/monnier/src/emacs/elpa/packages/wisi/gnat-core
/home/monnier/src/emacs/nongnu/packages/paredit/test hides /home/monnier/src/emacs/elpa/packages/easy-kill/test
/home/monnier/src/emacs/elpa/packages/use-package/use-package-tests hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-tests
/home/monnier/src/emacs/elpa/packages/use-package/use-package-delight hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-delight
/home/monnier/src/emacs/elpa/packages/use-package/use-package-diminish hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-diminish
/home/monnier/src/emacs/elpa/packages/use-package/bind-chord hides /home/monnier/src/emacs/elpa/packages/bind-key/bind-chord
/home/monnier/src/emacs/elpa/packages/use-package/use-package-lint hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-lint
/home/monnier/src/emacs/elpa/packages/use-package/use-package-core hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-core
/home/monnier/src/emacs/elpa/packages/use-package/use-package-ensure hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-ensure
/home/monnier/src/emacs/elpa/packages/use-package/use-package-chords hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-chords
/home/monnier/src/emacs/elpa/packages/use-package/bind-key hides /home/monnier/src/emacs/elpa/packages/bind-key/bind-key
/home/monnier/src/emacs/elpa/packages/use-package/use-package-chords-tests hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-chords-tests
/home/monnier/src/emacs/elpa/packages/use-package/use-package-jump hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-jump
/home/monnier/src/emacs/elpa/packages/use-package/use-package hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package
/home/monnier/src/emacs/elpa/packages/use-package/use-package-bind-key hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-bind-key
/home/monnier/src/emacs/elpa/packages/use-package/use-package-ensure-system-package hides /home/monnier/src/emacs/elpa/packages/bind-key/use-package-ensure-system-package
/home/monnier/src/emacs/elpa/packages/realgud-lldb/cask-install hides /home/monnier/src/emacs/elpa/packages/realgud/cask-install
/home/monnier/src/emacs/elpa/packages/hydra/hydra-test hides /home/monnier/src/emacs/elpa/packages/lv/hydra-test
/home/monnier/src/emacs/elpa/packages/hydra/hydra hides /home/monnier/src/emacs/elpa/packages/lv/hydra
/home/monnier/src/emacs/elpa/packages/hydra/lv hides /home/monnier/src/emacs/elpa/packages/lv/lv
/home/monnier/src/emacs/elpa/packages/hydra/hydra-ox hides /home/monnier/src/emacs/elpa/packages/lv/hydra-ox
/home/monnier/src/emacs/elpa/packages/hydra/hydra-examples hides /home/monnier/src/emacs/elpa/packages/lv/hydra-examples
/home/monnier/src/emacs/elpa/packages/embark-consult/embark-consult hides /home/monnier/src/emacs/elpa/packages/embark/embark-consult
/home/monnier/src/emacs/elpa/packages/embark-consult/embark-org hides /home/monnier/src/emacs/elpa/packages/embark/embark-org
/home/monnier/src/emacs/elpa/packages/embark-consult/embark hides /home/monnier/src/emacs/elpa/packages/embark/embark
/home/monnier/src/emacs/elpa/packages/embark-consult/avy-embark-collect hides /home/monnier/src/emacs/elpa/packages/embark/avy-embark-collect
/home/monnier/src/emacs/elpa/packages/ess/ess-autoloads hides /home/monnier/src/emacs/elpa/packages/ess/lisp/ess-autoloads
/home/monnier/src/emacs/elpa/packages/transient/lisp/transient hides /home/monnier/src/emacs/work/lisp/transient
/home/monnier/src/emacs/elpa/packages/use-package/use-package-delight hides /home/monnier/src/emacs/work/lisp/use-package/use-package-delight
/home/monnier/src/emacs/elpa/packages/use-package/use-package-diminish hides /home/monnier/src/emacs/work/lisp/use-package/use-package-diminish
/home/monnier/src/emacs/elpa/packages/use-package/use-package-lint hides /home/monnier/src/emacs/work/lisp/use-package/use-package-lint
/home/monnier/src/emacs/elpa/packages/use-package/use-package-core hides /home/monnier/src/emacs/work/lisp/use-package/use-package-core
/home/monnier/src/emacs/elpa/packages/use-package/use-package-ensure hides /home/monnier/src/emacs/work/lisp/use-package/use-package-ensure
/home/monnier/src/emacs/elpa/packages/use-package/bind-key hides /home/monnier/src/emacs/work/lisp/use-package/bind-key
/home/monnier/src/emacs/elpa/packages/use-package/use-package-jump hides /home/monnier/src/emacs/work/lisp/use-package/use-package-jump
/home/monnier/src/emacs/elpa/packages/use-package/use-package hides /home/monnier/src/emacs/work/lisp/use-package/use-package
/home/monnier/src/emacs/elpa/packages/use-package/use-package-bind-key hides /home/monnier/src/emacs/work/lisp/use-package/use-package-bind-key
/home/monnier/src/emacs/elpa/packages/use-package/use-package-ensure-system-package hides /home/monnier/src/emacs/work/lisp/use-package/use-package-ensure-system-package
/home/monnier/src/emacs/elpa/packages/eglot/eglot hides /home/monnier/src/emacs/work/lisp/progmodes/eglot
/home/monnier/src/emacs/elpa/packages/csharp-mode/csharp-mode hides /home/monnier/src/emacs/work/lisp/progmodes/csharp-mode
/home/monnier/src/emacs/nongnu/packages/lua-mode/lua-mode hides /home/monnier/src/emacs/work/lisp/progmodes/lua-mode
/home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/ob-julia hides /home/monnier/src/emacs/work/lisp/org/ob-julia
/home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/ol-man hides /home/monnier/src/emacs/work/lisp/org/ol-man
/home/monnier/src/emacs/nongnu/packages/org-contrib/lisp/ox-koma-letter hides /home/monnier/src/emacs/work/lisp/org/ox-koma-letter
/home/monnier/src/emacs/elpa/packages/cl-generic/cl-generic hides /home/monnier/src/emacs/work/lisp/emacs-lisp/cl-generic
/home/monnier/.emacs.d/elpa/hyperbole-8.0.0/set hides /home/monnier/src/emacs/work/lisp/emacs-lisp/set
/home/monnier/src/emacs/elpa/packages/nadvice/nadvice hides /home/monnier/src/emacs/work/lisp/emacs-lisp/nadvice
/home/monnier/src/emacs/elpa/packages/seq/seq hides /home/monnier/src/emacs/work/lisp/emacs-lisp/seq
/home/monnier/src/emacs/elpa/packages/cl-lib/cl-lib hides /home/monnier/src/emacs/work/lisp/emacs-lisp/cl-lib
/home/monnier/src/emacs/work/lisp/keymap hides /home/monnier/src/emacs/work/lisp/emacs-lisp/keymap
/home/monnier/src/emacs/elpa/packages/landmark/landmark hides /home/monnier/src/emacs/work/lisp/obsolete/landmark
/home/monnier/src/emacs/elpa/packages/crisp/crisp hides /home/monnier/src/emacs/work/lisp/obsolete/crisp

Features:
(shadow sort mail-extr emacsbug rect cl-print debug backtrace mule-util
autorevert org-eldoc org-element org-persist org-id org-refile avl-tree
generator oc-basic ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe
ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime
smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom
gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap
nnmail mail-source utf7 nnoo parse-time gnus-spec gnus-int gnus-range
gnus-win gnus nnheader range wid-edit ol-docview doc-view filenotify
jka-compr image-mode exif ol-bibtex bibtex iso8601 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 drupal/pcomplete pcomplete org-list
org-footnote org-faces org-entities ob-emacs-lisp ob-core ob-eval
org-cycle org-table org-keys oc org-loaddefs find-func cal-menu calendar
cal-loaddefs gitignore-mode conf-mode vc-fossil vc-backup vc-hg vc-bzr
vc-src vc-sccs vc-svn vc-cvs vc-rcs vc-got log-edit message sendmail
yank-media puny 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 vc-annotate vc-dir ewoc whitespace
executable copyright dabbrev shortdoc help-fns radix-tree smerge-mode
diff add-log log-view pcvs-util vc misearch multi-isearch vc-git
diff-mode easy-mmode vc-dispatcher filecache bug-reference raku-detect
server cl-extra time-date flymake-proc flymake project compile
text-property-search comint ansi-osc ansi-color ring noutline outline
flyspell ispell checkdoc lisp-mnt thingatpt help-mode elec-pair reveal
autoinsert savehist minibuf-eldef disp-table compact-docstrings corfu
undo-fu-autoloads inkpot-theme-autoloads keycast-autoloads
rubocop-autoloads pcmpl-args-autoloads undo-fu-session-autoloads
camera-autoloads bash-completion-autoloads flymake-popon-autoloads
drupal-mode-autoloads org-superstar-autoloads apache-mode-autoloads
dart-mode-autoloads lua-mode-autoloads evil-goggles-autoloads
monokai-theme-autoloads cyberpunk-theme-autoloads mpv-autoloads
highlight-parentheses-autoloads minibar-autoloads
multiple-cursors-autoloads dockerfile-mode-autoloads
symbol-overlay-autoloads diff-ansi-autoloads eat-autoloads
free-keys-autoloads evil-anzu-autoloads anzu-autoloads tuareg-autoloads
caml-autoloads jinja2-mode-autoloads pcre2el-autoloads paredit-autoloads
apropospriate-theme-autoloads shellcop-autoloads racket-mode-autoloads
pacmacs-autoloads gnuplot-autoloads stylus-mode-autoloads
spell-fu-autoloads nginx-mode-autoloads material-theme-autoloads
el-mock-autoloads raku-mode-autoloads denote-refs-autoloads
arduino-mode-autoloads ede/auto eieio-base guru-mode-autoloads
vc-fossil-autoloads jade-mode-autoloads zig-mode-autoloads
subatomic-theme-autoloads orgit-autoloads evil-nerd-commenter-autoloads
typescript-mode-autoloads why-this-autoloads
emacsql-sqlite-builtin-autoloads iwindow-autoloads workroom-autoloads
gnu-indent-autoloads buttercup-autoloads evil-numbers-autoloads
emacsql-mysql-autoloads git-modes-autoloads
with-simulated-input-autoloads evil-indent-plus-autoloads
jabber-autoloads emacsql-sqlite-autoloads alect-themes-autoloads
geiser-chicken-autoloads sly-autoloads gruvbox-theme-autoloads
vcomplete-autoloads editorconfig-autoloads devhelp-autoloads
auto-dim-other-buffers-autoloads org-journal-autoloads elpher-autoloads
coffee-mode-autoloads blow-autoloads scala-mode-autoloads
ample-theme-autoloads htmlize-autoloads meow-autoloads
graphql-mode-autoloads wgrep-autoloads markdown-mode-autoloads
inf-clojure-autoloads yasnippet-snippets-autoloads autothemer-autoloads
moe-theme-autoloads evil-visualstar-autoloads gc-buffers-autoloads
org-auto-tangle-autoloads gnu-apl-mode-autoloads geiser-mit-autoloads
zenburn-theme-autoloads afternoon-theme-autoloads org-mime-autoloads
xkcd-autoloads xah-fly-keys-autoloads testcover-mark-line-autoloads
geiser-stklos-autoloads proof-general-autoloads proof-site
proof-autoloads flx-ido-autoloads lorem-ipsum-autoloads
webpaste-autoloads evil-args-autoloads org-present-autoloads
org-drill-autoloads julia-mode-autoloads corfu-terminal-autoloads
cycle-at-point-autoloads gotham-theme-autoloads
tangotango-theme-autoloads telephone-line-autoloads
geiser-gambit-autoloads d-mode-autoloads ws-butler-autoloads
nasm-mode-autoloads spacemacs-theme-autoloads opam-switch-mode-autoloads
boxquote-autoloads org-tree-slide-autoloads projectile-autoloads
nix-mode-autoloads swift-mode-autoloads ujelly-theme-autoloads
geiser-gauche-autoloads swsw-autoloads idle-highlight-mode-autoloads
flymake-kondor-autoloads hl-block-mode-autoloads web-mode-autoloads
j-mode-autoloads notmuch-autoloads inf-ruby-autoloads
anti-zenburn-theme-autoloads evil-exchange-autoloads hl-column-autoloads
haskell-mode-autoloads geiser-guile-autoloads popon-autoloads
evil-lisp-state-autoloads better-jumper-autoloads annotate-autoloads
doc-show-inline-autoloads gruber-darker-theme-autoloads
tablist-autoloads rainbow-delimiters-autoloads mentor-autoloads
xml-rpc-autoloads textile-mode-autoloads bison-mode-autoloads
rfc-mode-autoloads geiser-chibi-autoloads sass-mode-autoloads
haml-mode-autoloads systemd-autoloads rust-mode-autoloads
elixir-mode-autoloads writegood-mode-autoloads cdlatex-autoloads
haskell-tng-mode-autoloads geiser-kawa-autoloads cider-autoloads
parseedn-autoloads parseclj-autoloads yaml-mode-autoloads
evil-matchit-autoloads oblivion-theme-autoloads recomplete-autoloads
forth-mode-autoloads engine-mode-autoloads scroll-on-jump-autoloads
geiser-chez-autoloads sesman-autoloads geiser-racket-autoloads
geiser-autoloads helm-autoloads popup-autoloads helm-core-autoloads
scroll-on-drag-autoloads toc-org-autoloads subed-autoloads
prescient-autoloads focus-autoloads edit-indirect-autoloads
sweeprolog-autoloads visual-fill-column-autoloads emacsql-psql-autoloads
emacsql-autoloads go-mode-autoloads dracula-theme-autoloads
solarized-theme-autoloads slime-autoloads macrostep-autoloads
kotlin-mode-autoloads flx-autoloads smartparens-autoloads
evil-iedit-state-autoloads iedit-autoloads evil-autoloads
goto-chg-autoloads crux-autoloads bind-map-autoloads
clojure-mode-autoloads idris-mode-autoloads prop-menu-autoloads
mastodon-autoloads ement-autoloads gnugo-autoloads detached-autoloads
wconf-autoloads json-mode-autoloads ada-ref-man-autoloads
memory-usage-autoloads rich-minority-autoloads
capf-autosuggest-autoloads rt-liberation-autoloads bbdb-autoloads
auto-correct-autoloads tramp-nspawn-autoloads
yasnippet-classic-snippets-autoloads elisp-benchmarks-autoloads
luwak-autoloads gnus-mock-autoloads fontaine-autoloads vdiff-autoloads
omn-mode-autoloads osc-autoloads pspp-mode-autoloads hcel-autoloads
mines-autoloads comint-mime-autoloads tiny-autoloads phps-mode-autoloads
sql-indent-autoloads ascii-art-to-unicode-autoloads agitate-autoloads
vc-hgcmd-autoloads wpuzzle-autoloads nameless-autoloads
gle-mode-autoloads crdt-autoloads perl-doc-autoloads
ahungry-theme-autoloads nano-modeline-autoloads dired-du-autoloads
adjust-parens-autoloads dired-git-info-autoloads polymode-autoloads
pyim-basedict-autoloads sxhkdrc-mode-autoloads repology-autoloads
ace-window-autoloads easy-escape-autoloads org-notify-autoloads
flymake-proselint-autoloads yasnippet-autoloads elsa-autoloads
org-translate-autoloads highlight-escape-sequences-autoloads
lmc-autoloads counsel-autoloads landmark-autoloads diffview-autoloads
validate-autoloads muse-autoloads sql-smie-autoloads
code-cells-autoloads jgraph-mode-autoloads multishell-autoloads
wcheck-mode-autoloads gcmh-autoloads marginalia-autoloads
dts-mode-autoloads ediprolog-autoloads paced-autoloads exwm-autoloads
devdocs-autoloads sokoban-autoloads valign-autoloads rnc-mode-autoloads
el-search-autoloads stream-autoloads sml-mode-autoloads
scanner-autoloads djvu-autoloads expand-region-autoloads
poke-mode-autoloads org-modern-autoloads
gnu-elpa-keyring-update-autoloads minimap-autoloads plz-autoloads
sql-beeline-autoloads cycle-quotes-autoloads lin-autoloads
buffer-expose-autoloads midi-kbd-autoloads isearch-mb-autoloads
eglot-autoloads f90-interface-browser-autoloads emacspeak-autoloads
xclip-autoloads brief-autoloads company-math-autoloads
dbus-codegen-autoloads csv-mode-autoloads chess-autoloads
svg-tag-mode-autoloads visual-filename-abbrev-autoloads mct-autoloads
rcirc-menu-autoloads beacon-autoloads org-remark-autoloads
aggressive-indent-autoloads ack-autoloads arbitools-autoloads
shelisp-autoloads gpr-query-autoloads ob-haxe-autoloads
ebdb-i18n-chn-autoloads vlf-autoloads enwc-autoloads
system-packages-autoloads docbook-autoloads notmuch-indicator-autoloads
num3-mode-autoloads notes-mode-autoloads trinary-autoloads
temp-buffer-browse-autoloads scroll-restore-autoloads
html5-schema-autoloads math-symbol-lists-autoloads poke-autoloads
gnu-elpa-autoloads gnu-elpa-features vcl-mode-autoloads
jarchive-autoloads guess-language-autoloads oauth2-autoloads
svg-clock-autoloads org-real-autoloads ol rx org-fold org-fold-core
org-compat org-version org-macs format-spec inspector-autoloads
treeview-autoloads uni-confusables-autoloads register-list-autoloads
excorporate-autoloads url-http-ntlm-autoloads url-auth
ada-mode-autoloads fsm-autoloads pq-autoloads multi-mode-autoloads
ftable-autoloads crisp-autoloads captain-autoloads cursory-autoloads
realgud-node-debug-autoloads diminish-autoloads org-edna-autoloads
aumix-mode-autoloads parsec-autoloads coterm-autoloads
uniquify-files-autoloads cape-autoloads minibuffer-header-autoloads
advice-patch-autoloads org-contacts-autoloads sed-mode-autoloads
poker-autoloads wrap-search-autoloads sisu-mode-autoloads
sketch-mode-autoloads quarter-plane-autoloads markchars-autoloads
setup-autoloads engrave-faces-autoloads pinentry-autoloads
sotlisp-autoloads ggtags-autoloads gtags-mode-autoloads
hiddenquote-autoloads which-key-autoloads minibuffer-line-autoloads
epoch-view-autoloads disk-usage-autoloads rmsbolt-autoloads
debbugs-autoloads standard-themes-autoloads vc-got-autoloads
ivy-hydra-autoloads hydra-autoloads blist-autoloads ilist-autoloads
timerfunctions-autoloads spinner-autoloads smart-yank-autoloads
transcribe-autoloads ssh-deploy-autoloads path-iterator-autoloads
all-autoloads nano-agenda-autoloads electric-spacing-autoloads
tramp-theme-autoloads relint-autoloads slime-volleyball-autoloads
ergoemacs-mode-autoloads on-screen-autoloads nlinum-autoloads
bug-hunter-autoloads org-transclusion-autoloads nhexl-mode-autoloads
auto-overlays-autoloads jumpc-autoloads zones-autoloads
shell-quasiquote-autoloads nano-theme-autoloads realgud-lldb-autoloads
boxy-headlines-autoloads zuul-autoloads tempel-autoloads
delight-autoloads darkroom-autoloads cobol-mode-autoloads
visual-fill-autoloads diff-hl-autoloads ampc-autoloads
ivy-posframe-autoloads pyim-autoloads xr-autoloads frog-menu-autoloads
taxy-magit-section-autoloads taxy-autoloads smalltalk-mode-autoloads
prefixed-core-autoloads lentic-server-autoloads lentic-autoloads
logos-autoloads dismal-autoloads gited-autoloads sql-cassandra-autoloads
kind-icon-autoloads tomelr-autoloads windower-autoloads
parser-generator-autoloads javaimp-autoloads triples-autoloads
realgud-trepan-ni-autoloads async-autoloads finder-inf
orgalist-autoloads compact-docstrings-autoloads altcaps-autoloads
tmr-autoloads bluetooth-autoloads dash-autoloads peg-autoloads
rcirc-color-autoloads objed-autoloads flylisp-autoloads
dict-tree-autoloads undo-tree-autoloads xpm-autoloads denote-autoloads
realgud-ipdb-autoloads vcard-autoloads lex-autoloads cpio-mode-autoloads
vertico-posframe-autoloads kmb-autoloads gnome-c-style-autoloads
websocket-autoloads wisitoken-grammar-mode-autoloads mmm-mode-autoloads
topspace-autoloads realgud-jdb-autoloads rainbow-mode-autoloads
js2-mode-autoloads ioccur-autoloads osm-autoloads
boxy-headings-autoloads shell-command+-autoloads url-scgi-autoloads
rbit-autoloads vertico-autoloads company-statistics-autoloads
sm-c-mode-autoloads gpr-mode-autoloads gnat-compiler-autoloads
wisi-autoloads web-server-autoloads swiper-autoloads trie-autoloads
heap-autoloads tNFA-autoloads queue-autoloads vigenere-autoloads
package-fixes-autoloads toc-mode-autoloads ebdb-gnorb-autoloads cl-seq
gnorb-autoloads ivy-explorer-autoloads buffer-env-autoloads
vc-backup-autoloads satchel-autoloads xelb-autoloads
cl-generic-autoloads easy-kill-autoloads csharp-mode-autoloads
aircon-theme-autoloads loccur-autoloads aggressive-completion-autoloads
webfeeder-autoloads boxy-autoloads nftables-mode-autoloads
consult-recoll-autoloads bnf-mode-autoloads pabbrev-autoloads
leaf-autoloads adaptive-wrap-autoloads doc-toc-autoloads ztree-autoloads
use-package-autoloads bind-key-autoloads gpastel-autoloads
cpupower-autoloads ef-themes-autoloads transient-cycles-autoloads
vundo-autoloads pulsar-autoloads context-coloring-autoloads
caps-lock-autoloads persist-autoloads realgud-node-inspect-autoloads
realgud-autoloads test-simple-autoloads loc-changes-autoloads
eldoc-eval-autoloads psgml-autoloads frame-tabs-autoloads
myers-autoloads eev-autoloads names-autoloads kiwix-autoloads
request-autoloads greenbar-autoloads rec-mode-autoloads
shen-mode-autoloads greader-autoloads orderless-autoloads
graphql-autoloads load-relative-autoloads emms-autoloads
iterators-autoloads load-dir-autoloads clipboard-collector-autoloads
hook-helpers-autoloads other-frame-window-autoloads
company-ebdb-autoloads info ebdb-autoloads company-autoloads
assess-autoloads m-buffer-autoloads seq-autoloads ivy-avy-autoloads
avy-autoloads ivy-autoloads corfu-doc-autoloads corfu-autoloads
posframe-autoloads filladapt-autoloads svg-lib-autoloads metar-autoloads
cl-lib-autoloads lv-autoloads embark-consult-autoloads consult-autoloads
compat-autoloads nadvice-autoloads embark-autoloads windresize-autoloads
ess-autoloads ustar-withsub-autoloads rudel-autoloads rudel-backend
warnings icons 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 eieio eieio-core
cl-macs gv pcase password-cache json subr-x map byte-opt 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 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 button loaddefs theme-loaddefs
oclosure cl-preloaded 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 xinput2 x multi-tty make-network-process emacs)

Memory information:
((conses 16 446004 226855) (symbols 48 32264 176) (strings 32 139470 29573)
 (string-bytes 1 4602266) (vectors 16 70511) (vector-slots 8 1801395 281279)
 (floats 8 514 350) (intervals 56 20148 0) (buffers 984 43))






^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-03 19:05 bug#60527: 30.0.50; Typing SPC in a minibuffer with completion Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-01-03 20:14 ` Drew Adams
  2023-01-04 18:17   ` Jean Louis
  2023-01-03 22:50 ` Dmitry Gutov
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 14+ messages in thread
From: Drew Adams @ 2023-01-03 20:14 UTC (permalink / raw)
  To: Stefan Monnier, 60527@debbugs.gnu.org

> I wish the SPC binding to `minibuffer-complete-word` would go because it
> makes it hard to type SPC in the minibuffer whenever there's completion.

Finally.  Bravo - bonne initiative !

> Typing a SPC in a "minibuffer with completion" can be needed when the
> things we want to complete contains a SPC character (e.g. file names,
> which is why we disable that SPC binding when completing file names),
> but also when using completion styles like `orderless` which make the
> use of a SPC character to specify how to select the
> completion candidates.
> 
> So my favorite option is indeed to simply remove this binding.
> Those few users who like it and use it (probably long-time users of
> Emacs) could easily get it back with:
> 
>     (define-key minibuffer-local-completion-map
>                 " " 'minibuffer-complete-word)
> 
> Another option is to change `minibuffer-complete-word` so that instead
> of beeping "No match", it inserts a SPC when there's no completion and
> `require-match` is nil (after checking that the command was invoked via
> SPC).
> 
> Yet another option would be to let callers of `completing-read` indicate
> that it's likely the users will sometimes want to type a SPC character
> for this specific minibuffer input (i.e. `completing-read` would then
> use a map like `minibuffer-local-filename-completion-map`).
> 
> Currently packages which want to use `completing-read` to let the users
> enter a string that will often contain spaces are reduced the either
> telling their users "Add this `define-key` thingy in your .emacs because
> the defaults suck" or having to use a `minibuffer-with-setup-hook`
> workaround that forcefully rebinds SPC during that minibuffer session,
> which may be the wrong thing to do if SPC was binding to something else
> than `minibuffer-complete-word`.
> Both of those options are undesirable, IMO.  We should instead improve
> the defaults to make such recommendations and workarounds unnecessary.

FWIW, Icicles removes `SPC' for word completion by
default (since 2005, i.e., nearly the beginning).
It puts word completion on a different key
(`M-SPC', by default).

____

 icicle-word-completion-keys is a variable defined in `icicles-opt.el'.

 Its value is ([(meta 32)])

 Documentation:

 Key sequences to use for minibuffer prefix word completion.
 A list of values that each has the same form as a key-sequence
 argument to `define-key'.  It is a list mainly in order to accommodate
 different keyboards.

 Because file names, in particular, can contain spaces, some people
 prefer such a key sequence to be non-printable, such as `M-SPC'.  This
 is the default value in Icicles.

 But because the spacebar is such a convenient key to hit, other people
 prefer to use `SPC' for word completion, and to insert a space some
 other way.  The usual way to do that is via `C-q SPC', but command
 `icicle-insert-a-space' is provided for convenience.  You can bind
 this to `M-SPC', for instance, in `minibuffer-local-completion-map',
 `minibuffer-local-completion-map', and
 `minibuffer-local-must-match-map'.

 You can customize this variable.
____






^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-03 19:05 bug#60527: 30.0.50; Typing SPC in a minibuffer with completion Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-01-03 20:14 ` Drew Adams
@ 2023-01-03 22:50 ` Dmitry Gutov
  2023-01-04  3:29   ` Eli Zaretskii
  2023-01-04  7:09 ` Kévin Le Gouguec
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 14+ messages in thread
From: Dmitry Gutov @ 2023-01-03 22:50 UTC (permalink / raw)
  To: Stefan Monnier, 60527

On 03/01/2023 21:05, Stefan Monnier via Bug reports for GNU Emacs, the 
Swiss army knife of text editors wrote:
> So my favorite option is indeed to simply remove this binding.
> Those few users who like it and use it (probably long-time users of
> Emacs) could easily get it back with:
> 
>      (define-key minibuffer-local-completion-map
>                  " " 'minibuffer-complete-word)

Yes, please.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-03 22:50 ` Dmitry Gutov
@ 2023-01-04  3:29   ` Eli Zaretskii
  2023-01-04 12:05     ` Dmitry Gutov
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2023-01-04  3:29 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 60527, monnier

> Date: Wed, 4 Jan 2023 00:50:10 +0200
> From: Dmitry Gutov <dgutov@yandex.ru>
> 
> On 03/01/2023 21:05, Stefan Monnier via Bug reports for GNU Emacs, the 
> Swiss army knife of text editors wrote:
> > So my favorite option is indeed to simply remove this binding.
> > Those few users who like it and use it (probably long-time users of
> > Emacs) could easily get it back with:
> > 
> >      (define-key minibuffer-local-completion-map
> >                  " " 'minibuffer-complete-word)
> 
> Yes, please.

My preference is for the more-compatible alternatives.  It is
notoriously non-trivial to figure out minibuffer bindings, so
expecting users to do the above is not very friendly.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-03 19:05 bug#60527: 30.0.50; Typing SPC in a minibuffer with completion Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-01-03 20:14 ` Drew Adams
  2023-01-03 22:50 ` Dmitry Gutov
@ 2023-01-04  7:09 ` Kévin Le Gouguec
  2023-01-04 18:14 ` Jean Louis
  2023-01-04 19:11 ` Jim Porter
  4 siblings, 0 replies; 14+ messages in thread
From: Kévin Le Gouguec @ 2023-01-04  7:09 UTC (permalink / raw)
  To: 60527; +Cc: Stefan Monnier

Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@gnu.org> writes:

> Yet another option would be to let callers of `completing-read` indicate
> that it's likely the users will sometimes want to type a SPC character
> for this specific minibuffer input (i.e. `completing-read` would then
> use a map like `minibuffer-local-filename-completion-map`).

Thinking out loud, not sure how reasonable that idea is: something akin
to the *-completion-ignore-case options?  E.g. *-completion-literal-spc?
(Or *-completion-literal-keys)

> Currently packages which want to use `completing-read` to let the users
> enter a string that will often contain spaces are reduced the either
> telling their users "Add this `define-key` thingy in your .emacs because
> the defaults suck" or having to use a `minibuffer-with-setup-hook`
> workaround that forcefully rebinds SPC during that minibuffer session,
> which may be the wrong thing to do if SPC was binding to something else
> than `minibuffer-complete-word`.

With the suggestion above, packages could define their own
*-completion-whatever-its-named option, that may default to letting SPC
self-insert; like ebdb defining its own ebdb-completion-ignore-case that
defaults to t.

Users could then set those options, and possibly set a bare defvar à la
completion-ignore-case for those who feel very strongly that SPC has no
business completing.


(Full disclosure: I find SPC completion somewhat useful, especially for
Lisp symbols, because pounding on SPC is much, much easier than reaching
for hyphens on AZERTY)





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-04  3:29   ` Eli Zaretskii
@ 2023-01-04 12:05     ` Dmitry Gutov
  2023-01-04 14:47       ` Eli Zaretskii
  0 siblings, 1 reply; 14+ messages in thread
From: Dmitry Gutov @ 2023-01-04 12:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 60527, monnier

On 04/01/2023 05:29, Eli Zaretskii wrote:
> My preference is for the more-compatible alternatives.  It is
> notoriously non-trivial to figure out minibuffer bindings, so
> expecting users to do the above is not very friendly.

It's the same for the users who are bothered by this behavior: I stumble 
over it with certain regularity, but still haven't disabled the SPC 
binding in my init script.

Those those dislike the change, however, will read the necessary 
invocation in NEWS.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-04 12:05     ` Dmitry Gutov
@ 2023-01-04 14:47       ` Eli Zaretskii
  2023-01-04 17:00         ` Dmitry Gutov
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2023-01-04 14:47 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 60527, monnier

> Date: Wed, 4 Jan 2023 14:05:37 +0200
> Cc: 60527@debbugs.gnu.org, monnier@iro.umontreal.ca
> From: Dmitry Gutov <dgutov@yandex.ru>
> 
> On 04/01/2023 05:29, Eli Zaretskii wrote:
> > My preference is for the more-compatible alternatives.  It is
> > notoriously non-trivial to figure out minibuffer bindings, so
> > expecting users to do the above is not very friendly.
> 
> It's the same for the users who are bothered by this behavior: I stumble 
> over it with certain regularity, but still haven't disabled the SPC 
> binding in my init script.

I didn't say I'm against any change in this behavior.  Stefan proposed
at least two alternatives that produce basically the same user-facing
behavior when SPC is supposed to be interpreted verbatim, so they come
very close to the alternative that you like better, but still stop
short of breaking someone's muscle memory.

> Those those dislike the change, however, will read the necessary 
> invocation in NEWS.

I think you greatly overestimate the number of people who read NEWS,
even when they have some reason to look up a specific change there.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-04 14:47       ` Eli Zaretskii
@ 2023-01-04 17:00         ` Dmitry Gutov
  2023-01-04 17:16           ` Eli Zaretskii
  0 siblings, 1 reply; 14+ messages in thread
From: Dmitry Gutov @ 2023-01-04 17:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 60527, monnier

On 04/01/2023 16:47, Eli Zaretskii wrote:
>> Date: Wed, 4 Jan 2023 14:05:37 +0200
>> Cc: 60527@debbugs.gnu.org, monnier@iro.umontreal.ca
>> From: Dmitry Gutov <dgutov@yandex.ru>
>>
>> On 04/01/2023 05:29, Eli Zaretskii wrote:
>>> My preference is for the more-compatible alternatives.  It is
>>> notoriously non-trivial to figure out minibuffer bindings, so
>>> expecting users to do the above is not very friendly.
>>
>> It's the same for the users who are bothered by this behavior: I stumble
>> over it with certain regularity, but still haven't disabled the SPC
>> binding in my init script.
> 
> I didn't say I'm against any change in this behavior.  Stefan proposed
> at least two alternatives that produce basically the same user-facing
> behavior when SPC is supposed to be interpreted verbatim, so they come
> very close to the alternative that you like better, but still stop
> short of breaking someone's muscle memory.

The first alternative provides sometimes the same, and sometimes 
different behavior. In particular, when there are valid completions, 
"SPC" would still perform completion -- something that I don't think 
many users expect. Especially novices.

The second alternative is even more involved, requiring 
'completing-read' callers to decide in advance whether the users will 
want to have SPC insert SPC or perform completion. That's still odd and 
seems like crossing the proper abstraction layers. The caller might not 
know the collection contains spaces. And this approach can break 
established muscle memory just the same, as soon as enough callers start 
to make this choice.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-04 17:00         ` Dmitry Gutov
@ 2023-01-04 17:16           ` Eli Zaretskii
  2023-01-04 17:45             ` Dmitry Gutov
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2023-01-04 17:16 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 60527, monnier

> Date: Wed, 4 Jan 2023 19:00:44 +0200
> Cc: 60527@debbugs.gnu.org, monnier@iro.umontreal.ca
> From: Dmitry Gutov <dgutov@yandex.ru>
> 
> On 04/01/2023 16:47, Eli Zaretskii wrote:
> > I didn't say I'm against any change in this behavior.  Stefan proposed
> > at least two alternatives that produce basically the same user-facing
> > behavior when SPC is supposed to be interpreted verbatim, so they come
> > very close to the alternative that you like better, but still stop
> > short of breaking someone's muscle memory.
> 
> The first alternative provides sometimes the same, and sometimes 
> different behavior. In particular, when there are valid completions, 
> "SPC" would still perform completion -- something that I don't think 
> many users expect. Especially novices.
> 
> The second alternative is even more involved, requiring 
> 'completing-read' callers to decide in advance whether the users will 
> want to have SPC insert SPC or perform completion. That's still odd and 
> seems like crossing the proper abstraction layers. The caller might not 
> know the collection contains spaces. And this approach can break 
> established muscle memory just the same, as soon as enough callers start 
> to make this choice.

I understand that just rebinding SPC is much easier.  But we are
supposed to consider other factors, not just the ease of
implementation.  And I'm not afraid of code that is somewhat inelegant
and even breaks abstractions, if we provide better, friendlier UI
which breaks less habits.  Many Emacs's abstractions leak from many
holes anyway.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-04 17:16           ` Eli Zaretskii
@ 2023-01-04 17:45             ` Dmitry Gutov
  2023-01-04 18:37               ` Eli Zaretskii
  0 siblings, 1 reply; 14+ messages in thread
From: Dmitry Gutov @ 2023-01-04 17:45 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 60527, monnier

On 04/01/2023 19:16, Eli Zaretskii wrote:
>> Date: Wed, 4 Jan 2023 19:00:44 +0200
>> Cc:60527@debbugs.gnu.org,monnier@iro.umontreal.ca
>> From: Dmitry Gutov<dgutov@yandex.ru>
>>
>> On 04/01/2023 16:47, Eli Zaretskii wrote:
>>> I didn't say I'm against any change in this behavior.  Stefan proposed
>>> at least two alternatives that produce basically the same user-facing
>>> behavior when SPC is supposed to be interpreted verbatim, so they come
>>> very close to the alternative that you like better, but still stop
>>> short of breaking someone's muscle memory.
>> The first alternative provides sometimes the same, and sometimes
>> different behavior. In particular, when there are valid completions,
>> "SPC" would still perform completion -- something that I don't think
>> many users expect. Especially novices.
>>
>> The second alternative is even more involved, requiring
>> 'completing-read' callers to decide in advance whether the users will
>> want to have SPC insert SPC or perform completion. That's still odd and
>> seems like crossing the proper abstraction layers. The caller might not
>> know the collection contains spaces. And this approach can break
>> established muscle memory just the same, as soon as enough callers start
>> to make this choice.
> I understand that just rebinding SPC is much easier.  But we are
> supposed to consider other factors, not just the ease of
> implementation.  And I'm not afraid of code that is somewhat inelegant
> and even breaks abstractions, if we provide better, friendlier UI
> which breaks less habits.

Using proper abstractions is what can lead to predictable, better UI. 
And vice versa -- patching through special cases upon special cases 
leads to less predictable, worse UI.

I wasn't talking about the ease of implementation, really.

 > Many Emacs's abstractions leak from many
 > holes anyway.

That's more of a problem for a UI which is used in many, many places and 
in different contexts.





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-03 19:05 bug#60527: 30.0.50; Typing SPC in a minibuffer with completion Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
                   ` (2 preceding siblings ...)
  2023-01-04  7:09 ` Kévin Le Gouguec
@ 2023-01-04 18:14 ` Jean Louis
  2023-01-04 19:11 ` Jim Porter
  4 siblings, 0 replies; 14+ messages in thread
From: Jean Louis @ 2023-01-04 18:14 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 60527

* Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors <bug-gnu-emacs@gnu.org> [2023-01-03 22:07]:
> I wish the SPC binding to `minibuffer-complete-word` would go because it
> makes it hard to type SPC in the minibuffer whenever there's completion.
> 
> Typing a SPC in a "minibuffer with completion" can be needed when the
> things we want to complete contains a SPC character (e.g. file names,
> which is why we disable that SPC binding when completing file names),
> but also when using completion styles like `orderless` which make the
> use of a SPC character to specify how to select the
> completion candidates.
> 
> So my favorite option is indeed to simply remove this binding.
> Those few users who like it and use it (probably long-time users of
> Emacs) could easily get it back with:

Thanks. It will help in my packages as I have completion which I need
to be editable by user, such as header, footer specification and
inserting space require knowing how to use `C-q SPC', not a big deal,
but it will help in usability.

For completion I use TAB, instead of space. Space goes slow word by
word, but I did not find use for it yet.

--
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-03 20:14 ` Drew Adams
@ 2023-01-04 18:17   ` Jean Louis
  0 siblings, 0 replies; 14+ messages in thread
From: Jean Louis @ 2023-01-04 18:17 UTC (permalink / raw)
  To: Drew Adams; +Cc: 60527@debbugs.gnu.org, Stefan Monnier

* Drew Adams <drew.adams@oracle.com> [2023-01-03 23:17]:
> FWIW, Icicles removes `SPC' for word completion by
> default (since 2005, i.e., nearly the beginning).
> It puts word completion on a different key
> (`M-SPC', by default).

I would prefer this approach, though I don't find completing by word
useful.

Do you have some example where word by word would be useful?

--
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-04 17:45             ` Dmitry Gutov
@ 2023-01-04 18:37               ` Eli Zaretskii
  0 siblings, 0 replies; 14+ messages in thread
From: Eli Zaretskii @ 2023-01-04 18:37 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 60527, monnier

> Date: Wed, 4 Jan 2023 19:45:45 +0200
> Cc: 60527@debbugs.gnu.org, monnier@iro.umontreal.ca
> From: Dmitry Gutov <dgutov@yandex.ru>
> 
> > I understand that just rebinding SPC is much easier.  But we are
> > supposed to consider other factors, not just the ease of
> > implementation.  And I'm not afraid of code that is somewhat inelegant
> > and even breaks abstractions, if we provide better, friendlier UI
> > which breaks less habits.
> 
> Using proper abstractions is what can lead to predictable, better UI. 
> And vice versa -- patching through special cases upon special cases 
> leads to less predictable, worse UI.
> 
> I wasn't talking about the ease of implementation, really.

Not necessarily.

And let's stop here and agree to disagree about this, okay?





^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#60527: 30.0.50; Typing SPC in a minibuffer with completion
  2023-01-03 19:05 bug#60527: 30.0.50; Typing SPC in a minibuffer with completion Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
                   ` (3 preceding siblings ...)
  2023-01-04 18:14 ` Jean Louis
@ 2023-01-04 19:11 ` Jim Porter
  4 siblings, 0 replies; 14+ messages in thread
From: Jim Porter @ 2023-01-04 19:11 UTC (permalink / raw)
  To: Stefan Monnier, 60527

On 1/3/2023 11:05 AM, Stefan Monnier via Bug reports for GNU Emacs, the 
Swiss army knife of text editors wrote:
> I wish the SPC binding to `minibuffer-complete-word` would go because it
> makes it hard to type SPC in the minibuffer whenever there's completion.
[snip]
> So my favorite option is indeed to simply remove this binding.
> Those few users who like it and use it (probably long-time users of
> Emacs) could easily get it back with:
> 
>      (define-key minibuffer-local-completion-map
>                  " " 'minibuffer-complete-word)

This would be my preference too, so long as there were an easy way for 
people who like the old behavior to get it back. (Would it be sufficient 
to just put that snippet in a NEWS entry?)

> Another option is to change `minibuffer-complete-word` so that instead
> of beeping "No match", it inserts a SPC when there's no completion and
> `require-match` is nil (after checking that the command was invoked via
> SPC).

I'm not sure about this one; if it were hard to predict ahead of time 
what SPC will do, then it could be even less usable. For example, if I 
want to insert a literal space, I might press SPC only to find that it 
performs completion. So then I have to undo and press "C-q SPC" to get 
what I want.

> Yet another option would be to let callers of `completing-read` indicate
> that it's likely the users will sometimes want to type a SPC character
> for this specific minibuffer input (i.e. `completing-read` would then
> use a map like `minibuffer-local-filename-completion-map`).

If this would work, it seems like a good compromise. But do the callers 
know for sure how this should be set? If they got it wrong, then it 
might have the effect of annoying both users who like the current 
binding and those who don't. (Similar to the above, there's not much 
worse than a button that *sometimes* does what you want.)

As yet another option, how about doing something like the first one, but 
gate it behind a defcustom? That provides an easy way for users to get 
the behavior they want, without having to deal with figuring out 
minibuffer bindings. (If we had a time machine, the defcustom probably 
wouldn't be necessary, but I think it makes sense to provide an easy 
escape hatch if changing some long-standing feature.)





^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2023-01-04 19:11 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-03 19:05 bug#60527: 30.0.50; Typing SPC in a minibuffer with completion Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-01-03 20:14 ` Drew Adams
2023-01-04 18:17   ` Jean Louis
2023-01-03 22:50 ` Dmitry Gutov
2023-01-04  3:29   ` Eli Zaretskii
2023-01-04 12:05     ` Dmitry Gutov
2023-01-04 14:47       ` Eli Zaretskii
2023-01-04 17:00         ` Dmitry Gutov
2023-01-04 17:16           ` Eli Zaretskii
2023-01-04 17:45             ` Dmitry Gutov
2023-01-04 18:37               ` Eli Zaretskii
2023-01-04  7:09 ` Kévin Le Gouguec
2023-01-04 18:14 ` Jean Louis
2023-01-04 19:11 ` Jim Porter

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).