From 73e528266c0a7787806cfe82c670c8d89e550e55 Mon Sep 17 00:00:00 2001 From: "Dennis (aider)" Date: Fri, 7 Mar 2025 13:07:23 +0100 Subject: [PATCH] feat: Add compile function to detect project type and run build command --- home/modules/nvim/config/lua/dnsc/compile.lua | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/home/modules/nvim/config/lua/dnsc/compile.lua b/home/modules/nvim/config/lua/dnsc/compile.lua index 76069e6..6b6e2ab 100644 --- a/home/modules/nvim/config/lua/dnsc/compile.lua +++ b/home/modules/nvim/config/lua/dnsc/compile.lua @@ -1,4 +1,43 @@ -local function compile() end +-- Map of file markers to their compile commands +local project_types = { + ["main.odin"] = "odin build . -file", + ["package.json"] = "npm run build", + ["go.mod"] = "go build ./...", + ["Cargo.toml"] = "cargo build", + ["CMakeLists.txt"] = "cmake --build build", + ["Makefile"] = "make", +} + +local function find_project_type() + -- Search for known project markers in the current directory + for marker, _ in pairs(project_types) do + -- Use vim.fn.glob() to check if file exists in current directory + if vim.fn.glob(marker) ~= "" then + return marker + end + end + return nil +end + +local function compile() + local marker = find_project_type() + + if not marker then + vim.notify("No recognized project type found", vim.log.levels.WARN) + return + end + + local cmd = project_types[marker] + + -- Create a new terminal buffer and run the command + vim.cmd("botright new") -- Create new window at bottom + vim.cmd("terminal " .. cmd) + + -- Enter normal mode and hide the buffer number + vim.cmd("setlocal nonumber") + vim.cmd("setlocal norelativenumber") + vim.cmd("startinsert") +end return { compile,