unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Felix <felix.dick@web.de>
To: "João Távora" <joaotavora@gmail.com>
Cc: 60107@debbugs.gnu.org
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	[thread overview]
Message-ID: <87pmcki50f.fsf@web.de> (raw)
In-Reply-To: <CALDnm53CzTJPgbpaae46ZqgzeVNfrAwQkRk1NbYey66M2RC5sA@mail.gmail.com>


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.





  reply	other threads:[~2022-12-15 23:59 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-15 22:53 bug#60107: 30.0.50; Open new files very slow if eglot and which-function-mode are enabled Felix
2022-12-15 23:44 ` João Távora
2022-12-15 23:59   ` Felix [this message]
2022-12-16  7:23     ` Eli Zaretskii
2022-12-16 11:26       ` Felix
2022-12-16 15:45         ` Eli Zaretskii
2022-12-16 15:53           ` João Távora

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pmcki50f.fsf@web.de \
    --to=felix.dick@web.de \
    --cc=60107@debbugs.gnu.org \
    --cc=joaotavora@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).