diff options
author | Yuan Fu <casouri@gmail.com> | 2023-01-07 16:03:37 -0800 |
---|---|---|
committer | Yuan Fu <casouri@gmail.com> | 2023-01-07 16:14:22 -0800 |
commit | 614f8c431d3e47d0e930207809454efc7118850d (patch) | |
tree | d472741bb49dc0f7140bbf41251d3a87090ca18e /lisp | |
parent | 7c356934fbb07d6b0f267f8d21ffc9b3f7d9d1c3 (diff) | |
download | emacs-614f8c431d3e47d0e930207809454efc7118850d.tar.gz emacs-614f8c431d3e47d0e930207809454efc7118850d.tar.bz2 emacs-614f8c431d3e47d0e930207809454efc7118850d.zip |
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.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/progmodes/c-ts-mode.el | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index 43d714dbb20..a35a0f12f51 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -423,20 +423,29 @@ MODE is either `c' or `cpp'." ;;; Font-lock helpers -(defun c-ts-mode--declarator-identifier (node) - "Return the identifier of the declarator node NODE." +(defun c-ts-mode--declarator-identifier (node &optional qualified) + "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) ;; Recurse. ((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") - (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") (c-ts-mode--declarator-identifier - (treesit-node-child-by-field-name node "declarator"))) + (treesit-node-child-by-field-name node "declarator") + qualified)) ("qualified_identifier" - (c-ts-mode--declarator-identifier - (treesit-node-child-by-field-name node "name"))) + (if qualified + node + (c-ts-mode--declarator-identifier + (treesit-node-child-by-field-name node "name") + qualified))) ;; Terminal case. ((or "identifier" "field_identifier") 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) ((or "function_definition" "declaration") (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" "union_specifier" "class_specifier" "namespace_definition") |