* bug#61812: 30.0.50; Eglot inlay hints "pile up"
@ 2023-02-26 12:24 Chinmay Dalal
2023-02-26 12:35 ` Eli Zaretskii
2023-02-27 13:06 ` Chinmay Dalal
0 siblings, 2 replies; 9+ messages in thread
From: Chinmay Dalal @ 2023-02-26 12:24 UTC (permalink / raw)
To: 61812
[-- Attachment #1: Type: text/plain, Size: 294 bytes --]
Eglot inlay hints pile up when scrolling a large file.
To reproduce
1) Open a large rust file with rust-analyzer installed
(I tried to reproduce this with C++/clangd but I couldn't, maybe
because it has less no. of hints)
2) Scroll around
3) Look for duplicate hints
Screenshots attached
[-- Attachment #2: swappy-20230226-174337.png --]
[-- Type: image/png, Size: 31991 bytes --]
[-- Attachment #3: swappy-20230226-174347.png --]
[-- Type: image/png, Size: 33137 bytes --]
[-- Attachment #4: swappy-20230226-174503.png --]
[-- Type: image/png, Size: 20630 bytes --]
[-- Attachment #5: Type: text/plain, Size: 15198 bytes --]
In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.36, cairo version 1.17.8) of 2023-02-26 built on ganymede
Repository revision: 8797e514ab68c12ed05d3af88e6baba64bf08f4d
Repository branch: master
System Description: Arch Linux
Configured using:
'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
--localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
--with-modules --without-libotf --without-m17n-flt --without-gconf
--enable-autodepend --with-native-compilation=yes
--with-native-compilation=aot --with-xinput2 --with-pgtk
--without-xaw3d --with-sound=no --with-xwidgets --with-tree-sitter
--without-compress-install
'--program-transform-name=s/\([ec]tags\)/\1.emacs/'
'CFLAGS=-march=native -mtune=native -O2 -pipe -fno-plt -fexceptions
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
-fstack-clash-protection -fcf-protection -fuse-ld=mold -ftree-vectorize
-fuse-ld=mold -ftree-vectorize'
LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
PGTK PNG RSVG SECCOMP SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP XIM XWIDGETS GTK3 ZLIB
Important settings:
value of $LANG: en_IN.UTF-8
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
Minor modes in effect:
server-mode: t
parinfer-rust-mode: t
elisp-autofmt-mode: t
doom-modeline-mode: t
minions-mode: t
global-anzu-mode: t
anzu-mode: t
global-git-gutter-mode: t
pdf-occur-global-minor-mode: t
darkman-mode: t
shell-dirtrack-mode: t
global-flycheck-eglot-mode: t
org-super-agenda-mode: t
corfu-popupinfo-mode: t
global-corfu-mode: t
corfu-mode: t
marginalia-mode: t
savehist-mode: t
vertico-mode: t
yas-global-mode: t
yas-minor-mode: t
global-ligature-mode: t
ligature-mode: t
global-ts-fold-mode: t
global-origami-mode: t
origami-mode: t
global-tree-sitter-mode: t
which-key-mode: t
override-global-mode: t
global-undo-tree-mode: t
undo-tree-mode: t
evil-goggles-mode: t
global-evil-surround-mode: t
evil-surround-mode: t
evil-commentary-mode: t
global-evil-collection-unimpaired-mode: t
evil-collection-unimpaired-mode: t
evil-mode: t
evil-local-mode: t
windmove-mode: t
global-flycheck-mode: t
flycheck-mode: t
recentf-mode: t
hl-line-mode: t
display-line-numbers-mode: t
straight-use-package-mode: t
straight-package-neutering-mode: t
save-place-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
line-number-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
/home/chinmay/.local/state/emacs/straight/build/emacsql-sqlite/emacsql-sqlite hides /home/chinmay/.local/state/emacs/straight/build/emacsql/emacsql-sqlite
/home/chinmay/.local/state/emacs/straight/build/transient/transient hides /usr/share/emacs/30.0.50/lisp/transient
/home/chinmay/.local/state/emacs/straight/build/bind-key/bind-key hides /usr/share/emacs/30.0.50/lisp/use-package/bind-key
/home/chinmay/.local/state/emacs/straight/build/use-package/use-package-ensure hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-ensure
/home/chinmay/.local/state/emacs/straight/build/use-package/use-package hides /usr/share/emacs/30.0.50/lisp/use-package/use-package
/home/chinmay/.local/state/emacs/straight/build/use-package/use-package-delight hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-delight
/home/chinmay/.local/state/emacs/straight/build/use-package/use-package-core hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-core
/home/chinmay/.local/state/emacs/straight/build/use-package/use-package-diminish hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-diminish
/home/chinmay/.local/state/emacs/straight/build/use-package/use-package-lint hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-lint
/home/chinmay/.local/state/emacs/straight/build/use-package/use-package-bind-key hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-bind-key
/home/chinmay/.local/state/emacs/straight/build/use-package/use-package-jump hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-jump
/home/chinmay/.local/state/emacs/straight/build/xref/xref hides /usr/share/emacs/30.0.50/lisp/progmodes/xref
/usr/share/emacs/site-lisp/xscheme hides /usr/share/emacs/30.0.50/lisp/progmodes/xscheme
/home/chinmay/.local/state/emacs/straight/build/project/project hides /usr/share/emacs/30.0.50/lisp/progmodes/project
/home/chinmay/.local/state/emacs/straight/build/let-alist/let-alist hides /usr/share/emacs/30.0.50/lisp/emacs-lisp/let-alist
Features:
(shadow emacsbug tramp-cmds cc-mode cc-fonts cc-guess cc-menus cc-cmds
cape-yasnippet cape find-dired evil-collection-grep grep vc-hg vc-bzr
conf-mode tramp-sh tramp-cache time-stamp tramp tramp-loaddefs trampver
tramp-integration cus-start files-x tramp-compat ls-lisp
evil-collection-helpful helpful cc-langs trace evil-collection-edebug
edebug info-look help-fns evil-collection-elisp-refs elisp-refs affe
mm-archive sort gnus-cite mail-extr textsec uni-scripts idna-mapping
ucs-normalize uni-confusable textsec-check qp misearch multi-isearch
find-file elec-pair evil-collection-vc-git vc-git
evil-collection-diff-mode diff-mode vc-dispatcher face-remap cdlatex
evil-collection-reftex reftex-toc reftex-cite reftex-ref reftex-parse
reftex reftex-loaddefs reftex-vars org-fragtog org-modern org-block-capf
evil-org-agenda evil-org oc-basic disp-table ol-eww evil-collection-eww
eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
ol-docview evil-collection-doc-view doc-view ol-bibtex bibtex ol-bbdb
ol-w3m ol-doi org-link-doi server parinfer-rust-mode
parinfer-rust-changes parinfer-rust parinfer-rust-helper elisp-autofmt
loadhist eldoc-box doom-modeline doom-modeline-segments
doom-modeline-env doom-modeline-core shrink-path eldoc-box-autoloads
devdocs-autoloads ace-window-autoloads avy-autoloads
elisp-autofmt-autoloads doom-modeline-autoloads shrink-path-autoloads
minions minions-autoloads mu-config evil-collection-mu4e mu4e mu4e-org
mu4e-main mu4e-view gnus-art mm-uu mml2015 mm-view mml-smime smime
gnutls dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud
nnimap nnmail mail-source utf7 nnoo parse-time iso8601 gnus-spec
gnus-int gnus-range gnus-win evil-collection-gnus gnus nnheader range
mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search
mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message shr pixel-fill kinsoku
url-file svg dom flow-fill mule-util mu4e-contacts mu4e-update
mu4e-folders mu4e-server mu4e-context mu4e-obsolete mu4e-vars
mu4e-helpers mu4e-config ido message sendmail yank-media rfc822 mml
mml-sec evil-collection-epa epa derived epg rfc6068 epg-config gnus-util
mm-decode mm-bodies mm-encode mailabbrev mail-utils gmm-utils mailheader
auth-source-pass run-command-conf run-command-autoloads helm-make
helm-make-autoloads geiser-guile-autoloads geiser-autoloads evil-anzu
evil-anzu-autoloads anzu anzu-autoloads git-gutter-fringe git-gutter
git-gutter-fringe-autoloads git-gutter-autoloads org-noter
org-noter-autoloads pdf-occur ibuf-ext evil-collection-ibuffer ibuffer
ibuffer-loaddefs evil-collection-tablist tablist tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet pdf-isearch let-alist pdf-misc pdf-loader
evil-collection-pdf pdf-history pdf-tools evil-collection-package-menu
package browse-url url-handlers evil-collection-custom cus-edit cus-load
pdf-view jka-compr pdf-cache pdf-info tq pdf-util pdf-macs
pdf-tools-autoloads tablist-autoloads modus-vivendi-theme darkman dbus
xml darkman-autoloads fennel-mode fennel-eldoc inf-lisp shell
fennel-mode-autoloads kbd-mode kbd-mode-autoloads fish-mode
fish-mode-autoloads elfeed-config elfeed-autoloads vterm-autoloads
modus-themes modus-themes-autoloads eglot-config consult-eglot
evil-collection-consult consult-vertico consult evil-collection-bookmark
bookmark eglot-x flycheck-eglot evil-collection-eglot eglot
external-completion array filenotify jsonrpc evil-collection-ert ert
ewoc evil-collection-debug debug backtrace evil-collection-flymake
flymake-proc flymake evil-collection-imenu imenu consult-eglot-autoloads
eglot-x-autoloads flycheck-eglot-autoloads rustic-flycheck
rustic-spellcheck rustic-expand rustic-lsp rustic-playground
rustic-rustfix rustic-racer etags fileloop evil-collection-xref xref
rustic-babel rustic-rustfmt project rustic-comint rustic-clippy
rustic-doc f f-shortdoc rustic-popup rustic-cargo rustic-compile spinner
xterm-color evil-collection-markdown-mode markdown-mode
rustic-interaction rustic rust-utils rust-mode rustic-autoloads
xterm-color-autoloads spinner-autoloads project-autoloads xref-autoloads
markdown-mode-autoloads rust-mode-autoloads org-config
org-super-agenda-conf org-super-agenda ts ht org-habit
org-super-agenda-autoloads ts-autoloads ht-autoloads evil-org-autoloads
org-block-capf-autoloads org-download org-attach ox-odt rng-loc rng-uri
rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns
nxml-enc xmltok nxml-util ox-latex ox-icalendar org-agenda ox-html table
ox-ascii ox-publish ox org-element org-persist xdg org-id org-refile
avl-tree generator evil-collection-org org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-src ob-comint org-pcomplete pcomplete
org-list org-footnote org-faces org-entities evil-collection-outline
noutline outline ob-emacs-lisp ob-core ob-eval org-cycle org-table ol
org-fold org-fold-core org-keys oc org-loaddefs evil-collection-calendar
cal-menu calendar cal-loaddefs org-version org-compat org-macs
format-spec url-http url-auth mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr url-gw nsm puny async org-download-autoloads
async-autoloads org-modern-autoloads org-roam-autoloads
emacsql-sqlite-autoloads emacsql-autoloads org-fragtog-autoloads
cdlatex-autoloads auctex-autoloads tex-site affe-autoloads corfu-config
cape-yasnippet-autoloads cape-autoloads corfu-terminal popon
corfu-terminal-autoloads popon-autoloads corfu-popupinfo
evil-collection-corfu corfu corfu-autoloads minibuffer-config
embark-consult-autoloads marginalia marginalia-autoloads savehist
vertico-directory evil-collection-vertico vertico vertico-autoloads
orderless-config orderless orderless-autoloads yasnippet
yasnippet-autoloads helpful-autoloads elisp-refs-autoloads f-autoloads
exec-path-from-shell exec-path-from-shell-autoloads ligature
ligature-autoloads ts-fold-indicators fringe-helper ts-fold
ts-fold-summary ts-fold-parsers ts-fold-util ts-fold-autoloads
fringe-helper-autoloads origami origami-parsers cl s origami-autoloads
s-autoloads evil-textobj-tree-sitter evil-textobj-tree-sitter-autoloads
tree-sitter-langs tree-sitter-langs-build evil-collection-tar-mode
tar-mode evil-collection-arc-mode arc-mode archive-mode url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util url-parse auth-source eieio eieio-core password-cache url-vars
mailcap pp tree-sitter-hl tree-sitter tree-sitter-load tree-sitter-cli
tsc tsc-dyn tsc-dyn-get evil-collection-compile compile
text-property-search evil-collection-comint comint ansi-osc dired-aux
tsc-obsolete tree-sitter-langs-autoloads tree-sitter-autoloads
tsc-autoloads parinfer-rust-mode-autoloads evil-collection-which-key
which-key which-key-autoloads embark-autoloads use-package-bind-key
bind-key git-link-autoloads magit-autoloads magit-section-autoloads
git-commit-autoloads with-editor-autoloads transient-autoloads general
general-autoloads undo-tree diff queue undo-tree-autoloads
queue-autoloads evil-goggles pulse color evil-goggles-autoloads
evil-surround evil-surround-autoloads evil-commentary
evil-commentary-integration evil-commentary-autoloads
evil-collection-unimpaired evil-collection-tabulated-list
evil-collection-tab-bar evil-collection-simple evil-collection-replace
evil-collection-process-menu evil-collection-info evil-collection-indent
evil-collection-image image-mode evil-collection-dired dired
dired-loaddefs exif evil-collection-help evil-collection-flycheck
evil-collection-elisp-mode evil-collection-eldoc calc-ext
evil-collection-calc evil-collection-buff-menu evil-collection annalist
evil-collection-autoloads annalist-autoloads evil evil-integration
evil-maps evil-commands reveal evil-jumps evil-command-window
evil-search evil-ex evil-types evil-macros evil-repeat evil-states
evil-core time-date advice evil-common windmove calc calc-loaddefs
calc-macs thingatpt rect evil-digraphs evil-vars ring edmacro kmacro
evil-autoloads goto-chg-autoloads consult-flycheck-autoloads
consult-autoloads flycheck ansi-color json map find-func dash
flycheck-autoloads let-alist-autoloads pkg-info-autoloads epl-autoloads
dash-autoloads all-the-icons all-the-icons-faces data-material
data-weathericons data-octicons data-fileicons data-faicons
data-alltheicons all-the-icons-autoloads recentf tree-widget wid-edit
no-littering compat no-littering-autoloads compat-autoloads finder-inf
use-package-ensure use-package-core use-package-autoloads
bind-key-autoloads straight-autoloads comp comp-cstr warnings icons rx
hl-line display-line-numbers cl-extra help-mode straight info
loaddefs-gen generate-lisp-file lisp-mnt radix-tree easy-mmode cl-seq
pcase subr-x byte-opt cl-macs gv bytecomp byte-compile saveplace
llvm-style cc-styles cc-align cc-engine cc-vars cc-defs cl-loaddefs
cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify
ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win
pgtk-win term/common-win pgtk-dnd tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads xwidget-internal dbusbind inotify dynamic-setting
system-font-setting font-render-setting cairo gtk pgtk lcms2 multi-tty
make-network-process native-compile emacs)
Memory information:
((conses 16 1253548 695557)
(symbols 48 62868 287)
(strings 32 281589 96177)
(string-bytes 1 10088683)
(vectors 16 174668)
(vector-slots 8 3697752 1320252)
(floats 8 2036 8440)
(intervals 56 20936 19674)
(buffers 984 53))
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#61812: 30.0.50; Eglot inlay hints "pile up"
2023-02-26 12:24 bug#61812: 30.0.50; Eglot inlay hints "pile up" Chinmay Dalal
@ 2023-02-26 12:35 ` Eli Zaretskii
2023-02-26 12:59 ` Chinmay Dalal
2023-02-27 13:06 ` Chinmay Dalal
1 sibling, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2023-02-26 12:35 UTC (permalink / raw)
To: Chinmay Dalal; +Cc: 61812
> From: Chinmay Dalal <dalal.chinmay.0101@gmail.com>
> Date: Sun, 26 Feb 2023 17:54:08 +0530
>
> Eglot inlay hints pile up when scrolling a large file.
What you show is not "piling up", it's "duplicating".
Do all the duplicates appear together, or does the display first show
one hint, then two, then 3, etc.? And if the latter, what exactly
causes the duplicates? You say "scroll around", but how do you
"scroll around" (with what commands), and can you try figuring out
what exactly triggers the appearance of the duplicates?
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#61812: 30.0.50; Eglot inlay hints "pile up"
2023-02-26 12:35 ` Eli Zaretskii
@ 2023-02-26 12:59 ` Chinmay Dalal
2023-02-26 13:15 ` Eli Zaretskii
0 siblings, 1 reply; 9+ messages in thread
From: Chinmay Dalal @ 2023-02-26 12:59 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 61812
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Chinmay Dalal <dalal.chinmay.0101@gmail.com>
>> Date: Sun, 26 Feb 2023 17:54:08 +0530
>>
>> Eglot inlay hints pile up when scrolling a large file.
>
> What you show is not "piling up", it's "duplicating".
Ok
> Do all the duplicates appear together, or does the display first show
> one hint, then two, then 3, etc.?
The latter - if I visit a region again, some of the hints may be
duplicated, and it increases as I move around
> And if the latter, what exactly
> causes the duplicates? You say "scroll around", but how do you
> "scroll around" (with what commands), and can you try figuring out
> what exactly triggers the appearance of the duplicates?
"Scroll around" was inaccurate, apologies. I meant using C-n/C-p to move
the cursor.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#61812: 30.0.50; Eglot inlay hints "pile up"
2023-02-26 12:59 ` Chinmay Dalal
@ 2023-02-26 13:15 ` Eli Zaretskii
2023-02-26 13:50 ` Chinmay Dalal
0 siblings, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2023-02-26 13:15 UTC (permalink / raw)
To: Chinmay Dalal; +Cc: 61812
> From: Chinmay Dalal <dalal.chinmay.0101@gmail.com>
> Cc: 61812@debbugs.gnu.org
> Date: Sun, 26 Feb 2023 18:29:35 +0530
>
> > And if the latter, what exactly
> > causes the duplicates? You say "scroll around", but how do you
> > "scroll around" (with what commands), and can you try figuring out
> > what exactly triggers the appearance of the duplicates?
>
> "Scroll around" was inaccurate, apologies. I meant using C-n/C-p to move
> the cursor.
So if you move through a region with C-n/C-p time and again, you will
see the duplicates appear one by one?
If you go to the place where the duplicate hints are shown and type
"M-x describe-text-properties RET", how many overlays are shown in the
window Emacs pops up? Do you see a separate overlay for each
duplication?
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#61812: 30.0.50; Eglot inlay hints "pile up"
2023-02-26 13:15 ` Eli Zaretskii
@ 2023-02-26 13:50 ` Chinmay Dalal
2023-02-26 14:35 ` Eli Zaretskii
0 siblings, 1 reply; 9+ messages in thread
From: Chinmay Dalal @ 2023-02-26 13:50 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 61812
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Chinmay Dalal <dalal.chinmay.0101@gmail.com>
>> Cc: 61812@debbugs.gnu.org
>> Date: Sun, 26 Feb 2023 18:29:35 +0530
>>
>> > And if the latter, what exactly
>> > causes the duplicates? You say "scroll around", but how do you
>> > "scroll around" (with what commands), and can you try figuring out
>> > what exactly triggers the appearance of the duplicates?
>>
>> "Scroll around" was inaccurate, apologies. I meant using C-n/C-p to move
>> the cursor.
>
> So if you move through a region with C-n/C-p time and again, you will
> see the duplicates appear one by one?
Yes, this is not deterministic though - some places have duplicates,
some don't
> If you go to the place where the duplicate hints are shown and type
> "M-x describe-text-properties RET", how many overlays are shown in the
> window Emacs pops up? Do you see a separate overlay for each
> duplication?
Yes, there are separate overlays for each duplication, for example:
From 7070 to 7070
before-string [Show]
eglot--inlay-hint t
eglot--overlay t
From 7070 to 7070
before-string [Show]
eglot--inlay-hint t
eglot--overlay t
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#61812: 30.0.50; Eglot inlay hints "pile up"
2023-02-26 13:50 ` Chinmay Dalal
@ 2023-02-26 14:35 ` Eli Zaretskii
0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2023-02-26 14:35 UTC (permalink / raw)
To: Chinmay Dalal; +Cc: 61812
> From: Chinmay Dalal <dalal.chinmay.0101@gmail.com>
> Cc: 61812@debbugs.gnu.org
> Date: Sun, 26 Feb 2023 19:20:04 +0530
>
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> >> From: Chinmay Dalal <dalal.chinmay.0101@gmail.com>
> >> Cc: 61812@debbugs.gnu.org
> >> Date: Sun, 26 Feb 2023 18:29:35 +0530
> >>
> >> > And if the latter, what exactly
> >> > causes the duplicates? You say "scroll around", but how do you
> >> > "scroll around" (with what commands), and can you try figuring out
> >> > what exactly triggers the appearance of the duplicates?
> >>
> >> "Scroll around" was inaccurate, apologies. I meant using C-n/C-p to move
> >> the cursor.
> >
> > So if you move through a region with C-n/C-p time and again, you will
> > see the duplicates appear one by one?
>
> Yes, this is not deterministic though - some places have duplicates,
> some don't
>
> > If you go to the place where the duplicate hints are shown and type
> > "M-x describe-text-properties RET", how many overlays are shown in the
> > window Emacs pops up? Do you see a separate overlay for each
> > duplication?
>
> Yes, there are separate overlays for each duplication, for example:
>
> From 7070 to 7070
> before-string [Show]
> eglot--inlay-hint t
> eglot--overlay t
> From 7070 to 7070
> before-string [Show]
> eglot--inlay-hint t
> eglot--overlay t
So it sounds like we are not deleting old overlays before adding new
ones.
Or maybe we should delete them automatically when point moves far
enough?
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#61812: 30.0.50; Eglot inlay hints "pile up"
2023-02-26 12:24 bug#61812: 30.0.50; Eglot inlay hints "pile up" Chinmay Dalal
2023-02-26 12:35 ` Eli Zaretskii
@ 2023-02-27 13:06 ` Chinmay Dalal
2023-02-27 14:05 ` João Távora
2023-02-27 14:33 ` João Távora
1 sibling, 2 replies; 9+ messages in thread
From: Chinmay Dalal @ 2023-02-27 13:06 UTC (permalink / raw)
To: 61812; +Cc: joaotavora
Chinmay Dalal <dalal.chinmay.0101@gmail.com> writes:
> Eglot inlay hints pile up when scrolling a large file.
> To reproduce
> 1) Open a large rust file with rust-analyzer installed
> (I tried to reproduce this with C++/clangd but I couldn't, maybe
> because it has less no. of hints)
> 2) Scroll around
> 3) Look for duplicate hints
>
> Screenshots attached
>
> [2. image/png; swappy-20230226-174337.png]...
>
> [3. image/png; swappy-20230226-174347.png]...
>
> [4. image/png; swappy-20230226-174503.png]...
>
>
>
>
>
> In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
> 3.24.36, cairo version 1.17.8) of 2023-02-26 built on ganymede
> Repository revision: 8797e514ab68c12ed05d3af88e6baba64bf08f4d
> Repository branch: master
> System Description: Arch Linux
>
> Configured using:
> 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
> --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
> --with-modules --without-libotf --without-m17n-flt --without-gconf
> --enable-autodepend --with-native-compilation=yes
> --with-native-compilation=aot --with-xinput2 --with-pgtk
> --without-xaw3d --with-sound=no --with-xwidgets --with-tree-sitter
> --without-compress-install
> '--program-transform-name=s/\([ec]tags\)/\1.emacs/'
> 'CFLAGS=-march=native -mtune=native -O2 -pipe -fno-plt -fexceptions
> -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
> -fstack-clash-protection -fcf-protection -fuse-ld=mold -ftree-vectorize
> -fuse-ld=mold -ftree-vectorize'
> LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
>
> Configured features:
> ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
> JSON LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
> PGTK PNG RSVG SECCOMP SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
> TREE_SITTER WEBP XIM XWIDGETS GTK3 ZLIB
>
> Important settings:
> value of $LANG: en_IN.UTF-8
> locale-coding-system: utf-8-unix
>
> Major mode: Lisp Interaction
>
> Minor modes in effect:
> server-mode: t
> parinfer-rust-mode: t
> elisp-autofmt-mode: t
> doom-modeline-mode: t
> minions-mode: t
> global-anzu-mode: t
> anzu-mode: t
> global-git-gutter-mode: t
> pdf-occur-global-minor-mode: t
> darkman-mode: t
> shell-dirtrack-mode: t
> global-flycheck-eglot-mode: t
> org-super-agenda-mode: t
> corfu-popupinfo-mode: t
> global-corfu-mode: t
> corfu-mode: t
> marginalia-mode: t
> savehist-mode: t
> vertico-mode: t
> yas-global-mode: t
> yas-minor-mode: t
> global-ligature-mode: t
> ligature-mode: t
> global-ts-fold-mode: t
> global-origami-mode: t
> origami-mode: t
> global-tree-sitter-mode: t
> which-key-mode: t
> override-global-mode: t
> global-undo-tree-mode: t
> undo-tree-mode: t
> evil-goggles-mode: t
> global-evil-surround-mode: t
> evil-surround-mode: t
> evil-commentary-mode: t
> global-evil-collection-unimpaired-mode: t
> evil-collection-unimpaired-mode: t
> evil-mode: t
> evil-local-mode: t
> windmove-mode: t
> global-flycheck-mode: t
> flycheck-mode: t
> recentf-mode: t
> hl-line-mode: t
> display-line-numbers-mode: t
> straight-use-package-mode: t
> straight-package-neutering-mode: t
> save-place-mode: t
> tooltip-mode: t
> global-eldoc-mode: t
> eldoc-mode: t
> show-paren-mode: t
> electric-indent-mode: t
> mouse-wheel-mode: t
> file-name-shadow-mode: t
> global-font-lock-mode: t
> font-lock-mode: t
> line-number-mode: t
> transient-mark-mode: t
> auto-composition-mode: t
> auto-encryption-mode: t
> auto-compression-mode: t
>
> Load-path shadows:
> /home/chinmay/.local/state/emacs/straight/build/emacsql-sqlite/emacsql-sqlite hides /home/chinmay/.local/state/emacs/straight/build/emacsql/emacsql-sqlite
> /home/chinmay/.local/state/emacs/straight/build/transient/transient hides /usr/share/emacs/30.0.50/lisp/transient
> /home/chinmay/.local/state/emacs/straight/build/bind-key/bind-key hides /usr/share/emacs/30.0.50/lisp/use-package/bind-key
> /home/chinmay/.local/state/emacs/straight/build/use-package/use-package-ensure hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-ensure
> /home/chinmay/.local/state/emacs/straight/build/use-package/use-package hides /usr/share/emacs/30.0.50/lisp/use-package/use-package
> /home/chinmay/.local/state/emacs/straight/build/use-package/use-package-delight hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-delight
> /home/chinmay/.local/state/emacs/straight/build/use-package/use-package-core hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-core
> /home/chinmay/.local/state/emacs/straight/build/use-package/use-package-diminish hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-diminish
> /home/chinmay/.local/state/emacs/straight/build/use-package/use-package-lint hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-lint
> /home/chinmay/.local/state/emacs/straight/build/use-package/use-package-bind-key hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-bind-key
> /home/chinmay/.local/state/emacs/straight/build/use-package/use-package-jump hides /usr/share/emacs/30.0.50/lisp/use-package/use-package-jump
> /home/chinmay/.local/state/emacs/straight/build/xref/xref hides /usr/share/emacs/30.0.50/lisp/progmodes/xref
> /usr/share/emacs/site-lisp/xscheme hides /usr/share/emacs/30.0.50/lisp/progmodes/xscheme
> /home/chinmay/.local/state/emacs/straight/build/project/project hides /usr/share/emacs/30.0.50/lisp/progmodes/project
> /home/chinmay/.local/state/emacs/straight/build/let-alist/let-alist hides /usr/share/emacs/30.0.50/lisp/emacs-lisp/let-alist
>
> Features:
> (shadow emacsbug tramp-cmds cc-mode cc-fonts cc-guess cc-menus cc-cmds
> cape-yasnippet cape find-dired evil-collection-grep grep vc-hg vc-bzr
> conf-mode tramp-sh tramp-cache time-stamp tramp tramp-loaddefs trampver
> tramp-integration cus-start files-x tramp-compat ls-lisp
> evil-collection-helpful helpful cc-langs trace evil-collection-edebug
> edebug info-look help-fns evil-collection-elisp-refs elisp-refs affe
> mm-archive sort gnus-cite mail-extr textsec uni-scripts idna-mapping
> ucs-normalize uni-confusable textsec-check qp misearch multi-isearch
> find-file elec-pair evil-collection-vc-git vc-git
> evil-collection-diff-mode diff-mode vc-dispatcher face-remap cdlatex
> evil-collection-reftex reftex-toc reftex-cite reftex-ref reftex-parse
> reftex reftex-loaddefs reftex-vars org-fragtog org-modern org-block-capf
> evil-org-agenda evil-org oc-basic disp-table ol-eww evil-collection-eww
> eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
> ol-docview evil-collection-doc-view doc-view ol-bibtex bibtex ol-bbdb
> ol-w3m ol-doi org-link-doi server parinfer-rust-mode
> parinfer-rust-changes parinfer-rust parinfer-rust-helper elisp-autofmt
> loadhist eldoc-box doom-modeline doom-modeline-segments
> doom-modeline-env doom-modeline-core shrink-path eldoc-box-autoloads
> devdocs-autoloads ace-window-autoloads avy-autoloads
> elisp-autofmt-autoloads doom-modeline-autoloads shrink-path-autoloads
> minions minions-autoloads mu-config evil-collection-mu4e mu4e mu4e-org
> mu4e-main mu4e-view gnus-art mm-uu mml2015 mm-view mml-smime smime
> gnutls dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud
> nnimap nnmail mail-source utf7 nnoo parse-time iso8601 gnus-spec
> gnus-int gnus-range gnus-win evil-collection-gnus gnus nnheader range
> mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search
> mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message shr pixel-fill kinsoku
> url-file svg dom flow-fill mule-util mu4e-contacts mu4e-update
> mu4e-folders mu4e-server mu4e-context mu4e-obsolete mu4e-vars
> mu4e-helpers mu4e-config ido message sendmail yank-media rfc822 mml
> mml-sec evil-collection-epa epa derived epg rfc6068 epg-config gnus-util
> mm-decode mm-bodies mm-encode mailabbrev mail-utils gmm-utils mailheader
> auth-source-pass run-command-conf run-command-autoloads helm-make
> helm-make-autoloads geiser-guile-autoloads geiser-autoloads evil-anzu
> evil-anzu-autoloads anzu anzu-autoloads git-gutter-fringe git-gutter
> git-gutter-fringe-autoloads git-gutter-autoloads org-noter
> org-noter-autoloads pdf-occur ibuf-ext evil-collection-ibuffer ibuffer
> ibuffer-loaddefs evil-collection-tablist tablist tablist-filter
> semantic/wisent/comp semantic/wisent semantic/wisent/wisent
> semantic/util-modes semantic/util semantic semantic/tag semantic/lex
> semantic/fw mode-local cedet pdf-isearch let-alist pdf-misc pdf-loader
> evil-collection-pdf pdf-history pdf-tools evil-collection-package-menu
> package browse-url url-handlers evil-collection-custom cus-edit cus-load
> pdf-view jka-compr pdf-cache pdf-info tq pdf-util pdf-macs
> pdf-tools-autoloads tablist-autoloads modus-vivendi-theme darkman dbus
> xml darkman-autoloads fennel-mode fennel-eldoc inf-lisp shell
> fennel-mode-autoloads kbd-mode kbd-mode-autoloads fish-mode
> fish-mode-autoloads elfeed-config elfeed-autoloads vterm-autoloads
> modus-themes modus-themes-autoloads eglot-config consult-eglot
> evil-collection-consult consult-vertico consult evil-collection-bookmark
> bookmark eglot-x flycheck-eglot evil-collection-eglot eglot
> external-completion array filenotify jsonrpc evil-collection-ert ert
> ewoc evil-collection-debug debug backtrace evil-collection-flymake
> flymake-proc flymake evil-collection-imenu imenu consult-eglot-autoloads
> eglot-x-autoloads flycheck-eglot-autoloads rustic-flycheck
> rustic-spellcheck rustic-expand rustic-lsp rustic-playground
> rustic-rustfix rustic-racer etags fileloop evil-collection-xref xref
> rustic-babel rustic-rustfmt project rustic-comint rustic-clippy
> rustic-doc f f-shortdoc rustic-popup rustic-cargo rustic-compile spinner
> xterm-color evil-collection-markdown-mode markdown-mode
> rustic-interaction rustic rust-utils rust-mode rustic-autoloads
> xterm-color-autoloads spinner-autoloads project-autoloads xref-autoloads
> markdown-mode-autoloads rust-mode-autoloads org-config
> org-super-agenda-conf org-super-agenda ts ht org-habit
> org-super-agenda-autoloads ts-autoloads ht-autoloads evil-org-autoloads
> org-block-capf-autoloads org-download org-attach ox-odt rng-loc rng-uri
> rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns
> nxml-enc xmltok nxml-util ox-latex ox-icalendar org-agenda ox-html table
> ox-ascii ox-publish ox org-element org-persist xdg org-id org-refile
> avl-tree generator evil-collection-org org ob ob-tangle ob-ref ob-lob
> ob-table ob-exp org-macro org-src ob-comint org-pcomplete pcomplete
> org-list org-footnote org-faces org-entities evil-collection-outline
> noutline outline ob-emacs-lisp ob-core ob-eval org-cycle org-table ol
> org-fold org-fold-core org-keys oc org-loaddefs evil-collection-calendar
> cal-menu calendar cal-loaddefs org-version org-compat org-macs
> format-spec url-http url-auth mail-parse rfc2231 rfc2047 rfc2045 mm-util
> ietf-drums mail-prsvr url-gw nsm puny async org-download-autoloads
> async-autoloads org-modern-autoloads org-roam-autoloads
> emacsql-sqlite-autoloads emacsql-autoloads org-fragtog-autoloads
> cdlatex-autoloads auctex-autoloads tex-site affe-autoloads corfu-config
> cape-yasnippet-autoloads cape-autoloads corfu-terminal popon
> corfu-terminal-autoloads popon-autoloads corfu-popupinfo
> evil-collection-corfu corfu corfu-autoloads minibuffer-config
> embark-consult-autoloads marginalia marginalia-autoloads savehist
> vertico-directory evil-collection-vertico vertico vertico-autoloads
> orderless-config orderless orderless-autoloads yasnippet
> yasnippet-autoloads helpful-autoloads elisp-refs-autoloads f-autoloads
> exec-path-from-shell exec-path-from-shell-autoloads ligature
> ligature-autoloads ts-fold-indicators fringe-helper ts-fold
> ts-fold-summary ts-fold-parsers ts-fold-util ts-fold-autoloads
> fringe-helper-autoloads origami origami-parsers cl s origami-autoloads
> s-autoloads evil-textobj-tree-sitter evil-textobj-tree-sitter-autoloads
> tree-sitter-langs tree-sitter-langs-build evil-collection-tar-mode
> tar-mode evil-collection-arc-mode arc-mode archive-mode url url-proxy
> url-privacy url-expand url-methods url-history url-cookie url-domsuf
> url-util url-parse auth-source eieio eieio-core password-cache url-vars
> mailcap pp tree-sitter-hl tree-sitter tree-sitter-load tree-sitter-cli
> tsc tsc-dyn tsc-dyn-get evil-collection-compile compile
> text-property-search evil-collection-comint comint ansi-osc dired-aux
> tsc-obsolete tree-sitter-langs-autoloads tree-sitter-autoloads
> tsc-autoloads parinfer-rust-mode-autoloads evil-collection-which-key
> which-key which-key-autoloads embark-autoloads use-package-bind-key
> bind-key git-link-autoloads magit-autoloads magit-section-autoloads
> git-commit-autoloads with-editor-autoloads transient-autoloads general
> general-autoloads undo-tree diff queue undo-tree-autoloads
> queue-autoloads evil-goggles pulse color evil-goggles-autoloads
> evil-surround evil-surround-autoloads evil-commentary
> evil-commentary-integration evil-commentary-autoloads
> evil-collection-unimpaired evil-collection-tabulated-list
> evil-collection-tab-bar evil-collection-simple evil-collection-replace
> evil-collection-process-menu evil-collection-info evil-collection-indent
> evil-collection-image image-mode evil-collection-dired dired
> dired-loaddefs exif evil-collection-help evil-collection-flycheck
> evil-collection-elisp-mode evil-collection-eldoc calc-ext
> evil-collection-calc evil-collection-buff-menu evil-collection annalist
> evil-collection-autoloads annalist-autoloads evil evil-integration
> evil-maps evil-commands reveal evil-jumps evil-command-window
> evil-search evil-ex evil-types evil-macros evil-repeat evil-states
> evil-core time-date advice evil-common windmove calc calc-loaddefs
> calc-macs thingatpt rect evil-digraphs evil-vars ring edmacro kmacro
> evil-autoloads goto-chg-autoloads consult-flycheck-autoloads
> consult-autoloads flycheck ansi-color json map find-func dash
> flycheck-autoloads let-alist-autoloads pkg-info-autoloads epl-autoloads
> dash-autoloads all-the-icons all-the-icons-faces data-material
> data-weathericons data-octicons data-fileicons data-faicons
> data-alltheicons all-the-icons-autoloads recentf tree-widget wid-edit
> no-littering compat no-littering-autoloads compat-autoloads finder-inf
> use-package-ensure use-package-core use-package-autoloads
> bind-key-autoloads straight-autoloads comp comp-cstr warnings icons rx
> hl-line display-line-numbers cl-extra help-mode straight info
> loaddefs-gen generate-lisp-file lisp-mnt radix-tree easy-mmode cl-seq
> pcase subr-x byte-opt cl-macs gv bytecomp byte-compile saveplace
> llvm-style cc-styles cc-align cc-engine cc-vars cc-defs cl-loaddefs
> cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify
> ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win
> pgtk-win term/common-win pgtk-dnd tool-bar dnd fontset image regexp-opt
> fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
> register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
> scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
> frame minibuffer nadvice seq simple cl-generic indonesian philippine
> cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
> korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
> european ethiopic indian cyrillic chinese composite emoji-zwj charscript
> charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
> cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
> files window text-properties overlay sha1 md5 base64 format env
> code-pages mule custom widget keymap hashtable-print-readable backquote
> threads xwidget-internal dbusbind inotify dynamic-setting
> system-font-setting font-render-setting cairo gtk pgtk lcms2 multi-tty
> make-network-process native-compile emacs)
>
> Memory information:
> ((conses 16 1253548 695557)
> (symbols 48 62868 287)
> (strings 32 281589 96177)
> (string-bytes 1 10088683)
> (vectors 16 174668)
> (vector-slots 8 3697752 1320252)
> (floats 8 2036 8440)
> (intervals 56 20936 19674)
> (buffers 984 53))
Cc'ing João as he asked to be notified about inlay hints
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#61812: 30.0.50; Eglot inlay hints "pile up"
2023-02-27 13:06 ` Chinmay Dalal
@ 2023-02-27 14:05 ` João Távora
2023-02-27 14:33 ` João Távora
1 sibling, 0 replies; 9+ messages in thread
From: João Távora @ 2023-02-27 14:05 UTC (permalink / raw)
To: Chinmay Dalal; +Cc: 61812
I've reproduced and confirmed this bug.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#61812: 30.0.50; Eglot inlay hints "pile up"
2023-02-27 13:06 ` Chinmay Dalal
2023-02-27 14:05 ` João Távora
@ 2023-02-27 14:33 ` João Távora
1 sibling, 0 replies; 9+ messages in thread
From: João Távora @ 2023-02-27 14:33 UTC (permalink / raw)
To: Chinmay Dalal; +Cc: 61812-done
Chinmay Dalal <dalal.chinmay.0101@gmail.com> writes:
> Chinmay Dalal <dalal.chinmay.0101@gmail.com> writes:
>
>> Eglot inlay hints pile up when scrolling a large file.
>> To reproduce
>> 1) Open a large rust file with rust-analyzer installed
>> (I tried to reproduce this with C++/clangd but I couldn't, maybe
>> because it has less no. of hints)
>> 2) Scroll around
>> 3) Look for duplicate hints
I've reproduced this. This is rust-analyzer's fault. We ask it for
hints in some region, and it happily returns hints outside that.
Reported this in https://github.com/rust-lang/rust-analyzer/issues/14215
(:jsonrpc "2.0" :id 216 :method "textDocument/inlayHint" :params
(:textDocument
(:uri "file:///home/capitaomorte/Source/Rust/bevy/crates/bevy_animation/src/lib.rs")
:range
(:start
(:line 187 :character 0)
:end
(:line 238 :character 31))))
[server-reply] (id:216) Mon Feb 27 14:11:25 2023:
(:jsonrpc "2.0" :id 216 :result
[(:position
(:line 294 :character 1)
:label
[(:value "fn animation_player" :location
(:uri "file:///home/capitaomorte/Source/Rust/bevy/crates/bevy_animation/src/lib.rs" :range
(:start
(:line 185 :character 7)
:end
(:line 185 :character 23))))]
Easy to fix on Eglot's side though, so pushed a fix to emacs-29 and closing.
João
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-02-27 14:33 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-26 12:24 bug#61812: 30.0.50; Eglot inlay hints "pile up" Chinmay Dalal
2023-02-26 12:35 ` Eli Zaretskii
2023-02-26 12:59 ` Chinmay Dalal
2023-02-26 13:15 ` Eli Zaretskii
2023-02-26 13:50 ` Chinmay Dalal
2023-02-26 14:35 ` Eli Zaretskii
2023-02-27 13:06 ` Chinmay Dalal
2023-02-27 14:05 ` João Távora
2023-02-27 14:33 ` João Távora
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.