local M = {} M.user_config = {} ---@param user_opts table function M.setup(user_opts) user_opts = user_opts or {} local project_root = (user_opts.globals and user_opts.globals.project_root) or "~/personal/Projects" local defaults = { rust = { project_root = project_root .. "/Rust", keybinds = { ["pr"] = "RustRun", }, }, javascript = { project_root = project_root .. "/Javascript", keybinds = { ["pr"] = "JavascriptRun", }, }, java = { project_root = project_root .. "/Java", keybinds = { ["pr"] = "JavaRun", }, }, lua = { project_root = project_root .. "/Lua", keybinds = { ["pr"] = "LuaRun", }, }, c = { project_root = project_root .. "/C", keybinds = { ["pr"] = "CRun", }, }, cpp = { project_root = project_root .. "/CPP", keybinds = { ["pr"] = "CppRun", }, }, python = { project_root = project_root .. "/Python", keybinds = { ["pr"] = "PythonRun", ["pb"] = "PythonPip", }, }, html = { project_root = project_root .. "/Html", }, globals = { project_root = project_root, keybinds = { ["po"] = "PolydevOpen", }, }, terminal = { mode = "split", win = { type = "horizontal", anchor = "bottom", size = "20" }, border = { enabled = true, type = "rounded", }, }, } M.user_config = vim.tbl_deep_extend("force", defaults, user_opts) end ---@param lang string ---@return table function M.get(lang) return M.user_config[lang] or {} end return M