From 630855992eef0c730995d487d3463a78f1336295 Mon Sep 17 00:00:00 2001 From: danymat Date: Sun, 9 Jan 2022 17:25:08 +0100 Subject: [PATCH] feat(rust) Add `alternative` rust template --- lua/neogen/configurations/rust.lua | 33 ++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/lua/neogen/configurations/rust.lua b/lua/neogen/configurations/rust.lua index de3b6a4..8e14a58 100644 --- a/lua/neogen/configurations/rust.lua +++ b/lua/neogen/configurations/rust.lua @@ -26,8 +26,25 @@ return { class = { ["struct_item"] = { ["0"] = { - extract = function() - return {} + extract = function(node) + local tree = { + { + retrieve = "first", + node_type = "field_declaration_list", + subtree = { + { + retrieve = "all", + node_type = "field_declaration", + subtree = { + { retrieve = "all", node_type = "field_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, }, }, @@ -41,6 +58,18 @@ return { { nil, "", { no_results = true, type = { "file" } } }, { nil, "/ $1", { no_results = true, type = { "func", "class" } } }, + { nil, "/ $1", { type = { "func", "class" } } }, + }, + + alternative = { + { nil, "! $1", { no_results = true, type = { "file" } } }, + { nil, "", { no_results = true, type = { "file" } } }, + + { nil, "/ $1", { no_results = true, type = { "func", "class" } } }, + + { nil, "/ $1", { type = { "func", "class" } } }, + { nil, "/", { type = { "class" } } }, + { "field_identifier", "/ * %s: $1", { type = { "class" } } }, }, }, }