Add walkup for now

This commit is contained in:
DarthMooMancer
2025-05-11 15:38:57 -04:00
parent 734b60f145
commit acb859f9e5
5 changed files with 42 additions and 23 deletions
+2 -2
View File
@@ -82,13 +82,13 @@ keybinds = {
-- c --
keybinds = {
["<leader>pr"] = "CRun",
["<leader>nh"] = "NewCHeaderFile",
["<leader>pb"] = "NewCHeaderFile",
}
-- cpp --
keybinds = {
["<leader>pr"] = "CppRun",
["<leader>nh"] = "NewCppHeaderFile",
["<leader>pb"] = "NewCppHeaderFile",
}
```
+2 -5
View File
@@ -19,7 +19,6 @@ M.defaults = {
java = {
project_root = "~/Projects/Java",
keybinds = {
["<leader>pb"] = "JavaBuild",
["<leader>pr"] = "JavaRun",
},
},
@@ -39,18 +38,16 @@ M.defaults = {
c = {
project_root = "~/Projects/C",
keybinds = {
["<leader>pb"] = "CBuild",
["<leader>pr"] = "CRun",
["<leader>nh"] = "NewCHeaderFile",
["<leader>pb"] = "NewCHeaderFile",
},
build_attributes = "",
},
cpp = {
project_root = "~/Projects/Cpp",
keybinds = {
["<leader>pb"] = "CppBuild",
["<leader>pr"] = "CppRun",
["<leader>nh"] = "NewCppHeaderFile",
["<leader>pb"] = "NewCppHeaderFile",
},
build_attributes = "",
},
+3 -14
View File
@@ -1,20 +1,9 @@
local M = {}
local loaded_languages = {}
local function load_language_module(lang, opts)
if loaded_languages[lang] then return true end
local ok, mod = pcall(require, "Polydev.languages." .. lang)
if not ok or type(mod.setup) ~= "function" then return false end
mod.setup(opts and opts[lang] or {})
loaded_languages[lang] = mod
return true
end
function M.setup(opts)
local opts = opts or {}
local config = require("Polydev.configs")
local ui = require("Polydev.ui")
config.setup(opts)
require("Polydev.utils").setup(opts)
for lang, user_opts in pairs(opts) do
@@ -22,7 +11,7 @@ function M.setup(opts)
config.user_config[lang] = vim.tbl_deep_extend("force", default, user_opts)
end
vim.api.nvim_create_user_command("PolydevOpen", require("Polydev.ui").open_project_manager, {})
vim.api.nvim_create_user_command("PolydevOpen", ui.open_project_manager, {})
local keys = vim.tbl_deep_extend("force", {}, config.get("globals").keybinds, opts or {})
for key, command in pairs(keys) do
@@ -34,7 +23,7 @@ function M.setup(opts)
pattern = "*",
callback = function()
local filetype = vim.bo.filetype
load_language_module(filetype, opts)
ui.load_language_module(filetype, opts)
end,
})
end
+14 -2
View File
@@ -50,6 +50,18 @@ local function fuzzy_filter(list, query)
return result
end
local loaded_languages = {}
function M.load_language_module(lang, opts)
if loaded_languages[lang] then return true end
local ok, mod = pcall(require, "Polydev.languages." .. lang)
if not ok or type(mod.setup) ~= "function" then return false end
mod.setup(opts and opts[lang] or {})
loaded_languages[lang] = mod
return true
end
function M.open_project_manager()
local templates = require("Polydev.templates")
local Popup = require("nui.popup")
@@ -277,7 +289,7 @@ function M.open_project_manager()
vim.ui.input({ prompt = "Enter language for new file: " }, function(lang)
if not lang or lang == "" then return print("File creation canceled.") end
if load_language_module(lang) and templates.files[lang] and templates.files[lang].run then
if M.load_language_module(lang) and templates.files[lang] and templates.files[lang].run then
vim.ui.input({ prompt = "Enter file name: " }, function(file_name)
if not file_name or file_name == "" then return print("File creation canceled.") end
popup:unmount()
@@ -297,7 +309,7 @@ function M.open_project_manager()
vim.ui.input({ prompt = "Enter language for project: " }, function(lang)
if not lang or lang == "" then return print("Project creation canceled.") end
opts = vim.tbl_deep_extend("force", {}, require("Polydev.configs").get(lang), opts or {})
if load_language_module(lang) and templates.projects[lang] and templates.projects[lang].run then
if M.load_language_module(lang) and templates.projects[lang] and templates.projects[lang].run then
popup:unmount()
vim.schedule(function()
templates.create_project(lang, opts.project_root)
Executable
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
# Start from the current directory
DIR="$(pwd)"
# Walk up until we find a marker or reach root
while [[ ! -f "$DIR/CMakeLists.txt" && \
! -f "$DIR/package.json" && \
! -d "$DIR/.git" && \
"$DIR" != "/" ]]; do
DIR="$(dirname "$DIR")"
done
# Check if root was reached without finding anything
if [[ "$DIR" == "/" ]]; then
echo "❌ Project root not found."
exit 1
fi
echo "✅ Project root found at: $DIR"