[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#60107: 30.0.50; Open new files very slow if eglot and which-function
From: |
Felix |
Subject: |
bug#60107: 30.0.50; Open new files very slow if eglot and which-function-mode are enabled. |
Date: |
Fri, 16 Dec 2022 00:59:28 +0100 |
User-agent: |
mu4e 1.9.3; emacs 30.0.50 |
Hallo João,
Thanks for the fast response!
Now it makes sense that glsl-mode managed with eglot and glslls takes
forever to open glsl files, and imenu is not working at all.
Seems to depend on the server.
I will try your suggestions, in the end which-function-mode
is not that important to me, so if everything fails it's not that bad
either.
If this is not a bug of emacs,
feel free to close this bug report.
Btw. thanks a lot for eglot!
Felix
João Távora <joaotavora@gmail.com> writes:
> Hi Felix,
>
> First of all, thanks for the easy-to-follow Emacs -Q reproduction
> recipe. I reproduced the problem, although in my own test, which
> used medium/small C++ files, the delay I noticed wasn't very long,
> about 1 second.
>
> Which-function-mode relies on Imenu, which is the keeper of
> a syntactic sub-tree of the file, which it must collect from somewhere.
> When Eglot is enabled, Imenu gets its tree from the LSP server.
> Depending on the LSP server and the amount of information at
> hand, this can be a lot of information and take some time to gather.
>
> It seems which-function-mode not only relies on Imenu but also
> blocks the user interface and redisplay while it is waiting for the
> Imenu backend to reply (the Imenu backend in this case being
> Eglot's).
>
> I don't see a good fix for this, except disabling Imenu/Eglot integration
> by adding the symbol 'imenu to eglot-stay-out-of (see the Eglot
> manual).
>
> It can also be that what's slowing down operation here isn't the
> collection of the syntax tree per se but the logging that is going
> on. See also the Eglot manual for how to configure
> eglot-events-buffer-size to see if it makes a difference or not.;
>
> Finally, you can probably get some other source for Imenu information
> to feed which-func-mode. The new C++ modes like c++-ts-mode seems
> to have similar information handy, and perhaps it takes a lot less time
> to compute.
>
> João
>
> On Thu, Dec 15, 2022 at 10:57 PM Felix <felix.dick@web.de> wrote:
>
> In GNU Emacs 30.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version
> 3.24.35) of 2022-12-15 built on felix-lifebooka531
> Repository revision: 0d60579b6b6f2648a881572783322b1bcf931a73
> Repository branch: makepkg
> Windowing system distributor 'The X.Org Foundation', version 11.0.12201006
> 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-xinput2
> --with-x-toolkit=gtk3 --without-xaw3d --without-cairo --with-sound=no
> --with-xwidgets --with-tree-sitter --without-gpm
> --without-compress-install
> '--program-transform-name=s/\([ec]tags\)/\1.emacs/'
> 'CFLAGS=-march=native -mtune=generic -O3 -pipe -fno-plt -fexceptions
> -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
> -fstack-clash-protection -fcf-protection'
> LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
>
> Configured features:
> ACL DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LCMS2
> LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG
> SECCOMP SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11
> XDBE XFT XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB
>
> Important settings:
> value of $LANG: de_DE.UTF-8
> locale-coding-system: utf-8
>
> Opening C files is very slow if which-function-mode and eglot are
> enabled at the same time. I tested this with:
>
> emacs -Q
> opening a C project file
> M-x eglot
> M-x which-function-mode
> switching to another .c project file now takes seconds until the buffer
> shows up.
> I use an old Laptop, but with just one of the two modes disabled,
> it's quite snappy.