Mercurial > hg > xemacs-beta
changeset 5349:239193591765
Unbreak font-lock during `revert-buffer.
2011-01-30 Mike Sperber <mike@xemacs.org>
* font-lock.el (font-lock-fontify-pending-extents): Don't fail if
`font-lock-mode' is unset, which can happen in the middle of
`revert-buffer'.
This fixes Issue622.
author | Mike Sperber <sperber@deinprogramm.de> |
---|---|
date | Sun, 30 Jan 2011 14:27:31 +0100 |
parents | 39304a35b6b3 |
children | 94bbd4792049 |
files | lisp/ChangeLog lisp/font-lock.el |
diffstat | 2 files changed, 50 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Jan 30 12:20:19 2011 +0100 +++ b/lisp/ChangeLog Sun Jan 30 14:27:31 2011 +0100 @@ -1,3 +1,9 @@ +2011-01-30 Mike Sperber <mike@xemacs.org> + + * font-lock.el (font-lock-fontify-pending-extents): Don't fail if + `font-lock-mode' is unset, which can happen in the middle of + `revert-buffer'. + 2011-01-23 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (delete):
--- a/lisp/font-lock.el Sun Jan 30 12:20:19 2011 +0100 +++ b/lisp/font-lock.el Sun Jan 30 14:27:31 2011 +0100 @@ -1477,51 +1477,55 @@ (save-match-data (maphash #'(lambda (buffer dummy) - ;; remove first, to avoid infinite reprocessing if error - (remhash buffer font-lock-pending-buffer-table) - (when (buffer-live-p buffer) - (clear-range-table font-lock-range-table) - (with-current-buffer buffer - (save-excursion - (save-restriction - ;; if we don't widen, then the C code in - ;; syntactically-sectionize will fail to realize that - ;; we're inside a comment. #### We don't actually use - ;; syntactically-sectionize any more. Do we still - ;; need the widen? - (widen) - (map-extents - #'(lambda (ex dummy-maparg) - ;; first expand the ranges to full lines, - ;; because that is what will be fontified; - ;; then use a range table to merge the - ;; ranges. (we could also do this simply using - ;; text properties. the range table code was - ;; here from a previous version of this code - ;; and works just as well.) - (let* ((beg (extent-start-position ex)) - (end (extent-end-position ex)) - (beg (progn (goto-char beg) - (beginning-of-line) - (point))) - (end (progn (goto-char end) - (forward-line 1) - (point)))) - (put-range-table beg end t - font-lock-range-table))) - nil nil nil nil nil 'font-lock-pending t) - ;; clear all pending extents first in case of error below. - (put-text-property (point-min) (point-max) - 'font-lock-pending nil) - (map-range-table - #'(lambda (beg end val) + (catch 'exit + ;; font-lock-mode may be temporarily unset during `revert-buffer' + (if (not font-lock-mode) + (throw 'exit nil)) + ;; remove first, to avoid infinite reprocessing if error + (remhash buffer font-lock-pending-buffer-table) + (when (buffer-live-p buffer) + (clear-range-table font-lock-range-table) + (with-current-buffer buffer + (save-excursion + (save-restriction + ;; if we don't widen, then the C code in + ;; syntactically-sectionize will fail to realize that + ;; we're inside a comment. #### We don't actually use + ;; syntactically-sectionize any more. Do we still + ;; need the widen? + (widen) + (map-extents + #'(lambda (ex dummy-maparg) + ;; first expand the ranges to full lines, + ;; because that is what will be fontified; + ;; then use a range table to merge the + ;; ranges. (we could also do this simply using + ;; text properties. the range table code was + ;; here from a previous version of this code + ;; and works just as well.) + (let* ((beg (extent-start-position ex)) + (end (extent-end-position ex)) + (beg (progn (goto-char beg) + (beginning-of-line) + (point))) + (end (progn (goto-char end) + (forward-line 1) + (point)))) + (put-range-table beg end t + font-lock-range-table))) + nil nil nil nil nil 'font-lock-pending t) + ;; clear all pending extents first in case of error below. + (put-text-property (point-min) (point-max) + 'font-lock-pending nil) + (map-range-table + #'(lambda (beg end val) ;; This creates some unnecessary progress gauges. ;; (if (and (= beg (point-min)) ;; (= end (point-max))) ;; (font-lock-fontify-buffer) ;; (font-lock-fontify-region beg end))) - (font-lock-fontify-region beg end)) - font-lock-range-table)))))) + (font-lock-fontify-region beg end)) + font-lock-range-table))))))) font-lock-pending-buffer-table))) ;; Syntactic fontification functions.