all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
@ 2024-11-09 16:04 Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-14  8:44 ` Eli Zaretskii
  0 siblings, 1 reply; 9+ messages in thread
From: Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-09 16:04 UTC (permalink / raw)
  To: 74281


1. 11ikjlkjkkkj
1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
the file with C-n, C-f or mouse scrolling. It sverely lags for several
seconds, doesn’t even respond to C-g.

2. Toggle font-lock-mode off through M-x, then try to scroll. It works
as expected, no serious lags.

3. Running the profiler also shows font-lock as the culprit.

This makes working on big projects, in my case the source code of GNU
Guix distribution an impossible situation. I haven’t tried setting up
(Guile) Scheme with Tree-Sitter, but shouldn’t simple
syntax-highlighting be not a serious problem?

To try a big Scheme file and reproduce this, open tex.scm in
gnu/packages/tex.scm in Guix source tree:

https://git.savannah.gnu.org/cgit/guix.git


In GNU Emacs 30.0.91 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.41, cairo version 1.18.0)
Windowing system distributor 'The X.Org Foundation', version 11.0.12101012
System Description: Guix System

Configured using:
 'configure
 CONFIG_SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash
 SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash
 --prefix=/gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b
 --enable-fast-install --with-cairo --with-modules
 --with-native-compilation=aot --disable-build-details'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP
NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $EMACSLOADPATH: /home/divya/.config/guix/current/share/emacs/site-lisp:/home/divya/.guix-home/profile/share/emacs/site-lisp:/home/divya/.guix-profile/share/emacs/site-lisp:/run/current-system/profile/share/emacs/site-lisp:/gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

Major mode: Dired/name 452/587

Minor modes in effect:
  all-the-icons-dired-mode: t
  erc-notify-mode: t
  erc-notifications-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-ring-mode: t
  erc-netsplit-mode: t
  erc-menu-mode: t
  erc-match-mode: t
  erc-list-mode: t
  erc-irccontrols-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  erc-imenu-mode: t
  erc-pcomplete-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-autojoin-mode: t
  erc-networks-mode: t
  gcmh-mode: t
  global-corfu-mode: t
  corfu-mode: t
  global-paren-face-mode: t
  global-color-identifiers-mode: t
  global-hi-lock-mode: t
  hi-lock-mode: t
  timeclock-mode-line-display: t
  server-mode: t
  dirvish-peek-mode: t
  dirvish-side-follow-mode: t
  dirvish-override-dired-mode: t
  dired-hide-details-mode: t
  consult-org-roam-mode: t
  org-roam-db-autosync-mode: t
  winner-mode: t
  popper-mode: t
  meow-global-mode: t
  meow-mode: t
  meow-motion-mode: t
  meow-esc-mode: t
  display-time-mode: t
  dimmer-mode: t
  all-the-icons-completion-mode: t
  marginalia-mode: t
  vertico-mode: t
  global-writeroom-mode: t
  which-key-mode: t
  smartparens-global-mode: t
  doom-modeline-mode: t
  global-auto-revert-mode: t
  save-place-mode: t
  savehist-mode: t
  recentf-mode: t
  global-hl-line-mode: t
  global-display-line-numbers-mode: t
  override-global-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-quote-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/divya/.emacs.d/straight/build/compat/compat hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat
/home/divya/.emacs.d/straight/build/compat/compat-pkg hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-pkg
/home/divya/.emacs.d/straight/build/compat/compat-macs hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-macs
/home/divya/.emacs.d/straight/build/compat/compat-autoloads hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-autoloads
/home/divya/.emacs.d/straight/build/compat/compat-30 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-30
/home/divya/.emacs.d/straight/build/compat/compat-29 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-29
/home/divya/.emacs.d/straight/build/compat/compat-28 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-28
/home/divya/.emacs.d/straight/build/compat/compat-27 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-27
/home/divya/.emacs.d/straight/build/compat/compat-26 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-26
/home/divya/.emacs.d/straight/build/compat/compat-25 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-25
/home/divya/.emacs.d/straight/build/which-key/which-key hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/which-key
/home/divya/.emacs.d/straight/build/transient/transient hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/transient
/home/divya/.emacs.d/straight/build/svg/svg hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/svg
/home/divya/.emacs.d/straight/build/bind-key/bind-key hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/bind-key
/home/divya/.emacs.d/straight/build/ef-themes/theme-loaddefs hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/theme-loaddefs
/home/divya/.emacs.d/straight/build/use-package/use-package-core hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-core
/home/divya/.emacs.d/straight/build/use-package/use-package hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package
/home/divya/.emacs.d/straight/build/use-package/use-package-lint hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-lint
/home/divya/.emacs.d/straight/build/use-package/use-package-jump hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-jump
/home/divya/.emacs.d/straight/build/use-package/use-package-ensure hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-ensure
/home/divya/.emacs.d/straight/build/use-package/use-package-diminish hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-diminish
/home/divya/.emacs.d/straight/build/use-package/use-package-delight hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-delight
/home/divya/.emacs.d/straight/build/use-package/use-package-bind-key hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-bind-key
/home/divya/.emacs.d/straight/build/xref/xref hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/progmodes/xref
/home/divya/.emacs.d/straight/build/project/project hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/progmodes/project
/home/divya/.emacs.d/straight/build/peg/peg hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/progmodes/peg
/home/divya/.emacs.d/straight/build/org/ox hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox
/home/divya/.emacs.d/straight/build/org/ox-texinfo hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-texinfo
/home/divya/.emacs.d/straight/build/org/ox-publish hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-publish
/home/divya/.emacs.d/straight/build/org/ox-org hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-org
/home/divya/.emacs.d/straight/build/org/ox-odt hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-odt
/home/divya/.emacs.d/straight/build/org/ox-md hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-md
/home/divya/.emacs.d/straight/build/org/ox-man hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-man
/home/divya/.emacs.d/straight/build/org/ox-latex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-latex
/home/divya/.emacs.d/straight/build/org/ox-koma-letter hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-koma-letter
/home/divya/.emacs.d/straight/build/org/ox-icalendar hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-icalendar
/home/divya/.emacs.d/straight/build/org/ox-html hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-html
/home/divya/.emacs.d/straight/build/org/ox-beamer hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-beamer
/home/divya/.emacs.d/straight/build/org/ox-ascii hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-ascii
/home/divya/.emacs.d/straight/build/org/org hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org
/home/divya/.emacs.d/straight/build/org/org-timer hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-timer
/home/divya/.emacs.d/straight/build/org/org-table hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-table
/home/divya/.emacs.d/straight/build/org/org-src hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-src
/home/divya/.emacs.d/straight/build/org/org-refile hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-refile
/home/divya/.emacs.d/straight/build/org/org-protocol hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-protocol
/home/divya/.emacs.d/straight/build/org/org-plot hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-plot
/home/divya/.emacs.d/straight/build/org/org-persist hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-persist
/home/divya/.emacs.d/straight/build/org/org-pcomplete hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-pcomplete
/home/divya/.emacs.d/straight/build/org/org-num hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-num
/home/divya/.emacs.d/straight/build/org/org-mouse hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-mouse
/home/divya/.emacs.d/straight/build/org/org-mobile hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-mobile
/home/divya/.emacs.d/straight/build/org/org-macs hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-macs
/home/divya/.emacs.d/straight/build/org/org-macro hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-macro
/home/divya/.emacs.d/straight/build/org/org-loaddefs hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-loaddefs
/home/divya/.emacs.d/straight/build/org/org-list hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-list
/home/divya/.emacs.d/straight/build/org/org-lint hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-lint
/home/divya/.emacs.d/straight/build/org/org-keys hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-keys
/home/divya/.emacs.d/straight/build/org/org-inlinetask hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-inlinetask
/home/divya/.emacs.d/straight/build/org/org-indent hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-indent
/home/divya/.emacs.d/straight/build/org/org-id hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-id
/home/divya/.emacs.d/straight/build/org/org-habit hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-habit
/home/divya/.emacs.d/straight/build/org/org-goto hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-goto
/home/divya/.emacs.d/straight/build/org/org-footnote hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-footnote
/home/divya/.emacs.d/straight/build/org/org-fold hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-fold
/home/divya/.emacs.d/straight/build/org/org-fold-core hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-fold-core
/home/divya/.emacs.d/straight/build/org/org-feed hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-feed
/home/divya/.emacs.d/straight/build/org/org-faces hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-faces
/home/divya/.emacs.d/straight/build/org/org-entities hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-entities
/home/divya/.emacs.d/straight/build/org/org-element hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-element
/home/divya/.emacs.d/straight/build/org/org-element-ast hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-element-ast
/home/divya/.emacs.d/straight/build/org/org-duration hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-duration
/home/divya/.emacs.d/straight/build/org/org-datetree hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-datetree
/home/divya/.emacs.d/straight/build/org/org-cycle hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-cycle
/home/divya/.emacs.d/straight/build/org/org-ctags hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-ctags
/home/divya/.emacs.d/straight/build/org/org-crypt hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-crypt
/home/divya/.emacs.d/straight/build/org/org-compat hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-compat
/home/divya/.emacs.d/straight/build/org/org-colview hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-colview
/home/divya/.emacs.d/straight/build/org/org-clock hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-clock
/home/divya/.emacs.d/straight/build/org/org-capture hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-capture
/home/divya/.emacs.d/straight/build/org/org-attach hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-attach
/home/divya/.emacs.d/straight/build/org/org-archive hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-archive
/home/divya/.emacs.d/straight/build/org/org-agenda hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-agenda
/home/divya/.emacs.d/straight/build/org/ol hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol
/home/divya/.emacs.d/straight/build/org/ol-bibtex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-bibtex
/home/divya/.emacs.d/straight/build/org/ol-bbdb hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-bbdb
/home/divya/.emacs.d/straight/build/org/oc hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc
/home/divya/.emacs.d/straight/build/org/oc-csl hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-csl
/home/divya/.emacs.d/straight/build/org/oc-biblatex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-biblatex
/home/divya/.emacs.d/straight/build/org/oc-basic hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-basic
/home/divya/.emacs.d/straight/build/org/ob-tangle hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-tangle
/home/divya/.emacs.d/straight/build/org/ob-sql hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-sql
/home/divya/.emacs.d/straight/build/org/ob-shell hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-shell
/home/divya/.emacs.d/straight/build/org/ob-ruby hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-ruby
/home/divya/.emacs.d/straight/build/org/ob-python hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-python
/home/divya/.emacs.d/straight/build/org/ob-octave hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-octave
/home/divya/.emacs.d/straight/build/org/ob-lua hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-lua
/home/divya/.emacs.d/straight/build/org/ob-lilypond hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-lilypond
/home/divya/.emacs.d/straight/build/org/ob-latex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-latex
/home/divya/.emacs.d/straight/build/org/ob-julia hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-julia
/home/divya/.emacs.d/straight/build/org/ob-java hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-java
/home/divya/.emacs.d/straight/build/org/ob-haskell hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-haskell
/home/divya/.emacs.d/straight/build/org/ob-gnuplot hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-gnuplot
/home/divya/.emacs.d/straight/build/org/ob-exp hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-exp
/home/divya/.emacs.d/straight/build/org/ob-core hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-core
/home/divya/.emacs.d/straight/build/org/ob-comint hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-comint
/home/divya/.emacs.d/straight/build/org/ob-clojure hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-clojure
/home/divya/.emacs.d/straight/build/org/ob-R hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-R
/home/divya/.emacs.d/straight/build/org/ob-C hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-C
/home/divya/.emacs.d/straight/build/org/org-version hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-version
/home/divya/.emacs.d/straight/build/org/org-tempo hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-tempo
/home/divya/.emacs.d/straight/build/org/org-attach-git hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-attach-git
/home/divya/.emacs.d/straight/build/org/ol-w3m hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-w3m
/home/divya/.emacs.d/straight/build/org/ol-rmail hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-rmail
/home/divya/.emacs.d/straight/build/org/ol-mhe hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-mhe
/home/divya/.emacs.d/straight/build/org/ol-man hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-man
/home/divya/.emacs.d/straight/build/org/ol-irc hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-irc
/home/divya/.emacs.d/straight/build/org/ol-info hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-info
/home/divya/.emacs.d/straight/build/org/ol-gnus hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-gnus
/home/divya/.emacs.d/straight/build/org/ol-eww hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-eww
/home/divya/.emacs.d/straight/build/org/ol-eshell hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-eshell
/home/divya/.emacs.d/straight/build/org/ol-doi hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-doi
/home/divya/.emacs.d/straight/build/org/ol-docview hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-docview
/home/divya/.emacs.d/straight/build/org/oc-natbib hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-natbib
/home/divya/.emacs.d/straight/build/org/oc-bibtex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-bibtex
/home/divya/.emacs.d/straight/build/org/ob hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob
/home/divya/.emacs.d/straight/build/org/ob-table hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-table
/home/divya/.emacs.d/straight/build/org/ob-sqlite hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-sqlite
/home/divya/.emacs.d/straight/build/org/ob-sed hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-sed
/home/divya/.emacs.d/straight/build/org/ob-screen hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-screen
/home/divya/.emacs.d/straight/build/org/ob-scheme hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-scheme
/home/divya/.emacs.d/straight/build/org/ob-sass hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-sass
/home/divya/.emacs.d/straight/build/org/ob-ref hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-ref
/home/divya/.emacs.d/straight/build/org/ob-processing hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-processing
/home/divya/.emacs.d/straight/build/org/ob-plantuml hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-plantuml
/home/divya/.emacs.d/straight/build/org/ob-perl hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-perl
/home/divya/.emacs.d/straight/build/org/ob-org hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-org
/home/divya/.emacs.d/straight/build/org/ob-ocaml hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-ocaml
/home/divya/.emacs.d/straight/build/org/ob-maxima hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-maxima
/home/divya/.emacs.d/straight/build/org/ob-matlab hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-matlab
/home/divya/.emacs.d/straight/build/org/ob-makefile hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-makefile
/home/divya/.emacs.d/straight/build/org/ob-lob hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-lob
/home/divya/.emacs.d/straight/build/org/ob-lisp hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-lisp
/home/divya/.emacs.d/straight/build/org/ob-js hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-js
/home/divya/.emacs.d/straight/build/org/ob-groovy hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-groovy
/home/divya/.emacs.d/straight/build/org/ob-fortran hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-fortran
/home/divya/.emacs.d/straight/build/org/ob-forth hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-forth
/home/divya/.emacs.d/straight/build/org/ob-eval hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-eval
/home/divya/.emacs.d/straight/build/org/ob-eshell hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-eshell
/home/divya/.emacs.d/straight/build/org/ob-emacs-lisp hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-emacs-lisp
/home/divya/.emacs.d/straight/build/org/ob-dot hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-dot
/home/divya/.emacs.d/straight/build/org/ob-ditaa hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-ditaa
/home/divya/.emacs.d/straight/build/org/ob-css hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-css
/home/divya/.emacs.d/straight/build/org/ob-calc hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-calc
/home/divya/.emacs.d/straight/build/org/ob-awk hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-awk
/home/divya/.emacs.d/straight/build/soap-client/soap-inspect hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/net/soap-inspect
/home/divya/.emacs.d/straight/build/soap-client/soap-client hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/net/soap-client
/home/divya/.emacs.d/straight/build/seq/seq hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/emacs-lisp/seq
/home/divya/.emacs.d/straight/build/map/map hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/emacs-lisp/map
/home/divya/.emacs.d/straight/build/let-alist/let-alist hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/emacs-lisp/let-alist
/home/divya/.emacs.d/straight/build/compat/compat hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/emacs-lisp/compat

Features:
(shadow sort mail-extr emacsbug org-archive oc-basic ox-odt rng-loc
rng-uri rng-parse rng-match rng-pttrn nxml-parse nxml-ns nxml-enc xmltok
nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox
textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check url-cache debbugs-gnu add-log scheme-complete geiser-mode
geiser-xref geiser-compile vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs
vc-rcs log-view pcvs-util all-the-icons-dired org-download async
dirvish-yank dirvish-widgets erc-notify cus-start
erc-desktop-notifications network-stream emojify apropos tar-mode
arc-mode archive-mode ht erc-track erc-ring erc-netsplit erc-menu
erc-match erc-list erc-goodies erc-imenu erc-pcomplete erc-button
erc-fill erc-stamp erc-join erc erc-backend erc-networks erc-common
erc-compat erc-loaddefs ef-dark-theme symbol-overlay paredit
rainbow-delimiters org-indent tramp-cache time-stamp tramp-sh shortdoc
gcmh gcmh-autoloads eshell-git-prompt eshell-git-prompt-autoloads
shell-pop shell-pop-autoloads eat term/xterm xterm term disp-table ehelp
eat-autoloads corfu-terminal-autoloads popon-autoloads corfu
corfu-autoloads forge-autoloads yaml-autoloads ghub-autoloads
treepy-autoloads closql-autoloads magit-autoloads skewer-mode
cache-table js2-mode js c-ts-common skewer-mode-autoloads
js2-mode-autoloads impatient-mode htmlize impatient-mode-autoloads
htmlize-autoloads web-mode-autoloads hideshow helpful-autoloads
elisp-refs scheme-complete-autoloads rainbow-delimiters-autoloads
slime-autoloads macrostep-autoloads paren-face paren-face-autoloads
paredit-autoloads pollen-mode pollen-mode-autoloads
racket-mode-autoloads geiser-guile tramp trampver tramp-integration
tramp-message tramp-compat tramp-loaddefs geiser-debug
geiser-guile-autoloads geiser-chez geiser-chez-autoloads geiser-mit
geiser-repl geiser-image geiser-capf geiser-doc geiser-menu
geiser-autodoc info-look geiser-edit etags fileloop geiser-completion
geiser-eval geiser-connection geiser-syntax scheme geiser-log
geiser-popup view geiser-mit-autoloads forth-mode forth-spec forth-smie
forth-syntax forth-mode-autoloads rust-mode-autoloads hs-lint
haskell-mode-autoloads go-mode-autoloads eldoc-box-autoloads eglot
external-completion jsonrpc xref seq-25 diff ert debug backtrace imenu
rmsbolt rmsbolt-split rmsbolt-java disass rmsbolt-autoloads
color-identifiers-mode color-identifiers-mode-autoloads
symbol-overlay-autoloads extras ement ement-notifications ement-notify
ement-room ewoc ement-lib ement-api ement-structs ement-macros plz dns
ement-autoloads svg-lib-autoloads taxy-magit-section-autoloads
taxy-autoloads plz-autoloads persist-autoloads hi-lock debbugs
soap-client url-http url-auth url-gw nsm rng-xsd rng-dt rng-util
xsd-regexp debbugs-compat debbugs-autoloads soap-client-autoloads
password-store auth-source-pass with-editor with-editor-autoloads
epa-file cl biblio biblio-download biblio-dissemin biblio-ieee
biblio-hal biblio-dblp biblio-crossref biblio-arxiv timezone biblio-doi
biblio-core let-alist ido biblio-autoloads biblio-core-autoloads ebib
ebib-reading-list ebib-notes ebib-filters ebib-keywords ebib-utils
ebib-db mule-util crm ebib-autoloads timeclock ess ess-utils ess-custom
ess-autoloads elgrep-autoloads fzf fzf-autoloads edraw-org edraw-util
edraw-msg el-easydraw-autoloads empv empv-autoloads emacs-everywhere
server emacs-everywhere-autoloads sx sx-autoloads let-alist-autoloads
markdown-mode-autoloads cal anki.el anki-editor-autoloads feed.el
bookmarks books binder lisp-mnt binder-autoloads djvu djvu-autoloads
nov-autoloads esxml-autoloads kv-autoloads org-noter-autoloads
saveplace-pdf-view pdf-tools pdf-view pdf-cache pdf-info tq pdf-util
pdf-macs dired.el consult-dir-autoloads dired-sidebar-autoloads
dired-subtree-autoloads dired-hacks-utils-autoloads
dired-rsync-autoloads dirvish-peek dirvish-side dirvish-subtree dirvish
dirvish-autoloads fd-dired find-dired fd-dired-autoloads wdired dired+
image-dired image-dired-tags image-dired-external image-dired-util
image-file image-converter bookmark+ bookmark+-key bookmark+-1
bookmark+-bmu bookmark+-lit bookmark+-mac dired-aux dired-x
xenops-autoloads aio-autoloads yasnippet-autoloads cdlatex-autoloads
auctex-autoloads tex-site flymake-proselint flymake
flymake-proselint-autoloads langtool langtool-autoloads org-alert alert
log4e notifications gntp org-alert-autoloads org-timeblock compat-macs
org-timeblock-autoloads svg-autoloads cal-china lunar solar cal-dst
cal-bahai cal-islam cal-hebrew holidays holiday-loaddefs vc-git
diff-mode track-changes citar-capf citar citar-file citar-cache
citar-format parsebib org-appear org-modern toc-org org-make-toc 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 gnutls dig gnus-sum shr
pixel-fill kinsoku url-file gnus-group gnus-undo gnus-start gnus-dbus
dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time gnus-spec
gnus-int gnus-range message sendmail yank-media puny rfc822 mml mml-sec
epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util
mail-prsvr ol-docview doc-view jka-compr image-mode exif dired
dired-loaddefs ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-doi
org-link-doi pulse svg dom xml org-journal-autoloads appt diary-lib
diary-loaddefs consult-org-roam consult-org-roam-buffer consult bookmark
consult-org-roam-autoloads use-package-ensure rg files-x vc
vc-dispatcher rg-info-hack rg-menu transient rg-ibuffer rg-result
wgrep-rg wgrep rg-history rg-header ibuf-ext ibuffer ibuffer-loaddefs
grep cus-edit cus-load rg-autoloads wgrep-autoloads org-roam-ui
org-roam-dailies websocket bindat simple-httpd pp org-roam-ui-autoloads
websocket-autoloads simple-httpd-autoloads org-roam-migrate org-roam-log
org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db
emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam
org-capture org-attach emacsql-sqlite emacsql-sqlite-common emacsql
emacsql-compiler magit-section cursor-sensor org-roam-autoloads
magit-section-autoloads emacsql-autoloads org-present-autoloads
org-make-toc-autoloads toc-org-autoloads ob-sqlite ob-sql ob-gnuplot
ob-shell shell ob-julia ob-lisp ob-scheme geiser-impl help-fns
radix-tree geiser-custom geiser-base geiser ob-python python project
ob-haskell ob-dot ob-latex ob-ditaa ob-org ob-C cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
ob-R org-tempo tempo org-modern-autoloads org-appear-autoloads
citar-embark-autoloads citar-autoloads citeproc-autoloads
string-inflection-autoloads queue-autoloads parsebib-autoloads org-ql
peg ts org-habit org-agenda org-element org-persist xdg org-id
org-refile org-element-ast inline avl-tree generator org-duration 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 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 find-func cal-menu calendar
cal-loaddefs org-version org-compat org-macs format-spec
org-ql-autoloads transient-autoloads peg-autoloads ov-autoloads
org-super-agenda-autoloads ts-autoloads map-autoloads guix.el guix
guix-autoloads edit-indirect-autoloads magit-popup-autoloads
bui-autoloads geiser-autoloads project-autoloads xref-autoloads init
winner transpose-frame-autoloads popper popper-autoloads
ace-window-autoloads avy avy-autoloads buffers.el keys.el
embark-consult-autoloads embark-autoloads expand-region-autoloads meow
meow-tutor meow-cheatsheet meow-cheatsheet-layout meow-core meow-shims
delsel meow-esc meow-command array meow-beacon meow-thing meow-visual
pcase meow-keypad meow-helpers meow-util meow-keymap meow-face meow-var
meow-autoloads undo-fu undo-fu-autoloads ui.el time
org-download-autoloads async-autoloads justify-kp justify-kp-autoloads
dimmer dimmer-autoloads solaire-mode face-remap solaire-mode-autoloads
dashboard dashboard-widgets ffap dashboard-autoloads consult-autoloads
orderless orderless-autoloads all-the-icons-completion
all-the-icons-completion-autoloads marginalia marginalia-autoloads
vertico vertico-autoloads writeroom-mode visual-fill-column
writeroom-mode-autoloads visual-fill-column-autoloads which-key
which-key-autoloads smartparens advice loadhist thingatpt
smartparens-autoloads emojify-autoloads ht-autoloads unicode-fonts
unicode-fonts-autoloads ucs-utils-autoloads font-utils-autoloads
persistent-soft-autoloads list-utils-autoloads pcache-autoloads
doom-modeline doom-modeline-segments doom-modeline-env
doom-modeline-core comp comp-cstr warnings comp-run comp-common
shrink-path rx f s dash nerd-icons nerd-icons-faces nerd-icons-data
nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon
nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon
nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon
nerd-icons-data-pomicon nerd-icons-data-ipsicon compat
doom-modeline-autoloads shrink-path-autoloads f-autoloads dash-autoloads
s-autoloads nerd-icons-autoloads seq-autoloads alert-autoloads
finder-inf log4e-autoloads gntp-autoloads rainbow-mode color
rainbow-mode-autoloads autorevert filenotify saveplace savehist recentf
tree-widget wid-edit hl-line ef-themes ef-themes-autoloads info
display-line-numbers edmacro kmacro crux-autoloads use-package-bind-key
bind-key easy-mmode all-the-icons-dired-autoloads all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons all-the-icons-autoloads
use-package-core mu4e-autoloads zenburn-theme-autoloads compat-autoloads
jinx-autoloads saveplace-pdf-view-autoloads tablist-autoloads
pdf-tools-autoloads guix-emacs use-package-autoloads bind-key-autoloads
straight-autoloads cl-extra help-mode straight 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
map byte-opt gv url-vars cl-loaddefs cl-lib compile text-property-search
comint subr-x ansi-osc ansi-color ring bytecomp byte-compile 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 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 1569808 2032077) (symbols 48 77987 11)
 (strings 32 393425 106016) (string-bytes 1 17866520)
 (vectors 16 167276) (vector-slots 8 2824657 579009)
 (floats 8 2970 25080) (intervals 56 20041 6581) (buffers 992 63))

-- 
Divya Ranjan,
Philosophy, Mathematics, Libre Software.







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

* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
  2024-11-09 16:04 bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-14  8:44 ` Eli Zaretskii
  2024-11-14  9:32   ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-14 16:56   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 2 replies; 9+ messages in thread
