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
bug-gnu-emacs <at> gnu.org
:bug#74281
; Package emacs
.
(Sat, 09 Nov 2024 16:06:01 GMT) Full text and rfc822 format available.Divya Ranjan <divya <at> subvertising.org>
: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.
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
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.
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?
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)]
bug-gnu-emacs <at> gnu.org
:bug#74281
; Package emacs
.
(Thu, 14 Nov 2024 11:10:04 GMT) Full text and rfc822 format available.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.
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.
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. > > > > >
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. > > > > > > > > > > > > > >
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. > > > > > > > > > > > > > > > > > > > > > > > > > > >
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. >> >> >> >> >>
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.
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
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))
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)]
bug-gnu-emacs <at> gnu.org
:bug#74281
; Package emacs
.
(Sun, 29 Dec 2024 18:39:03 GMT) Full text and rfc822 format available.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)]
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?
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
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
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)]
bug-gnu-emacs <at> gnu.org
:bug#74281
; Package emacs
.
(Mon, 30 Dec 2024 05:37:02 GMT) Full text and rfc822 format available.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.
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
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
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?
Stefan Monnier <monnier <at> iro.umontreal.ca>
:Divya Ranjan <divya <at> subvertising.org>
: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
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.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.