Make comment in after position more resilient
This commit is contained in:
@@ -2,7 +2,7 @@ local ts_utils = require("nvim-treesitter.ts_utils")
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
-- Search for these nodes
|
-- Search for these nodes
|
||||||
parent = { "function_definition" },
|
parent = { "function_definition", "class_definition" },
|
||||||
|
|
||||||
-- Traverse down these nodes and extract the information as necessary
|
-- Traverse down these nodes and extract the information as necessary
|
||||||
data = {
|
data = {
|
||||||
@@ -28,11 +28,11 @@ return {
|
|||||||
|
|
||||||
template = {
|
template = {
|
||||||
annotation_convention = "google_docstrings", -- required: Which annotation convention to use (default_generator)
|
annotation_convention = "google_docstrings", -- required: Which annotation convention to use (default_generator)
|
||||||
append = { position = "after", offset = 4 }, -- optional: where to append the text (default_generator)
|
append = { position = "after", child_number = 3 }, -- optional: where to append the text (default_generator)
|
||||||
use_default_comment = false, -- If you want to prefix the template with the default comment for the language (default_generator)
|
use_default_comment = false, -- If you want to prefix the template with the default comment for the language (default_generator)
|
||||||
google_docstrings = {
|
google_docstrings = {
|
||||||
{ nil, '"""' },
|
{ nil, '"""' },
|
||||||
{ "parameters", "\t%s: ", { before_first_item = "Args: " } },
|
{ "parameters", "\t%s: ", { before_first_item = "Args: " } }, -- FIXME when no parameter is set
|
||||||
{ nil, '"""' },
|
{ nil, '"""' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,17 +8,16 @@ local ts_utils = require("nvim-treesitter.ts_utils")
|
|||||||
--- @return table { line, content }, with line being the line to append the content
|
--- @return table { line, content }, with line being the line to append the content
|
||||||
neogen.default_generator = function(parent, data, template)
|
neogen.default_generator = function(parent, data, template)
|
||||||
local start_row, start_column, end_row, end_column = ts_utils.get_node_range(parent)
|
local start_row, start_column, end_row, end_column = ts_utils.get_node_range(parent)
|
||||||
P(ts_utils.get_node_range(parent))
|
|
||||||
local commentstring, generated_template = vim.trim(vim.api.nvim_buf_get_option(0, "commentstring"):format(""))
|
local commentstring, generated_template = vim.trim(vim.api.nvim_buf_get_option(0, "commentstring"):format(""))
|
||||||
|
|
||||||
local row_to_place = start_row
|
local row_to_place = start_row
|
||||||
local col_to_place = start_column
|
local col_to_place = start_column
|
||||||
|
|
||||||
local append = template.append or {}
|
local append = template.append or {}
|
||||||
|
|
||||||
if append.position == "after" then
|
if append.position == "after" then
|
||||||
row_to_place = end_row - 1
|
local append_at_child = parent:child(append.child_number + 1)
|
||||||
-- Add the offset if there's one
|
row_to_place, col_to_place, _ , _ = append_at_child:range()
|
||||||
col_to_place = start_column + (append.offset or 0)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if not template or not template.annotation_convention then
|
if not template or not template.annotation_convention then
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ neogen.utility = {
|
|||||||
local result = {}
|
local result = {}
|
||||||
local split = vim.split(name, "|", true)
|
local split = vim.split(name, "|", true)
|
||||||
|
|
||||||
|
|
||||||
for child in node:iter_children() do
|
for child in node:iter_children() do
|
||||||
if vim.tbl_contains(split, child:type()) then
|
if vim.tbl_contains(split, child:type()) then
|
||||||
table.insert(result, ts_utils.get_node_text(child)[1])
|
table.insert(result, ts_utils.get_node_text(child)[1])
|
||||||
@@ -34,13 +35,13 @@ neogen.utility = {
|
|||||||
return function(node)
|
return function(node)
|
||||||
local result = {}
|
local result = {}
|
||||||
|
|
||||||
for i, subtree in ipairs(tree) do
|
for i, subtree in pairs(tree) do
|
||||||
local child_node = node:named_child(i - 1)
|
local child_node = node:named_child(tonumber(i) - 1)
|
||||||
|
|
||||||
if subtree == "extract" then
|
if subtree == "extract" then
|
||||||
return self:extract_children(name)(child_node)
|
return self:extract_children(name)(child_node)
|
||||||
else
|
else
|
||||||
return self:extract_children_from(subtree, name)(node)
|
return self:extract_children_from(subtree, name)(child_node)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user