unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#72762: 30.0.60; Incorrect rendering of the completion-preview mode
@ 2024-08-22 17:29 the_wurfkreuz via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-08-22 18:05 ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: the_wurfkreuz via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-08-22 17:29 UTC (permalink / raw)
  To: 72762

[-- Attachment #1: Type: text/plain, Size: 24783 bytes --]

Apparently, the completion-preview-mode rendering doesn't work correctly with minibuffer messages (i don't know what they're called exactly).

To see the problem, completion-preview-mode should show its completion suggestion simultaneously with any minibuffer messages like "[No Match]" or "[Incomplete Command]" and so on.

However, the only sane, practical way I found to recreate this situation involves using evil-mode's command minibuffer. The idea is to load Emacs with evil-mode, execute the `evil-ex` command, and then start typing any interactive command while `completion-preview-mode` is active for minibuffers.

Reproduction:
- Load emacs with the evil-mode package.
- Activate evil-mode and completion-preview-mode.
- Evaluate the hook '(add-hook 'minibuffer-mode-hook #'completion-preview-mode)'.
- Execute 'evil-ex'.
- Try to write any long command to trigger the preview completion.
[image.png]

-------------------------------------------------------------------------------------------------------

In GNU Emacs 30.0.60 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.43, cairo version 1.18.0) of 2024-08-20 built on archlinux
Repository revision: fc7581ae2ee9db1e3189b76c66be9cd13f72f004
Repository branch: emacs-30
Windowing system distributor 'The X.Org Foundation', version 11.0.12401002
System Description: Arch Linux

Configured using:
'configure --with-tree-sitter --with-gif --with-png --with-jpeg
--with-rsvg --with-tiff --with-imagemagick --with-x-toolkit=gtk3
--with-xwidgets'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG LCMS2 LIBOTF 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 XWIDGETS GTK3 ZLIB

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

Major mode: Org

Minor modes in effect:
windmove-mode: t
org-indent-mode: t
savehist-mode: t
org-bullets-mode: t
pyvenv-mode: t
shackle-mode: t
popper-echo-mode: t
popper-mode: t
eshell-syntax-highlighting-global-mode: t
global-git-commit-mode: t
magit-auto-revert-mode: t
marginalia-mode: t
vertico-mode: t
global-fish-completion-mode: t
fish-completion-mode: t
corfu-popupinfo-mode: t
corfu-history-mode: t
corfu-echo-mode: t
global-corfu-mode: t
corfu-mode: t
yas-global-mode: t
yas-minor-mode: t
which-key-mode: t
dired-async-mode: t
server-mode: t
global-treesit-auto-mode: t
global-evil-collection-unimpaired-mode: t
evil-collection-unimpaired-mode: t
global-evil-surround-mode: t
evil-surround-mode: t
evil-mode: t
evil-local-mode: t
global-undo-tree-mode: t
undo-tree-mode: t
global-auto-revert-mode: t
save-place-mode: t
electric-pair-mode: t
recentf-mode: t
global-display-line-numbers-mode: t
display-line-numbers-mode: t
override-global-mode: t
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
prettify-symbols-mode: t
tab-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
minibuffer-regexp-mode: t
line-number-mode: t
auto-fill-function: #[128 \304\300\301#\207 [yas--auto-fill org-auto-fill-function :around nil apply] 5 advice]
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t

