(cond ,@(nreverse branches))))))
(defun syntax-propertize-via-font-lock (keywords)
- "Propertize for syntax in START..END using font-lock syntax.
+ "Propertize for syntax using font-lock syntax.
KEYWORDS obeys the format used in `font-lock-syntactic-keywords'.
-The return value is a function suitable for `syntax-propertize-function'."
+The return value is a function (with two parameters, START and
+END) suitable for `syntax-propertize-function'."
(lambda (start end)
(with-no-warnings
(let ((font-lock-syntactic-keywords keywords))
(setq keywords font-lock-syntactic-keywords)))))
(defun syntax-propertize (pos)
- "Ensure that syntax-table properties are set until POS."
+ "Ensure that syntax-table properties are set until POS (a buffer point)."
(when (< syntax-propertize--done pos)
(if (null syntax-propertize-function)
(setq syntax-propertize--done (max (point-max) pos))
(unless (eq funs
(cdr syntax-propertize-extend-region-functions))
(setq funs syntax-propertize-extend-region-functions)))))
+ ;; Flush ppss cache between the original value of `start' and that
+ ;; set above by syntax-propertize-extend-region-functions.
+ (syntax-ppss-flush-cache start)
;; Move the limit before calling the function, so the function
;; can use syntax-ppss.
(setq syntax-propertize--done end)