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