Add return statement for lua

At the moment, it only extracts return statements from direct children
of the function_definition
This commit is contained in:
Daniel Mathiot
2021-08-21 18:05:03 +02:00
parent ebeb5aa329
commit ec09985e9d
5 changed files with 18 additions and 19 deletions

View File

@@ -1,7 +0,0 @@
(function (parameters) @params)
(function_definition (parameters) @params)
(local_function (parameters) @params)
(function (return_statement) @return)
(function_definition (if_statement (return_statement) @return))
(local_function (return_statement) @return)

View File

@@ -1,7 +1,15 @@
local ok, ts_utils = pcall(require, "nvim-treesitter.ts_utils") local ok, ts_utils = pcall(require, "nvim-treesitter.ts_utils")
assert(ok, "neogen requires nvim-treesitter to operate :(") assert(ok, "neogen requires nvim-treesitter to operate :(")
neogen = { } neogen = {}
require("neogen.utility")
-- Require defaults
require("neogen.locators.default")
require("neogen.granulators.default")
require("neogen.generators.default")
neogen.auto_generate = function(custom_template) neogen.auto_generate = function(custom_template)
vim.treesitter.get_parser(0):for_each_tree(function(tree, language_tree) vim.treesitter.get_parser(0):for_each_tree(function(tree, language_tree)
@@ -48,16 +56,11 @@ neogen.setup = function(opts)
neogen.configuration = vim.tbl_deep_extend("keep", opts or {}, { neogen.configuration = vim.tbl_deep_extend("keep", opts or {}, {
-- DEFAULT CONFIGURATION -- DEFAULT CONFIGURATION
languages = { languages = {
lua = require('neogen.configurations.lua'), lua = require("neogen.configurations.lua"),
}, },
}) })
neogen.generate_command() neogen.generate_command()
end end
require('neogen.utility')
require('neogen.locators.default')
require('neogen.granulators.default')
require('neogen.generators.default')
return neogen return neogen

View File

@@ -2,7 +2,7 @@ local ts_utils = require("nvim-treesitter.ts_utils")
return { return {
-- Search for these nodes -- Search for these nodes
parent = { "function", "local_function", "local_variable_declaration", "field", "variable_declaration"}, parent = { "function", "local_function", "local_variable_declaration", "field", "variable_declaration" },
-- Traverse down these nodes and extract the information as necessary -- Traverse down these nodes and extract the information as necessary
data = { data = {
@@ -36,10 +36,12 @@ return {
[1] = "extract", [1] = "extract",
}, "spread")(node) }, "spread")(node)
local return_statement = neogen.utility:extract_children("return_statement")(node)
return { return {
parameters = regular_params, parameters = regular_params,
vararg = varargs, vararg = varargs,
return_statement = return_statement
} }
end, end,
}, },
@@ -47,7 +49,7 @@ return {
}, },
-- Custom lua locator that escapes from comments -- Custom lua locator that escapes from comments
locator = require('neogen.locators.lua'), locator = require("neogen.locators.lua"),
-- Use default granulator and generator -- Use default granulator and generator
granulator = nil, granulator = nil,
@@ -57,5 +59,6 @@ return {
{ nil, "- " }, { nil, "- " },
{ "parameters", "- @param %s any" }, { "parameters", "- @param %s any" },
{ "vararg", "- @vararg any" }, { "vararg", "- @vararg any" },
{ "return_statement", "- @return any" }
}, },
} }