* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
@ 2024-11-09 16:04 Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14 8:44 ` Eli Zaretskii
0 siblings, 1 reply; 17+ messages in thread
From: Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-09 16:04 UTC (permalink / raw)
To: 74281
1. 11ikjlkjkkkj
1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
the file with C-n, C-f or mouse scrolling. It sverely lags for several
seconds, doesn’t even respond to C-g.
2. Toggle font-lock-mode off through M-x, then try to scroll. It works
as expected, no serious lags.
3. Running the profiler also shows font-lock as the culprit.
This makes working on big projects, in my case the source code of GNU
Guix distribution an impossible situation. I haven’t tried setting up
(Guile) Scheme with Tree-Sitter, but shouldn’t simple
syntax-highlighting be not a serious problem?
To try a big Scheme file and reproduce this, open tex.scm in
gnu/packages/tex.scm in Guix source tree:
https://git.savannah.gnu.org/cgit/guix.git
In GNU Emacs 30.0.91 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.41, cairo version 1.18.0)
Windowing system distributor 'The X.Org Foundation', version 11.0.12101012
System Description: Guix System
Configured using:
'configure
CONFIG_SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash
SHELL=/gnu/store/3jhfhxdf6v5ms10x5zmnl166dh3yhbr1-bash-minimal-5.1.16/bin/bash
--prefix=/gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b
--enable-fast-install --with-cairo --with-modules
--with-native-compilation=aot --disable-build-details'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP
NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB
Important settings:
value of $EMACSLOADPATH: /home/divya/.config/guix/current/share/emacs/site-lisp:/home/divya/.guix-home/profile/share/emacs/site-lisp:/home/divya/.guix-profile/share/emacs/site-lisp:/run/current-system/profile/share/emacs/site-lisp:/gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp
value of $LANG: en_US.utf8
locale-coding-system: utf-8-unix
Major mode: Dired/name 452/587
Minor modes in effect:
all-the-icons-dired-mode: t
erc-notify-mode: t
erc-notifications-mode: t
erc-track-mode: t
erc-track-minor-mode: t
erc-ring-mode: t
erc-netsplit-mode: t
erc-menu-mode: t
erc-match-mode: t
erc-list-mode: t
erc-irccontrols-mode: t
erc-move-to-prompt-mode: t
erc-readonly-mode: t
erc-imenu-mode: t
erc-pcomplete-mode: t
erc-button-mode: t
erc-fill-mode: t
erc-stamp-mode: t
erc-autojoin-mode: t
erc-networks-mode: t
gcmh-mode: t
global-corfu-mode: t
corfu-mode: t
global-paren-face-mode: t
global-color-identifiers-mode: t
global-hi-lock-mode: t
hi-lock-mode: t
timeclock-mode-line-display: t
server-mode: t
dirvish-peek-mode: t
dirvish-side-follow-mode: t
dirvish-override-dired-mode: t
dired-hide-details-mode: t
consult-org-roam-mode: t
org-roam-db-autosync-mode: t
winner-mode: t
popper-mode: t
meow-global-mode: t
meow-mode: t
meow-motion-mode: t
meow-esc-mode: t
display-time-mode: t
dimmer-mode: t
all-the-icons-completion-mode: t
marginalia-mode: t
vertico-mode: t
global-writeroom-mode: t
which-key-mode: t
smartparens-global-mode: t
doom-modeline-mode: t
global-auto-revert-mode: t
save-place-mode: t
savehist-mode: t
recentf-mode: t
global-hl-line-mode: t
global-display-line-numbers-mode: t
override-global-mode: t
straight-use-package-mode: t
straight-package-neutering-mode: t
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-quote-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
global-prettify-symbols-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
minibuffer-regexp-mode: t
buffer-read-only: t
size-indication-mode: t
column-number-mode: t
line-number-mode: t
global-visual-line-mode: t
visual-line-mode: t
indent-tabs-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
/home/divya/.emacs.d/straight/build/compat/compat hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat
/home/divya/.emacs.d/straight/build/compat/compat-pkg hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-pkg
/home/divya/.emacs.d/straight/build/compat/compat-macs hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-macs
/home/divya/.emacs.d/straight/build/compat/compat-autoloads hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-autoloads
/home/divya/.emacs.d/straight/build/compat/compat-30 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-30
/home/divya/.emacs.d/straight/build/compat/compat-29 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-29
/home/divya/.emacs.d/straight/build/compat/compat-28 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-28
/home/divya/.emacs.d/straight/build/compat/compat-27 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-27
/home/divya/.emacs.d/straight/build/compat/compat-26 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-26
/home/divya/.emacs.d/straight/build/compat/compat-25 hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat-25
/home/divya/.emacs.d/straight/build/which-key/which-key hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/which-key
/home/divya/.emacs.d/straight/build/transient/transient hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/transient
/home/divya/.emacs.d/straight/build/svg/svg hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/svg
/home/divya/.emacs.d/straight/build/bind-key/bind-key hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/bind-key
/home/divya/.emacs.d/straight/build/ef-themes/theme-loaddefs hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/theme-loaddefs
/home/divya/.emacs.d/straight/build/use-package/use-package-core hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-core
/home/divya/.emacs.d/straight/build/use-package/use-package hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package
/home/divya/.emacs.d/straight/build/use-package/use-package-lint hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-lint
/home/divya/.emacs.d/straight/build/use-package/use-package-jump hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-jump
/home/divya/.emacs.d/straight/build/use-package/use-package-ensure hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-ensure
/home/divya/.emacs.d/straight/build/use-package/use-package-diminish hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-diminish
/home/divya/.emacs.d/straight/build/use-package/use-package-delight hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-delight
/home/divya/.emacs.d/straight/build/use-package/use-package-bind-key hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/use-package/use-package-bind-key
/home/divya/.emacs.d/straight/build/xref/xref hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/progmodes/xref
/home/divya/.emacs.d/straight/build/project/project hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/progmodes/project
/home/divya/.emacs.d/straight/build/peg/peg hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/progmodes/peg
/home/divya/.emacs.d/straight/build/org/ox hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox
/home/divya/.emacs.d/straight/build/org/ox-texinfo hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-texinfo
/home/divya/.emacs.d/straight/build/org/ox-publish hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-publish
/home/divya/.emacs.d/straight/build/org/ox-org hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-org
/home/divya/.emacs.d/straight/build/org/ox-odt hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-odt
/home/divya/.emacs.d/straight/build/org/ox-md hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-md
/home/divya/.emacs.d/straight/build/org/ox-man hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-man
/home/divya/.emacs.d/straight/build/org/ox-latex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-latex
/home/divya/.emacs.d/straight/build/org/ox-koma-letter hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-koma-letter
/home/divya/.emacs.d/straight/build/org/ox-icalendar hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-icalendar
/home/divya/.emacs.d/straight/build/org/ox-html hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-html
/home/divya/.emacs.d/straight/build/org/ox-beamer hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-beamer
/home/divya/.emacs.d/straight/build/org/ox-ascii hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ox-ascii
/home/divya/.emacs.d/straight/build/org/org hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org
/home/divya/.emacs.d/straight/build/org/org-timer hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-timer
/home/divya/.emacs.d/straight/build/org/org-table hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-table
/home/divya/.emacs.d/straight/build/org/org-src hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-src
/home/divya/.emacs.d/straight/build/org/org-refile hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-refile
/home/divya/.emacs.d/straight/build/org/org-protocol hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-protocol
/home/divya/.emacs.d/straight/build/org/org-plot hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-plot
/home/divya/.emacs.d/straight/build/org/org-persist hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-persist
/home/divya/.emacs.d/straight/build/org/org-pcomplete hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-pcomplete
/home/divya/.emacs.d/straight/build/org/org-num hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-num
/home/divya/.emacs.d/straight/build/org/org-mouse hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-mouse
/home/divya/.emacs.d/straight/build/org/org-mobile hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-mobile
/home/divya/.emacs.d/straight/build/org/org-macs hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-macs
/home/divya/.emacs.d/straight/build/org/org-macro hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-macro
/home/divya/.emacs.d/straight/build/org/org-loaddefs hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-loaddefs
/home/divya/.emacs.d/straight/build/org/org-list hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-list
/home/divya/.emacs.d/straight/build/org/org-lint hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-lint
/home/divya/.emacs.d/straight/build/org/org-keys hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-keys
/home/divya/.emacs.d/straight/build/org/org-inlinetask hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-inlinetask
/home/divya/.emacs.d/straight/build/org/org-indent hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-indent
/home/divya/.emacs.d/straight/build/org/org-id hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-id
/home/divya/.emacs.d/straight/build/org/org-habit hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-habit
/home/divya/.emacs.d/straight/build/org/org-goto hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-goto
/home/divya/.emacs.d/straight/build/org/org-footnote hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-footnote
/home/divya/.emacs.d/straight/build/org/org-fold hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-fold
/home/divya/.emacs.d/straight/build/org/org-fold-core hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-fold-core
/home/divya/.emacs.d/straight/build/org/org-feed hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-feed
/home/divya/.emacs.d/straight/build/org/org-faces hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-faces
/home/divya/.emacs.d/straight/build/org/org-entities hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-entities
/home/divya/.emacs.d/straight/build/org/org-element hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-element
/home/divya/.emacs.d/straight/build/org/org-element-ast hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-element-ast
/home/divya/.emacs.d/straight/build/org/org-duration hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-duration
/home/divya/.emacs.d/straight/build/org/org-datetree hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-datetree
/home/divya/.emacs.d/straight/build/org/org-cycle hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-cycle
/home/divya/.emacs.d/straight/build/org/org-ctags hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-ctags
/home/divya/.emacs.d/straight/build/org/org-crypt hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-crypt
/home/divya/.emacs.d/straight/build/org/org-compat hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-compat
/home/divya/.emacs.d/straight/build/org/org-colview hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-colview
/home/divya/.emacs.d/straight/build/org/org-clock hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-clock
/home/divya/.emacs.d/straight/build/org/org-capture hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-capture
/home/divya/.emacs.d/straight/build/org/org-attach hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-attach
/home/divya/.emacs.d/straight/build/org/org-archive hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-archive
/home/divya/.emacs.d/straight/build/org/org-agenda hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-agenda
/home/divya/.emacs.d/straight/build/org/ol hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol
/home/divya/.emacs.d/straight/build/org/ol-bibtex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-bibtex
/home/divya/.emacs.d/straight/build/org/ol-bbdb hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-bbdb
/home/divya/.emacs.d/straight/build/org/oc hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc
/home/divya/.emacs.d/straight/build/org/oc-csl hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-csl
/home/divya/.emacs.d/straight/build/org/oc-biblatex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-biblatex
/home/divya/.emacs.d/straight/build/org/oc-basic hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-basic
/home/divya/.emacs.d/straight/build/org/ob-tangle hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-tangle
/home/divya/.emacs.d/straight/build/org/ob-sql hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-sql
/home/divya/.emacs.d/straight/build/org/ob-shell hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-shell
/home/divya/.emacs.d/straight/build/org/ob-ruby hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-ruby
/home/divya/.emacs.d/straight/build/org/ob-python hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-python
/home/divya/.emacs.d/straight/build/org/ob-octave hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-octave
/home/divya/.emacs.d/straight/build/org/ob-lua hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-lua
/home/divya/.emacs.d/straight/build/org/ob-lilypond hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-lilypond
/home/divya/.emacs.d/straight/build/org/ob-latex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-latex
/home/divya/.emacs.d/straight/build/org/ob-julia hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-julia
/home/divya/.emacs.d/straight/build/org/ob-java hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-java
/home/divya/.emacs.d/straight/build/org/ob-haskell hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-haskell
/home/divya/.emacs.d/straight/build/org/ob-gnuplot hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-gnuplot
/home/divya/.emacs.d/straight/build/org/ob-exp hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-exp
/home/divya/.emacs.d/straight/build/org/ob-core hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-core
/home/divya/.emacs.d/straight/build/org/ob-comint hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-comint
/home/divya/.emacs.d/straight/build/org/ob-clojure hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-clojure
/home/divya/.emacs.d/straight/build/org/ob-R hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-R
/home/divya/.emacs.d/straight/build/org/ob-C hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-C
/home/divya/.emacs.d/straight/build/org/org-version hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-version
/home/divya/.emacs.d/straight/build/org/org-tempo hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-tempo
/home/divya/.emacs.d/straight/build/org/org-attach-git hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/org-attach-git
/home/divya/.emacs.d/straight/build/org/ol-w3m hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-w3m
/home/divya/.emacs.d/straight/build/org/ol-rmail hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-rmail
/home/divya/.emacs.d/straight/build/org/ol-mhe hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-mhe
/home/divya/.emacs.d/straight/build/org/ol-man hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-man
/home/divya/.emacs.d/straight/build/org/ol-irc hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-irc
/home/divya/.emacs.d/straight/build/org/ol-info hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-info
/home/divya/.emacs.d/straight/build/org/ol-gnus hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-gnus
/home/divya/.emacs.d/straight/build/org/ol-eww hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-eww
/home/divya/.emacs.d/straight/build/org/ol-eshell hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-eshell
/home/divya/.emacs.d/straight/build/org/ol-doi hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-doi
/home/divya/.emacs.d/straight/build/org/ol-docview hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ol-docview
/home/divya/.emacs.d/straight/build/org/oc-natbib hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-natbib
/home/divya/.emacs.d/straight/build/org/oc-bibtex hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/oc-bibtex
/home/divya/.emacs.d/straight/build/org/ob hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob
/home/divya/.emacs.d/straight/build/org/ob-table hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-table
/home/divya/.emacs.d/straight/build/org/ob-sqlite hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-sqlite
/home/divya/.emacs.d/straight/build/org/ob-sed hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-sed
/home/divya/.emacs.d/straight/build/org/ob-screen hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-screen
/home/divya/.emacs.d/straight/build/org/ob-scheme hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-scheme
/home/divya/.emacs.d/straight/build/org/ob-sass hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-sass
/home/divya/.emacs.d/straight/build/org/ob-ref hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-ref
/home/divya/.emacs.d/straight/build/org/ob-processing hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-processing
/home/divya/.emacs.d/straight/build/org/ob-plantuml hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-plantuml
/home/divya/.emacs.d/straight/build/org/ob-perl hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-perl
/home/divya/.emacs.d/straight/build/org/ob-org hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-org
/home/divya/.emacs.d/straight/build/org/ob-ocaml hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-ocaml
/home/divya/.emacs.d/straight/build/org/ob-maxima hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-maxima
/home/divya/.emacs.d/straight/build/org/ob-matlab hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-matlab
/home/divya/.emacs.d/straight/build/org/ob-makefile hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-makefile
/home/divya/.emacs.d/straight/build/org/ob-lob hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-lob
/home/divya/.emacs.d/straight/build/org/ob-lisp hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-lisp
/home/divya/.emacs.d/straight/build/org/ob-js hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-js
/home/divya/.emacs.d/straight/build/org/ob-groovy hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-groovy
/home/divya/.emacs.d/straight/build/org/ob-fortran hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-fortran
/home/divya/.emacs.d/straight/build/org/ob-forth hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-forth
/home/divya/.emacs.d/straight/build/org/ob-eval hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-eval
/home/divya/.emacs.d/straight/build/org/ob-eshell hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-eshell
/home/divya/.emacs.d/straight/build/org/ob-emacs-lisp hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-emacs-lisp
/home/divya/.emacs.d/straight/build/org/ob-dot hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-dot
/home/divya/.emacs.d/straight/build/org/ob-ditaa hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-ditaa
/home/divya/.emacs.d/straight/build/org/ob-css hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-css
/home/divya/.emacs.d/straight/build/org/ob-calc hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-calc
/home/divya/.emacs.d/straight/build/org/ob-awk hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/org/ob-awk
/home/divya/.emacs.d/straight/build/soap-client/soap-inspect hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/net/soap-inspect
/home/divya/.emacs.d/straight/build/soap-client/soap-client hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/net/soap-client
/home/divya/.emacs.d/straight/build/seq/seq hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/emacs-lisp/seq
/home/divya/.emacs.d/straight/build/map/map hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/emacs-lisp/map
/home/divya/.emacs.d/straight/build/let-alist/let-alist hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/emacs-lisp/let-alist
/home/divya/.emacs.d/straight/build/compat/compat hides /gnu/store/k3vqb6f4ghi2v50zrzh3657dywfkyfc5-emacs-next-30.0.91-1.9a1c76b/share/emacs/30.0.91/lisp/emacs-lisp/compat
Features:
(shadow sort mail-extr emacsbug org-archive oc-basic ox-odt rng-loc
rng-uri rng-parse rng-match rng-pttrn nxml-parse nxml-ns nxml-enc xmltok
nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox
textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check url-cache debbugs-gnu add-log scheme-complete geiser-mode
geiser-xref geiser-compile vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs
vc-rcs log-view pcvs-util all-the-icons-dired org-download async
dirvish-yank dirvish-widgets erc-notify cus-start
erc-desktop-notifications network-stream emojify apropos tar-mode
arc-mode archive-mode ht erc-track erc-ring erc-netsplit erc-menu
erc-match erc-list erc-goodies erc-imenu erc-pcomplete erc-button
erc-fill erc-stamp erc-join erc erc-backend erc-networks erc-common
erc-compat erc-loaddefs ef-dark-theme symbol-overlay paredit
rainbow-delimiters org-indent tramp-cache time-stamp tramp-sh shortdoc
gcmh gcmh-autoloads eshell-git-prompt eshell-git-prompt-autoloads
shell-pop shell-pop-autoloads eat term/xterm xterm term disp-table ehelp
eat-autoloads corfu-terminal-autoloads popon-autoloads corfu
corfu-autoloads forge-autoloads yaml-autoloads ghub-autoloads
treepy-autoloads closql-autoloads magit-autoloads skewer-mode
cache-table js2-mode js c-ts-common skewer-mode-autoloads
js2-mode-autoloads impatient-mode htmlize impatient-mode-autoloads
htmlize-autoloads web-mode-autoloads hideshow helpful-autoloads
elisp-refs scheme-complete-autoloads rainbow-delimiters-autoloads
slime-autoloads macrostep-autoloads paren-face paren-face-autoloads
paredit-autoloads pollen-mode pollen-mode-autoloads
racket-mode-autoloads geiser-guile tramp trampver tramp-integration
tramp-message tramp-compat tramp-loaddefs geiser-debug
geiser-guile-autoloads geiser-chez geiser-chez-autoloads geiser-mit
geiser-repl geiser-image geiser-capf geiser-doc geiser-menu
geiser-autodoc info-look geiser-edit etags fileloop geiser-completion
geiser-eval geiser-connection geiser-syntax scheme geiser-log
geiser-popup view geiser-mit-autoloads forth-mode forth-spec forth-smie
forth-syntax forth-mode-autoloads rust-mode-autoloads hs-lint
haskell-mode-autoloads go-mode-autoloads eldoc-box-autoloads eglot
external-completion jsonrpc xref seq-25 diff ert debug backtrace imenu
rmsbolt rmsbolt-split rmsbolt-java disass rmsbolt-autoloads
color-identifiers-mode color-identifiers-mode-autoloads
symbol-overlay-autoloads extras ement ement-notifications ement-notify
ement-room ewoc ement-lib ement-api ement-structs ement-macros plz dns
ement-autoloads svg-lib-autoloads taxy-magit-section-autoloads
taxy-autoloads plz-autoloads persist-autoloads hi-lock debbugs
soap-client url-http url-auth url-gw nsm rng-xsd rng-dt rng-util
xsd-regexp debbugs-compat debbugs-autoloads soap-client-autoloads
password-store auth-source-pass with-editor with-editor-autoloads
epa-file cl biblio biblio-download biblio-dissemin biblio-ieee
biblio-hal biblio-dblp biblio-crossref biblio-arxiv timezone biblio-doi
biblio-core let-alist ido biblio-autoloads biblio-core-autoloads ebib
ebib-reading-list ebib-notes ebib-filters ebib-keywords ebib-utils
ebib-db mule-util crm ebib-autoloads timeclock ess ess-utils ess-custom
ess-autoloads elgrep-autoloads fzf fzf-autoloads edraw-org edraw-util
edraw-msg el-easydraw-autoloads empv empv-autoloads emacs-everywhere
server emacs-everywhere-autoloads sx sx-autoloads let-alist-autoloads
markdown-mode-autoloads cal anki.el anki-editor-autoloads feed.el
bookmarks books binder lisp-mnt binder-autoloads djvu djvu-autoloads
nov-autoloads esxml-autoloads kv-autoloads org-noter-autoloads
saveplace-pdf-view pdf-tools pdf-view pdf-cache pdf-info tq pdf-util
pdf-macs dired.el consult-dir-autoloads dired-sidebar-autoloads
dired-subtree-autoloads dired-hacks-utils-autoloads
dired-rsync-autoloads dirvish-peek dirvish-side dirvish-subtree dirvish
dirvish-autoloads fd-dired find-dired fd-dired-autoloads wdired dired+
image-dired image-dired-tags image-dired-external image-dired-util
image-file image-converter bookmark+ bookmark+-key bookmark+-1
bookmark+-bmu bookmark+-lit bookmark+-mac dired-aux dired-x
xenops-autoloads aio-autoloads yasnippet-autoloads cdlatex-autoloads
auctex-autoloads tex-site flymake-proselint flymake
flymake-proselint-autoloads langtool langtool-autoloads org-alert alert
log4e notifications gntp org-alert-autoloads org-timeblock compat-macs
org-timeblock-autoloads svg-autoloads cal-china lunar solar cal-dst
cal-bahai cal-islam cal-hebrew holidays holiday-loaddefs vc-git
diff-mode track-changes citar-capf citar citar-file citar-cache
citar-format parsebib org-appear org-modern toc-org org-make-toc ol-eww
eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file gnus-group gnus-undo gnus-start gnus-dbus
dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time gnus-spec
gnus-int gnus-range message sendmail yank-media puny rfc822 mml mml-sec
epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util
mail-prsvr ol-docview doc-view jka-compr image-mode exif dired
dired-loaddefs ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-doi
org-link-doi pulse svg dom xml org-journal-autoloads appt diary-lib
diary-loaddefs consult-org-roam consult-org-roam-buffer consult bookmark
consult-org-roam-autoloads use-package-ensure rg files-x vc
vc-dispatcher rg-info-hack rg-menu transient rg-ibuffer rg-result
wgrep-rg wgrep rg-history rg-header ibuf-ext ibuffer ibuffer-loaddefs
grep cus-edit cus-load rg-autoloads wgrep-autoloads org-roam-ui
org-roam-dailies websocket bindat simple-httpd pp org-roam-ui-autoloads
websocket-autoloads simple-httpd-autoloads org-roam-migrate org-roam-log
org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db
emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam
org-capture org-attach emacsql-sqlite emacsql-sqlite-common emacsql
emacsql-compiler magit-section cursor-sensor org-roam-autoloads
magit-section-autoloads emacsql-autoloads org-present-autoloads
org-make-toc-autoloads toc-org-autoloads ob-sqlite ob-sql ob-gnuplot
ob-shell shell ob-julia ob-lisp ob-scheme geiser-impl help-fns
radix-tree geiser-custom geiser-base geiser ob-python python project
ob-haskell ob-dot ob-latex ob-ditaa ob-org ob-C cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
ob-R org-tempo tempo org-modern-autoloads org-appear-autoloads
citar-embark-autoloads citar-autoloads citeproc-autoloads
string-inflection-autoloads queue-autoloads parsebib-autoloads org-ql
peg ts org-habit org-agenda org-element org-persist xdg org-id
org-refile org-element-ast inline avl-tree generator org-duration org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src sh-script smie
treesit executable ob-comint org-pcomplete pcomplete org-list
org-footnote org-faces org-entities time-date noutline outline
ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold
org-fold-core org-keys oc org-loaddefs find-func cal-menu calendar
cal-loaddefs org-version org-compat org-macs format-spec
org-ql-autoloads transient-autoloads peg-autoloads ov-autoloads
org-super-agenda-autoloads ts-autoloads map-autoloads guix.el guix
guix-autoloads edit-indirect-autoloads magit-popup-autoloads
bui-autoloads geiser-autoloads project-autoloads xref-autoloads init
winner transpose-frame-autoloads popper popper-autoloads
ace-window-autoloads avy avy-autoloads buffers.el keys.el
embark-consult-autoloads embark-autoloads expand-region-autoloads meow
meow-tutor meow-cheatsheet meow-cheatsheet-layout meow-core meow-shims
delsel meow-esc meow-command array meow-beacon meow-thing meow-visual
pcase meow-keypad meow-helpers meow-util meow-keymap meow-face meow-var
meow-autoloads undo-fu undo-fu-autoloads ui.el time
org-download-autoloads async-autoloads justify-kp justify-kp-autoloads
dimmer dimmer-autoloads solaire-mode face-remap solaire-mode-autoloads
dashboard dashboard-widgets ffap dashboard-autoloads consult-autoloads
orderless orderless-autoloads all-the-icons-completion
all-the-icons-completion-autoloads marginalia marginalia-autoloads
vertico vertico-autoloads writeroom-mode visual-fill-column
writeroom-mode-autoloads visual-fill-column-autoloads which-key
which-key-autoloads smartparens advice loadhist thingatpt
smartparens-autoloads emojify-autoloads ht-autoloads unicode-fonts
unicode-fonts-autoloads ucs-utils-autoloads font-utils-autoloads
persistent-soft-autoloads list-utils-autoloads pcache-autoloads
doom-modeline doom-modeline-segments doom-modeline-env
doom-modeline-core comp comp-cstr warnings comp-run comp-common
shrink-path rx f s dash nerd-icons nerd-icons-faces nerd-icons-data
nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon
nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon
nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon
nerd-icons-data-pomicon nerd-icons-data-ipsicon compat
doom-modeline-autoloads shrink-path-autoloads f-autoloads dash-autoloads
s-autoloads nerd-icons-autoloads seq-autoloads alert-autoloads
finder-inf log4e-autoloads gntp-autoloads rainbow-mode color
rainbow-mode-autoloads autorevert filenotify saveplace savehist recentf
tree-widget wid-edit hl-line ef-themes ef-themes-autoloads info
display-line-numbers edmacro kmacro crux-autoloads use-package-bind-key
bind-key easy-mmode all-the-icons-dired-autoloads all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons all-the-icons-autoloads
use-package-core mu4e-autoloads zenburn-theme-autoloads compat-autoloads
jinx-autoloads saveplace-pdf-view-autoloads tablist-autoloads
pdf-tools-autoloads guix-emacs use-package-autoloads bind-key-autoloads
straight-autoloads cl-extra help-mode straight package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs icons password-cache json
map byte-opt gv url-vars cl-loaddefs cl-lib compile text-property-search
comint subr-x ansi-osc ansi-color ring bytecomp byte-compile rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process native-compile emacs)
Memory information:
((conses 16 1569808 2032077) (symbols 48 77987 11)
(strings 32 393425 106016) (string-bytes 1 17866520)
(vectors 16 167276) (vector-slots 8 2824657 579009)
(floats 8 2970 25080) (intervals 56 20041 6581) (buffers 992 63))
--
Divya Ranjan,
Philosophy, Mathematics, Libre Software.
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-11-09 16:04 bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-14 8:44 ` Eli Zaretskii
2024-11-14 9:32 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14 16:56 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 2 replies; 17+ messages in thread
From: Eli Zaretskii @ 2024-11-14 8:44 UTC (permalink / raw)
To: Divya Ranjan, Stefan Monnier; +Cc: 74281
> Date: Sat, 09 Nov 2024 16:04:13 +0000
> From: Divya Ranjan via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>
>
> 1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
> the file with C-n, C-f or mouse scrolling. It sverely lags for several
> seconds, doesn’t even respond to C-g.
I can only reproduce this with C-p when moving from the end of the
file. C-n and C-f are instantaneous here, even though this is an
unoptimized build of Emacs 30.
> 2. Toggle font-lock-mode off through M-x, then try to scroll. It works
> as expected, no serious lags.
>
> 3. Running the profiler also shows font-lock as the culprit.
The profile I measured is below. It seems like the bottleneck is
parse-partial-sexp, which means the syntax table
scheme-mode-syntax-table might be the immediate suspect.
> This makes working on big projects, in my case the source code of GNU
> Guix distribution an impossible situation. I haven’t tried setting up
> (Guile) Scheme with Tree-Sitter, but shouldn’t simple
> syntax-highlighting be not a serious problem?
>
> To try a big Scheme file and reproduce this, open tex.scm in
> gnu/packages/tex.scm in Guix source tree:
>
> https://git.savannah.gnu.org/cgit/guix.git
Stefan, what tools do we have to investigate slowness related to
parse-partial-sexp? Or maybe you have suggestions for how to speed up
font-lock in this case?
Here's the profile I get while moving with C-p through the above file:
1151 66% - ...
1151 66% - command-execute
1151 66% - call-interactively
1151 66% - funcall-interactively
1151 66% - previous-line
1151 66% - line-move
798 45% - line-pixel-height
798 45% - jit-lock-function
798 45% - jit-lock-fontify-now
798 45% - jit-lock--run-functions
798 45% - run-hook-wrapped
798 45% - #<byte-code-function CEC>
798 45% - font-lock-fontify-region
798 45% - font-lock-default-fontify-region
798 45% - font-lock-fontify-syntactically-region
798 45% - font-lock-default-fontify-syntactically
798 45% parse-partial-sexp
353 20% - line-move-visual
353 20% - vertical-motion
353 20% - jit-lock-function
353 20% - jit-lock-fontify-now
353 20% - jit-lock--run-functions
353 20% - run-hook-wrapped
353 20% - #<byte-code-function BCE>
353 20% - font-lock-fontify-region
353 20% - font-lock-default-fontify-region
353 20% - font-lock-fontify-syntactically-region
353 20% - font-lock-default-fontify-syntactically
353 20% parse-partial-sexp
585 33% - redisplay_internal (C function)
577 33% - jit-lock-function
577 33% - jit-lock-fontify-now
577 33% - jit-lock--run-functions
577 33% - run-hook-wrapped
577 33% - #<byte-code-function 5A0>
577 33% - font-lock-fontify-region
577 33% - font-lock-default-fontify-region
577 33% - font-lock-fontify-syntactically-region
577 33% - font-lock-default-fontify-syntactically
577 33% parse-partial-sexp
6 0% Automatic GC
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-11-14 8:44 ` Eli Zaretskii
@ 2024-11-14 9:32 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14 10:06 ` Eli Zaretskii
2024-11-14 16:56 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 17+ messages in thread
From: Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-14 9:32 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Stefan Monnier, 74281
Hello, Eli
Eli Zaretskii <eliz@gnu.org> writes:
>> Date: Sat, 09 Nov 2024 16:04:13 +0000
>> From: Divya Ranjan via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>>
>>
>> 1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
>> the file with C-n, C-f or mouse scrolling. It sverely lags for several
>> seconds, doesn’t even respond to C-g.
>
> I can only reproduce this with C-p when moving from the end of the
> file. C-n and C-f are instantaneous here, even though this is an
> unoptimized build of Emacs 30.
I see, well its the latest build of emacs on GNU Guix, so yeah. Which lacking features in particular do you think might be causing this?
Regards,
--
Divya Ranjan,
Philosophy, Mathematics, Libre Software.
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-11-14 9:32 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-14 10:06 ` Eli Zaretskii
2024-11-14 11:09 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-11-14 10:06 UTC (permalink / raw)
To: Divya Ranjan; +Cc: monnier, 74281
> From: Divya Ranjan <divya@subvertising.org>
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, 74281@debbugs.gnu.org
> Date: Thu, 14 Nov 2024 09:32:12 +0000
>
> Hello, Eli
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> >> Date: Sat, 09 Nov 2024 16:04:13 +0000
> >> From: Divya Ranjan via "Bug reports for GNU Emacs,
> >> the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> >>
> >>
> >> 1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
> >> the file with C-n, C-f or mouse scrolling. It sverely lags for several
> >> seconds, doesn’t even respond to C-g.
> >
> > I can only reproduce this with C-p when moving from the end of the
> > file. C-n and C-f are instantaneous here, even though this is an
> > unoptimized build of Emacs 30.
>
> I see, well its the latest build of emacs on GNU Guix, so yeah. Which lacking features in particular do you think might be causing this?
I don't understand the question: I thought I pointed at the possible
cause by mentioning syntax-directed font lock?
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-11-14 10:06 ` Eli Zaretskii
@ 2024-11-14 11:09 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14 11:42 ` Eli Zaretskii
0 siblings, 1 reply; 17+ messages in thread
From: Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-14 11:09 UTC (permalink / raw)
To: 74281, eliz; +Cc: monnier
[-- Attachment #1: Type: text/plain, Size: 1437 bytes --]
> I don't understand the question: I thought I pointed at the possible cause by mentioning syntax-directed font lock?
I meant you said the emacs build is "unoptimized", what can be optimized?
Regards,
On 14 November 2024 10:06:41 GMT, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Divya Ranjan <divya@subvertising.org>
>> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, 74281@debbugs.gnu.org
>> Date: Thu, 14 Nov 2024 09:32:12 +0000
>>
>> Hello, Eli
>>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>> >> Date: Sat, 09 Nov 2024 16:04:13 +0000
>> >> From: Divya Ranjan via "Bug reports for GNU Emacs,
>> >> the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> >>
>> >>
>> >> 1. In emacs -Q, open a fairly big Scheme file (> 70k) and try to move in
>> >> the file with C-n, C-f or mouse scrolling. It sverely lags for several
>> >> seconds, doesn’t even respond to C-g.
>> >
>> > I can only reproduce this with C-p when moving from the end of the
>> > file. C-n and C-f are instantaneous here, even though this is an
>> > unoptimized build of Emacs 30.
>>
>> I see, well its the latest build of emacs on GNU Guix, so yeah. Which lacking features in particular do you think might be causing this?
>
>I don't understand the question: I thought I pointed at the possible
>cause by mentioning syntax-directed font lock?
>
>
>
Divya Ranjan, Mathematics, Philosophy and Libre Software
[-- Attachment #2: Type: text/html, Size: 2248 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-11-14 11:09 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-14 11:42 ` Eli Zaretskii
0 siblings, 0 replies; 17+ messages in thread
From: Eli Zaretskii @ 2024-11-14 11:42 UTC (permalink / raw)
To: Divya Ranjan; +Cc: monnier, 74281
> Date: Thu, 14 Nov 2024 11:09:41 +0000
> From: Divya Ranjan <divya@subvertising.org>
> CC: monnier@iro.umontreal.ca, 74281@debbugs.gnu.org
>
> > I don't understand the question: I thought I pointed at the possible cause by mentioning syntax-directed
> font lock?
>
> I meant you said the emacs build is "unoptimized", what can be optimized?
No, it means the C files were compiled with -O0, which disables
compiler optimizations, so my Emacs is supposed to be slower than
normal. And yet I seed no lags with C-n, unlike what you report.
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-11-14 8:44 ` Eli Zaretskii
2024-11-14 9:32 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-14 16:56 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-30 9:51 ` Eli Zaretskii
1 sibling, 1 reply; 17+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-14 16:56 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Divya Ranjan, 74281
> Stefan, what tools do we have to investigate slowness related to
> parse-partial-sexp? Or maybe you have suggestions for how to speed up
> font-lock in this case?
Hmm... `parse-partial-sexp` is normally expected to be fast, unless it
has to scan a lot of text.
> Here's the profile I get while moving with C-p through the above file:
A stab in the dark, but maybe the relevant call is the one in:
(state (if (or syntax-ppss-table
(not font-lock--syntax-table-affects-ppss))
(syntax-ppss start)
;; If `syntax-ppss' doesn't have its own syntax-table and
;; we have installed our own syntax-table which
;; differs from the standard one in ways which affects PPSS,
;; then we can't use `syntax-ppss' since that would pollute
;; and be polluted by its cache.
(parse-partial-sexp (point-min) start)))
so the origin of the slowdown would be the (?#. "w 14") in the setting
below in `scheme.el`:
(setq font-lock-defaults
'((scheme-font-lock-keywords
scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
beginning-of-defun
(font-lock-mark-block-function . mark-defun)))
in which case, setting a `syntax-ppss-table` should fix the problem, tho
we could also fix it by being more careful: AFAICT the purpose of this
(?#. "w 14") is only to change the syntax of `#` from "prefix" to "word"
without changing the comment-related flags, so it shouldn't cause
`font-lock--syntax-table-affects-ppss` to be set.
So, we could solve it by improving the code that sets
`font-lock--syntax-table-affects-ppss`, as in the patch below.
Stefan
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 203131bfd5a..f6299920c0a 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1955,14 +1955,15 @@ font-lock-set-defaults
(dolist (char (if (numberp (car selem))
(list (car selem))
(mapcar #'identity (car selem))))
- (unless (memq (car (aref font-lock-syntax-table char))
- '(1 2 3)) ;"." "w" "_"
- (setq font-lock--syntax-table-affects-ppss t))
- (modify-syntax-entry char syntax font-lock-syntax-table)
- (unless (memq (car (aref font-lock-syntax-table char))
- '(1 2 3)) ;"." "w" "_"
- (setq font-lock--syntax-table-affects-ppss t))
- ))))
+ (let ((old-syntax (aref font-lock-syntax-table char)))
+ (modify-syntax-entry char syntax font-lock-syntax-table)
+ (let ((new-syntax (aref font-lock-syntax-table char)))
+ (unless (and (equal (cdr old-syntax) (cdr new-syntax))
+ (memq (logand (car old-syntax) 255) '(1 2 3 6))
+ (memq (logand (car new-syntax) 255) '(1 2 3 6))
+ (equal (ash (car old-syntax) -8)
+ (ash (car new-syntax) -8)))
+ (setq font-lock--syntax-table-affects-ppss t))))))))
;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
;; but that was removed in 25.1, so if it's a cons cell, we assume that
;; it's part of the variable alist.
^ permalink raw reply related [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-11-14 16:56 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-30 9:51 ` Eli Zaretskii
2024-12-14 9:34 ` Eli Zaretskii
2024-12-28 15:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 2 replies; 17+ messages in thread
From: Eli Zaretskii @ 2024-11-30 9:51 UTC (permalink / raw)
To: divya, Stefan Monnier; +Cc: 74281
Ping! Divya, could you please try Stefan's suggestions and report
back?
> Cc: Divya Ranjan <divya@subvertising.org>, 74281@debbugs.gnu.org
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Thu, 14 Nov 2024 11:56:37 -0500
>
> > Stefan, what tools do we have to investigate slowness related to
> > parse-partial-sexp? Or maybe you have suggestions for how to speed up
> > font-lock in this case?
>
> Hmm... `parse-partial-sexp` is normally expected to be fast, unless it
> has to scan a lot of text.
>
> > Here's the profile I get while moving with C-p through the above file:
>
> A stab in the dark, but maybe the relevant call is the one in:
>
> (state (if (or syntax-ppss-table
> (not font-lock--syntax-table-affects-ppss))
> (syntax-ppss start)
> ;; If `syntax-ppss' doesn't have its own syntax-table and
> ;; we have installed our own syntax-table which
> ;; differs from the standard one in ways which affects PPSS,
> ;; then we can't use `syntax-ppss' since that would pollute
> ;; and be polluted by its cache.
> (parse-partial-sexp (point-min) start)))
>
> so the origin of the slowdown would be the (?#. "w 14") in the setting
> below in `scheme.el`:
>
> (setq font-lock-defaults
> '((scheme-font-lock-keywords
> scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
> nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
> beginning-of-defun
> (font-lock-mark-block-function . mark-defun)))
>
> in which case, setting a `syntax-ppss-table` should fix the problem, tho
> we could also fix it by being more careful: AFAICT the purpose of this
> (?#. "w 14") is only to change the syntax of `#` from "prefix" to "word"
> without changing the comment-related flags, so it shouldn't cause
> `font-lock--syntax-table-affects-ppss` to be set.
> So, we could solve it by improving the code that sets
> `font-lock--syntax-table-affects-ppss`, as in the patch below.
>
>
> Stefan
>
>
> diff --git a/lisp/font-lock.el b/lisp/font-lock.el
> index 203131bfd5a..f6299920c0a 100644
> --- a/lisp/font-lock.el
> +++ b/lisp/font-lock.el
> @@ -1955,14 +1955,15 @@ font-lock-set-defaults
> (dolist (char (if (numberp (car selem))
> (list (car selem))
> (mapcar #'identity (car selem))))
> - (unless (memq (car (aref font-lock-syntax-table char))
> - '(1 2 3)) ;"." "w" "_"
> - (setq font-lock--syntax-table-affects-ppss t))
> - (modify-syntax-entry char syntax font-lock-syntax-table)
> - (unless (memq (car (aref font-lock-syntax-table char))
> - '(1 2 3)) ;"." "w" "_"
> - (setq font-lock--syntax-table-affects-ppss t))
> - ))))
> + (let ((old-syntax (aref font-lock-syntax-table char)))
> + (modify-syntax-entry char syntax font-lock-syntax-table)
> + (let ((new-syntax (aref font-lock-syntax-table char)))
> + (unless (and (equal (cdr old-syntax) (cdr new-syntax))
> + (memq (logand (car old-syntax) 255) '(1 2 3 6))
> + (memq (logand (car new-syntax) 255) '(1 2 3 6))
> + (equal (ash (car old-syntax) -8)
> + (ash (car new-syntax) -8)))
> + (setq font-lock--syntax-table-affects-ppss t))))))))
> ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
> ;; but that was removed in 25.1, so if it's a cons cell, we assume that
> ;; it's part of the variable alist.
>
>
>
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-11-30 9:51 ` Eli Zaretskii
@ 2024-12-14 9:34 ` Eli Zaretskii
2024-12-28 11:09 ` Eli Zaretskii
2024-12-28 15:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-12-14 9:34 UTC (permalink / raw)
To: divya; +Cc: monnier, 74281
Ping! Ping! Divya, are you there?
> Cc: 74281@debbugs.gnu.org
> Date: Sat, 30 Nov 2024 11:51:49 +0200
> From: Eli Zaretskii <eliz@gnu.org>
>
> Ping! Divya, could you please try Stefan's suggestions and report
> back?
>
> > Cc: Divya Ranjan <divya@subvertising.org>, 74281@debbugs.gnu.org
> > From: Stefan Monnier <monnier@iro.umontreal.ca>
> > Date: Thu, 14 Nov 2024 11:56:37 -0500
> >
> > > Stefan, what tools do we have to investigate slowness related to
> > > parse-partial-sexp? Or maybe you have suggestions for how to speed up
> > > font-lock in this case?
> >
> > Hmm... `parse-partial-sexp` is normally expected to be fast, unless it
> > has to scan a lot of text.
> >
> > > Here's the profile I get while moving with C-p through the above file:
> >
> > A stab in the dark, but maybe the relevant call is the one in:
> >
> > (state (if (or syntax-ppss-table
> > (not font-lock--syntax-table-affects-ppss))
> > (syntax-ppss start)
> > ;; If `syntax-ppss' doesn't have its own syntax-table and
> > ;; we have installed our own syntax-table which
> > ;; differs from the standard one in ways which affects PPSS,
> > ;; then we can't use `syntax-ppss' since that would pollute
> > ;; and be polluted by its cache.
> > (parse-partial-sexp (point-min) start)))
> >
> > so the origin of the slowdown would be the (?#. "w 14") in the setting
> > below in `scheme.el`:
> >
> > (setq font-lock-defaults
> > '((scheme-font-lock-keywords
> > scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
> > nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
> > beginning-of-defun
> > (font-lock-mark-block-function . mark-defun)))
> >
> > in which case, setting a `syntax-ppss-table` should fix the problem, tho
> > we could also fix it by being more careful: AFAICT the purpose of this
> > (?#. "w 14") is only to change the syntax of `#` from "prefix" to "word"
> > without changing the comment-related flags, so it shouldn't cause
> > `font-lock--syntax-table-affects-ppss` to be set.
> > So, we could solve it by improving the code that sets
> > `font-lock--syntax-table-affects-ppss`, as in the patch below.
> >
> >
> > Stefan
> >
> >
> > diff --git a/lisp/font-lock.el b/lisp/font-lock.el
> > index 203131bfd5a..f6299920c0a 100644
> > --- a/lisp/font-lock.el
> > +++ b/lisp/font-lock.el
> > @@ -1955,14 +1955,15 @@ font-lock-set-defaults
> > (dolist (char (if (numberp (car selem))
> > (list (car selem))
> > (mapcar #'identity (car selem))))
> > - (unless (memq (car (aref font-lock-syntax-table char))
> > - '(1 2 3)) ;"." "w" "_"
> > - (setq font-lock--syntax-table-affects-ppss t))
> > - (modify-syntax-entry char syntax font-lock-syntax-table)
> > - (unless (memq (car (aref font-lock-syntax-table char))
> > - '(1 2 3)) ;"." "w" "_"
> > - (setq font-lock--syntax-table-affects-ppss t))
> > - ))))
> > + (let ((old-syntax (aref font-lock-syntax-table char)))
> > + (modify-syntax-entry char syntax font-lock-syntax-table)
> > + (let ((new-syntax (aref font-lock-syntax-table char)))
> > + (unless (and (equal (cdr old-syntax) (cdr new-syntax))
> > + (memq (logand (car old-syntax) 255) '(1 2 3 6))
> > + (memq (logand (car new-syntax) 255) '(1 2 3 6))
> > + (equal (ash (car old-syntax) -8)
> > + (ash (car new-syntax) -8)))
> > + (setq font-lock--syntax-table-affects-ppss t))))))))
> > ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
> > ;; but that was removed in 25.1, so if it's a cons cell, we assume that
> > ;; it's part of the variable alist.
> >
> >
> >
> >
> >
>
>
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-12-14 9:34 ` Eli Zaretskii
@ 2024-12-28 11:09 ` Eli Zaretskii
2024-12-29 18:38 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-12-28 11:09 UTC (permalink / raw)
To: divya; +Cc: monnier, 74281
Ping! Ping! Ping! Divya, please respond.
> Cc: monnier@iro.umontreal.ca, 74281@debbugs.gnu.org
> Date: Sat, 14 Dec 2024 11:34:40 +0200
> From: Eli Zaretskii <eliz@gnu.org>
>
> Ping! Ping! Divya, are you there?
>
> > Cc: 74281@debbugs.gnu.org
> > Date: Sat, 30 Nov 2024 11:51:49 +0200
> > From: Eli Zaretskii <eliz@gnu.org>
> >
> > Ping! Divya, could you please try Stefan's suggestions and report
> > back?
> >
> > > Cc: Divya Ranjan <divya@subvertising.org>, 74281@debbugs.gnu.org
> > > From: Stefan Monnier <monnier@iro.umontreal.ca>
> > > Date: Thu, 14 Nov 2024 11:56:37 -0500
> > >
> > > > Stefan, what tools do we have to investigate slowness related to
> > > > parse-partial-sexp? Or maybe you have suggestions for how to speed up
> > > > font-lock in this case?
> > >
> > > Hmm... `parse-partial-sexp` is normally expected to be fast, unless it
> > > has to scan a lot of text.
> > >
> > > > Here's the profile I get while moving with C-p through the above file:
> > >
> > > A stab in the dark, but maybe the relevant call is the one in:
> > >
> > > (state (if (or syntax-ppss-table
> > > (not font-lock--syntax-table-affects-ppss))
> > > (syntax-ppss start)
> > > ;; If `syntax-ppss' doesn't have its own syntax-table and
> > > ;; we have installed our own syntax-table which
> > > ;; differs from the standard one in ways which affects PPSS,
> > > ;; then we can't use `syntax-ppss' since that would pollute
> > > ;; and be polluted by its cache.
> > > (parse-partial-sexp (point-min) start)))
> > >
> > > so the origin of the slowdown would be the (?#. "w 14") in the setting
> > > below in `scheme.el`:
> > >
> > > (setq font-lock-defaults
> > > '((scheme-font-lock-keywords
> > > scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
> > > nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
> > > beginning-of-defun
> > > (font-lock-mark-block-function . mark-defun)))
> > >
> > > in which case, setting a `syntax-ppss-table` should fix the problem, tho
> > > we could also fix it by being more careful: AFAICT the purpose of this
> > > (?#. "w 14") is only to change the syntax of `#` from "prefix" to "word"
> > > without changing the comment-related flags, so it shouldn't cause
> > > `font-lock--syntax-table-affects-ppss` to be set.
> > > So, we could solve it by improving the code that sets
> > > `font-lock--syntax-table-affects-ppss`, as in the patch below.
> > >
> > >
> > > Stefan
> > >
> > >
> > > diff --git a/lisp/font-lock.el b/lisp/font-lock.el
> > > index 203131bfd5a..f6299920c0a 100644
> > > --- a/lisp/font-lock.el
> > > +++ b/lisp/font-lock.el
> > > @@ -1955,14 +1955,15 @@ font-lock-set-defaults
> > > (dolist (char (if (numberp (car selem))
> > > (list (car selem))
> > > (mapcar #'identity (car selem))))
> > > - (unless (memq (car (aref font-lock-syntax-table char))
> > > - '(1 2 3)) ;"." "w" "_"
> > > - (setq font-lock--syntax-table-affects-ppss t))
> > > - (modify-syntax-entry char syntax font-lock-syntax-table)
> > > - (unless (memq (car (aref font-lock-syntax-table char))
> > > - '(1 2 3)) ;"." "w" "_"
> > > - (setq font-lock--syntax-table-affects-ppss t))
> > > - ))))
> > > + (let ((old-syntax (aref font-lock-syntax-table char)))
> > > + (modify-syntax-entry char syntax font-lock-syntax-table)
> > > + (let ((new-syntax (aref font-lock-syntax-table char)))
> > > + (unless (and (equal (cdr old-syntax) (cdr new-syntax))
> > > + (memq (logand (car old-syntax) 255) '(1 2 3 6))
> > > + (memq (logand (car new-syntax) 255) '(1 2 3 6))
> > > + (equal (ash (car old-syntax) -8)
> > > + (ash (car new-syntax) -8)))
> > > + (setq font-lock--syntax-table-affects-ppss t))))))))
> > > ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
> > > ;; but that was removed in 25.1, so if it's a cons cell, we assume that
> > > ;; it's part of the variable alist.
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> >
>
>
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-12-28 11:09 ` Eli Zaretskii
@ 2024-12-29 18:38 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 17+ messages in thread
From: Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-29 18:38 UTC (permalink / raw)
To: 74281, eliz; +Cc: monnier
[-- Attachment #1: Type: text/plain, Size: 4797 bytes --]
Apologies Eli, I missed this thread!
On 28 December 2024 11:09:46 GMT, Eli Zaretskii <eliz@gnu.org> wrote:
>Ping! Ping! Ping! Divya, please respond.
>
>> Cc: monnier@iro.umontreal.ca, 74281@debbugs.gnu.org
>> Date: Sat, 14 Dec 2024 11:34:40 +0200
>> From: Eli Zaretskii <eliz@gnu.org>
>>
>> Ping! Ping! Divya, are you there?
>>
>> > Cc: 74281@debbugs.gnu.org
>> > Date: Sat, 30 Nov 2024 11:51:49 +0200
>> > From: Eli Zaretskii <eliz@gnu.org>
>> >
>> > Ping! Divya, could you please try Stefan's suggestions and report
>> > back?
>> >
>> > > Cc: Divya Ranjan <divya@subvertising.org>, 74281@debbugs.gnu.org
>> > > From: Stefan Monnier <monnier@iro.umontreal.ca>
>> > > Date: Thu, 14 Nov 2024 11:56:37 -0500
>> > >
>> > > > Stefan, what tools do we have to investigate slowness related to
>> > > > parse-partial-sexp? Or maybe you have suggestions for how to speed up
>> > > > font-lock in this case?
>> > >
>> > > Hmm... `parse-partial-sexp` is normally expected to be fast, unless it
>> > > has to scan a lot of text.
>> > >
>> > > > Here's the profile I get while moving with C-p through the above file:
>> > >
>> > > A stab in the dark, but maybe the relevant call is the one in:
>> > >
>> > > (state (if (or syntax-ppss-table
>> > > (not font-lock--syntax-table-affects-ppss))
>> > > (syntax-ppss start)
>> > > ;; If `syntax-ppss' doesn't have its own syntax-table and
>> > > ;; we have installed our own syntax-table which
>> > > ;; differs from the standard one in ways which affects PPSS,
>> > > ;; then we can't use `syntax-ppss' since that would pollute
>> > > ;; and be polluted by its cache.
>> > > (parse-partial-sexp (point-min) start)))
>> > >
>> > > so the origin of the slowdown would be the (?#. "w 14") in the setting
>> > > below in `scheme.el`:
>> > >
>> > > (setq font-lock-defaults
>> > > '((scheme-font-lock-keywords
>> > > scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
>> > > nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
>> > > beginning-of-defun
>> > > (font-lock-mark-block-function . mark-defun)))
>> > >
>> > > in which case, setting a `syntax-ppss-table` should fix the problem, tho
>> > > we could also fix it by being more careful: AFAICT the purpose of this
>> > > (?#. "w 14") is only to change the syntax of `#` from "prefix" to "word"
>> > > without changing the comment-related flags, so it shouldn't cause
>> > > `font-lock--syntax-table-affects-ppss` to be set.
>> > > So, we could solve it by improving the code that sets
>> > > `font-lock--syntax-table-affects-ppss`, as in the patch below.
>> > >
>> > >
>> > > Stefan
>> > >
>> > >
>> > > diff --git a/lisp/font-lock.el b/lisp/font-lock.el
>> > > index 203131bfd5a..f6299920c0a 100644
>> > > --- a/lisp/font-lock.el
>> > > +++ b/lisp/font-lock.el
>> > > @@ -1955,14 +1955,15 @@ font-lock-set-defaults
>> > > (dolist (char (if (numberp (car selem))
>> > > (list (car selem))
>> > > (mapcar #'identity (car selem))))
>> > > - (unless (memq (car (aref font-lock-syntax-table char))
>> > > - '(1 2 3)) ;"." "w" "_"
>> > > - (setq font-lock--syntax-table-affects-ppss t))
>> > > - (modify-syntax-entry char syntax font-lock-syntax-table)
>> > > - (unless (memq (car (aref font-lock-syntax-table char))
>> > > - '(1 2 3)) ;"." "w" "_"
>> > > - (setq font-lock--syntax-table-affects-ppss t))
>> > > - ))))
>> > > + (let ((old-syntax (aref font-lock-syntax-table char)))
>> > > + (modify-syntax-entry char syntax font-lock-syntax-table)
>> > > + (let ((new-syntax (aref font-lock-syntax-table char)))
>> > > + (unless (and (equal (cdr old-syntax) (cdr new-syntax))
>> > > + (memq (logand (car old-syntax) 255) '(1 2 3 6))
>> > > + (memq (logand (car new-syntax) 255) '(1 2 3 6))
>> > > + (equal (ash (car old-syntax) -8)
>> > > + (ash (car new-syntax) -8)))
>> > > + (setq font-lock--syntax-table-affects-ppss t))))))))
>> > > ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
>> > > ;; but that was removed in 25.1, so if it's a cons cell, we assume that
>> > > ;; it's part of the variable alist.
>> > >
>> > >
>> > >
>> > >
>> > >
>> >
>> >
>> >
>> >
>>
>>
>>
>>
>
>
>
Divya Ranjan, Mathematics, Philosophy and Libre Software
[-- Attachment #2: Type: text/html, Size: 5594 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-11-30 9:51 ` Eli Zaretskii
2024-12-14 9:34 ` Eli Zaretskii
@ 2024-12-28 15:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-28 16:33 ` Eli Zaretskii
1 sibling, 1 reply; 17+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-28 15:03 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: divya, 74281
> 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@subvertising.org>, 74281@debbugs.gnu.org
>> From: Stefan Monnier <monnier@iro.umontreal.ca>
>> Date: Thu, 14 Nov 2024 11:56:37 -0500
>>
>> > Stefan, what tools do we have to investigate slowness related to
>> > parse-partial-sexp? Or maybe you have suggestions for how to speed up
>> > font-lock in this case?
>>
>> Hmm... `parse-partial-sexp` is normally expected to be fast, unless it
>> has to scan a lot of text.
>>
>> > Here's the profile I get while moving with C-p through the above file:
>>
>> A stab in the dark, but maybe the relevant call is the one in:
>>
>> (state (if (or syntax-ppss-table
>> (not font-lock--syntax-table-affects-ppss))
>> (syntax-ppss start)
>> ;; If `syntax-ppss' doesn't have its own syntax-table and
>> ;; we have installed our own syntax-table which
>> ;; differs from the standard one in ways which affects PPSS,
>> ;; then we can't use `syntax-ppss' since that would pollute
>> ;; and be polluted by its cache.
>> (parse-partial-sexp (point-min) start)))
>>
>> so the origin of the slowdown would be the (?#. "w 14") in the setting
>> below in `scheme.el`:
>>
>> (setq font-lock-defaults
>> '((scheme-font-lock-keywords
>> scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
>> nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
>> beginning-of-defun
>> (font-lock-mark-block-function . mark-defun)))
>>
>> in which case, setting a `syntax-ppss-table` should fix the problem, tho
>> we could also fix it by being more careful: AFAICT the purpose of this
>> (?#. "w 14") is only to change the syntax of `#` from "prefix" to "word"
>> without changing the comment-related flags, so it shouldn't cause
>> `font-lock--syntax-table-affects-ppss` to be set.
>> So, we could solve it by improving the code that sets
>> `font-lock--syntax-table-affects-ppss`, as in the patch below.
>>
>>
>> Stefan
>>
>>
>> diff --git a/lisp/font-lock.el b/lisp/font-lock.el
>> index 203131bfd5a..f6299920c0a 100644
>> --- a/lisp/font-lock.el
>> +++ b/lisp/font-lock.el
>> @@ -1955,14 +1955,15 @@ font-lock-set-defaults
>> (dolist (char (if (numberp (car selem))
>> (list (car selem))
>> (mapcar #'identity (car selem))))
>> - (unless (memq (car (aref font-lock-syntax-table char))
>> - '(1 2 3)) ;"." "w" "_"
>> - (setq font-lock--syntax-table-affects-ppss t))
>> - (modify-syntax-entry char syntax font-lock-syntax-table)
>> - (unless (memq (car (aref font-lock-syntax-table char))
>> - '(1 2 3)) ;"." "w" "_"
>> - (setq font-lock--syntax-table-affects-ppss t))
>> - ))))
>> + (let ((old-syntax (aref font-lock-syntax-table char)))
>> + (modify-syntax-entry char syntax font-lock-syntax-table)
>> + (let ((new-syntax (aref font-lock-syntax-table char)))
>> + (unless (and (equal (cdr old-syntax) (cdr new-syntax))
>> + (memq (logand (car old-syntax) 255) '(1 2 3 6))
>> + (memq (logand (car new-syntax) 255) '(1 2 3 6))
>> + (equal (ash (car old-syntax) -8)
>> + (ash (car new-syntax) -8)))
>> + (setq font-lock--syntax-table-affects-ppss t))))))))
>> ;; (nth 4 defaults) used to hold `font-lock-beginning-of-syntax-function',
>> ;; but that was removed in 25.1, so if it's a cons cell, we assume that
>> ;; it's part of the variable alist.
>>
>>
>>
>>
>>
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-12-28 15:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-12-28 16:33 ` Eli Zaretskii
2024-12-29 15:20 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 17+ messages in thread
From: Eli Zaretskii @ 2024-12-28 16:33 UTC (permalink / raw)
To: Stefan Monnier; +Cc: divya, 74281
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: divya@subvertising.org, 74281@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.
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-12-28 16:33 ` Eli Zaretskii
@ 2024-12-29 15:20 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-29 18:01 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-29 18:43 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 2 replies; 17+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-29 15:20 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: divya, 74281
>> > 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
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-12-29 15:20 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-12-29 18:01 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-29 18:58 ` Eli Zaretskii
2024-12-29 18:43 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 17+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-29 18:01 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: divya, 74281
>>> > 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))
^ permalink raw reply related [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-12-29 18:01 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-12-29 18:58 ` Eli Zaretskii
0 siblings, 0 replies; 17+ messages in thread
From: Eli Zaretskii @ 2024-12-29 18:58 UTC (permalink / raw)
To: Stefan Monnier; +Cc: divya, 74281
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: divya@subvertising.org, 74281@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?
^ permalink raw reply [flat|nested] 17+ messages in thread
* bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file
2024-12-29 15:20 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-29 18:01 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-12-29 18:43 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 0 replies; 17+ messages in thread
From: Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-29 18:43 UTC (permalink / raw)
To: Stefan Monnier, Eli Zaretskii; +Cc: 74281
[-- Attachment #1: Type: text/plain, Size: 630 bytes --]
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@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
[-- Attachment #2: Type: text/html, Size: 1414 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2024-12-29 18:58 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-09 16:04 bug#74281: 30.0.91; font-lock mode hangs on scrolling large Scheme file Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14 8:44 ` Eli Zaretskii
2024-11-14 9:32 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14 10:06 ` Eli Zaretskii
2024-11-14 11:09 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-14 11:42 ` Eli Zaretskii
2024-11-14 16:56 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-30 9:51 ` Eli Zaretskii
2024-12-14 9:34 ` Eli Zaretskii
2024-12-28 11:09 ` Eli Zaretskii
2024-12-29 18:38 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-28 15:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-28 16:33 ` Eli Zaretskii
2024-12-29 15:20 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-29 18:01 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-29 18:58 ` Eli Zaretskii
2024-12-29 18:43 ` Divya Ranjan via Bug reports for GNU Emacs, the Swiss army knife of text editors
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.