Fontify C++ function definitions in c-ts-mode (bug#60529)
* lisp/progmodes/c-ts-mode.el (c-ts-mode--declarator-identifier): Teach the code how to extract the declarator of a node of type "qualified_identifier". (c-ts-mode--fontify-declarator): Consider the case where the identifier in a function declarator is buried inside "qualifier_identifier" nodes.
This commit is contained in:
parent
0d98fac6bb
commit
c786afcbb9
1 changed files with 11 additions and 1 deletions
|
@ -430,6 +430,9 @@ MODE is either `c' or `cpp'."
|
|||
((or "function_declarator" "array_declarator" "init_declarator")
|
||||
(c-ts-mode--declarator-identifier
|
||||
(treesit-node-child-by-field-name node "declarator")))
|
||||
("qualified_identifier"
|
||||
(c-ts-mode--declarator-identifier
|
||||
(treesit-node-child-by-field-name node "name")))
|
||||
;; Terminal case.
|
||||
((or "identifier" "field_identifier")
|
||||
node)))
|
||||
|
@ -439,7 +442,14 @@ MODE is either `c' or `cpp'."
|
|||
For NODE, OVERRIDE, START, END, and ARGS, see
|
||||
`treesit-font-lock-rules'."
|
||||
(let* ((identifier (c-ts-mode--declarator-identifier node))
|
||||
(face (pcase (treesit-node-type (treesit-node-parent identifier))
|
||||
(qualified-root
|
||||
(treesit-parent-while (treesit-node-parent identifier)
|
||||
(lambda (node)
|
||||
(equal (treesit-node-type node)
|
||||
"qualified_identifier"))))
|
||||
(face (pcase (treesit-node-type (treesit-node-parent
|
||||
(or qualified-root
|
||||
identifier)))
|
||||
("function_declarator" 'font-lock-function-name-face)
|
||||
(_ 'font-lock-variable-name-face))))
|
||||
(treesit-fontify-with-override
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue