WIP
This commit is contained in:
parent
48d807a0a1
commit
b0fea0257b
@ -31,6 +31,33 @@ function Cursor:set_current()
|
|||||||
vim.fn.setcursorcharpos({self.row, self.col})
|
vim.fn.setcursorcharpos({self.row, self.col})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Cursor:forward()
|
||||||
|
assert(self:is_valid())
|
||||||
|
if self.col < #vim.fn.getline(self.row) then
|
||||||
|
self.col = self.col + 1
|
||||||
|
else
|
||||||
|
self.row = self.row + 1
|
||||||
|
self.col = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Cursor:backward()
|
||||||
|
assert(self:is_valid())
|
||||||
|
if self.col > 1 then
|
||||||
|
self.col = self.col - 1
|
||||||
|
elseif self.row > 1 then
|
||||||
|
self.row = self.row - 1
|
||||||
|
self.col = #vim.fn.getline(self.row)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Cursor:get_char()
|
||||||
|
assert(self:is_valid())
|
||||||
|
local line = vim.fn.getline(self.row)
|
||||||
|
assert(self.col <= #line)
|
||||||
|
return line:sub(self.col, self.col)
|
||||||
|
end
|
||||||
|
|
||||||
function Cursor.__eq(self, other)
|
function Cursor.__eq(self, other)
|
||||||
return self.row == other.row and self.col == other.col
|
return self.row == other.row and self.col == other.col
|
||||||
end
|
end
|
||||||
@ -385,9 +412,9 @@ function ParamList:parse()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function ParamList:get_active_param()
|
function ParamList:get_active_param()
|
||||||
for _, param in ipairs(self.parsed) do
|
for i, param in ipairs(self.parsed) do
|
||||||
if param.offset then
|
if param.offset then
|
||||||
return param
|
return i, param
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -621,20 +648,25 @@ function WrapContext:toggle()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function WrapContext:object_i()
|
function WrapContext:object_i()
|
||||||
local param = self.params:get_active_param()
|
local _, param = self.params:get_active_param()
|
||||||
if param then
|
if param then
|
||||||
param.start:set_current()
|
param.start:set_current()
|
||||||
|
vim.fn.searchpos('\\S', 'cW')
|
||||||
vim.cmd.normal('v')
|
vim.cmd.normal('v')
|
||||||
param.stop:set_current()
|
param.stop:set_current()
|
||||||
|
vim.fn.searchpos('\\S', 'cbW')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function WrapContext:object_a()
|
function WrapContext:object_a()
|
||||||
local param = self.params:get_active_param()
|
local _, param = self.params:get_active_param()
|
||||||
if param then
|
if param then
|
||||||
param.start:set_current()
|
param.start:set_current()
|
||||||
|
vim.fn.searchpos('\\S', 'cbW')
|
||||||
|
vim.fn.searchpos('[^\\<\\(\\{\\[]', 'cW')
|
||||||
vim.cmd.normal('v')
|
vim.cmd.normal('v')
|
||||||
param.stop:set_current()
|
param.stop:set_current()
|
||||||
|
vim.fn.searchpos('\\S', 'cW')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user