Run An External Process Every Time You Save A File In Neovim
[] thing here
[] another thing
lua
vim.api.nvim_create_autocmd("BufWritePost", {
group = vim.api.nvim_create_augroup("DoTheThingGroup", { clear = true }),
callback = function()
vim.fn.jobstart(
{"bash", "-c", "sleep 2 && echo Hello"},
{
stdout_buffered = true,
on_stdout = function(_, data)
if data then
print(data)
end
end
}
)
end,
})
lua
-- NOTE: This is the original code that uses
-- plenary. Trying it above with the built-in
-- jobstart. If that works, this will be removed
local do_the_thing = function()
local Job = require 'plenary.job'
Job:new({
command = 'bash',
args = { '-c', 'echo "Doing The Thing"'},
on_exit = function(job, return_val)
print(vim.inspect(job:result()))
end,
}):start()
end
- This uses ` BufWritePost [TODO: Code shorthand span ] to pickup when files are saved and then runs whatever is in the callback
- I tried ` callback = do _ the _ thing() [TODO: Code shorthand span ] directly but it didn't work without the wrapper ` function() ` lua `
- This runs the command asycn and prints the response when it finishes
- There's no error handling in this example, that would depend on the response in ` on _ exit ` lua `
- TBD on accessing STDERR from on _ exit