summaryrefslogtreecommitdiff
path: root/lua/aotrix/compile.lua
diff options
context:
space:
mode:
authorAotrix <[email protected]>2026-04-17 01:10:09 +0200
committerAotrix <[email protected]>2026-04-17 01:10:09 +0200
commit6efa65f6e6f84f65bdebd96698821b7f98056f8c (patch)
tree80a57d3ee7e1bdd172bff18423f4ca982e2dd3e9 /lua/aotrix/compile.lua
parent1602167e8c1638b2431cc6ad30caf90cab3773f0 (diff)
Add build command input
Diffstat (limited to 'lua/aotrix/compile.lua')
-rw-r--r--lua/aotrix/compile.lua124
1 files changed, 0 insertions, 124 deletions
diff --git a/lua/aotrix/compile.lua b/lua/aotrix/compile.lua
deleted file mode 100644
index e7c9556..0000000
--- a/lua/aotrix/compile.lua
+++ /dev/null
@@ -1,124 +0,0 @@
-local build_dir
-
----Generates a table with available targets
----
----@return table
----@nodiscard
-function tableOfTargets()
- -- Ugly way to retrieve targets, but it works
- -- Do not hesitate to change the command
- local command = "cmake --build " .. build_dir ..
- " -t help|sed 1d|grep -v -e " .. [["]] ..
- "all\\|clean\\|depend\\|edit_cache\\|rebuild_cache" ..
- [["]] .. " -e " .. [["]] .. "\\.\\{3\\} .*\\..*$" ..
- [["]] .. "|sed " .. [["]] .. "s/\\.\\.\\. //" .. [["]]
- local generatorExecutable = io.popen(command):lines()
- local choiceTable = {}
- for line in generatorExecutable do table.insert(choiceTable, line) end
- return choiceTable
-end
-
----Displays a menu to let the user choose a target to compile
----
----@return nil
-function chooseTarget(pCallbackFunction)
- vim.ui.select(tableOfTargets(), {
- prompt = 'Choose target:',
- format_item = function(item) return item end
- }, pCallbackFunction)
-end
-
----@return nil
-function createFloatingWindow()
- local max_height = vim.api.nvim_win_get_height(0)
- local max_width = vim.api.nvim_win_get_width(0)
- local window_height = math.floor(max_height / 2)
- local window_width = math.floor(max_width / 2)
- local window_buffer = vim.api.nvim_create_buf(false, true)
- vim.api.nvim_open_win(window_buffer, true, {
- border = "rounded",
- style = "minimal",
- relative = "editor",
- noautocmd = true,
- height = window_height,
- width = window_width,
- col = math.floor((max_width - window_width) / 2),
- row = math.floor((max_height - window_height) / 2)
- })
- return window_buffer
-end
-
----@return nil
-function createFloatingTerminal()
- createFloatingWindow()
- vim.cmd.term()
- vim.cmd.startinsert()
-end
-
----@param command string
----@return nil
-function executeCommandInTerminal(command)
- local channel = vim.bo.channel
- -- 'clear' is used to hide the command
- local exit_message = "\nPress enter to exit..."
- vim.api.nvim_chan_send(channel,
- "clear && " .. command .. "; echo '" .. exit_message ..
- "' && read -s && exit" .. "\n")
-end
-
----@return nil
-function defineBuildFolderPath()
- -- TODO: One might not want a directory called "build"
- build_dir = "build"
-end
-
----Compiles a target
----
----@return nil
-function compileTarget()
- function compile(pTarget)
- if not (pTarget == nil) and string.len(pTarget) > 0 then
- createFloatingTerminal()
- local commandTable = {
- "cmake --build " .. build_dir .. " --target " .. pTarget
- }
- local commandConcatenation = ""
- for i, command in ipairs(commandTable) do
- commandConcatenation = commandConcatenation .. command
- if i < #commandTable then
- commandConcatenation = commandConcatenation .. " && "
- end
- end
- executeCommandInTerminal(commandConcatenation)
- end
- end
-
- defineBuildFolderPath()
- chooseTarget(compile)
-end
-
-function compileAndExecuteTarget()
- function compileAndExecute(pTarget)
- if not (pTarget == nil) and string.len(pTarget) > 0 then
- createFloatingTerminal()
- local commandTable = {
- "cmake --build " .. build_dir .. " --target " .. pTarget,
- build_dir .. "/" .. pTarget
- }
- local commandConcatenation = ""
- for i, command in ipairs(commandTable) do
- commandConcatenation = commandConcatenation .. command
- if i < #commandTable then
- commandConcatenation = commandConcatenation .. " && "
- end
- end
- executeCommandInTerminal(commandConcatenation)
- end
- end
-
- defineBuildFolderPath()
- chooseTarget(compileAndExecute)
-end
-
-vim.keymap.set("n", "mc", compileTarget)
-vim.keymap.set("n", "mt", compileAndExecuteTarget)