From: Eli Zaretskii @ 2024-11-14  8:44 UTC (permalink / raw)
  To: Divya Ranjan, Stefan Monnier; +Cc: 74281

> Date: Sat, 09 Nov 2024 16:04:13 +0000
> From:  Divya Ranjan via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> 
> 1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
> the file with C-n, C-f or mouse scrolling. It sverely lags for several
> seconds, doesn’t even respond to C-g.

I can only reproduce this with C-p when moving from the end of the
file.  C-n and C-f are instantaneous here, even though this is an
unoptimized build of Emacs 30.

> 2. Toggle font-lock-mode off through M-x, then try to scroll. It works
> as expected, no serious lags.
> 
> 3. Running the profiler also shows font-lock as the culprit.

The profile I measured is below.  It seems like the bottleneck is
parse-partial-sexp, which means the syntax table
scheme-mode-syntax-table might be the immediate suspect.

> This makes working on big projects, in my case the source code of GNU
> Guix distribution an impossible situation. I haven’t tried setting up
> (Guile) Scheme with Tree-Sitter, but shouldn’t simple
> syntax-highlighting be not a serious problem?
> 
> To try a big Scheme file and reproduce this, open tex.scm in
> gnu/packages/tex.scm in Guix source tree:
> 
> https://git.savannah.gnu.org/cgit/guix.git

