fixed c/c++ build and run with error handling

This commit is contained in:
DarthMooMancer
2025-05-12 14:18:39 -04:00
parent e935cad8b7
commit 75b43d31c9
2 changed files with 19 additions and 11 deletions
+9 -5
View File
@@ -11,19 +11,23 @@ end
function M.run() function M.run()
local root = utils.get_project_root() local root = utils.get_project_root()
local build_dir = root .. "/build"
local cmd = { "cd " .. root, "build", " && cmake --build ." } local cmd = "cd " .. build_dir .. " && cmake --build ."
local output = vim.fn.system(table.concat(cmd, "/")) local output = vim.fn.system(cmd)
local success = vim.v.shell_error == 0
if not vim.v.shell_error == 0 then if not success then
local term_buf = utils.terminal(cmd) local term_buf = utils.terminal(cmd)
vim.api.nvim_buf_set_option(term_buf, "modifiable", true) vim.api.nvim_buf_set_option(term_buf, "modifiable", true)
vim.api.nvim_buf_set_lines(term_buf, 0, -1, false, vim.api.nvim_buf_set_lines(term_buf, 0, -1, false,
vim.list_extend({ "Error during compilation:" }, vim.split(output, "\n", { trimempty = true })) vim.list_extend({ "Error during compilation:" }, vim.split(output, "\n", { trimempty = true }))
) )
vim.api.nvim_buf_set_option(term_buf, "modifiable", false) vim.api.nvim_buf_set_option(term_buf, "modifiable", false)
else end
utils.terminal({ "cd " .. root, "build" .. " && .", utils.get_project_name() }) if success then
local run_cmd = "cd " .. build_dir .. " && ./" .. utils.get_project_name()
utils.terminal({ run_cmd })
end end
end end
+10 -6
View File
@@ -11,19 +11,23 @@ end
function M.run() function M.run()
local root = utils.get_project_root() local root = utils.get_project_root()
local build_dir = root .. "/build"
local cmd = { "cd " .. root, "build && cmake --build ." } local cmd = "cd " .. build_dir .. " && cmake --build ."
local output = vim.fn.system(table.concat(cmd, "/")) local output = vim.fn.system(cmd)
local success = vim.v.shell_error == 0
if not vim.v.shell_error == 0 then if not success then
local term_buf = utils.terminal(cmd) local term_buf = utils.terminal({ cmd })
vim.api.nvim_buf_set_option(term_buf, "modifiable", true) vim.api.nvim_buf_set_option(term_buf, "modifiable", true)
vim.api.nvim_buf_set_lines(term_buf, 0, -1, false, vim.api.nvim_buf_set_lines(term_buf, 0, -1, false,
vim.list_extend({ "Error during compilation:" }, vim.split(output, "\n", { trimempty = true })) vim.list_extend({ "Error during compilation:" }, vim.split(output, "\n", { trimempty = true }))
) )
vim.api.nvim_buf_set_option(term_buf, "modifiable", false) vim.api.nvim_buf_set_option(term_buf, "modifiable", false)
else end
utils.terminal({ "cd " .. root, "build" .. " && .", utils.get_project_name() }) if success then
local run_cmd = "cd " .. build_dir .. " && ./" .. utils.get_project_name()
utils.terminal({ run_cmd })
end end
end end