36 lines
966 B
Lua
36 lines
966 B
Lua
local job_id, job_buffer
|
|
|
|
local function job_exit(jobId, exit_code, _)
|
|
job_id = nil
|
|
echo("Job done")
|
|
end
|
|
|
|
local function has_buffer()
|
|
return job_buffer and vim.fn.buflisted(job_buffer) == 1
|
|
end
|
|
|
|
function save_all_and_build()
|
|
if job_id then
|
|
echo ("Job processing")
|
|
return
|
|
end
|
|
|
|
local opts = {}
|
|
vim.api.nvim_exec('wa', opts)
|
|
|
|
if not has_buffer() then
|
|
job_buffer = vim.api.nvim_create_buf(true, true)
|
|
end
|
|
local job_window = vim.fn.bufwinnr(job_buffer)
|
|
if job_window ~= -1 then
|
|
vim.cmd(job_window .. ' wincmd w')
|
|
else
|
|
vim.cmd('buffer ' .. job_buffer)
|
|
end
|
|
vim.api.nvim_buf_set_option(job_buffer, 'filetype', 'build')
|
|
vim.api.nvim_buf_set_option(job_buffer, 'modified', false)
|
|
-- TODO: if I want to get fancy I can set a build string per language.
|
|
job_id = vim.fn.termopen("zig build", {on_exit = job_exit})
|
|
vim.api.nvim_buf_set_name(job_buffer, '[build]')
|
|
end
|