summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandy Taylor <dev@rjt.dev>2022-10-28 22:39:50 -0400
committerEli Zaretskii <eliz@gnu.org>2022-11-10 13:03:41 +0200
commite06953b02a0e7b26b33c511a22896d0db4e5d63d (patch)
tree19f62976d60e77ef66fa7168afc6e211b3b2fb4a
parent77cb95c851edc338c94cb35effdc8c9ffc64a461 (diff)
downloademacs-e06953b02a0e7b26b33c511a22896d0db4e5d63d.tar.gz
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.
-rw-r--r--doc/lispref/modes.texi65
-rw-r--r--etc/NEWS8
-rw-r--r--lisp/cus-theme.el16
-rw-r--r--lisp/font-lock.el49
4 files changed, 132 insertions, 6 deletions
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 973d183a729..f61848c9482 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -3653,6 +3653,71 @@ This face inherits, by default, from @code{font-lock-constant-face}.
@item font-lock-negation-char-face
@vindex font-lock-negation-char-face
for easily-overlooked negation characters.
+
+@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}.
+
+Here is an example in Python, where the escape sequence @code{\n} is used:
+
+@smallexample
+@group
+print('Hello world!\n')
+@end group
+@end smallexample
+
+@item font-lock-number-face
+@vindex font-lock-number-face
+for numbers.
+
+@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
+@group
+typedef struct
+@{
+ int prop;
+// ^ property
+@} obj;
+
+int main()
+@{
+ obj o;
+ o.prop = 3;
+// ^ property
+@}
+@end group
+@end smallexample
+
+@item font-lock-punctuation-face
+@vindex font-lock-punctuation-face
+for punctuation such as brackets and delimiters.
+
+@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-misc-punctuation-face
+@vindex font-lock-misc-punctuation-face
+for punctuation that is not a bracket or delimiter.
+This face inherits, by default, from @code{font-lock-punctuation-face}.
@end table
@node Syntactic Font Lock
diff --git a/etc/NEWS b/etc/NEWS
index c5a142b500f..74f1948569a 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -733,6 +733,14 @@ This determines how long to pause Emacs after a process
filter/sentinel error has been handled.
+++
+** New faces for font-lock.
+These faces are primarily meant for use with tree-sitter. They are:
+'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
slightly larger, which should help with the visual size differences
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 90680ff68f8..1df2ab8db7c 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -66,13 +66,17 @@ Do not call this mode function yourself. It is meant for internal use."
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 e88dc1d3b71..baeafecf162 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -2095,6 +2095,55 @@ as the constructs of Haddock, Javadoc and similar systems."
"Font Lock mode face used to highlight grouping constructs in Lisp regexps."
:group 'font-lock-faces)
+(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-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 of an object.
+For example, the declaration and use of fields in a struct."
+ :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-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-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")
+
;; End of Color etc. support.
;;; Menu support.