From b2910ac2239620a1a5ebbcfe94ad4fd71a0139db Mon Sep 17 00:00:00 2001 From: DarthMooMancer <107283522+DarthMooMancer@users.noreply.github.com> Date: Fri, 14 Mar 2025 00:26:37 -0400 Subject: [PATCH] Update init.lua --- lua/Polydev/init.lua | 73 ++++++++++---------------------------------- 1 file changed, 16 insertions(+), 57 deletions(-) diff --git a/lua/Polydev/init.lua b/lua/Polydev/init.lua index 062142a..fb7b347 100644 --- a/lua/Polydev/init.lua +++ b/lua/Polydev/init.lua @@ -1,84 +1,43 @@ local M = {} M.loaded_languages = {} -M.language_configs = {} +M.java = require("Polydev.java") +M.c = require("Polydev.c") --- Load language module and apply its config function M.load_language_module(lang) - -- Check if the language module is already loaded - if M.loaded_languages[lang] then return true end + if M.loaded_languages[lang] then return true end -- Prevent redundant loading - -- Only attempt to load if it's a valid language (exclude non-programming filetypes) - local valid_languages = { "java", "c", "python", "go", "rust" } -- Add more languages as needed - local is_valid = false - for _, valid_lang in ipairs(valid_languages) do - if lang == valid_lang then - is_valid = true - break - end + local ok, lang_module = pcall(require, "Polydev." .. lang) + if ok and lang_module.setup then + lang_module.setup() + M.loaded_languages[lang] = lang_module + return true end - - -- If it's a valid language, attempt to load the module - if is_valid then - local ok, lang_module = pcall(require, "Polydev." .. lang) - if ok and lang_module.setup then - lang_module.setup() - M.loaded_languages[lang] = lang_module - return true - end - end - - -- If not a valid language or module not found, suppress the error return false 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 .. "", { 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 function M.create_project() vim.ui.input({ prompt = "Enter language for project: " }, function(lang) - if lang and M.load_language_module(lang) then - local lang_module = M.language_configs[lang] - if lang_module.create_project then - lang_module.create_project() - else - print("Error: No project creation method for " .. lang) - end + if not lang or lang == "" then return print("Project creation canceled.") end + + if M.load_language_module(lang) and M.loaded_languages[lang].create_project then + M.loaded_languages[lang].create_project() else - print("Project creation canceled or unsupported language.") + print("Error: No project creation method for " .. lang) end end) end --- Set up the plugin, including user commands and auto-detection +-- Auto-load language module based on file type function M.setup() vim.api.nvim_create_user_command("NewProject", M.create_project, {}) vim.keymap.set("n", "np", ":NewProject", { silent = true }) vim.api.nvim_create_autocmd("FileType", { pattern = "*", callback = function() - M.load_language_module(vim.bo.filetype) - M.apply_language_config(vim.bo.filetype) + local filetype = vim.bo.filetype + M.load_language_module(filetype) end, }) end