From 70b97cca4da338b83e3b7e50c72e583aa4f2cf91 Mon Sep 17 00:00:00 2001 From: DarthMooMancer <107283522+DarthMooMancer@users.noreply.github.com> Date: Fri, 14 Mar 2025 00:17:08 -0400 Subject: [PATCH] Update init.lua --- lua/Polydev/init.lua | 70 ++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 26 deletions(-) diff --git a/lua/Polydev/init.lua b/lua/Polydev/init.lua index d9ff8a0..5da44f6 100644 --- a/lua/Polydev/init.lua +++ b/lua/Polydev/init.lua @@ -1,49 +1,67 @@ local M = {} -M.loaded_languages = {} -M.java = require("Polydev.java") -M.c = require("Polydev.c") +M.language_configs = {} --- Load language module dynamically +-- Load language module and apply its config 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 + lang_module.setup() + M.language_configs[lang] = lang_module.config or {} -- Store the configuration + return true + end + return false +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 +-- 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 - print("Error: Unsupported language '" .. lang .. "'") - return false + 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 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("Error: No project creation method for " .. lang) - end + 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 + else + print("Project creation canceled or unsupported language.") + end end) end --- Auto-load language module based on file type +-- Set up the plugin, including user commands and auto-detection 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() - local filetype = vim.bo.filetype - M.load_language_module(filetype) - end, + pattern = "*", + callback = function() + M.load_language_module(vim.bo.filetype) + M.apply_language_config(vim.bo.filetype) + end, }) end return M -