Run Synchronous And Asynchronous External Commands In Neovim With Lua
I need to write this up but here's the code in the mean time. It uses plenary which is a collection of helper functions. Installation instructions are on that page.)
Async
This is the one I usually want since it doesn't lock up the interface.
local asynchronous_command_example = function()
local Job = require 'plenary.job'
Job:new({
command = 'bash',
args = { '-c', 'sleep 3; echo ASYNC_COMPLETE'},
on_exit = function(job, return_val)
print(vim.inspect(job:result()))
end,
}):start()
end
This is the synchronous version that does lock up neovim while it's running.
local synchronous_command_example = function()
local Job = require 'plenary.job'
Job:new({
command = 'bash',
args = { '-c', 'sleep 3; echo SYNC_COMPLETE'},
on_exit = function(job, return_val)
print(vim.inspect(job:result()))
end,
}):sync()
end
References
-
https://github.com/nvim-lua/plenary.nvim
-
https://doriankarter.com/inspect-contents-of-lua-table-in-neovim/
-
An alternate way in post: 2nhsdbjkdvpq
~ fin ~