Load-path shadows:
/home/wurfkreuz/.emacs.d/elpa/transient-20240819.1250/transient hides /home/wurfkreuz/.source/emacs/lisp/transient
~/.source/org-mode/lisp/org hides /home/wurfkreuz/.source/emacs/lisp/org/org
~/.source/org-mode/lisp/ox-publish hides /home/wurfkreuz/.source/emacs/lisp/org/ox-publish
~/.source/org-mode/lisp/ox-odt hides /home/wurfkreuz/.source/emacs/lisp/org/ox-odt
~/.source/org-mode/lisp/ox-org hides /home/wurfkreuz/.source/emacs/lisp/org/ox-org
~/.source/org-mode/lisp/ox-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ox-latex
~/.source/org-mode/lisp/ox-md hides /home/wurfkreuz/.source/emacs/lisp/org/ox-md
~/.source/org-mode/lisp/ox-man hides /home/wurfkreuz/.source/emacs/lisp/org/ox-man
~/.source/org-mode/lisp/ox-html hides /home/wurfkreuz/.source/emacs/lisp/org/ox-html
~/.source/org-mode/lisp/ox-icalendar hides /home/wurfkreuz/.source/emacs/lisp/org/ox-icalendar
~/.source/org-mode/lisp/ox-koma-letter hides /home/wurfkreuz/.source/emacs/lisp/org/ox-koma-letter
~/.source/org-mode/lisp/ox-beamer hides /home/wurfkreuz/.source/emacs/lisp/org/ox-beamer
~/.source/org-mode/lisp/ox-ascii hides /home/wurfkreuz/.source/emacs/lisp/org/ox-ascii
~/.source/org-mode/lisp/org-timer hides /home/wurfkreuz/.source/emacs/lisp/org/org-timer
~/.source/org-mode/lisp/org-tempo hides /home/wurfkreuz/.source/emacs/lisp/org/org-tempo
~/.source/org-mode/lisp/org-refile hides /home/wurfkreuz/.source/emacs/lisp/org/org-refile
~/.source/org-mode/lisp/org-protocol hides /home/wurfkreuz/.source/emacs/lisp/org/org-protocol
~/.source/org-mode/lisp/org-plot hides /home/wurfkreuz/.source/emacs/lisp/org/org-plot
~/.source/org-mode/lisp/org-persist hides /home/wurfkreuz/.source/emacs/lisp/org/org-persist
~/.source/org-mode/lisp/org-table hides /home/wurfkreuz/.source/emacs/lisp/org/org-table
~/.source/org-mode/lisp/org-num hides /home/wurfkreuz/.source/emacs/lisp/org/org-num
~/.source/org-mode/lisp/org-mouse hides /home/wurfkreuz/.source/emacs/lisp/org/org-mouse
~/.source/org-mode/lisp/org-src hides /home/wurfkreuz/.source/emacs/lisp/org/org-src
~/.source/org-mode/lisp/org-mobile hides /home/wurfkreuz/.source/emacs/lisp/org/org-mobile
~/.source/org-mode/lisp/org-lint hides /home/wurfkreuz/.source/emacs/lisp/org/org-lint
~/.source/org-mode/lisp/org-inlinetask hides /home/wurfkreuz/.source/emacs/lisp/org/org-inlinetask
~/.source/org-mode/lisp/org-habit hides /home/wurfkreuz/.source/emacs/lisp/org/org-habit
~/.source/org-mode/lisp/org-pcomplete hides /home/wurfkreuz/.source/emacs/lisp/org/org-pcomplete
~/.source/org-mode/lisp/org-indent hides /home/wurfkreuz/.source/emacs/lisp/org/org-indent
~/.source/org-mode/lisp/org-goto hides /home/wurfkreuz/.source/emacs/lisp/org/org-goto
~/.source/org-mode/lisp/org-id hides /home/wurfkreuz/.source/emacs/lisp/org/org-id
~/.source/org-mode/lisp/org-feed hides /home/wurfkreuz/.source/emacs/lisp/org/org-feed
~/.source/org-mode/lisp/org-macs hides /home/wurfkreuz/.source/emacs/lisp/org/org-macs
~/.source/org-mode/lisp/org-list hides /home/wurfkreuz/.source/emacs/lisp/org/org-list
~/.source/org-mode/lisp/org-loaddefs hides /home/wurfkreuz/.source/emacs/lisp/org/org-loaddefs
~/.source/org-mode/lisp/org-keys hides /home/wurfkreuz/.source/emacs/lisp/org/org-keys
~/.source/org-mode/lisp/org-footnote hides /home/wurfkreuz/.source/emacs/lisp/org/org-footnote
~/.source/org-mode/lisp/org-fold-core hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold-core
~/.source/org-mode/lisp/org-fold hides /home/wurfkreuz/.source/emacs/lisp/org/org-fold
~/.source/org-mode/lisp/org-datetree hides /home/wurfkreuz/.source/emacs/lisp/org/org-datetree
~/.source/org-mode/lisp/org-ctags hides /home/wurfkreuz/.source/emacs/lisp/org/org-ctags
~/.source/org-mode/lisp/org-agenda hides /home/wurfkreuz/.source/emacs/lisp/org/org-agenda
~/.source/org-mode/lisp/org-colview hides /home/wurfkreuz/.source/emacs/lisp/org/org-colview
~/.source/org-mode/lisp/org-attach hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach
~/.source/org-mode/lisp/org-faces hides /home/wurfkreuz/.source/emacs/lisp/org/org-faces
~/.source/org-mode/lisp/org-capture hides /home/wurfkreuz/.source/emacs/lisp/org/org-capture
~/.source/org-mode/lisp/org-clock hides /home/wurfkreuz/.source/emacs/lisp/org/org-clock
~/.source/org-mode/lisp/org-element-ast hides /home/wurfkreuz/.source/emacs/lisp/org/org-element-ast
~/.source/org-mode/lisp/org-entities hides /home/wurfkreuz/.source/emacs/lisp/org/org-entities
~/.source/org-mode/lisp/org-attach-git hides /home/wurfkreuz/.source/emacs/lisp/org/org-attach-git
~/.source/org-mode/lisp/org-duration hides /home/wurfkreuz/.source/emacs/lisp/org/org-duration
~/.source/org-mode/lisp/org-archive hides /home/wurfkreuz/.source/emacs/lisp/org/org-archive
~/.source/org-mode/lisp/org-cycle hides /home/wurfkreuz/.source/emacs/lisp/org/org-cycle
~/.source/org-mode/lisp/org-compat hides /home/wurfkreuz/.source/emacs/lisp/org/org-compat
~/.source/org-mode/lisp/org-crypt hides /home/wurfkreuz/.source/emacs/lisp/org/org-crypt
~/.source/org-mode/lisp/ol-gnus hides /home/wurfkreuz/.source/emacs/lisp/org/ol-gnus
~/.source/org-mode/lisp/ol-w3m hides /home/wurfkreuz/.source/emacs/lisp/org/ol-w3m
~/.source/org-mode/lisp/ol-rmail hides /home/wurfkreuz/.source/emacs/lisp/org/ol-rmail
~/.source/org-mode/lisp/ol-mhe hides /home/wurfkreuz/.source/emacs/lisp/org/ol-mhe
~/.source/org-mode/lisp/ol-man hides /home/wurfkreuz/.source/emacs/lisp/org/ol-man
~/.source/org-mode/lisp/ol-eww hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eww
~/.source/org-mode/lisp/ol-irc hides /home/wurfkreuz/.source/emacs/lisp/org/ol-irc
~/.source/org-mode/lisp/ol-info hides /home/wurfkreuz/.source/emacs/lisp/org/ol-info
~/.source/org-mode/lisp/ol-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ol-eshell
~/.source/org-mode/lisp/ol-doi hides /home/wurfkreuz/.source/emacs/lisp/org/ol-doi
~/.source/org-mode/lisp/ol-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bibtex
~/.source/org-mode/lisp/ol-docview hides /home/wurfkreuz/.source/emacs/lisp/org/ol-docview
~/.source/org-mode/lisp/ob hides /home/wurfkreuz/.source/emacs/lisp/org/ob
~/.source/org-mode/lisp/ol-bbdb hides /home/wurfkreuz/.source/emacs/lisp/org/ol-bbdb
~/.source/org-mode/lisp/oc-csl hides /home/wurfkreuz/.source/emacs/lisp/org/oc-csl
~/.source/org-mode/lisp/oc-natbib hides /home/wurfkreuz/.source/emacs/lisp/org/oc-natbib
~/.source/org-mode/lisp/ob-tangle hides /home/wurfkreuz/.source/emacs/lisp/org/ob-tangle
~/.source/org-mode/lisp/oc-biblatex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-biblatex
~/.source/org-mode/lisp/oc-basic hides /home/wurfkreuz/.source/emacs/lisp/org/oc-basic
~/.source/org-mode/lisp/oc-bibtex hides /home/wurfkreuz/.source/emacs/lisp/org/oc-bibtex
~/.source/org-mode/lisp/ob-sql hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sql
~/.source/org-mode/lisp/ob-sqlite hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sqlite
~/.source/org-mode/lisp/ob-table hides /home/wurfkreuz/.source/emacs/lisp/org/ob-table
~/.source/org-mode/lisp/ob-sed hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sed
~/.source/org-mode/lisp/ob-shell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-shell
~/.source/org-mode/lisp/ob-fortran hides /home/wurfkreuz/.source/emacs/lisp/org/ob-fortran
~/.source/org-mode/lisp/ob-screen hides /home/wurfkreuz/.source/emacs/lisp/org/ob-screen
~/.source/org-mode/lisp/ob-ruby hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ruby
~/.source/org-mode/lisp/ob-scheme hides /home/wurfkreuz/.source/emacs/lisp/org/ob-scheme
~/.source/org-mode/lisp/ob-python hides /home/wurfkreuz/.source/emacs/lisp/org/ob-python
~/.source/org-mode/lisp/ob-sass hides /home/wurfkreuz/.source/emacs/lisp/org/ob-sass
~/.source/org-mode/lisp/ob-ref hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ref
~/.source/org-mode/lisp/ob-plantuml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-plantuml
~/.source/org-mode/lisp/ob-perl hides /home/wurfkreuz/.source/emacs/lisp/org/ob-perl
~/.source/org-mode/lisp/ob-processing hides /home/wurfkreuz/.source/emacs/lisp/org/ob-processing
~/.source/org-mode/lisp/ob-org hides /home/wurfkreuz/.source/emacs/lisp/org/ob-org
~/.source/org-mode/lisp/ob-octave hides /home/wurfkreuz/.source/emacs/lisp/org/ob-octave
~/.source/org-mode/lisp/ob-ocaml hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ocaml
~/.source/org-mode/lisp/ob-gnuplot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-gnuplot
~/.source/org-mode/lisp/ob-lua hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lua
~/.source/org-mode/lisp/ob-maxima hides /home/wurfkreuz/.source/emacs/lisp/org/ob-maxima
~/.source/org-mode/lisp/ob-makefile hides /home/wurfkreuz/.source/emacs/lisp/org/ob-makefile
~/.source/org-mode/lisp/ob-matlab hides /home/wurfkreuz/.source/emacs/lisp/org/ob-matlab
~/.source/org-mode/lisp/ob-C hides /home/wurfkreuz/.source/emacs/lisp/org/ob-C
~/.source/org-mode/lisp/ob-lob hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lob
~/.source/org-mode/lisp/ob-latex hides /home/wurfkreuz/.source/emacs/lisp/org/ob-latex
~/.source/org-mode/lisp/ob-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lisp
~/.source/org-mode/lisp/ob-lilypond hides /home/wurfkreuz/.source/emacs/lisp/org/ob-lilypond
~/.source/org-mode/lisp/ob-julia hides /home/wurfkreuz/.source/emacs/lisp/org/ob-julia
~/.source/org-mode/lisp/ob-java hides /home/wurfkreuz/.source/emacs/lisp/org/ob-java
~/.source/org-mode/lisp/ob-haskell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-haskell
~/.source/org-mode/lisp/ob-groovy hides /home/wurfkreuz/.source/emacs/lisp/org/ob-groovy
~/.source/org-mode/lisp/ob-js hides /home/wurfkreuz/.source/emacs/lisp/org/ob-js
~/.source/org-mode/lisp/ob-forth hides /home/wurfkreuz/.source/emacs/lisp/org/ob-forth
~/.source/org-mode/lisp/ob-exp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-exp
~/.source/org-mode/lisp/ob-eshell hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eshell
~/.source/org-mode/lisp/ob-eval hides /home/wurfkreuz/.source/emacs/lisp/org/ob-eval
~/.source/org-mode/lisp/ob-dot hides /home/wurfkreuz/.source/emacs/lisp/org/ob-dot
~/.source/org-mode/lisp/ob-ditaa hides /home/wurfkreuz/.source/emacs/lisp/org/ob-ditaa
~/.source/org-mode/lisp/ob-core hides /home/wurfkreuz/.source/emacs/lisp/org/ob-core
~/.source/org-mode/lisp/ob-css hides /home/wurfkreuz/.source/emacs/lisp/org/ob-css
~/.source/org-mode/lisp/ob-emacs-lisp hides /home/wurfkreuz/.source/emacs/lisp/org/ob-emacs-lisp
~/.source/org-mode/lisp/ob-clojure hides /home/wurfkreuz/.source/emacs/lisp/org/ob-clojure
~/.source/org-mode/lisp/ob-calc hides /home/wurfkreuz/.source/emacs/lisp/org/ob-calc
~/.source/org-mode/lisp/ob-awk hides /home/wurfkreuz/.source/emacs/lisp/org/ob-awk
~/.source/org-mode/lisp/ob-comint hides /home/wurfkreuz/.source/emacs/lisp/org/ob-comint
~/.source/org-mode/lisp/ob-R hides /home/wurfkreuz/.source/emacs/lisp/org/ob-R
~/.source/org-mode/lisp/org-element hides /home/wurfkreuz/.source/emacs/lisp/org/org-element
~/.source/org-mode/lisp/ox-texinfo hides /home/wurfkreuz/.source/emacs/lisp/org/ox-texinfo
~/.source/org-mode/lisp/ox hides /home/wurfkreuz/.source/emacs/lisp/org/ox
~/.source/org-mode/lisp/ol hides /home/wurfkreuz/.source/emacs/lisp/org/ol
~/.source/org-mode/lisp/oc hides /home/wurfkreuz/.source/emacs/lisp/org/oc
~/.source/org-mode/lisp/org-macro hides /home/wurfkreuz/.source/emacs/lisp/org/org-macro
~/.source/org-mode/lisp/org-version hides /home/wurfkreuz/.source/emacs/lisp/org/org-version

