Improvements
This commit is contained in:
parent
3d60efb9f5
commit
3959c28d9f
@ -413,6 +413,23 @@ function WrapContext:parse()
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function WrapContext:update_builder_param(builder, param, opt)
|
||||||
|
local text = param.text
|
||||||
|
if #opt.line_prefix > 0 then
|
||||||
|
text = param.text:match('^%s*[' .. opt.line_prefix .. ']?(.*)')
|
||||||
|
end
|
||||||
|
|
||||||
|
local cursor = nil
|
||||||
|
if param:is_active() then
|
||||||
|
cursor = builder:get_offset()
|
||||||
|
cursor.row = cursor.row + self.range.start.row
|
||||||
|
cursor.col = cursor.col + param.offset - (#param.text - #text)
|
||||||
|
end
|
||||||
|
|
||||||
|
builder:update(text)
|
||||||
|
return cursor
|
||||||
|
end
|
||||||
|
|
||||||
function WrapContext:wrap(opt)
|
function WrapContext:wrap(opt)
|
||||||
local builder = Builder.new(self.indent_level, self.indent_block)
|
local builder = Builder.new(self.indent_level, self.indent_block)
|
||||||
builder:update(self.prefix)
|
builder:update(self.prefix)
|
||||||
@ -420,16 +437,6 @@ function WrapContext:wrap(opt)
|
|||||||
builder:indent()
|
builder:indent()
|
||||||
|
|
||||||
local cursor = nil
|
local cursor = nil
|
||||||
local update_param = function(param)
|
|
||||||
if param:is_active() then
|
|
||||||
cursor = builder:get_offset()
|
|
||||||
cursor.row = cursor.row + self.range.start.row
|
|
||||||
cursor.col = cursor.col + param.offset
|
|
||||||
end
|
|
||||||
|
|
||||||
builder:update(param.text)
|
|
||||||
end
|
|
||||||
|
|
||||||
for i, param in ipairs(self.params.parsed) do
|
for i, param in ipairs(self.params.parsed) do
|
||||||
local is_first_param = i == 1
|
local is_first_param = i == 1
|
||||||
local is_last_param = i == #self.params.parsed
|
local is_last_param = i == #self.params.parsed
|
||||||
@ -438,12 +445,14 @@ function WrapContext:wrap(opt)
|
|||||||
builder:update(opt.line_prefix)
|
builder:update(opt.line_prefix)
|
||||||
if not is_first_param then
|
if not is_first_param then
|
||||||
builder:update(', ')
|
builder:update(', ')
|
||||||
|
elseif opt.comma_prefix_indent and not is_last_param then
|
||||||
|
builder:update(' ')
|
||||||
end
|
end
|
||||||
|
|
||||||
update_param(param)
|
cursor = self:update_builder_param(builder, param, opt) or cursor
|
||||||
else
|
else
|
||||||
builder:update(opt.line_prefix)
|
builder:update(opt.line_prefix)
|
||||||
update_param(param)
|
cursor = self:update_builder_param(builder, param, opt) or cursor
|
||||||
|
|
||||||
if not is_last_param or opt.comma_last then
|
if not is_last_param or opt.comma_last then
|
||||||
builder:update(',')
|
builder:update(',')
|
||||||
@ -463,10 +472,9 @@ function WrapContext:wrap(opt)
|
|||||||
|
|
||||||
if opt.brace_last_wrap then
|
if opt.brace_last_wrap then
|
||||||
builder:update(self.suffix)
|
builder:update(self.suffix)
|
||||||
|
builder:flush()
|
||||||
end
|
end
|
||||||
|
|
||||||
builder:flush()
|
|
||||||
|
|
||||||
local row = self.range.start.row
|
local row = self.range.start.row
|
||||||
for i, line in ipairs(builder.lines) do
|
for i, line in ipairs(builder.lines) do
|
||||||
if i == 1 then
|
if i == 1 then
|
||||||
@ -493,18 +501,8 @@ function WrapContext:unwrap(opt)
|
|||||||
builder:update(padding)
|
builder:update(padding)
|
||||||
|
|
||||||
local cursor = nil
|
local cursor = nil
|
||||||
local update_param = function(param)
|
|
||||||
if param:is_active() then
|
|
||||||
cursor = builder:get_offset()
|
|
||||||
cursor.row = cursor.row + self.range.start.row
|
|
||||||
cursor.col = cursor.col + param.offset
|
|
||||||
end
|
|
||||||
|
|
||||||
builder:update(param.text)
|
|
||||||
end
|
|
||||||
|
|
||||||
for i, param in ipairs(self.params.parsed) do
|
for i, param in ipairs(self.params.parsed) do
|
||||||
update_param(param)
|
cursor = self:update_builder_param(builder, param, opt) or cursor
|
||||||
if i < #self.params.parsed then
|
if i < #self.params.parsed then
|
||||||
builder:update(', ')
|
builder:update(', ')
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user