From b71813cb9a4a74f5b2e06e50b0782cb7223f2045 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 11 May 2005 15:55:16 +0000 Subject: [PATCH] (font-lock-fontify-keywords-region): Use a marker when trying to ensure forward progress. --- lisp/ChangeLog | 9 +++++++-- lisp/font-lock.el | 13 ++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c483fefaefb..1ff0edac77f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-05-11 Stefan Monnier + + * font-lock.el (font-lock-fontify-keywords-region): Use a marker + when trying to ensure forward progress. + 2005-05-11 Chong Yidong * mouse-sel.el (mouse-sel-follow-link-p): New function. @@ -18,8 +23,8 @@ (ada-mode): Add ada-adjust-case-skeleton to skeleton-end-hook. * progmodes/ada-stmt.el (ada-adjust-case-skeleton): - Moved to ada-mode.el. - (ada-stmt-mode-hook): Deleted; do the work in ada-mode. + Move to ada-mode.el. + (ada-stmt-mode-hook): Delete; do the work in ada-mode. * cus-edit.el (custom-file): Call file-chase-links. diff --git a/lisp/font-lock.el b/lisp/font-lock.el index d2ffdf44bdb..bd0af57059f 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -1420,6 +1420,7 @@ LOUDLY, if non-nil, allows progress-meter bar." (let ((case-fold-search font-lock-keywords-case-fold-search) (keywords (cddr font-lock-keywords)) (bufname (buffer-name)) (count 0) + (pos (make-marker)) keyword matcher highlights) ;; ;; Fontify each item in `font-lock-keywords' from `start' to `end'. @@ -1454,12 +1455,14 @@ LOUDLY, if non-nil, allows progress-meter bar." (while highlights (if (numberp (car (car highlights))) (font-lock-apply-highlight (car highlights)) - (let ((pos (point))) - (font-lock-fontify-anchored-keywords (car highlights) end) - ;; Ensure forward progress. - (if (< (point) pos) (goto-char pos)))) + (set-marker pos (point)) + (font-lock-fontify-anchored-keywords (car highlights) end) + ;; Ensure forward progress. `pos' is a marker because anchored + ;; keyword may add/delete text (this happens e.g. in grep.el). + (if (< (point) pos) (goto-char pos))) (setq highlights (cdr highlights)))) - (setq keywords (cdr keywords))))) + (setq keywords (cdr keywords))) + (set-marker pos nil))) ;;; End of Keyword regexp fontification functions. -- 2.39.2