This commit is contained in:
parent
58e447aad6
commit
466698a9de
@ -170,29 +170,19 @@ function M.setup()
|
|||||||
local irange = Range.from_motion('i' .. from_c, { user_defined = true })
|
local irange = Range.from_motion('i' .. from_c, { user_defined = true })
|
||||||
if arange == nil or irange == nil then return end
|
if arange == nil or irange == nil then return end
|
||||||
|
|
||||||
local lrange = Range.new(arange.start, irange.start:must_next(-1))
|
local lrange, rrange = arange:difference(irange)
|
||||||
local rrange = Range.new(irange.stop:must_next(1), arange.stop)
|
if not lrange or not rrange then return end
|
||||||
|
|
||||||
rrange:replace(to.right)
|
rrange:replace(to.right)
|
||||||
lrange:replace(to.left)
|
lrange:replace(to.left)
|
||||||
else
|
else
|
||||||
-- replace `from.right` with `to.right`:
|
-- replace `from.right` with `to.right`:
|
||||||
local last_line = arange:line(-1):text()
|
local right_text = arange:sub(-1, -#from.right)
|
||||||
local from_right_match = last_line:match(vim.pesc(from.right) .. '$')
|
right_text:replace(to.right)
|
||||||
if from_right_match then
|
|
||||||
local match_start = arange.stop:clone()
|
|
||||||
match_start.col = match_start.col - #from_right_match + 1
|
|
||||||
Range.new(match_start, arange.stop):replace(to.right)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- replace `from.left` with `to.left`:
|
-- replace `from.left` with `to.left`:
|
||||||
local first_line = arange:line(1):text()
|
local left_text = arange:sub(1, #from.left)
|
||||||
local from_left_match = first_line:match('^' .. vim.pesc(from.left))
|
left_text:replace(to.left)
|
||||||
if from_left_match then
|
|
||||||
local match_end = arange.start:clone()
|
|
||||||
match_end.col = match_end.col + #from_left_match - 1
|
|
||||||
Range.new(arange.start, match_end):replace(to.left)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end, { noremap = true, silent = true })
|
end, { noremap = true, silent = true })
|
||||||
|
@ -5,17 +5,14 @@ local Renderer = require('u.renderer').Renderer
|
|||||||
--- @field bufnr number
|
--- @field bufnr number
|
||||||
--- @field private renderer u.Renderer
|
--- @field private renderer u.Renderer
|
||||||
local Buffer = {}
|
local Buffer = {}
|
||||||
|
Buffer.__index = Buffer
|
||||||
|
|
||||||
--- @param bufnr? number
|
--- @param bufnr? number
|
||||||
--- @return u.Buffer
|
--- @return u.Buffer
|
||||||
function Buffer.from_nr(bufnr)
|
function Buffer.from_nr(bufnr)
|
||||||
if bufnr == nil or bufnr == 0 then bufnr = vim.api.nvim_get_current_buf() end
|
if bufnr == nil or bufnr == 0 then bufnr = vim.api.nvim_get_current_buf() end
|
||||||
|
|
||||||
local renderer = Renderer.new(bufnr)
|
local renderer = Renderer.new(bufnr)
|
||||||
return setmetatable({
|
return setmetatable({ bufnr = bufnr, renderer = renderer }, Buffer)
|
||||||
bufnr = bufnr,
|
|
||||||
renderer = renderer,
|
|
||||||
}, { __index = Buffer })
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- @return u.Buffer
|
--- @return u.Buffer
|
||||||
|
@ -5,6 +5,7 @@ local Buffer = require 'u.buffer'
|
|||||||
--- @field indent_level number
|
--- @field indent_level number
|
||||||
--- @field indent_str string
|
--- @field indent_str string
|
||||||
local CodeWriter = {}
|
local CodeWriter = {}
|
||||||
|
CodeWriter.__index = CodeWriter
|
||||||
|
|
||||||
--- @param indent_level? number
|
--- @param indent_level? number
|
||||||
--- @param indent_str? string
|
--- @param indent_str? string
|
||||||
@ -18,7 +19,7 @@ function CodeWriter.new(indent_level, indent_str)
|
|||||||
indent_level = indent_level,
|
indent_level = indent_level,
|
||||||
indent_str = indent_str,
|
indent_str = indent_str,
|
||||||
}
|
}
|
||||||
setmetatable(cw, { __index = CodeWriter })
|
setmetatable(cw, CodeWriter)
|
||||||
return cw
|
return cw
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user