Features:
(shadow sort mail-extr emacsbug vc-hg vc-bzr vc-src vc-sccs vc-svn
vc-cvs vc-rcs log-view bug-reference semantic/ia semantic/analyze/refs
semantic/db-find semantic/db-ref semantic/senator semantic/decorate
semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn
semantic/db eieio-base semantic/ctxt semantic/format ezimage
semantic/tag-ls semantic/find windmove mule-util tramp-cmds swiper
evil-collection-ivy ivy delsel ivy-faces ivy-overlay colir image-file
image-converter org-indent toc-org oc-basic ol-eww eww 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 dig gnus-sum gnus-group gnus-undo gnus-start
gnus-dbus dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec
gnus-int gnus-range gnus-win gnus nnheader range ol-docview doc-view
jka-compr image-mode exif ol-bibtex bibtex ol-bbdb ol-w3m ol-doi
org-link-doi vc-git completion-preview savehist org-bullets org-tempo
tempo org-drill persist org-agenda org-download org-attach eglot
external-completion jsonrpc ert ewoc yaml-mode haskell-mode
haskell-cabal haskell-utils haskell-font-lock haskell-indentation
haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports
haskell-complete-module haskell-ghc-support flymake-proc dabbrev
haskell-customize dockerfile-mode terraform-mode hcl-mode lua-mode
go-mode find-file etags fileloop raku-mode raku-repl raku-imenu
raku-indent raku-font-lock raku-detect flymake-hadolint flymake pyvenv
shackle popper-echo popper transpose-frame evil-terminal-cursor-changer
em-tramp eshell-syntax-highlighting em-alias evil-collection-eshell
em-prompt eshell evil-collection-magit magit-bookmark magit-submodule
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence
magit-notes magit-worktree magit-tag magit-merge magit-branch
magit-reset magit-files magit-refs magit-status magit magit-repos
magit-apply magit-wip magit-log which-func magit-diff smerge-mode
git-commit log-edit message sendmail yank-media rfc822 mml mml-sec epa
epg rfc6068 epg-config gnus-util mm-decode mm-bodies mm-encode
mailabbrev gmm-utils pcvs-util add-log magit-core magit-autorevert
magit-margin magit-transient magit-process magit-mode benchmark
magit-git magit-base crm hydra lv helpful cc-langs cc-vars cc-defs trace
cl-print edebug debug backtrace info-look f help-fns radix-tree
elisp-refs embark-org org-element org-persist org-id org-refile
org-element-ast inline avl-tree embark-consult embark ffap consult
marginalia vertico wgrep grep mentor url-scgi mentor-rpc mentor-files
mentor-data xml-rpc url-http url-auth mail-parse rfc2231 rfc2047 rfc2045
mm-util ietf-drums mail-prsvr url-gw nsm zoxide exec-path-from-shell
fish-completion em-cmpl em-dirs esh-mode esh-var esh-cmd esh-ext esh-opt
esh-proc esh-io esh-arg esh-module esh-module-loaddefs esh-util cape
corfu-popupinfo corfu-history corfu-echo corfu orderless yasnippet
evil-collection-docker docker docker-context docker-volume
docker-network docker-image docker-container docker-faces docker-core
docker-compose docker-process docker-utils tablist tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw cedet docker-group aio generator vterm bookmark pp
face-remap vterm-module term/xterm xterm circe diff-mode track-changes
lui-irc-colors irc gnutls lcs lui-logging lui-format lui tracking
shorten flyspell ispell circe-compat xterm-color which-key dired-async
dired-aux async avy kubernetes kubernetes-overview kubernetes-services
kubernetes-secrets kubernetes-persistentvolumeclaims
kubernetes-namespaces kubernetes-jobs kubernetes-pod-line
kubernetes-ingress kubernetes-errors kubernetes-nodes
kubernetes-statefulsets kubernetes-deployments kubernetes-configmaps
kubernetes-logs kubernetes-labels kubernetes-commands mode-local
kubernetes-popups kubernetes-el-tramp transient magit-popup
kubernetes-pods kubernetes-loading-container kubernetes-contexts
kubernetes-yaml kubernetes-utils evil-collection-term term disp-table
ehelp kubernetes-modes kubernetes-kubectl kubernetes-state
kubernetes-process request mailheader mail-utils kubernetes-core
kubernetes-vars with-editor server kubernetes-ast magit-section
cursor-sensor dash compat s daemons clojure-ts-mode cider cider-debug
cider-browse-ns cider-mode cider-xref-backend cider-find cider-inspector
cider-completion cider-profile cider-eval cider-jar arc-mode
archive-mode compile cider-repl-history pulse derived cider-repl
cider-resolve cider-test cider-overlays cider-stacktrace cider-doc
cider-browse-spec cider-clojuredocs cider-eldoc cider-docstring shr
text-property-search pixel-fill kinsoku url-file puny svg xml dom
cider-client cider-common xref project cider-completion-context
cider-connection cider-popup sesman-browser nrepl-client cider-util
color sesman vc vc-dispatcher nrepl-dict spinner parseedn
parseclj-parser parseclj-lex parseclj-alist clojure-mode lisp-mnt align
imenu treesit-auto all-the-icons-dired evil-collection-dired dired
dired-loaddefs all-the-icons all-the-icons-faces data-material
data-weathericons data-octicons data-fileicons data-faicons
data-alltheicons rose-pine-theme evil-collection-unimpaired
evil-collection-minibuffer evil-collection-org evil-collection annalist
evil-surround evil evil-integration evil-maps evil-commands
evil-digraphs reveal evil-jumps evil-command-window evil-types
evil-search evil-ex evil-macros evil-repeat evil-states evil-core advice
evil-common rect evil-vars edmacro kmacro undo-tree diff queue diary-lib
diary-loaddefs midnight autorevert filenotify saveplace tramp-sh tramp
trampver tramp-integration files-x tramp-message tramp-compat xdg shell
parse-time iso8601 tramp-loaddefs desktop frameset comp comp-cstr
cl-extra help-mode warnings comp-run comp-common elec-pair recentf
tree-widget wid-edit display-line-numbers org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-src sh-script smie treesit executable
ob-comint org-pcomplete pcomplete comint ansi-osc ansi-color ring
org-list org-footnote org-faces org-entities time-date noutline outline
ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold
org-fold-core org-keys oc org-loaddefs thingatpt find-func cal-menu
calendar cal-loaddefs org-version org-compat org-macs format-spec
use-package use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core finder-inf
all-the-icons-dired-autoloads all-the-icons-autoloads avy-autoloads
cape-autoloads cider-autoloads circe-autoloads clojure-mode-autoloads
clojure-ts-mode-autoloads corfu-autoloads counsel-autoloads
daemons-autoloads docker-autoloads aio-autoloads
dockerfile-mode-autoloads emacs-crontab-mode-autoloads
embark-consult-autoloads consult-autoloads embark-autoloads
eshell-syntax-highlighting-autoloads evil-collection-autoloads
annalist-autoloads evil-commentary-autoloads evil-leader-autoloads
evil-org-autoloads evil-surround-autoloads evil-autoloads
evil-terminal-cursor-changer-autoloads exec-path-from-shell-autoloads
fish-completion-autoloads flymake-hadolint-autoloads
flymake-shellcheck-autoloads general-autoloads go-mode-autoloads
goto-chg-autoloads haskell-mode-autoloads helpful-autoloads
elisp-refs-autoloads f-autoloads hydra-autoloads kubernetes-autoloads
lua-mode-autoloads lv-autoloads magit-autoloads pcase
git-commit-autoloads magit-popup-autoloads magit-section-autoloads
marginalia-autoloads mentor-autoloads orderless-autoloads
org-bullets-autoloads org-download-autoloads async-autoloads
org-drill-autoloads paredit-autoloads parseedn-autoloads
parseclj-autoloads persist-autoloads popper-autoloads pyvenv-autoloads
raku-mode-autoloads rx request-autoloads rg-autoloads s-autoloads
sesman-autoloads shackle-autoloads spinner-autoloads sudo-edit-autoloads
swiper-autoloads ivy-autoloads tablist-autoloads
terraform-mode-autoloads dash-autoloads hcl-mode-autoloads
toc-org-autoloads transient-autoloads transpose-frame-autoloads
treesit-auto-autoloads undo-tree-autoloads queue-autoloads
url-scgi-autoloads vertico-autoloads vterm-autoloads wgrep-autoloads
info with-editor-autoloads xml-rpc-autoloads xterm-color-autoloads
yaml-mode-autoloads yasnippet-autoloads zoxide-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 xwidget-internal 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 1342965 211432) (symbols 48 64750 83) (strings 32 321112 13502)
(string-bytes 1 9714734) (vectors 16 118332) (vector-slots 8 1790528 95492)
(floats 8 1145 1866) (intervals 56 47548 953) (buffers 992 19))

[-- Attachment #2.1: Type: text/html, Size: 34509 bytes --]

[-- Attachment #2.2: image.png --]
[-- Type: image/png, Size: 4878 bytes --]

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

* bug#72762: 30.0.60; Incorrect rendering of the completion-preview mode
  2024-08-22 17:29 bug#72762: 30.0.60; Incorrect rendering of the completion-preview mode the_wurfkreuz via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-08-22 18:05 ` Eli Zaretskii
  2024-08-23  5:30   ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 4+ messages in thread
From: Eli Zaretskii @ 2024-08-22 18:05 UTC (permalink / raw)
  To: the_wurfkreuz, Eshel Yaron; +Cc: 72762

> Date: Thu, 22 Aug 2024 17:29:30 +0000
> From:  the_wurfkreuz via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> Apparently, the completion-preview-mode rendering doesn't work correctly with minibuffer messages (i don't know what they're called exactly).
> 
> To see the problem, completion-preview-mode should show its completion suggestion simultaneously with any minibuffer messages like "[No Match]" or "[Incomplete Command]" and so on.
> 
> However, the only sane, practical way I found to recreate this situation involves using evil-mode's command minibuffer. The idea is to load Emacs with evil-mode, execute the `evil-ex` command, and then start typing any interactive command while `completion-preview-mode` is active for minibuffers.
> 
> Reproduction:
> - Load emacs with the evil-mode package.
> - Activate evil-mode and completion-preview-mode.
> - Evaluate the hook '(add-hook 'minibuffer-mode-hook #'completion-preview-mode)'.
> - Execute 'evil-ex'.
> - Try to write any long command to trigger the preview completion.

Thanks.

Eshel, can you please look into this?





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

* bug#72762: 30.0.60; Incorrect rendering of the completion-preview mode
  2024-08-22 18:05 ` Eli Zaretskii
@ 2024-08-23  5:30   ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-09-04 17:02     ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 4+ messages in thread
From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-08-23  5:30 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 72762, the_wurfkreuz

Hi,

>> Date: Thu, 22 Aug 2024 17:29:30 +0000
>> From:  the_wurfkreuz via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> 
>> Apparently, the completion-preview-mode rendering doesn't work correctly with minibuffer messages (i don't know what they're called exactly).
>> 
>> To see the problem, completion-preview-mode should show its completion suggestion simultaneously with any minibuffer messages like "[No Match]" or "[Incomplete Command]" and so on.

Thanks for the report!

Enabling Completion Preview mode in the minibuffer is not currently
supported, precisely because minibuffers make use of different
completion UIs which may conflict with the completion preview.  You
might notice that by default, minibuffer-mode is explicitly excluded in
global-completion-preview-modes.

That said, I do consider minibuffers to be a viable additional use case
for Completion Preview mode, and I'd like to help you make it work:

>> Reproduction:
>> - Load emacs with the evil-mode package.
>> - Activate evil-mode and completion-preview-mode.
>> - Evaluate the hook '(add-hook 'minibuffer-mode-hook #'completion-preview-mode)'.
>> - Execute 'evil-ex'.
>> - Try to write any long command to trigger the preview completion.

I don't use evil-mode, but I understand the situation after following
these steps.  evil-ex uses an overlay with after-string property to
display its automatic messages, which is the same mechanism Completion
Preview mode uses to display the preview.  A quick solution you can try
is to use completion-preview-active-mode-hook to turn off evil-ex's
automatic messages when the preview is visible by temporarily setting
evil-no-display to non-nil.

An arguably nicer solution is to give the completion preview overlay
higher priority, so it is displayed before the "[Incomplete Command]"
message.  However, we don't always want to give the completion preview
overlay a positive priority, since that may lead to incorrect results in
other scenarios.  What we can do is to add a variable that specifies the
overlay priority, so you can set it just where appropriate.

Eli, is the following alright for Emacs 30, or should this go on the
master branch?


diff --git a/lisp/completion-preview.el b/lisp/completion-preview.el
index d3e9acb1ed9..60abdbc0736 100644
--- a/lisp/completion-preview.el
+++ b/lisp/completion-preview.el
@@ -262,11 +262,16 @@ completion-preview-hide
     (setq completion-preview--overlay nil
           completion-preview--inhibit-update-p nil)))
 
+(defvar completion-preview-overlay-priority nil
+  "Value of the `priority' property for the completion preview overlay.")
+
 (defun completion-preview--make-overlay (pos string)
   "Make preview overlay showing STRING at POS, or move existing preview there."
   (if completion-preview--overlay
       (move-overlay completion-preview--overlay pos pos)
     (setq completion-preview--overlay (make-overlay pos pos))
+    (overlay-put completion-preview--overlay 'priority
+                 completion-preview-overlay-priority)
     (overlay-put completion-preview--overlay 'window (selected-window)))
   (add-text-properties 0 1 '(cursor 1) string)
   (overlay-put completion-preview--overlay 'after-string string)






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

* bug#72762: 30.0.60; Incorrect rendering of the completion-preview mode
  2024-08-23  5:30   ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-09-04 17:02     ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 4+ messages in thread
From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-09-04 17:02 UTC (permalink / raw)
  To: 72762; +Cc: eliz, the_wurfkreuz

Eshel Yaron writes:

[...]
> An arguably nicer solution is to give the completion preview overlay
> higher priority, so it is displayed before the "[Incomplete Command]"
> message.  However, we don't always want to give the completion preview
> overlay a positive priority, since that may lead to incorrect results in
> other scenarios.  What we can do is to add a variable that specifies the
> overlay priority, so you can set it just where appropriate.
>
> Eli, is the following alright for Emacs 30, or should this go on the
> master branch?

Pushed to master for now, with some additional commentary, in commit a13eef1fae0.


Best,

Eshel





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

end of thread, other threads:[~2024-09-04 17:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-22 17:29 bug#72762: 30.0.60; Incorrect rendering of the completion-preview mode the_wurfkreuz via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-08-22 18:05 ` Eli Zaretskii
2024-08-23  5:30   ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-04 17:02     ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors

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).