Optionally include the namespace in c-ts-mode--declarator-identifier
This is an additional fix for bug#60397. * lisp/progmodes/c-ts-mode.el: (c-ts-mode--declarator-identifier): New parameter QUALIFIED. (c-ts-mode--defun-name): Use qualified identifier.
This commit is contained in:
parent
7c356934fb
commit
614f8c431d
1 changed files with 18 additions and 8 deletions
|
@ -423,20 +423,29 @@ MODE is either `c' or `cpp'."
|
||||||
|
|
||||||
;;; Font-lock helpers
|
;;; Font-lock helpers
|
||||||
|
|
||||||
(defun c-ts-mode--declarator-identifier (node)
|
(defun c-ts-mode--declarator-identifier (node &optional qualified)
|
||||||
"Return the identifier of the declarator node NODE."
|
"Return the identifier of the declarator node NODE.
|
||||||
|
|
||||||
|
If QUALIFIED is non-nil, include the names space part of the
|
||||||
|
identifier and return a qualified_identifier."
|
||||||
(pcase (treesit-node-type node)
|
(pcase (treesit-node-type node)
|
||||||
;; Recurse.
|
;; Recurse.
|
||||||
((or "attributed_declarator" "parenthesized_declarator")
|
((or "attributed_declarator" "parenthesized_declarator")
|
||||||
(c-ts-mode--declarator-identifier (treesit-node-child node 0 t)))
|
(c-ts-mode--declarator-identifier (treesit-node-child node 0 t)
|
||||||
|
qualified))
|
||||||
((or "pointer_declarator" "reference_declarator")
|
((or "pointer_declarator" "reference_declarator")
|
||||||
(c-ts-mode--declarator-identifier (treesit-node-child node -1)))
|
(c-ts-mode--declarator-identifier (treesit-node-child node -1)
|
||||||
|
qualified))
|
||||||
((or "function_declarator" "array_declarator" "init_declarator")
|
((or "function_declarator" "array_declarator" "init_declarator")
|
||||||
(c-ts-mode--declarator-identifier
|
(c-ts-mode--declarator-identifier
|
||||||
(treesit-node-child-by-field-name node "declarator")))
|
(treesit-node-child-by-field-name node "declarator")
|
||||||
|
qualified))
|
||||||
("qualified_identifier"
|
("qualified_identifier"
|
||||||
(c-ts-mode--declarator-identifier
|
(if qualified
|
||||||
(treesit-node-child-by-field-name node "name")))
|
node
|
||||||
|
(c-ts-mode--declarator-identifier
|
||||||
|
(treesit-node-child-by-field-name node "name")
|
||||||
|
qualified)))
|
||||||
;; Terminal case.
|
;; Terminal case.
|
||||||
((or "identifier" "field_identifier")
|
((or "identifier" "field_identifier")
|
||||||
node)))
|
node)))
|
||||||
|
@ -538,7 +547,8 @@ Return nil if NODE is not a defun node or doesn't have a name."
|
||||||
(pcase (treesit-node-type node)
|
(pcase (treesit-node-type node)
|
||||||
((or "function_definition" "declaration")
|
((or "function_definition" "declaration")
|
||||||
(c-ts-mode--declarator-identifier
|
(c-ts-mode--declarator-identifier
|
||||||
(treesit-node-child-by-field-name node "declarator")))
|
(treesit-node-child-by-field-name node "declarator")
|
||||||
|
t))
|
||||||
((or "struct_specifier" "enum_specifier"
|
((or "struct_specifier" "enum_specifier"
|
||||||
"union_specifier" "class_specifier"
|
"union_specifier" "class_specifier"
|
||||||
"namespace_definition")
|
"namespace_definition")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue