Fix c++-ts-mode font-lock for latest c++ grammar (bug#73191)
* lisp/progmodes/c-ts-mode.el: (c-ts-mode--keywords): Add "thread_local" keyword. (c-ts-mode--test-virtual-named-p): New function. (c-ts-mode--font-lock-settings): Use named/anonymous "virtual" depending on the grammar.
This commit is contained in:
parent
ffc00eac53
commit
21efdd5ef3
1 changed files with 13 additions and 3 deletions
|
@ -574,7 +574,7 @@ MODE is either `c' or `cpp'."
|
||||||
"or_eq" "override" "private" "protected"
|
"or_eq" "override" "private" "protected"
|
||||||
"public" "requires" "template" "throw"
|
"public" "requires" "template" "throw"
|
||||||
"try" "typename" "using"
|
"try" "typename" "using"
|
||||||
"xor" "xor_eq"))
|
"xor" "xor_eq" "thread_local"))
|
||||||
(append '("auto") c-keywords))))
|
(append '("auto") c-keywords))))
|
||||||
|
|
||||||
(defvar c-ts-mode--type-keywords
|
(defvar c-ts-mode--type-keywords
|
||||||
|
@ -592,6 +592,11 @@ MODE is either `c' or `cpp'."
|
||||||
"LIVE_BUFFER" "FRAME"))
|
"LIVE_BUFFER" "FRAME"))
|
||||||
"A regexp matching all the variants of the FOR_EACH_* macro.")
|
"A regexp matching all the variants of the FOR_EACH_* macro.")
|
||||||
|
|
||||||
|
(defun c-ts-mode--test-virtual-named-p ()
|
||||||
|
"Return t if the virtual keyword is a namded node, nil otherwise."
|
||||||
|
(ignore-errors
|
||||||
|
(progn (treesit-query-compile 'cpp "(virtual)" t) t)))
|
||||||
|
|
||||||
(defun c-ts-mode--font-lock-settings (mode)
|
(defun c-ts-mode--font-lock-settings (mode)
|
||||||
"Tree-sitter font-lock settings.
|
"Tree-sitter font-lock settings.
|
||||||
MODE is either `c' or `cpp'."
|
MODE is either `c' or `cpp'."
|
||||||
|
@ -636,8 +641,13 @@ MODE is either `c' or `cpp'."
|
||||||
`([,@(c-ts-mode--keywords mode)] @font-lock-keyword-face
|
`([,@(c-ts-mode--keywords mode)] @font-lock-keyword-face
|
||||||
,@(when (eq mode 'cpp)
|
,@(when (eq mode 'cpp)
|
||||||
'((auto) @font-lock-keyword-face
|
'((auto) @font-lock-keyword-face
|
||||||
(this) @font-lock-keyword-face
|
(this) @font-lock-keyword-face))
|
||||||
(virtual) @font-lock-keyword-face)))
|
,@(when (and (eq mode 'cpp)
|
||||||
|
(c-ts-mode--test-virtual-named-p))
|
||||||
|
'((virtual) @font-lock-keyword-face))
|
||||||
|
,@(when (and (eq mode 'cpp)
|
||||||
|
(not (c-ts-mode--test-virtual-named-p)))
|
||||||
|
'("virtual" @font-lock-keyword-face)))
|
||||||
|
|
||||||
:language mode
|
:language mode
|
||||||
:feature 'operator
|
:feature 'operator
|
||||||
|
|
Loading…
Add table
Reference in a new issue