If set and if applicable, add a regexp to highlight defun-like
text inside comments and strings.
(font-lock-fontify-keywords-region): Pass that new arg.
(font-lock-set-defaults): Move the code to set `font-lock-keywords'
to the end and pass that new arg.
(c-font-lock-keywords-2): Fix regex for labels.
(font-lock-match-c++-style-declaration-item-and-skip-to-next):
Make it work when LIMIT is several lines further.
(c-font-lock-keywords-3, c++-font-lock-keywords-3)
(objc-font-lock-keywords-3, java-font-lock-keywords-3):
Use backquote and make the regexes for `int a, b, c;' work on
multiple lines.
(font-lock-defaults-alist): Don't define keywords for lisp languages.
Use `c-font-lock-syntactic-face-function' for c languages.
(font-lock-mode): Don't unset vars when turning the mode off.
(font-lock-default-fontify-buffer): Don't unset vars at the end.
(font-lock-extra-managed-props): New var.
(font-lock-default-unfontify-region): Use it.
(font-lock-apply-syntactic-highlight): Flush the syntax cache.
Don't eval the value when there's no match.
(font-lock-ppss-stats): New var.
(font-lock-ppss): New fun.
(font-lock-fontify-syntactically-region): Use it and syntax.ppss.
(font-lock-apply-highlight): Allow `highlight' to set several props.
(font-lock-set-defaults): Use dolist.
(font-lock-unset-defaults): Remove.
(font-lock-match-c-style-declaration-item-and-skip-to-next):
Try to recognize prototypes using `foo P_ ((args))'.
({c,c++,java,objc}-font-lock-keywords-{1,2,3}): Don't setq a defconst.
(c-font-lock-keywords-2): Fix last change to still use Anders' trick.
(c-font-lock-syntactic-face-function): New function.
(font-lock-match-c++-style-declaration-item-and-skip-to-next)
(c++-keywords): Use a more sophisticated regexp to handle
shallowly nested templates.
(font-lock-defaults-alist): Mark obsolete.
(font-lock-mode, font-lock-mode-hook) <defvar>: Remove.
(font-lock-mode): Use define-minor-mode.
(font-lock-support-mode): Tweak type to default to jit-lock-mode.
(font-lock-turn-off-thing-lock): Be more explicit.
(font-lock-apply-syntactic-highlight): Use string-to-syntax after eval.
(font-lock-syntactic-face-function): New var.
(font-lock-fontify-syntactically-region): Use it.
(font-lock-doc-face): New.
(font-lock-global-modes): Define with easy-mmode-define-global-mode.
(font-lock-change-major-mode): Remove.
(turn-on-font-lock-if-enabled): Only apply to the current buffer.
(font-lock-default-fontify-region): Extend the multiline
fontification to whole lines.
(font-lock-fontify-anchored-keywords)
(font-lock-fontify-keywords-region): If matching just one
line (with \n) only mark the \n as multiline.
(font-lock-turn-on-thing-lock): Use jit-lock-refontify.
(font-lock-choose-keywords):
Ignore LEVEL unless KEYWORDS is a list of syms.
(c-keywords, c++-keywords, objc-keywords, java-keywords):
Don't wrap regexp-opt things in \(...\) unnecessarily.
(tex-font-lock-keywords, tex-font-lock-keywords-2)
(tex-font-lock-keywords-1): Remove.
(font-lock-turn-on-thing-lock): Use jit-lock-register.
(font-lock-turn-off-thing-lock): Use jit-lock-unregister.
(font-lock-default-fontify-region): Expand beg..end correctly
when just following a multiline region.
(font-lock-fontify-anchored-keywords):
Include the anchor text as part of the multiline.
(tex-font-lock-keywords-1, tex-font-lock-keywords-2):
Don't use regexp-opt-depth. Spice up the regexp for args.
Don't distinguish between cmds that can take an opt arg or not.
Use `append' and `prepend' rather than `keep'.
(font-lock-add-keywords): Make it work even if font-lock-mode is nil,
so that it can be used more easily in <foo>-mode-hook. Also make sure
to avoid duplicate entries.
(font-lock-update-removed-keyword-alist): Renamed `major-mode'->`mode'.
(font-lock-remove-keywords): Just as was done for `add', allow it to
work even if font-lock-mode is nil. Also make sure we don't modify
any pre-existing list by forcing a copy-sequence. Finally rename
`major-mode' to `mode'.
(font-lock-fontify-syntactic-anchored-keywords)
(font-lock-fontify-anchored-keywords)
(font-lock-fontify-keywords-region): Use line-end-position.
Don't make `font-lock-multiline' local (it's now done in
font-lock-set-defaults).
(font-lock-set-defaults): Make `font-lock-multiline' local. Also
move the `font-lock-fontified' creation to inside the `unless'.
Both local (previously added keyword) and global keywords
can be removed.
(font-lock-remove-keywords): New user-level function.
(font-lock-update-removed-keyword-alist): New internal function.
(font-lock-removed-keywords-alist): New variable.
(font-lock-add-keywords): Updates `font-lock-removed-keywords-alist'.
Empty `font-lock-keywords-alist' when `append' is `set' to avoid
growing datastructures.
(font-lock-set-defaults): Removes keywords stored in
`font-lock-removed-keywords-alist' after local keywords added.
(c-keywords, c++-keywords): Better "case" support for
complex constant expressions, e.g. "case 1<<A_BIT_NO:".
(c-keywords): Only highlight preprocessor
directives when spelled correctly.
(font-lock-match-c++-structor-declaration,
c++-keywords): Fontify constructors and destructors with function
face inside C++ class declarations.
(font-lock-add-keywords): Rename `major-mode' into `mode'.
(font-lock-remove-keywords): Added a dummy `mode' argument for
potential future support.
(font-lock-fontify-anchored-keywords,
(font-lock-fontify-keywords-region): Only handle multiline strings
if necessary (avoids a pathological behavior in (f.ex) diff-mode).
off-by-one problem that could force re-fontifying the whole buffer.
(font-lock-remove-keywords): New function.
(font-lock-add-keywords): Use the new function to ensure idempotence.