feat(lsp): add snippet API (#25301)

This commit is contained in:
Maria José Solano
2023-10-20 23:51:26 -07:00
committed by GitHub
parent 3304449946
commit f1775da07f
11 changed files with 789 additions and 34 deletions

View File

@@ -616,35 +616,7 @@ function M.parse_snippet(input)
return input
end
--- @param node vim.snippet.Node<any>
--- @return string
local function node_to_string(node)
local insert_text = {}
if node.type == snippet.NodeType.Snippet then
for _, child in
ipairs((node.data --[[@as vim.snippet.SnippetData]]).children)
do
table.insert(insert_text, node_to_string(child))
end
elseif node.type == snippet.NodeType.Choice then
table.insert(insert_text, (node.data --[[@as vim.snippet.ChoiceData]]).values[1])
elseif node.type == snippet.NodeType.Placeholder then
table.insert(
insert_text,
node_to_string((node.data --[[@as vim.snippet.PlaceholderData]]).value)
)
elseif node.type == snippet.NodeType.Text then
table.insert(
insert_text,
node
.data --[[@as vim.snippet.TextData]]
.text
)
end
return table.concat(insert_text)
end
return node_to_string(parsed)
return tostring(parsed)
end
--- Sorts by CompletionItem.sortText.