quark-emacs icon indicating copy to clipboard operation
quark-emacs copied to clipboard

font-locking is slow

Open PythonNut opened this issue 4 years ago • 0 comments

Scrolling tends to lock up. There is evidence that this slowness is caused by

  • rainbow-delimiters
  • adaptive-wrap-prefix-mode

Here is a very dubious piece of code to disable rainbow-delimiters mode JIT.

(defvar quark/rainbow-delimiters-temp-disabled nil)

(defun quark/temp-disable-rainbow-delimiters (_window _pos)
  (unless quark/rainbow-delimiters-temp-disabled
    ;; (font-lock-flush)
    (font-lock-remove-keywords nil rainbow-delimiters--font-lock-keywords)
    (setq quark/rainbow-delimiters-temp-disabled t)))

(defun quark/temp-enable-rainbow-delimiters ()
  (when quark/rainbow-delimiters-temp-disabled
    (font-lock-flush)
    (font-lock-add-keywords nil rainbow-delimiters--font-lock-keywords 'append)
    (setq quark/rainbow-delimiters-temp-disabled nil)))

(add-hook 'window-scroll-functions #'quark/temp-disable-rainbow-delimiters)
(run-with-idle-timer 0.05 t #'quark/temp-enable-rainbow-delimiters)

PythonNut avatar Feb 18 '21 20:02 PythonNut