this hasn't worked for a long time, I might choose to re-impl if I have time
This commit is contained in:
@ -1,46 +1,4 @@
|
|||||||
require("core.snippets.shorthands")
|
require('core.snippets.shorthands')
|
||||||
|
|
||||||
--- create a decleration of a function from it's definition using treesitter
|
|
||||||
---@param func string
|
|
||||||
---@return string|nil
|
|
||||||
local function c_func(func)
|
|
||||||
local tree = vim.treesitter.get_parser():parse()[1]:root()
|
|
||||||
|
|
||||||
local q = vim.treesitter.query.parse("c", "(function_definition) @f")
|
|
||||||
local matches = q:iter_matches(tree, 0)
|
|
||||||
|
|
||||||
vim.treesitter.query.parse("c", "(identifier) @i")
|
|
||||||
local m = q:iter_matches(matches, 0)
|
|
||||||
print(vim.treesitter.get_node_text(m:child(), 0))
|
|
||||||
|
|
||||||
if true then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
for _, match in matches do
|
|
||||||
for _, node in pairs(match) do
|
|
||||||
if not node or not node:child(1) or not node:child(1):child() then
|
|
||||||
-- print(vim.treesitter.get_node_text(node:child(1):child(), 0))
|
|
||||||
goto continue
|
|
||||||
end
|
|
||||||
|
|
||||||
if vim.treesitter.get_node_text(node:child(1):child(), 0) == func then
|
|
||||||
local def = ""
|
|
||||||
for i = 0, node:child_count() - 2 do
|
|
||||||
def = def..vim.treesitter.get_node_text(node:child(i), 0)
|
|
||||||
if i < node:child_count() - 2 then
|
|
||||||
def = def.." "
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- Print the function name using node text
|
|
||||||
return def:gsub("\n", "")
|
|
||||||
end
|
|
||||||
::continue::
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return nil
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
-- function snippet
|
-- function snippet
|
||||||
@ -82,19 +40,4 @@ return {
|
|||||||
i(0),
|
i(0),
|
||||||
t({ "", "}" })
|
t({ "", "}" })
|
||||||
}),
|
}),
|
||||||
|
|
||||||
-- create decleration based on existing c function
|
|
||||||
postfix(".d", {
|
|
||||||
f(function(_, parent)
|
|
||||||
local r = c_func(parent.snippet.env.POSTFIX_MATCH)
|
|
||||||
if not r then
|
|
||||||
return parent.snippet.env.POSTFIX_MATCH
|
|
||||||
end
|
|
||||||
local bidx, aidx = r:find(parent.snippet.env.POSTFIX_MATCH)
|
|
||||||
|
|
||||||
return r:sub(1, bidx - 1)..
|
|
||||||
parent.snippet.env.POSTFIX_MATCH..
|
|
||||||
r:sub(aidx + 1)..";"
|
|
||||||
end, {})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user