Update init.lua

This commit is contained in:
DarthMooMancer
2025-03-14 00:17:08 -04:00
parent 655cf1afa2
commit 70b97cca4d
+37 -19
View File
@@ -1,49 +1,67 @@
local M = {} local M = {}
M.loaded_languages = {} M.language_configs = {}
M.java = require("Polydev.java")
M.c = require("Polydev.c")
-- Load language module dynamically -- Load language module and apply its config
function M.load_language_module(lang) function M.load_language_module(lang)
if M.loaded_languages[lang] then return true end -- Prevent redundant loading local lang_module = require("Polydev." .. lang)
if lang_module then
local ok, lang_module = pcall(require, "Polydev." .. lang)
if ok and lang_module.setup then
lang_module.setup() lang_module.setup()
M.loaded_languages[lang] = lang_module M.language_configs[lang] = lang_module.config or {} -- Store the configuration
return true return true
end end
print("Error: Unsupported language '" .. lang .. "'")
return false return false
end end
-- Apply the configuration for the specified language
function M.apply_language_config(lang)
local config = M.language_configs[lang]
if not config then return end
-- Apply keybindings and terminal settings
for key, command in pairs(config.keybinds or {}) do
vim.keymap.set("n", key, ":" .. command .. "<CR>", { silent = true })
end
if config.project_root then vim.env.PROJECT_ROOT = config.project_root end
if config.terminal then M.apply_terminal_config(config.terminal) end
end
-- Apply terminal-specific settings
function M.apply_terminal_config(terminal_config)
vim.o.termguicolors = true
if terminal_config.number ~= nil then vim.o.number = terminal_config.number end
if terminal_config.relativenumber ~= nil then vim.o.relativenumber = terminal_config.relativenumber end
if terminal_config.scroll ~= nil then vim.o.scrolloff = terminal_config.scroll and 5 or 0 end
end
-- Create a new project by specifying a language -- Create a new project by specifying a language
function M.create_project() function M.create_project()
vim.ui.input({ prompt = "Enter language for project: " }, function(lang) vim.ui.input({ prompt = "Enter language for project: " }, function(lang)
if not lang or lang == "" then return print("Project creation canceled.") end if lang and M.load_language_module(lang) then
local lang_module = M.language_configs[lang]
if M.load_language_module(lang) and M.loaded_languages[lang].create_project then if lang_module.create_project then
M.loaded_languages[lang].create_project() lang_module.create_project()
else else
print("Error: No project creation method for " .. lang) print("Error: No project creation method for " .. lang)
end end
else
print("Project creation canceled or unsupported language.")
end
end) end)
end end
-- Auto-load language module based on file type -- Set up the plugin, including user commands and auto-detection
function M.setup() function M.setup()
vim.api.nvim_create_user_command("NewProject", M.create_project, {}) vim.api.nvim_create_user_command("NewProject", M.create_project, {})
vim.keymap.set("n", "<leader>np", ":NewProject<CR>", { silent = true }) vim.keymap.set("n", "<leader>np", ":NewProject<CR>", { silent = true })
vim.api.nvim_create_autocmd("FileType", { vim.api.nvim_create_autocmd("FileType", {
pattern = "*", pattern = "*",
callback = function() callback = function()
local filetype = vim.bo.filetype M.load_language_module(vim.bo.filetype)
M.load_language_module(filetype) M.apply_language_config(vim.bo.filetype)
end, end,
}) })
end end
return M return M