Parcourir la source

org-fold-core-fontify-region: Calculate jit-lock-bounds accurately

* lisp/org-fold-core.el (org-fold-core-fontify-region): Collect all
the return values of `font-lock-default-fontify-region' on visible
regions and extend jit-lock-bounds accordingly.
Ihor Radchenko il y a 2 ans
Parent
commit
24c1c877cf
1 fichiers modifiés avec 10 ajouts et 1 suppressions
  1. 10 1
      lisp/org-fold-core.el

+ 10 - 1
lisp/org-fold-core.el

@@ -1467,7 +1467,16 @@ folded regions.")
                       (< next end))
             (setq next (org-fold-core-next-folding-state-change nil next end))))
         (save-excursion
-          (setq font-lock-return-value (font-lock-default-fontify-region pos next loudly))
+          ;; Keep track of the actually fontified region.
+          (pcase (font-lock-default-fontify-region pos next loudly)
+            (`(jit-lock-bounds ,beg . ,end)
+             (pcase font-lock-return-value
+               (`(jit-lock-bounds ,oldbeg . ,oldend)
+                (setq font-lock-return-value
+                      `(jit-lock-bounds
+                        ,(min oldbeg beg)
+                        ,(max oldend end))))
+               (value (setq font-lock-return-value value)))))
           (save-match-data
             ;; Only run within regions that are not yet touched by
             ;; fontification.