From 75777065458a81e9705325e7f7106a95cba05c04 Mon Sep 17 00:00:00 2001 From: Ade Attwood Date: Sat, 23 Jul 2022 20:17:31 +0100 Subject: [PATCH] refactor: implement the `origin` api This will allow you to get the buffer the user was on when they invoked an ivy command. This buffer is called the `origin` and you can access it with `vim.ivy.origin()`. --- lua/ivy/controller.lua | 6 +++++- lua/ivy/window.lua | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lua/ivy/controller.lua b/lua/ivy/controller.lua index b1dd66f..f6dba23 100644 --- a/lua/ivy/controller.lua +++ b/lua/ivy/controller.lua @@ -37,7 +37,7 @@ controller.complete = function() end controller.checkpoint = function() - vim.api.nvim_set_current_win(window.previous) + vim.api.nvim_set_current_win(window.origin) controller.callback(window.get_current_selection()) vim.api.nvim_set_current_win(window.window) end @@ -52,6 +52,10 @@ controller.previous = function() window.update() end +controller.origin = function() + return vim.api.nvim_win_get_buf(window.origin) +end + controller.destroy = function() controller.items = nil controller.callback = nil diff --git a/lua/ivy/window.lua b/lua/ivy/window.lua index 0a33f65..7b14308 100644 --- a/lua/ivy/window.lua +++ b/lua/ivy/window.lua @@ -38,7 +38,7 @@ end local window = {} window.index = 0 -window.previous = nil +window.origin = nil window.window = nil window.buffer = nil @@ -47,7 +47,7 @@ window.initialize = function() end window.make_buffer = function() - window.previous = vim.api.nvim_get_current_win() + window.origin = vim.api.nvim_get_current_win() vim.api.nvim_command "botright split new" window.buffer = vim.api.nvim_win_get_buf(0) @@ -135,7 +135,7 @@ window.destroy = function() window.buffer = nil window.window = nil - window.previous = nil + window.origin = nil window.index = 0 end