From e8237990037625b0c937b1fa5486c811c64d3d16 Mon Sep 17 00:00:00 2001 From: Randy Taylor Date: Fri, 28 Oct 2022 22:39:50 -0400 Subject: [PATCH] Add more font-lock faces (Bug#58940) * lisp/font-lock.el (font-lock-bracket-face, font-lock-delimiter-face, font-lock-escape-face, font-lock-number-face, font-lock-misc-punctuation-face, font-lock-operator-face, font-lock-property-face, font-lock-punctuation-face): Define new faces. * lisp/cus-theme.el (custom-theme--listed-faces): Add them to the list. * doc/lispref/modes.texi (Faces for Font Lock): Document them. * etc/NEWS: Mention them. --- doc/lispref/modes.texi | 54 +++++++++++++++++++++++++++++++ etc/NEWS | 7 ++++ lisp/cus-theme.el | 16 ++++++---- lisp/font-lock.el | 72 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 143 insertions(+), 6 deletions(-) diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index c1b092247b..290bd5075e 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -3653,6 +3653,60 @@ Faces for Font Lock @item font-lock-negation-char-face @vindex font-lock-negation-char-face for easily-overlooked negation characters. + +@item font-lock-bracket-face +@vindex font-lock-bracket-face +for brackets (e.g. @code{()}, @code{[]}, @code{@{@}}). +This face inherits, by default, from @code{font-lock-punctuation-face}. + +@item font-lock-delimiter-face +@vindex font-lock-delimiter-face +for delimiters (e.g. @code{;}, @code{:}, @code{,}). +This face inherits, by default, from @code{font-lock-punctuation-face}. + +@item font-lock-escape-face +@vindex font-lock-escape-face +for escape sequences in strings. +This face inherits, by default, from @code{font-lock-regexp-grouping-backslash}. + +@item font-lock-number-face +@vindex font-lock-number-face +for numbers. + +@item font-lock-misc-punctuation-face +@vindex font-lock-misc-punctuation-face +for punctuation that is not a bracket or delimiter. + +@item font-lock-operator-face +@vindex font-lock-operator-face +for operators. + +@item font-lock-property-face +@vindex font-lock-property-face +for properties of an object, such as the declaration and use of fields +in a struct. +This face inherits, by default, from @code{font-lock-variable-name-face}. + +For example, + +@smallexample +typedef struct +@{ + int prop; +// ^ property +@} obj; + +int main() +@{ + obj o; + o.prop = 3; +// ^ property +@} +@end smallexample + +@item font-lock-punctuation-face +@vindex font-lock-punctuation-face +for punctuation such as brackets and delimiters. @end table @node Syntactic Font Lock diff --git a/etc/NEWS b/etc/NEWS index c5a142b500..6cf92bdcca 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -732,6 +732,13 @@ If the current buffer is visiting a file that is executable, the This determines how long to pause Emacs after a process filter/sentinel error has been handled. ++++ +** New faces for font-lock. +'font-lock-bracket-face', 'font-lock-delimiter-face', +'font-lock-escape-face', 'font-lock-number-face', +'font-lock-misc-punctuation-face', 'font-lock-operator-face', +'font-lock-property-face', 'font-lock-punctuation-face'. + +++ ** New face 'variable-pitch-text'. This face is like 'variable-pitch' (from which it inherits), but is diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el index 90680ff68f..1df2ab8db7 100644 --- a/lisp/cus-theme.el +++ b/lisp/cus-theme.el @@ -66,13 +66,17 @@ custom-theme--listed-faces variable-pitch escape-glyph homoglyph minibuffer-prompt highlight region shadow secondary-selection trailing-whitespace - font-lock-builtin-face font-lock-comment-delimiter-face - font-lock-comment-face font-lock-constant-face - font-lock-doc-face font-lock-doc-markup-face font-lock-function-name-face + font-lock-bracket-face font-lock-builtin-face + font-lock-comment-delimiter-face font-lock-comment-face + font-lock-constant-face font-lock-delimiter-face + font-lock-doc-face font-lock-doc-markup-face + font-lock-escape-face font-lock-function-name-face font-lock-keyword-face font-lock-negation-char-face - font-lock-preprocessor-face font-lock-regexp-grouping-backslash - font-lock-regexp-grouping-construct font-lock-string-face - font-lock-type-face font-lock-variable-name-face + font-lock-number-face font-lock-misc-punctuation-face + font-lock-operator-face font-lock-preprocessor-face + font-lock-property-face font-lock-punctuation-face + font-lock-regexp-grouping-backslash font-lock-regexp-grouping-construct + font-lock-string-face font-lock-type-face font-lock-variable-name-face font-lock-warning-face button link link-visited fringe header-line tooltip mode-line mode-line-buffer-id mode-line-emphasis mode-line-highlight mode-line-inactive diff --git a/lisp/font-lock.el b/lisp/font-lock.el index e88dc1d3b7..b79d578848 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -359,6 +359,30 @@ font-lock-negation-char-face (defvar font-lock-preprocessor-face 'font-lock-preprocessor-face "Face name to use for preprocessor directives.") +(defvar font-lock-bracket-face 'font-lock-bracket-face + "Face name to use for brackets.") + +(defvar font-lock-delimiter-face 'font-lock-delimiter-face + "Face name to use for delimiters.") + +(defvar font-lock-escape-face 'font-lock-escape-face + "Face name to use for escape sequences in strings.") + +(defvar font-lock-number-face 'font-lock-number-face + "Face name to use for numbers.") + +(defvar font-lock-misc-punctuation-face 'font-lock-misc-punctuation-face + "Face name to use for miscellaneous punctuation.") + +(defvar font-lock-operator-face 'font-lock-operator-face + "Face name to use for operators.") + +(defvar font-lock-property-face 'font-lock-property-face + "Face name to use for properties.") + +(defvar font-lock-punctuation-face 'font-lock-punctuation-face + "Face name to use for punctuation.") + ;; Fontification variables: (defvar font-lock-keywords nil @@ -2085,6 +2109,54 @@ font-lock-preprocessor-face "Font Lock mode face used to highlight preprocessor directives." :group 'font-lock-faces) +(defface font-lock-bracket-face + '((t :inherit font-lock-punctuation-face)) + "Font Lock mode face used to highlight brackets." + :group 'font-lock-faces + :version "29.1") + +(defface font-lock-delimiter-face + '((t :inherit font-lock-punctuation-face)) + "Font Lock mode face used to highlight delimiters." + :group 'font-lock-faces + :version "29.1") + +(defface font-lock-escape-face + '((t :inherit font-lock-regexp-grouping-backslash)) + "Font Lock mode face used to highlight escape sequences in strings." + :group 'font-lock-faces + :version "29.1") + +(defface font-lock-number-face + '((t nil)) + "Font Lock mode face used to highlight numbers." + :group 'font-lock-faces + :version "29.1") + +(defface font-lock-misc-punctuation-face + '((t :inherit font-lock-punctuation-face)) + "Font Lock mode face used to highlight miscellaneous punctuation." + :group 'font-lock-faces + :version "29.1") + +(defface font-lock-operator-face + '((t nil)) + "Font Lock mode face used to highlight operators." + :group 'font-lock-faces + :version "29.1") + +(defface font-lock-property-face + '((t :inherit font-lock-variable-name-face)) + "Font Lock mode face used to highlight properties." + :group 'font-lock-faces + :version "29.1") + +(defface font-lock-punctuation-face + '((t nil)) + "Font Lock mode face used to highlight punctuation." + :group 'font-lock-faces + :version "29.1") + (defface font-lock-regexp-grouping-backslash '((t :inherit bold)) "Font Lock mode face for backslashes in Lisp regexp grouping constructs." -- 2.38.1