feat: Add compile function to detect project type and run build command
This commit is contained in:
parent
5c3ab3c9ae
commit
73e528266c
1 changed files with 40 additions and 1 deletions
|
|
@ -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 {
|
return {
|
||||||
compile,
|
compile,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue