unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Andrea Corallo <acorallo@gnu.org>, joaotavora@gmail.com
Cc: 71367@debbugs.gnu.org, theo@thornhill.no, tsdh@gnu.org
Subject: bug#71367: 30.0.50; ELPA package breadcrumb causes Emacs freeze when editing json file
Date: Thu, 06 Jun 2024 12:35:38 +0300	[thread overview]
Message-ID: <867cf2ifbp.fsf@gnu.org> (raw)
In-Reply-To: <yp1tti7n33c.fsf@fencepost.gnu.org> (message from Andrea Corallo on Wed, 05 Jun 2024 05:36:23 -0400)

> Cc: 71367@debbugs.gnu.org, Theodor Thornhill <theo@thornhill.no>,
>  João Távora <joaotavora@gmail.com>
> From: Andrea Corallo <acorallo@gnu.org>
> Date: Wed, 05 Jun 2024 05:36:23 -0400
> 
> Tassilo Horn <tsdh@gnu.org> writes:
> 
> > Ok, now I tested with
> >
> >   emacs -Q --load ~/recipe-71367@debbugs.gnu.org.el
> >
> > where the recipe is:
> >
> > (progn
> >   ;; Native compile doesn't make a difference...
> >   (setq native-comp-jit-compilation-deny-list '(".*breadcrumb.*"))
> >   (package-initialize)
> >   (package-activate 'breadcrumb)
> >   (breadcrumb-mode)
> >   ;; Using json-ts-mode is essential!
> >   (add-to-list 'major-mode-remap-alist '(js-json-mode . json-ts-mode))
> >   (find-file "~/mirrorstatus.json"))
> >
> > Before firing up Emacs, I've deleted the breadcrumb ELN file.
> >
> > With the above recipe, Emacs instantly freezes when the file gets
> > displayed.

It doesn't freeze, it just takes a very long time to perform the
initial redisplay after visiting the file.  With my unoptimized build
of Emacs 30, it takes something like a full minute until the "freeze"
ends.  Optimized builds should do that in, like, 15 to 20 sec, I'd
expect.  Thereafter the breadcrumbs display on the header line works
just fine.

The importance of using json-ts-mode is simply because it defines
support for Imenu, whereas the default js-json-mode does not.  With
Imenu support turned on, imenu--index-alist is a huge nested structure
for this large file: there are 17500 elements there.  The first time
breadcrumb-mode is invoked, it loops over all those elements doing its
thing in breadcrumb--summarize, and that takes both time and a lot of
consing (which triggers a lot of GC, which slows down this even more).
That's all.

Maybe João could suggest some trick or user option to cut down that
initial time to reasonable level.  Failing that, I suggest not to
enable breadcrumb-mode in such large JSON buffers (something that can
be done in a mode hook, I guess?)





  reply	other threads:[~2024-06-06  9:35 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-04 19:40 bug#71367: 30.0.50; ELPA package breadcrumb causes Emacs freeze when editing json file Tassilo Horn
2024-06-04 20:49 ` Andrea Corallo
2024-06-05  7:24   ` Tassilo Horn
2024-06-05  9:36     ` Andrea Corallo
2024-06-06  9:35       ` Eli Zaretskii [this message]
2024-06-06 10:07         ` João Távora
2024-06-06 11:33           ` Eli Zaretskii
2024-06-06 11:47             ` João Távora
2024-06-06 12:08               ` Eli Zaretskii
2024-06-06 13:00                 ` João Távora
2024-06-06 13:37                   ` Eli Zaretskii
2024-06-06 14:01                     ` João Távora
2024-06-06 14:29                       ` Tassilo Horn
2024-06-07 21:23 ` Jeremy Bryant via Bug reports for GNU Emacs, the Swiss army knife of text editors

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=867cf2ifbp.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=71367@debbugs.gnu.org \
    --cc=acorallo@gnu.org \
    --cc=joaotavora@gmail.com \
    --cc=theo@thornhill.no \
    --cc=tsdh@gnu.org \
    /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).