Stefan, what tools do we have to investigate slowness related to
parse-partial-sexp?  Or maybe you have suggestions for how to speed up
font-lock in this case?

Here's the profile I get while moving with C-p through the above file:

        1151  66% - ...
        1151  66%  - command-execute
        1151  66%   - call-interactively
        1151  66%    - funcall-interactively
        1151  66%     - previous-line
        1151  66%      - line-move
         798  45%       - line-pixel-height
         798  45%        - jit-lock-function
         798  45%         - jit-lock-fontify-now
         798  45%          - jit-lock--run-functions
         798  45%           - run-hook-wrapped
         798  45%            - #<byte-code-function CEC>
         798  45%             - font-lock-fontify-region
         798  45%              - font-lock-default-fontify-region
         798  45%               - font-lock-fontify-syntactically-region
         798  45%                - font-lock-default-fontify-syntactically
         798  45%                   parse-partial-sexp
         353  20%       - line-move-visual
         353  20%        - vertical-motion
         353  20%         - jit-lock-function
         353  20%          - jit-lock-fontify-now
         353  20%           - jit-lock--run-functions
         353  20%            - run-hook-wrapped
         353  20%             - #<byte-code-function BCE>
         353  20%              - font-lock-fontify-region
         353  20%               - font-lock-default-fontify-region
         353  20%                - font-lock-fontify-syntactically-region
         353  20%                 - font-lock-default-fontify-syntactically
         353  20%                    parse-partial-sexp
         585  33% - redisplay_internal (C function)
         577  33%  - jit-lock-function
         577  33%   - jit-lock-fontify-now
         577  33%    - jit-lock--run-functions
         577  33%     - run-hook-wrapped
         577  33%      - #<byte-code-function 5A0>
         577  33%       - font-lock-fontify-region
         577  33%        - font-lock-default-fontify-region
         577  33%         - font-lock-fontify-syntactically-region
         577  33%          - font-lock-default-fontify-syntactically
         577  33%             parse-partial-sexp
           6   0%   Automatic GC





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

* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
  2024-11-14  8:44 ` Eli Zaretskii
@ 2024-11-14  9:32   ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-14 10:06     ` Eli Zaretskii
  2024-11-14 16:56   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 1 reply; 9+ messages in thread
From: Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-14  9:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Stefan Monnier, 74281

Hello, Eli

Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Sat, 09 Nov 2024 16:04:13 +0000
>> From:  Divya Ranjan via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> 
>> 
>> 1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
>> the file with C-n, C-f or mouse scrolling. It sverely lags for several
>> seconds, doesn’t even respond to C-g.
>
> I can only reproduce this with C-p when moving from the end of the
> file.  C-n and C-f are instantaneous here, even though this is an
> unoptimized build of Emacs 30.

I see, well its the latest build of emacs on GNU Guix, so yeah. Which lacking features in particular do you think might be causing this?

Regards,
-- 
Divya Ranjan,
Philosophy, Mathematics, Libre Software.





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

* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
  2024-11-14  9:32   ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-14 10:06     ` Eli Zaretskii
  2024-11-14 11:09       ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2024-11-14 10:06 UTC (permalink / raw)
  To: Divya Ranjan; +Cc: monnier, 74281

> From: Divya Ranjan <divya@subvertising.org>
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>,  74281@debbugs.gnu.org
> Date: Thu, 14 Nov 2024 09:32:12 +0000
> 
> Hello, Eli
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> Date: Sat, 09 Nov 2024 16:04:13 +0000
> >> From:  Divya Ranjan via "Bug reports for GNU Emacs,
> >>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> >> 
> >> 
> >> 1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
> >> the file with C-n, C-f or mouse scrolling. It sverely lags for several
> >> seconds, doesn’t even respond to C-g.
> >
> > I can only reproduce this with C-p when moving from the end of the
> > file.  C-n and C-f are instantaneous here, even though this is an
> > unoptimized build of Emacs 30.
> 
> I see, well its the latest build of emacs on GNU Guix, so yeah. Which lacking features in particular do you think might be causing this?

I don't understand the question: I thought I pointed at the possible
cause by mentioning syntax-directed font lock?





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

* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
  2024-11-14 10:06     ` Eli Zaretskii
