GNU bug report logs - #74281
30.0.91; font-lock mode hangs on scrolling large Scheme file

Previous Next

Package: emacs;

Reported by: Divya Ranjan <divya <at> subvertising.org>

Date: Sat, 9 Nov 2024 16:06:01 UTC

Severity: normal

Found in version 30.0.91

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 74281 in the body.
You can then email your comments to 74281 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sat, 09 Nov 2024 16:06:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Divya Ranjan <divya <at> subvertising.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 09 Nov 2024 16:06:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Divya Ranjan <divya <at> subvertising.org>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.91; font-lock mode hangs on scrolling large Scheme file
Date: Sat, 09 Nov 2024 16:04:13 +0000
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.






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Thu, 14 Nov 2024 08:45:02 GMT) Full text and rfc822 format available.

Message #8 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Divya Ranjan <divya <at> subvertising.org>,
 Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91;
 font-lock mode hangs on scrolling large Scheme file
Date: Thu, 14 Nov 2024 10:44:27 +0200
> 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 <at> 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




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Thu, 14 Nov 2024 09:33:01 GMT) Full text and rfc822 format available.

Message #11 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Divya Ranjan <divya <at> subvertising.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Thu, 14 Nov 2024 09:32:12 +0000
Hello, Eli

Eli Zaretskii <eliz <at> 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 <at> 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.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Thu, 14 Nov 2024 10:07:02 GMT) Full text and rfc822 format available.

Message #14 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Divya Ranjan <divya <at> subvertising.org>
Cc: monnier <at> iro.umontreal.ca, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Thu, 14 Nov 2024 12:06:41 +0200
> From: Divya Ranjan <divya <at> subvertising.org>
> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>,  74281 <at> debbugs.gnu.org
> Date: Thu, 14 Nov 2024 09:32:12 +0000
> 
> Hello, Eli
> 
> Eli Zaretskii <eliz <at> 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 <at> 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?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Thu, 14 Nov 2024 11:10:02 GMT) Full text and rfc822 format available.

Message #17 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Divya Ranjan <divya <at> subvertising.org>
To: bug-gnu-emacs <at> gnu.org, Eli Zaretskii <eliz <at> gnu.org>
Cc: monnier <at> iro.umontreal.ca, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
Date: Thu, 14 Nov 2024 11:09:41 +0000
[Message part 1 (text/plain, inline)]
> 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 <at> gnu.org> wrote:
>> From: Divya Ranjan <divya <at> subvertising.org>
>> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>,  74281 <at> debbugs.gnu.org
>> Date: Thu, 14 Nov 2024 09:32:12 +0000
>> 
>> Hello, Eli
>> 
>> Eli Zaretskii <eliz <at> 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 <at> 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
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Thu, 14 Nov 2024 11:10:04 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Thu, 14 Nov 2024 11:43:02 GMT) Full text and rfc822 format available.

Message #23 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Divya Ranjan <divya <at> subvertising.org>
Cc: monnier <at> iro.umontreal.ca, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91;
 font-lock mode hangs on scrolling large Scheme file
Date: Thu, 14 Nov 2024 13:42:18 +0200
> Date: Thu, 14 Nov 2024 11:09:41 +0000
> From: Divya Ranjan <divya <at> subvertising.org>
> CC: monnier <at> iro.umontreal.ca, 74281 <at> 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.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Thu, 14 Nov 2024 16:57:02 GMT) Full text and rfc822 format available.

Message #26 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Divya Ranjan <divya <at> subvertising.org>, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
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.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sat, 30 Nov 2024 09:52:02 GMT) Full text and rfc822 format available.

Message #29 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: divya <at> subvertising.org, Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91;
 font-lock mode hangs on scrolling large Scheme file
Date: Sat, 30 Nov 2024 11:51:49 +0200
Ping!  Divya, could you please try Stefan's suggestions and report
back?

