From 710c9fad4e9f22d67550bc979642e515f79e594e Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sat, 4 May 2024 11:35:22 -0700 Subject: [PATCH] WIP on argument selection --- lua/argonaut/init.lua | 16 ++++++++++++++++ lua/argonaut/types.lua | 30 ++++++++++++++++++++++++++++++ plugin/argonaut.lua | 12 ++++++++++++ 3 files changed, 58 insertions(+) diff --git a/lua/argonaut/init.lua b/lua/argonaut/init.lua index cf1c62a..e978773 100644 --- a/lua/argonaut/init.lua +++ b/lua/argonaut/init.lua @@ -8,7 +8,23 @@ local function reflow() end end +local function object_a() + local wrap_context = types.WrapContext.new(config.get()) + if wrap_context:parse() then + wrap_context:object_a() + end +end + +local function object_i() + local wrap_context = types.WrapContext.new(config.get()) + if wrap_context:parse() then + wrap_context:object_i() + end +end + return { reflow = reflow, setup = config.setup, + object_a = object_a, + object_i = object_i, } diff --git a/lua/argonaut/types.lua b/lua/argonaut/types.lua index de2a5db..3be41e1 100644 --- a/lua/argonaut/types.lua +++ b/lua/argonaut/types.lua @@ -396,6 +396,14 @@ function ParamList:parse() end end +function ParamList:get_active_param() + for _, param in ipairs(self.parsed) do + if param.offset then + return param + end + end +end + -- -- Builder -- @@ -624,6 +632,28 @@ function WrapContext:toggle() end end +function WrapContext:object_i() + local param = self.params:get_active_param() + if param then + param.start:set_current() + vim.cmd.normal('v') + param.stop:set_current() + end +end + +function WrapContext:object_a() + local param = self.params:get_active_param() + if param then + param.start:set_current() + vim.cmd.normal('v') + if param.terminator then + param.terminator:set_current() + else + param.stop:set_current() + end + end +end + return { WrapContext = WrapContext, } diff --git a/plugin/argonaut.lua b/plugin/argonaut.lua index 7296da9..71c6d06 100644 --- a/plugin/argonaut.lua +++ b/plugin/argonaut.lua @@ -11,8 +11,20 @@ if not vim.g.argonaut then require('argonaut').reflow() end + local function argonaut_object_a() + argonaut_reload() + require('argonaut').object_a() + end + + local function argonaut_object_i() + argonaut_reload() + require('argonaut').object_i() + end + vim.api.nvim_create_user_command('ArgonautReload', argonaut_reload, {}) vim.api.nvim_create_user_command('ArgonautReflow', argonaut_reflow, {}) + vim.api.nvim_create_user_command('ArgonautObjectA', argonaut_object_a, {}) + vim.api.nvim_create_user_command('ArgonautObjectI', argonaut_object_i, {}) vim.g.argonaut = true end