diff --git a/lua/artio/builtins.lua b/lua/artio/builtins.lua index f1451c0..3827ba5 100644 --- a/lua/artio/builtins.lua +++ b/lua/artio/builtins.lua @@ -58,8 +58,8 @@ builtins.files = function(props) extend({ prompt = "files", on_close = function(text, _) - vim.schedule(function() - vim.cmd.edit(text) + artio.schedule(function() + utils.edit(text) end) end, format_item = function(item) @@ -129,9 +129,10 @@ builtins.grep = function(props) end, fn = artio.sorter, on_close = function(item, _) - vim.schedule(function() - vim.cmd.edit(item[1]) - vim.api.nvim_win_set_cursor(0, { item[2], item[3] }) + artio.schedule(function() + local win = vim.api.nvim_get_current_win() + utils.edit(item[1], { win = win }) + vim.api.nvim_win_set_cursor(win, { item[2], item[3] }) end) end, preview_item = function(item) @@ -168,8 +169,8 @@ builtins.oldfiles = function(props) extend({ prompt = "oldfiles", on_close = function(text, _) - vim.schedule(function() - vim.cmd.edit(text) + artio.schedule(function() + utils.edit(text) end) end, get_icon = config.get().opts.use_icons and function(item) @@ -415,8 +416,8 @@ builtins.smart = function(props) end ), on_close = function(v, _) - vim.schedule(function() - vim.cmd.edit(v.path) + artio.schedule(function() + utils.edit(v.path) end) end, format_item = function(v) diff --git a/lua/artio/utils.lua b/lua/artio/utils.lua index 289487b..ab4f1ba 100644 --- a/lua/artio/utils.lua +++ b/lua/artio/utils.lua @@ -1,5 +1,23 @@ local utils = {} +---@param path string +---@param ctx? vim.context.mods +function utils.edit(path, ctx) + local f = function() + vim.api.nvim_cmd({ + cmd = "edit", + args = { path }, + magic = { file = false, bar = false }, + }, {}) + end + + if ctx then + return vim._with(ctx, f) + end + + return f() +end + local function cmd_callback(o) local src = o.stderr if o.code == 0 then