@ 2024-11-14 11:09       ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-14 11:42         ` Eli Zaretskii
  0 siblings, 1 reply; 9+ messages in thread
From: Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-14 11:09 UTC (permalink / raw)
  To: 74281, eliz; +Cc: monnier

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

> I don't understand the question: I thought I pointed at the possible cause by mentioning syntax-directed font lock?

I meant you said the emacs build is "unoptimized", what can be optimized?

Regards,


On 14 November 2024 10:06:41 GMT, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Divya Ranjan <divya@subvertising.org>
>> Cc: Stefan Monnier <monnier@iro.umontreal.ca>,  74281@debbugs.gnu.org
>> Date: Thu, 14 Nov 2024 09:32:12 +0000
>> 
>> Hello, Eli
>> 
>> Eli Zaretskii <eliz@gnu.org> writes:
>> 
>> >> Date: Sat, 09 Nov 2024 16:04:13 +0000
>> >> From:  Divya Ranjan via "Bug reports for GNU Emacs,
>> >>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> >> 
>> >> 
>> >> 1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
>> >> the file with C-n, C-f or mouse scrolling. It sverely lags for several
>> >> seconds, doesn’t even respond to C-g.
>> >
>> > I can only reproduce this with C-p when moving from the end of the
>> > file.  C-n and C-f are instantaneous here, even though this is an
>> > unoptimized build of Emacs 30.
>> 
>> I see, well its the latest build of emacs on GNU Guix, so yeah. Which lacking features in particular do you think might be causing this?
>
>I don't understand the question: I thought I pointed at the possible
>cause by mentioning syntax-directed font lock?
>
>
>

Divya Ranjan, Mathematics, Philosophy and Libre Software

[-- Attachment #2: Type: text/html, Size: 2248 bytes --]

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

* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
  2024-11-14 11:09       ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-14 11:42         ` Eli Zaretskii
  0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2024-11-14 11:42 UTC (permalink / raw)
  To: Divya Ranjan; +Cc: monnier, 74281

> Date: Thu, 14 Nov 2024 11:09:41 +0000
> From: Divya Ranjan <divya@subvertising.org>
> CC: monnier@iro.umontreal.ca, 74281@debbugs.gnu.org
> 
> > I don't understand the question: I thought I pointed at the possible cause by mentioning syntax-directed
> font lock?
> 
> I meant you said the emacs build is "unoptimized", what can be optimized?

No, it means the C files were compiled with -O0, which disables
compiler optimizations, so my Emacs is supposed to be slower than
normal.  And yet I seed no lags with C-n, unlike what you report.





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

* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
  2024-11-14  8:44 ` Eli Zaretskii
  2024-11-14  9:32   ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-14 16:56   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-30  9:51     ` Eli Zaretskii
  1 sibling, 1 reply; 9+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-14 16:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Divya Ranjan, 74281

> Stefan, what tools do we have to investigate slowness related to
> parse-partial-sexp?  Or maybe you have suggestions for how to speed up
> font-lock in this case?

Hmm... `parse-partial-sexp` is normally expected to be fast, unless it
has to scan a lot of text.

> Here's the profile I get while moving with C-p through the above file:

A stab in the dark, but maybe the relevant call is the one in:

          (state (if (or syntax-ppss-table
                         (not font-lock--syntax-table-affects-ppss))
                     (syntax-ppss start)
                   ;; If `syntax-ppss' doesn't have its own syntax-table and
                   ;; we have installed our own syntax-table which
                   ;; differs from the standard one in ways which affects PPSS,
                   ;; then we can't use `syntax-ppss' since that would pollute
                   ;; and be polluted by its cache.
                   (parse-partial-sexp (point-min) start)))

