From b48b6b7afd6f20e09e7c1ea6fe3fd8b46e90a921 Mon Sep 17 00:00:00 2001 From: Aaron Pham Date: Wed, 4 Sep 2024 00:21:41 -0400 Subject: [PATCH] chore(build): streaming stdout (#511) Signed-off-by: Aaron Pham --- lua/avante/api.lua | 21 ++++++++++++++++++--- lua/avante/init.lua | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lua/avante/api.lua b/lua/avante/api.lua index 3eae50e..a130aab 100644 --- a/lua/avante/api.lua +++ b/lua/avante/api.lua @@ -66,9 +66,24 @@ M.build = function(opts) error("Unsupported operating system: " .. os_name, 2) end - local job = vim.system(cmd, { text = true }):wait() - - return vim.tbl_contains({ 0 }, job.code) and true or false + ---@type integer + local code + vim.system(cmd, { + text = true, + stdout = function(_, data) + if data then vim.schedule(function() vim.api.nvim_echo({ { data, "Normal" } }, false, {}) end) end + end, + stderr = function(err, _) + if err then vim.schedule(function() vim.api.nvim_echo({ { err, "ErrorMsg" } }, false, {}) end) end + end, + }, function(obj) + if vim.tbl_contains({ 0 }, obj.code) then + code = obj.code + else + vim.api.nvim_echo({ { "Build failed with exit code: " .. obj.code, "ErrorMsg" } }, false, {}) + end + end) + return code end ---@param question? string diff --git a/lua/avante/init.lua b/lua/avante/init.lua index f5df8fe..86cd4ff 100644 --- a/lua/avante/init.lua +++ b/lua/avante/init.lua @@ -73,6 +73,7 @@ H.keymaps = function() vim.keymap.set({ "n", "v" }, "(AvanteAsk)", function() require("avante.api").ask() end, { noremap = true }) vim.keymap.set("v", "(AvanteEdit)", function() require("avante.api").edit() end, { noremap = true }) vim.keymap.set("n", "(AvanteRefresh)", function() require("avante.api").refresh() end, { noremap = true }) + vim.keymap.set("n", "(AvanteBuild)", function() require("avante.api").build() end, { noremap = true }) vim.keymap.set("n", "(AvanteToggle)", function() M.toggle() end, { noremap = true }) vim.keymap.set("n", "(AvanteToggleDebug)", function() M.toggle.debug() end) vim.keymap.set("n", "(AvanteToggleHint)", function() M.toggle.hint() end)