> Cc: Divya Ranjan <divya <at> subvertising.org>, 74281 <at> debbugs.gnu.org
> From: Stefan Monnier <monnier <at> 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.
> 
> 
> 
> 
> 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sat, 14 Dec 2024 09:35:02 GMT) Full text and rfc822 format available.

Message #32 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: divya <at> subvertising.org
Cc: monnier <at> iro.umontreal.ca, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91;
 font-lock mode hangs on scrolling large Scheme file
Date: Sat, 14 Dec 2024 11:34:40 +0200
Ping! Ping!  Divya, are you there?

> Cc: 74281 <at> debbugs.gnu.org
> Date: Sat, 30 Nov 2024 11:51:49 +0200
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> Ping!  Divya, could you please try Stefan's suggestions and report
> back?
> 
> > Cc: Divya Ranjan <divya <at> subvertising.org>, 74281 <at> debbugs.gnu.org
> > From: Stefan Monnier <monnier <at> 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.
> > 
> > 
> > 
> > 
> > 
> 
> 
> 
> 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sat, 28 Dec 2024 11:10:03 GMT) Full text and rfc822 format available.

Message #35 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: divya <at> subvertising.org
Cc: monnier <at> iro.umontreal.ca, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91;
 font-lock mode hangs on scrolling large Scheme file
Date: Sat, 28 Dec 2024 13:09:46 +0200
Ping! Ping! Ping! Divya, please respond.

> Cc: monnier <at> iro.umontreal.ca, 74281 <at> debbugs.gnu.org
> Date: Sat, 14 Dec 2024 11:34:40 +0200
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> Ping! Ping!  Divya, are you there?
> 
> > Cc: 74281 <at> debbugs.gnu.org
> > Date: Sat, 30 Nov 2024 11:51:49 +0200
> > From: Eli Zaretskii <eliz <at> gnu.org>
> > 
> > Ping!  Divya, could you please try Stefan's suggestions and report
> > back?
> > 
> > > Cc: Divya Ranjan <divya <at> subvertising.org>, 74281 <at> debbugs.gnu.org
> > > From: Stefan Monnier <monnier <at> 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.
> > > 
> > > 
> > > 
> > > 
> > > 
> > 
> > 
> > 
> > 
> 
> 
> 
> 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sat, 28 Dec 2024 15:04:01 GMT) Full text and rfc822 format available.

Message #38 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: divya <at> subvertising.org, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Sat, 28 Dec 2024 10:03:29 -0500
> Ping!  Divya, could you please try Stefan's suggestions and report
> back?

FWIW, I think the change is an improvement in any case, so we could
install it.  Since it's in a "core" file, it might be too risky for
`emacs-30`, so I'm thinking of installing it in `master`, WDYT?


        Stefan


>> Cc: Divya Ranjan <divya <at> subvertising.org>, 74281 <at> debbugs.gnu.org
>> From: Stefan Monnier <monnier <at> 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.
>> 
>> 
>> 
>> 
>> 





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sat, 28 Dec 2024 16:37:02 GMT) Full text and rfc822 format available.

Message #41 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: divya <at> subvertising.org, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Sat, 28 Dec 2024 18:33:49 +0200
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: divya <at> subvertising.org,  74281 <at> debbugs.gnu.org
> Date: Sat, 28 Dec 2024 10:03:29 -0500
> 
> > Ping!  Divya, could you please try Stefan's suggestions and report
> > back?
> 
> FWIW, I think the change is an improvement in any case, so we could
> install it.  Since it's in a "core" file, it might be too risky for
> `emacs-30`, so I'm thinking of installing it in `master`, WDYT?

Fine by me, thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sun, 29 Dec 2024 15:21:02 GMT) Full text and rfc822 format available.

Message #44 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: divya <at> subvertising.org, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Sun, 29 Dec 2024 10:20:19 -0500
>> > Ping!  Divya, could you please try Stefan's suggestions and report
>> > back?
>> FWIW, I think the change is an improvement in any case, so we could
>> install it.  Since it's in a "core" file, it might be too risky for
>> `emacs-30`, so I'm thinking of installing it in `master`, WDYT?
> Fine by me, thanks.

Pushed to `master`, thanks.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sun, 29 Dec 2024 18:02:01 GMT) Full text and rfc822 format available.

Message #47 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: divya <at> subvertising.org, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Sun, 29 Dec 2024 13:01:14 -0500
>>> > Ping!  Divya, could you please try Stefan's suggestions and report
>>> > back?
>>> FWIW, I think the change is an improvement in any case, so we could
>>> install it.  Since it's in a "core" file, it might be too risky for
>>> `emacs-30`, so I'm thinking of installing it in `master`, WDYT?
>> Fine by me, thanks.
> Pushed to `master`, thanks.

BTW, if we want something on `emacs-30`, we could go with a patch like
the one below.


        Stefan


diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index a0f922f279c..c46422b7218 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -201,7 +201,10 @@ scheme-mode-variables
            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)))
+          (font-lock-mark-block-function . mark-defun)
+          ;; The (?#. "w 14") above causes font-lock to incorrectly
+          ;; set `font-lock--syntax-table-affects-ppss' to t.
+          (font-lock--syntax-table-affects-ppss . nil)))
   (setq-local prettify-symbols-alist lisp-prettify-symbols-alist)
   (setq-local lisp-doc-string-elt-property 'scheme-doc-string-elt))
 





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sun, 29 Dec 2024 18:39:02 GMT) Full text and rfc822 format available.

Message #50 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Divya Ranjan <divya <at> subvertising.org>
To: bug-gnu-emacs <at> gnu.org, Eli Zaretskii <eliz <at> gnu.org>
Cc: monnier <at> iro.umontreal.ca, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
Date: Sun, 29 Dec 2024 18:38:17 +0000
[Message part 1 (text/plain, inline)]
Apologies Eli, I missed this thread!

On 28 December 2024 11:09:46 GMT, Eli Zaretskii <eliz <at> gnu.org> wrote:
>Ping! Ping! Ping! Divya, please respond.
>
>> Cc: monnier <at> iro.umontreal.ca, 74281 <at> debbugs.gnu.org
>> Date: Sat, 14 Dec 2024 11:34:40 +0200
>> From: Eli Zaretskii <eliz <at> gnu.org>
>> 
>> Ping! Ping!  Divya, are you there?
>> 
>> > Cc: 74281 <at> debbugs.gnu.org
>> > Date: Sat, 30 Nov 2024 11:51:49 +0200
>> > From: Eli Zaretskii <eliz <at> gnu.org>
>> > 
>> > Ping!  Divya, could you please try Stefan's suggestions and report
>> > back?
>> > 
>> > > Cc: Divya Ranjan <divya <at> subvertising.org>, 74281 <at> debbugs.gnu.org
>> > > From: Stefan Monnier <monnier <at> 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.
>> > > 
>> > > 
>> > > 
>> > > 
>> > > 
>> > 
>> > 
>> > 
>> > 
>> 
>> 
>> 
>> 
>
>
>

Divya Ranjan, Mathematics, Philosophy and Libre Software
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sun, 29 Dec 2024 18:39:03 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sun, 29 Dec 2024 18:44:02 GMT) Full text and rfc822 format available.

Message #56 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Divya Ranjan <divya <at> subvertising.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>, Eli Zaretskii <eliz <at> gnu.org>
Cc: 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
Date: Sun, 29 Dec 2024 18:43:01 +0000
[Message part 1 (text/plain, inline)]
I recently did a build of `master`, I don't think the bug was fixed. Have you tested with `tex.el`?

On 29 December 2024 15:20:19 GMT, Stefan Monnier <monnier <at> iro.umontreal.ca> wrote:
>>> > Ping!  Divya, could you please try Stefan's suggestions and report
>>> > back?
>>> FWIW, I think the change is an improvement in any case, so we could
>>> install it.  Since it's in a "core" file, it might be too risky for
>>> `emacs-30`, so I'm thinking of installing it in `master`, WDYT?
>> Fine by me, thanks.
>
>Pushed to `master`, thanks.
>
>
>        Stefan
>

Divya Ranjan, Mathematics, Philosophy and Libre Software
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sun, 29 Dec 2024 18:59:02 GMT) Full text and rfc822 format available.

Message #59 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: divya <at> subvertising.org, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Sun, 29 Dec 2024 20:58:31 +0200
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: divya <at> subvertising.org,  74281 <at> debbugs.gnu.org
> Date: Sun, 29 Dec 2024 13:01:14 -0500
> 
> BTW, if we want something on `emacs-30`, we could go with a patch like
> the one below.
> 
> 
>         Stefan
> 
> 
> diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
> index a0f922f279c..c46422b7218 100644
> --- a/lisp/progmodes/scheme.el
> +++ b/lisp/progmodes/scheme.el
> @@ -201,7 +201,10 @@ scheme-mode-variables
>             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)))
> +          (font-lock-mark-block-function . mark-defun)
> +          ;; The (?#. "w 14") above causes font-lock to incorrectly
> +          ;; set `font-lock--syntax-table-affects-ppss' to t.
> +          (font-lock--syntax-table-affects-ppss . nil)))
>    (setq-local prettify-symbols-alist lisp-prettify-symbols-alist)
>    (setq-local lisp-doc-string-elt-property 'scheme-doc-string-elt))

What does it do, and what potential harm could happen if we install
this?





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sun, 29 Dec 2024 20:03:02 GMT) Full text and rfc822 format available.

