mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-28 07:45:00 +00:00
(jit-lock-function, jit-lock-stealth-fontify)
(jit-lock-deferred-fontify, jit-lock-context-fontify) (jit-lock-after-change): Test memory-full.
This commit is contained in:
parent
f5b8d5f263
commit
74614ac6c0
@ -299,7 +299,7 @@ Only applies to the current buffer."
|
||||
"Fontify current buffer starting at position START.
|
||||
This function is added to `fontification-functions' when `jit-lock-mode'
|
||||
is active."
|
||||
(when (and jit-lock-mode (not (memory-full-p)))
|
||||
(when (and jit-lock-mode (not memory-full))
|
||||
(if (null jit-lock-defer-time)
|
||||
;; No deferral.
|
||||
(jit-lock-fontify-now start (+ start jit-lock-chunk-size))
|
||||
@ -427,6 +427,7 @@ This functions is called after Emacs has been idle for
|
||||
`jit-lock-stealth-time' seconds."
|
||||
;; I used to check `inhibit-read-only' here, but I can't remember why. -stef
|
||||
(unless (or executing-kbd-macro
|
||||
memory-full
|
||||
(window-minibuffer-p (selected-window)))
|
||||
(let ((buffers (buffer-list))
|
||||
(outer-buffer (current-buffer))
|
||||
@ -490,7 +491,7 @@ This functions is called after Emacs has been idle for
|
||||
|
||||
(defun jit-lock-deferred-fontify ()
|
||||
"Fontify what was deferred."
|
||||
(when jit-lock-defer-buffers
|
||||
(when (and jit-lock-defer-buffers (not memory-full))
|
||||
;; Mark the deferred regions back to `fontified = nil'
|
||||
(dolist (buffer jit-lock-defer-buffers)
|
||||
(when (buffer-live-p buffer)
|
||||
@ -517,33 +518,34 @@ This functions is called after Emacs has been idle for
|
||||
|
||||
(defun jit-lock-context-fontify ()
|
||||
"Refresh fontification to take new context into account."
|
||||
(dolist (buffer (buffer-list))
|
||||
(with-current-buffer buffer
|
||||
(when jit-lock-context-unfontify-pos
|
||||
;; (message "Jit-Context %s" (buffer-name))
|
||||
(save-restriction
|
||||
(widen)
|
||||
(when (and (>= jit-lock-context-unfontify-pos (point-min))
|
||||
(< jit-lock-context-unfontify-pos (point-max)))
|
||||
;; If we're in text that matches a complex multi-line
|
||||
;; font-lock pattern, make sure the whole text will be
|
||||
;; redisplayed eventually.
|
||||
;; Despite its name, we treat jit-lock-defer-multiline here
|
||||
;; rather than in jit-lock-defer since it has to do with multiple
|
||||
;; lines, i.e. with context.
|
||||
(when (get-text-property jit-lock-context-unfontify-pos
|
||||
'jit-lock-defer-multiline)
|
||||
(setq jit-lock-context-unfontify-pos
|
||||
(or (previous-single-property-change
|
||||
jit-lock-context-unfontify-pos
|
||||
'jit-lock-defer-multiline)
|
||||
(point-min))))
|
||||
(with-buffer-prepared-for-jit-lock
|
||||
;; Force contextual refontification.
|
||||
(remove-text-properties
|
||||
jit-lock-context-unfontify-pos (point-max)
|
||||
'(fontified nil jit-lock-defer-multiline nil)))
|
||||
(setq jit-lock-context-unfontify-pos (point-max))))))))
|
||||
(unless memory-full
|
||||
(dolist (buffer (buffer-list))
|
||||
(with-current-buffer buffer
|
||||
(when jit-lock-context-unfontify-pos
|
||||
;; (message "Jit-Context %s" (buffer-name))
|
||||
(save-restriction
|
||||
(widen)
|
||||
(when (and (>= jit-lock-context-unfontify-pos (point-min))
|
||||
(< jit-lock-context-unfontify-pos (point-max)))
|
||||
;; If we're in text that matches a complex multi-line
|
||||
;; font-lock pattern, make sure the whole text will be
|
||||
;; redisplayed eventually.
|
||||
;; Despite its name, we treat jit-lock-defer-multiline here
|
||||
;; rather than in jit-lock-defer since it has to do with multiple
|
||||
;; lines, i.e. with context.
|
||||
(when (get-text-property jit-lock-context-unfontify-pos
|
||||
'jit-lock-defer-multiline)
|
||||
(setq jit-lock-context-unfontify-pos
|
||||
(or (previous-single-property-change
|
||||
jit-lock-context-unfontify-pos
|
||||
'jit-lock-defer-multiline)
|
||||
(point-min))))
|
||||
(with-buffer-prepared-for-jit-lock
|
||||
;; Force contextual refontification.
|
||||
(remove-text-properties
|
||||
jit-lock-context-unfontify-pos (point-max)
|
||||
'(fontified nil jit-lock-defer-multiline nil)))
|
||||
(setq jit-lock-context-unfontify-pos (point-max)))))))))
|
||||
|
||||
(defun jit-lock-after-change (start end old-len)
|
||||
"Mark the rest of the buffer as not fontified after a change.
|
||||
@ -553,7 +555,7 @@ is the pre-change length.
|
||||
This function ensures that lines following the change will be refontified
|
||||
in case the syntax of those lines has changed. Refontification
|
||||
will take place when text is fontified stealthily."
|
||||
(when (and jit-lock-mode (not (memory-full-p)))
|
||||
(when (and jit-lock-mode (not memory-full))
|
||||
(save-excursion
|
||||
(with-buffer-prepared-for-jit-lock
|
||||
;; It's important that the `fontified' property be set from the
|
||||
|
Loading…
Reference in New Issue
Block a user