diff --git a/lua/neogen/configurations/rust.lua b/lua/neogen/configurations/rust.lua index 8e14a58..99d7c63 100644 --- a/lua/neogen/configurations/rust.lua +++ b/lua/neogen/configurations/rust.lua @@ -8,8 +8,30 @@ return { func = { ["function_item"] = { ["0"] = { - extract = function() - return {} + extract = function(node) + local tree = { + { + retrieve = "first", + node_type = "parameters", + subtree = { + { + retrieve = "all", + node_type = "parameter", + subtree = { + { retrieve = "first", node_type = "identifier", extract = true }, + }, + }, + { + retrieve = "all", + node_type = "type_identifier", + extract = true, + }, + }, + }, + } + local nodes = neogen.utilities.nodes:matching_nodes_from(node, tree) + local res = neogen.utilities.extractors:extract_from_matched(nodes) + return res end, }, }, @@ -52,7 +74,7 @@ return { }, template = { - annotation_convention = "rustdoc", + annotation_convention = "alternative", rustdoc = { { nil, "! $1", { no_results = true, type = { "file" } } }, { nil, "", { no_results = true, type = { "file" } } }, @@ -68,8 +90,10 @@ return { { nil, "/ $1", { no_results = true, type = { "func", "class" } } }, { nil, "/ $1", { type = { "func", "class" } } }, - { nil, "/", { type = { "class" } } }, + { nil, "/", { type = { "class", "func" } } }, { "field_identifier", "/ * %s: $1", { type = { "class" } } }, + { "type_identifier", "/ * %s: $1", { type = { "func" } } }, + { "identifier", "/ * %s: $1", { type = { "func" } } }, }, }, }