Message #62 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: divya <at> subvertising.org, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Sun, 29 Dec 2024 15:01:49 -0500
>> diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
>> index a0f922f279c..c46422b7218 100644
>> --- a/lisp/progmodes/scheme.el
>> +++ b/lisp/progmodes/scheme.el
>> @@ -201,7 +201,10 @@ scheme-mode-variables
>>             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)))
>> +          (font-lock-mark-block-function . mark-defun)
>> +          ;; The (?#. "w 14") above causes font-lock to incorrectly
>> +          ;; set `font-lock--syntax-table-affects-ppss' to t.
>> +          (font-lock--syntax-table-affects-ppss . nil)))
>>    (setq-local prettify-symbols-alist lisp-prettify-symbols-alist)
>>    (setq-local lisp-doc-string-elt-property 'scheme-doc-string-elt))
>
> What does it do,

This variable controls whether font-lock uses `syntax-ppss` or not.
By setting to nil, it lets font-lock use `syntax-ppss` which means that
on large buffers it tends to be much faster because it doesn't need to
`parse-partial-sexp` all the way from `point-min` every time.

> and what potential harm could happen if we install this?

If it's set incorrectly, it can lead to messed up `syntax-ppss` state
(because some calls use one syntax table and others use another) which
could lead to mis-indentation, mis-fontification, incorrect highlighting
of matched paren, incorrect buffer navigation, etc...
Of course, these risks are confined to those buffers that use
`scheme-mode` or a mode that derives from it.

I believe the setting is correct for `scheme-mode`, but it's possible
that some derived mode changes the `font-lock-syntax-table` and relies
(incorrectly) on `scheme-mode` having already set
`font-lock--syntax-table-affects-ppss` to t.

This said, AFAICT this performance problem has been with us since
Emacs-28 (commit cdadb7a97cbe), so it's not super urgent to fix it.
I think we're fine with the fix on `master`.  It would be nice
to get confirmation from Divya that it does fix the problem he sees.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Mon, 30 Dec 2024 04:46:02 GMT) Full text and rfc822 format available.

Message #65 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Divya Ranjan <divya <at> subvertising.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Sun, 29 Dec 2024 23:45:19 -0500
> I recently did a build of `master`, I don't think the bug was fixed.
> Have you tested with `tex.el`?

Your bug report was about Scheme files.
If you see the "same" problem for (La)TeX files, I think it would be
best to open a new bug report for it.

IIRC, `font-lock--syntax-table-affects-ppss` can't be nil in
`latex-mode` (or at least it's not clear how to do that without breaking
something) because of how $...$ is paired (which doesn't always obey the
nesting of braces).


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Mon, 30 Dec 2024 05:36:02 GMT) Full text and rfc822 format available.

Message #68 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Divya Ranjan <divya <at> subvertising.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>,
 "Stefan Monnier via Bug reports for GNU Emacs,
 the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
Date: Mon, 30 Dec 2024 05:35:48 +0000
[Message part 1 (text/plain, inline)]
Apologies, I mistyped during travelling, the file I was referring to was the original file of the bug report. `tex.scm` is the file from the Guix source tree: /gnu/packages/tex.scm

Regards,

On 30 December 2024 04:45:19 GMT, "Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org> wrote:
>> I recently did a build of `master`, I don't think the bug was fixed.
>> Have you tested with `tex.el`?
>
>Your bug report was about Scheme files.
>If you see the "same" problem for (La)TeX files, I think it would be
>best to open a new bug report for it.
>
>IIRC, `font-lock--syntax-table-affects-ppss` can't be nil in
>`latex-mode` (or at least it's not clear how to do that without breaking
>something) because of how $...$ is paired (which doesn't always obey the
>nesting of braces).
>
>
>        Stefan
>
>
>
>

Divya Ranjan, Mathematics, Philosophy and Libre Software
[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Mon, 30 Dec 2024 05:37:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Mon, 30 Dec 2024 12:48:02 GMT) Full text and rfc822 format available.

Message #74 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: divya <at> subvertising.org, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Mon, 30 Dec 2024 14:47:15 +0200
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: divya <at> subvertising.org,  74281 <at> debbugs.gnu.org
> Date: Sun, 29 Dec 2024 15:01:49 -0500
> 
> This said, AFAICT this performance problem has been with us since
> Emacs-28 (commit cdadb7a97cbe), so it's not super urgent to fix it.
> I think we're fine with the fix on `master`.

Agreed.  We can later consider backporting to Emacs 30.2.

> It would be nice to get confirmation from Divya that it does fix the
> problem he sees.

Right.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Mon, 30 Dec 2024 21:07:01 GMT) Full text and rfc822 format available.

Message #77 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Divya Ranjan <divya <at> subvertising.org>
Cc: eliz <at> gnu.org, 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Mon, 30 Dec 2024 16:06:06 -0500
> Apologies, I mistyped during travelling, the file I was referring to was the
> original file of the bug report. `tex.scm` is the file from the Guix source
> tree: /gnu/packages/tex.scm

Hmm... on my tests, I can reproduce in `emacs-30` the very slow
font-locking you described when we're at the end of the buffer, but not
on `master`.  Just to confirm that you're running the "right" code, can
you do `M-: font-lock--syntax-table-affects-ppss RET` from within that
`tex.scm` buffer?  It should return nil if my fix was applied.  If it
returns t then you're presumably still using the old code (or there's
something else amiss).  If it returns something else than nil or t then
there's something else amiss.

FWIW, even with the fix, Emacs is not quite able to keep up with `M-v`
with an auto-repeat of 40/s when done from the end of the buffer, but:
- When I release the key it catches up fairly quickly (hence the "not
  quite").  So I wouldn't describe it as "hangs".
- This is on my 16 years old 2.5GHz Core 2 Duo (Thinkpad T61).
- It's an Emacs compiled with `-Og` and with `--enable-checking`.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Thu, 02 Jan 2025 14:13:01 GMT) Full text and rfc822 format available.

Message #80 received at submit <at> debbugs.gnu.org (full text, mbox):

From: divya <at> subvertising.org
To: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Thu, 02 Jan 2025 14:12:06 +0000
Hello again Stefan and Happy GNU/Year.

> Hmm... on my tests, I can reproduce in `emacs-30` the very slow
> font-locking you described when we're at the end of the buffer, but not
> on `master`.  Just to confirm that you're running the "right" code, can
> you do `M-: font-lock--syntax-table-affects-ppss RET` from within that
> `tex.scm` buffer?  It should return nil if my fix was applied.  If it
> returns t then you're presumably still using the old code (or there's
> something else amiss).  If it returns something else than nil or t then
> there's something else amiss.

I just checked and my compiled build was of an older commit. The 
variable was set `t`. I built from the latest commit and indeed now I 
can scroll flawlessly in the reported file.

> FWIW, even with the fix, Emacs is not quite able to keep up with `M-v`
> with an auto-repeat of 40/s when done from the end of the buffer, but:
> - When I release the key it catches up fairly quickly (hence the "not
>   quite").  So I wouldn't describe it as "hangs".
> - This is on my 16 years old 2.5GHz Core 2 Duo (Thinkpad T61).
> - It's an Emacs compiled with `-Og` and with `--enable-checking`.

That's reasonable for the system. I do not notice any sort of lag with 
`M-v` on my system (Ryzen 7 5700G).

Thank you Eli and Stefan for the prompt fix. Really admire the work you 
guys do.

Regards,

Divya Ranjan,
Mathematics, Philosophy and Libre Software




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#74281; Package emacs. (Sat, 04 Jan 2025 13:11:01 GMT) Full text and rfc822 format available.

Message #83 received at 74281 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: divya <at> subvertising.org, Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 74281 <at> debbugs.gnu.org
Subject: Re: bug#74281: 30.0.91;
 font-lock mode hangs on scrolling large Scheme file
Date: Sat, 04 Jan 2025 15:10:06 +0200
> Date: Thu, 02 Jan 2025 14:12:06 +0000
> From: divya--- via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> Hello again Stefan and Happy GNU/Year.
> 
> > Hmm... on my tests, I can reproduce in `emacs-30` the very slow
> > font-locking you described when we're at the end of the buffer, but not
> > on `master`.  Just to confirm that you're running the "right" code, can
> > you do `M-: font-lock--syntax-table-affects-ppss RET` from within that
> > `tex.scm` buffer?  It should return nil if my fix was applied.  If it
> > returns t then you're presumably still using the old code (or there's
> > something else amiss).  If it returns something else than nil or t then
> > there's something else amiss.
> 
> I just checked and my compiled build was of an older commit. The 
> variable was set `t`. I built from the latest commit and indeed now I 
> can scroll flawlessly in the reported file.
> 
> > FWIW, even with the fix, Emacs is not quite able to keep up with `M-v`
> > with an auto-repeat of 40/s when done from the end of the buffer, but:
> > - When I release the key it catches up fairly quickly (hence the "not
> >   quite").  So I wouldn't describe it as "hangs".
> > - This is on my 16 years old 2.5GHz Core 2 Duo (Thinkpad T61).
> > - It's an Emacs compiled with `-Og` and with `--enable-checking`.
> 
> That's reasonable for the system. I do not notice any sort of lag with 
> `M-v` on my system (Ryzen 7 5700G).
> 
> Thank you Eli and Stefan for the prompt fix. Really admire the work you 
> guys do.

So should we now close this bug?




Reply sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
You have taken responsibility. (Sat, 04 Jan 2025 14:55:01 GMT) Full text and rfc822 format available.

Notification sent to Divya Ranjan <divya <at> subvertising.org>:
bug acknowledged by developer. (Sat, 04 Jan 2025 14:55:02 GMT) Full text and rfc822 format available.

Message #88 received at 74281-done <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 74281-done <at> debbugs.gnu.org, divya <at> subvertising.org
Subject: Re: bug#74281: 30.0.91; font-lock mode hangs on scrolling large
 Scheme file
Date: Sat, 04 Jan 2025 09:54:30 -0500
>> I just checked and my compiled build was of an older commit. The 
>> variable was set `t`. I built from the latest commit and indeed now I 
>> can scroll flawlessly in the reported file.

Excellent, thanks for the confirmation!

> So should we now close this bug?

Yes, closing,


        Stefan





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 02 Feb 2025 12:24:18 GMT) Full text and rfc822 format available.

This bug report was last modified 140 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.