Text objects
This commit is contained in:
parent
06113ccb2f
commit
8b29e84959
@ -52,16 +52,28 @@ local function inspect()
|
|||||||
local trace = range:hit_test(Cursor.get_current())
|
local trace = range:hit_test(Cursor.get_current())
|
||||||
if trace then
|
if trace then
|
||||||
dump(trace)
|
dump(trace)
|
||||||
else
|
|
||||||
print('No range trace!')
|
|
||||||
end
|
end
|
||||||
else
|
|
||||||
print('No range found!')
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function object(inner)
|
||||||
|
local range = Range.find_closest()
|
||||||
|
if not range then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local trace = range:hit_test(Cursor.get_current())
|
||||||
|
if not trace then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
table.remove(trace, #trace)
|
||||||
|
range:hit_search(trace, 1):select(inner)
|
||||||
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
inspect = inspect,
|
inspect = inspect,
|
||||||
|
object = object,
|
||||||
reflow = reflow,
|
reflow = reflow,
|
||||||
setup = Options.setup,
|
setup = Options.setup,
|
||||||
}
|
}
|
||||||
|
@ -33,12 +33,12 @@ function ParamCursorCell:is_after_cursor(cursor)
|
|||||||
return self.cursor > cursor
|
return self.cursor > cursor
|
||||||
end
|
end
|
||||||
|
|
||||||
function ParamCursorCell:get_start_row()
|
function ParamCursorCell:get_start_cursor()
|
||||||
return self.cursor.row
|
return self.cursor
|
||||||
end
|
end
|
||||||
|
|
||||||
function ParamCursorCell:get_stop_row()
|
function ParamCursorCell:get_stop_cursor()
|
||||||
return self.cursor.row
|
return self.cursor
|
||||||
end
|
end
|
||||||
|
|
||||||
function ParamCursorCell:is_empty()
|
function ParamCursorCell:is_empty()
|
||||||
@ -84,12 +84,12 @@ function ParamRangeCell:hit_search(trace, depth)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function ParamRangeCell:get_start_row()
|
function ParamRangeCell:get_start_cursor()
|
||||||
return self.range.start_cursor.row
|
return self.range.start_cursor
|
||||||
end
|
end
|
||||||
|
|
||||||
function ParamRangeCell:get_stop_row()
|
function ParamRangeCell:get_stop_cursor()
|
||||||
return self.range.stop_cursor.row
|
return self.range.stop_cursor
|
||||||
end
|
end
|
||||||
|
|
||||||
function ParamRangeCell:is_empty()
|
function ParamRangeCell:is_empty()
|
||||||
@ -191,15 +191,15 @@ function Param:get_next()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Param:get_start_row()
|
function Param:get_start_cursor()
|
||||||
if #self.cells > 0 then
|
if #self.cells > 0 then
|
||||||
return self.cells[1]:get_start_row()
|
return self.cells[1]:get_start_cursor()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Param:get_stop_row()
|
function Param:get_stop_cursor()
|
||||||
if #self.cells > 0 then
|
if #self.cells > 0 then
|
||||||
return self.cells[#self.cells]:get_stop_row()
|
return self.cells[#self.cells]:get_stop_cursor()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -226,7 +226,7 @@ function Param:is_contiguous()
|
|||||||
for i = start_index, stop_index - 1 do
|
for i = start_index, stop_index - 1 do
|
||||||
local cell = self.cells[i]
|
local cell = self.cells[i]
|
||||||
local next_cell = self.cells[i + 1]
|
local next_cell = self.cells[i + 1]
|
||||||
if cell:get_stop_row() ~= next_cell:get_start_row() then
|
if cell:get_stop_cursor().row ~= next_cell:get_start_cursor().row then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -237,9 +237,9 @@ end
|
|||||||
function Param:is_wrapped()
|
function Param:is_wrapped()
|
||||||
local previous_param = self:get_previous()
|
local previous_param = self:get_previous()
|
||||||
if previous_param then
|
if previous_param then
|
||||||
return previous_param:get_stop_row() ~= self:get_start_row()
|
return previous_param:get_stop_cursor().row ~= self:get_start_cursor().row
|
||||||
else
|
else
|
||||||
return self.range.start_cursor.row ~= self:get_start_row()
|
return self.range.start_cursor.row ~= self:get_start_cursor().row
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -247,4 +247,38 @@ function Param:is_empty()
|
|||||||
return self:get_start_index() == nil
|
return self:get_start_index() == nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function Param:select(inner)
|
||||||
|
if #self.cells == 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local start_cursor = nil
|
||||||
|
local stop_cursor = nil
|
||||||
|
|
||||||
|
if inner then
|
||||||
|
local start_index = self:get_start_index()
|
||||||
|
local stop_index = self:get_stop_index()
|
||||||
|
|
||||||
|
start_cursor = self.cells[start_index]:get_start_cursor()
|
||||||
|
stop_cursor = self.cells[stop_index]:get_stop_cursor()
|
||||||
|
else
|
||||||
|
start_cursor = self.cells[1]:get_start_cursor()
|
||||||
|
stop_cursor = self.cells[#self.cells]:get_stop_cursor()
|
||||||
|
|
||||||
|
local previous_param = self:get_previous()
|
||||||
|
if previous_param then
|
||||||
|
start_cursor = previous_param:get_stop_cursor():get_next()
|
||||||
|
else
|
||||||
|
local next_param = self:get_next()
|
||||||
|
if next_param then
|
||||||
|
stop_cursor = next_param:get_start_cursor():get_previous()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
start_cursor:set_current()
|
||||||
|
vim.cmd(string.format(':normal! v'))
|
||||||
|
stop_cursor:set_current()
|
||||||
|
end
|
||||||
|
|
||||||
return Param
|
return Param
|
||||||
|
@ -11,6 +11,16 @@ if not vim.g.argonaut_loaded then
|
|||||||
require('argonaut').inspect()
|
require('argonaut').inspect()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function argonaut_object_inner()
|
||||||
|
argonaut_reload()
|
||||||
|
require('argonaut').object(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function argonaut_object_outer()
|
||||||
|
argonaut_reload()
|
||||||
|
require('argonaut').object(false)
|
||||||
|
end
|
||||||
|
|
||||||
local function argonaut_reflow()
|
local function argonaut_reflow()
|
||||||
require('argonaut').reflow(false)
|
require('argonaut').reflow(false)
|
||||||
end
|
end
|
||||||
@ -20,6 +30,8 @@ if not vim.g.argonaut_loaded then
|
|||||||
end
|
end
|
||||||
|
|
||||||
vim.api.nvim_create_user_command('ArgonautInspect', argonaut_inspect, {})
|
vim.api.nvim_create_user_command('ArgonautInspect', argonaut_inspect, {})
|
||||||
|
vim.api.nvim_create_user_command('ArgonautObjectInner', argonaut_object_inner, {})
|
||||||
|
vim.api.nvim_create_user_command('ArgonautObjectOuter', argonaut_object_outer, {})
|
||||||
vim.api.nvim_create_user_command('ArgonautReflow', argonaut_reflow, {})
|
vim.api.nvim_create_user_command('ArgonautReflow', argonaut_reflow, {})
|
||||||
vim.api.nvim_create_user_command('ArgonautReload', argonaut_reload, {})
|
vim.api.nvim_create_user_command('ArgonautReload', argonaut_reload, {})
|
||||||
vim.api.nvim_create_user_command('ArgonautToggle', argonaut_toggle, {})
|
vim.api.nvim_create_user_command('ArgonautToggle', argonaut_toggle, {})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user