so the origin of the slowdown would be the (?#. "w 14") in the setting
below in `scheme.el`:

  (setq font-lock-defaults
        '((scheme-font-lock-keywords
           scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
          nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
          beginning-of-defun
          (font-lock-mark-block-function . mark-defun)))

in which case, setting a `syntax-ppss-table` should fix the problem, tho
we could also fix it by being more careful: AFAICT the purpose of this
(?#. "w 14") is only to change the syntax of `#` from "prefix" to "word"
without changing the comment-related flags, so it shouldn't cause
`font-lock--syntax-table-affects-ppss` to be set.
So, we could solve it by improving the code that sets
`font-lock--syntax-table-affects-ppss`, as in the patch below.


        Stefan


diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 203131bfd5a..f6299920c0a 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1955,14 +1955,15 @@ font-lock-set-defaults
 	    (dolist (char (if (numberp (car selem))
 			      (list (car selem))
 			    (mapcar #'identity (car selem))))
-	      (unless (memq (car (aref font-lock-syntax-table char))
-	                    '(1 2 3))    ;"." "w" "_"
-	        (setq font-lock--syntax-table-affects-ppss t))
-	      (modify-syntax-entry char syntax font-lock-syntax-table)
-	      (unless (memq (car (aref font-lock-syntax-table char))
-	                    '(1 2 3))    ;"." "w" "_"
-	        (setq font-lock--syntax-table-affects-ppss t))
-	      ))))
+	      (let ((old-syntax (aref font-lock-syntax-table char)))
+	        (modify-syntax-entry char syntax font-lock-syntax-table)
+	        (let ((new-syntax (aref font-lock-syntax-table char)))
+	          (unless (and (equal (cdr old-syntax) (cdr new-syntax))
+	                       (memq (logand (car old-syntax) 255) '(1 2 3 6))
+	                       (memq (logand (car new-syntax) 255) '(1 2 3 6))
+	                       (equal (ash (car old-syntax) -8)
+	                              (ash (car new-syntax) -8)))
+	            (setq font-lock--syntax-table-affects-ppss t))))))))
       ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
       ;; but that was removed in 25.1, so if it's a cons cell, we assume that
       ;; it's part of the variable alist.






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

* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
  2024-11-14 16:56   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-30  9:51     ` Eli Zaretskii
  2024-12-14  9:34       ` Eli Zaretskii
  0 siblings, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2024-11-30  9:51 UTC (permalink / raw)
  To: divya, Stefan Monnier; +Cc: 74281

Ping!  Divya, could you please try Stefan's suggestions and report
back?

> Cc: Divya Ranjan <divya@subvertising.org>, 74281@debbugs.gnu.org
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Thu, 14 Nov 2024 11:56:37 -0500
> 
> > Stefan, what tools do we have to investigate slowness related to
> > parse-partial-sexp?  Or maybe you have suggestions for how to speed up
> > font-lock in this case?
> 
> Hmm... `parse-partial-sexp` is normally expected to be fast, unless it
> has to scan a lot of text.
> 
> > Here's the profile I get while moving with C-p through the above file:
> 
> A stab in the dark, but maybe the relevant call is the one in:
> 
>           (state (if (or syntax-ppss-table
>                          (not font-lock--syntax-table-affects-ppss))
>                      (syntax-ppss start)
>                    ;; If `syntax-ppss' doesn't have its own syntax-table and
>                    ;; we have installed our own syntax-table which
>                    ;; differs from the standard one in ways which affects PPSS,
>                    ;; then we can't use `syntax-ppss' since that would pollute
>                    ;; and be polluted by its cache.
>                    (parse-partial-sexp (point-min) start)))
> 
> so the origin of the slowdown would be the (?#. "w 14") in the setting
> below in `scheme.el`:
> 
>   (setq font-lock-defaults
>         '((scheme-font-lock-keywords
>            scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
>           nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
>           beginning-of-defun
>           (font-lock-mark-block-function . mark-defun)))
> 
> in which case, setting a `syntax-ppss-table` should fix the problem, tho
> we could also fix it by being more careful: AFAICT the purpose of this
> (?#. "w 14") is only to change the syntax of `#` from "prefix" to "word"
> without changing the comment-related flags, so it shouldn't cause
> `font-lock--syntax-table-affects-ppss` to be set.
> So, we could solve it by improving the code that sets
> `font-lock--syntax-table-affects-ppss`, as in the patch below.
> 
> 
>         Stefan
> 
> 
> diff --git a/lisp/font-lock.el b/lisp/font-lock.el
> index 203131bfd5a..f6299920c0a 100644
> --- a/lisp/font-lock.el
> +++ b/lisp/font-lock.el
> @@ -1955,14 +1955,15 @@ font-lock-set-defaults
>  	    (dolist (char (if (numberp (car selem))
>  			      (list (car selem))
>  			    (mapcar #'identity (car selem))))
> -	      (unless (memq (car (aref font-lock-syntax-table char))
> -	                    '(1 2 3))    ;"." "w" "_"
> -	        (setq font-lock--syntax-table-affects-ppss t))
> -	      (modify-syntax-entry char syntax font-lock-syntax-table)
> -	      (unless (memq (car (aref font-lock-syntax-table char))
> -	                    '(1 2 3))    ;"." "w" "_"
> -	        (setq font-lock--syntax-table-affects-ppss t))
> -	      ))))
> +	      (let ((old-syntax (aref font-lock-syntax-table char)))
> +	        (modify-syntax-entry char syntax font-lock-syntax-table)
> +	        (let ((new-syntax (aref font-lock-syntax-table char)))
> +	          (unless (and (equal (cdr old-syntax) (cdr new-syntax))
> +	                       (memq (logand (car old-syntax) 255) '(1 2 3 6))
> +	                       (memq (logand (car new-syntax) 255) '(1 2 3 6))
> +	                       (equal (ash (car old-syntax) -8)
> +	                              (ash (car new-syntax) -8)))
> +	            (setq font-lock--syntax-table-affects-ppss t))))))))
>        ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
>        ;; but that was removed in 25.1, so if it's a cons cell, we assume that
>        ;; it's part of the variable alist.
> 
> 
> 
> 
> 





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

* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
  2024-11-30  9:51     ` Eli Zaretskii
@ 2024-12-14  9:34       ` Eli Zaretskii
  0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2024-12-14  9:34 UTC (permalink / raw)
  To: divya; +Cc: monnier, 74281

Ping! Ping!  Divya, are you there?

> Cc: 74281@debbugs.gnu.org
> Date: Sat, 30 Nov 2024 11:51:49 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> 
> Ping!  Divya, could you please try Stefan's suggestions and report
> back?
> 
> > Cc: Divya Ranjan <divya@subvertising.org>, 74281@debbugs.gnu.org
> > From: Stefan Monnier <monnier@iro.umontreal.ca>
> > Date: Thu, 14 Nov 2024 11:56:37 -0500
> > 
> > > Stefan, what tools do we have to investigate slowness related to
> > > parse-partial-sexp?  Or maybe you have suggestions for how to speed up
> > > font-lock in this case?
> > 
> > Hmm... `parse-partial-sexp` is normally expected to be fast, unless it
> > has to scan a lot of text.
> > 
> > > Here's the profile I get while moving with C-p through the above file:
> > 
> > A stab in the dark, but maybe the relevant call is the one in:
> > 
> >           (state (if (or syntax-ppss-table
> >                          (not font-lock--syntax-table-affects-ppss))
> >                      (syntax-ppss start)
> >                    ;; If `syntax-ppss' doesn't have its own syntax-table and
> >                    ;; we have installed our own syntax-table which
> >                    ;; differs from the standard one in ways which affects PPSS,
> >                    ;; then we can't use `syntax-ppss' since that would pollute
> >                    ;; and be polluted by its cache.
> >                    (parse-partial-sexp (point-min) start)))
> > 
> > so the origin of the slowdown would be the (?#. "w 14") in the setting
> > below in `scheme.el`:
> > 
> >   (setq font-lock-defaults
> >         '((scheme-font-lock-keywords
> >            scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
> >           nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
> >           beginning-of-defun
> >           (font-lock-mark-block-function . mark-defun)))
> > 
> > in which case, setting a `syntax-ppss-table` should fix the problem, tho
> > we could also fix it by being more careful: AFAICT the purpose of this
> > (?#. "w 14") is only to change the syntax of `#` from "prefix" to "word"
> > without changing the comment-related flags, so it shouldn't cause
> > `font-lock--syntax-table-affects-ppss` to be set.
> > So, we could solve it by improving the code that sets
> > `font-lock--syntax-table-affects-ppss`, as in the patch below.
> > 
> > 
> >         Stefan
> > 
> > 
> > diff --git a/lisp/font-lock.el b/lisp/font-lock.el
> > index 203131bfd5a..f6299920c0a 100644
> > --- a/lisp/font-lock.el
> > +++ b/lisp/font-lock.el
> > @@ -1955,14 +1955,15 @@ font-lock-set-defaults
> >  	    (dolist (char (if (numberp (car selem))
> >  			      (list (car selem))
> >  			    (mapcar #'identity (car selem))))
> > -	      (unless (memq (car (aref font-lock-syntax-table char))
> > -	                    '(1 2 3))    ;"." "w" "_"
> > -	        (setq font-lock--syntax-table-affects-ppss t))
> > -	      (modify-syntax-entry char syntax font-lock-syntax-table)
> > -	      (unless (memq (car (aref font-lock-syntax-table char))
> > -	                    '(1 2 3))    ;"." "w" "_"
> > -	        (setq font-lock--syntax-table-affects-ppss t))
> > -	      ))))
> > +	      (let ((old-syntax (aref font-lock-syntax-table char)))
> > +	        (modify-syntax-entry char syntax font-lock-syntax-table)
> > +	        (let ((new-syntax (aref font-lock-syntax-table char)))
> > +	          (unless (and (equal (cdr old-syntax) (cdr new-syntax))
> > +	                       (memq (logand (car old-syntax) 255) '(1 2 3 6))
> > +	                       (memq (logand (car new-syntax) 255) '(1 2 3 6))
> > +	                       (equal (ash (car old-syntax) -8)
> > +	                              (ash (car new-syntax) -8)))
> > +	            (setq font-lock--syntax-table-affects-ppss t))))))))
> >        ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
> >        ;; but that was removed in 25.1, so if it's a cons cell, we assume that
> >        ;; it's part of the variable alist.
> > 
> > 
> > 
> > 
> > 
> 
> 
> 
> 





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

end of thread, other threads:[~2024-12-14  9:34 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-09 16:04 bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14  8:44 ` Eli Zaretskii
2024-11-14  9:32   ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14 10:06     ` Eli Zaretskii
2024-11-14 11:09       ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14 11:42         ` Eli Zaretskii
2024-11-14 16:56   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-30  9:51     ` Eli Zaretskii
2024-12-14  9:34       ` Eli Zaretskii

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.