Add ts/js property and type declaration support (#204)
This commit is contained in:
@@ -32,6 +32,10 @@ return {
|
|||||||
class = { "function_declaration", "expression_statement", "variable_declaration", "class_declaration" },
|
class = { "function_declaration", "expression_statement", "variable_declaration", "class_declaration" },
|
||||||
file = { "program" },
|
file = { "program" },
|
||||||
type = { "variable_declaration", "lexical_declaration" },
|
type = { "variable_declaration", "lexical_declaration" },
|
||||||
|
property = {
|
||||||
|
"property_signature",
|
||||||
|
"property_identifier",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
@@ -101,6 +105,15 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
property = {
|
||||||
|
["property_signature|property_identifier"] = {
|
||||||
|
["0"] = {
|
||||||
|
extract = function()
|
||||||
|
return {}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
type = {
|
type = {
|
||||||
["variable_declaration|lexical_declaration"] = {
|
["variable_declaration|lexical_declaration"] = {
|
||||||
["0"] = {
|
["0"] = {
|
||||||
@@ -112,5 +125,32 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
template = template:add_default_annotation("jsdoc"),
|
locator = require("neogen.locators.typescript"),
|
||||||
|
|
||||||
|
template = template
|
||||||
|
:config({
|
||||||
|
append = { position = "after", child_name = "comment", fallback = "block", disabled = { "file" } },
|
||||||
|
position = function(node, type)
|
||||||
|
if vim.tbl_contains({ "func", "class" }, type) then
|
||||||
|
local parent = node:parent()
|
||||||
|
|
||||||
|
-- Verify if the parent is an export_statement (prevents offset of generated annotation)
|
||||||
|
if parent and parent:type() == "export_statement" then
|
||||||
|
local row, col = vim.treesitter.get_node_range(parent)
|
||||||
|
return row, col
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if vim.tbl_contains({ "property" }, type) then
|
||||||
|
local parent = node:parent()
|
||||||
|
|
||||||
|
if parent and vim.tbl_contains({ "public_field_definition" }, parent:type()) then
|
||||||
|
local row, col = vim.treesitter.get_node_range(parent)
|
||||||
|
return row, col
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
:add_default_annotation("jsdoc"),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,6 +85,15 @@ return {
|
|||||||
},
|
},
|
||||||
type = { "variable_declaration", "lexical_declaration" },
|
type = { "variable_declaration", "lexical_declaration" },
|
||||||
file = { "program" },
|
file = { "program" },
|
||||||
|
property = {
|
||||||
|
"property_signature",
|
||||||
|
"property_identifier",
|
||||||
|
},
|
||||||
|
declaration = {
|
||||||
|
"type_alias_declaration",
|
||||||
|
"interface_declaration",
|
||||||
|
"enum_declaration",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
@@ -173,6 +182,24 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
property = {
|
||||||
|
["property_signature|property_identifier"] = {
|
||||||
|
["0"] = {
|
||||||
|
extract = function()
|
||||||
|
return {}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
declaration = {
|
||||||
|
["type_alias_declaration|interface_declaration|enum_declaration"] = {
|
||||||
|
["0"] = {
|
||||||
|
extract = function()
|
||||||
|
return {}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
locator = require("neogen.locators.typescript"),
|
locator = require("neogen.locators.typescript"),
|
||||||
@@ -181,7 +208,7 @@ return {
|
|||||||
:config({
|
:config({
|
||||||
append = { position = "after", child_name = "comment", fallback = "block", disabled = { "file" } },
|
append = { position = "after", child_name = "comment", fallback = "block", disabled = { "file" } },
|
||||||
position = function(node, type)
|
position = function(node, type)
|
||||||
if vim.tbl_contains({ "func", "class" }, type) then
|
if vim.tbl_contains({ "func", "class", "declaration" }, type) then
|
||||||
local parent = node:parent()
|
local parent = node:parent()
|
||||||
|
|
||||||
-- Verify if the parent is an export_statement (prevents offset of generated annotation)
|
-- Verify if the parent is an export_statement (prevents offset of generated annotation)
|
||||||
@@ -191,6 +218,15 @@ return {
|
|||||||
end
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
if vim.tbl_contains({ "property" }, type) then
|
||||||
|
local parent = node:parent()
|
||||||
|
|
||||||
|
if parent and vim.tbl_contains({ "public_field_definition" }, parent:type()) then
|
||||||
|
local row, col = vim.treesitter.get_node_range(parent)
|
||||||
|
return row, col
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
:add_default_annotation("jsdoc")
|
:add_default_annotation("jsdoc")
|
||||||
|
|||||||
@@ -13,5 +13,12 @@ return function(node_info, nodes_to_match)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if found_node and vim.tbl_contains({ "property_identifier" }, found_node:type()) then
|
||||||
|
local parent = found_node:parent()
|
||||||
|
if parent and parent:type() == "method_definition" then
|
||||||
|
return parent
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return found_node
|
return found_node
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -18,4 +18,8 @@ return {
|
|||||||
},
|
},
|
||||||
{ i.Return, " * @returns {$1} - $1", { type = { "func" } } },
|
{ i.Return, " * @returns {$1} - $1", { type = { "func" } } },
|
||||||
{ nil, " */", { type = { "class", "func" } } },
|
{ nil, " */", { type = { "class", "func" } } },
|
||||||
|
|
||||||
|
{ nil, "/**", { no_results = true, type = { "property" } } },
|
||||||
|
{ nil, " * $1", { no_results = true, type = { "property" } } },
|
||||||
|
{ nil, " */", { no_results = true, type = { "property" } } },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,4 +19,8 @@ return {
|
|||||||
},
|
},
|
||||||
{ i.Return, " * @returns $1", { type = { "func" } } },
|
{ i.Return, " * @returns $1", { type = { "func" } } },
|
||||||
{ nil, " */", { type = { "class", "func" } } },
|
{ nil, " */", { type = { "class", "func" } } },
|
||||||
|
|
||||||
|
{ nil, "/**", { no_results = true, type = { "property", "declaration" } } },
|
||||||
|
{ nil, " * $1", { no_results = true, type = { "property", "declaration" } } },
|
||||||
|
{ nil, " */", { no_results = true, type = { "property", "declaration" } } },
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user