diff --git a/lazy-lock.json b/lazy-lock.json index 04cecec..68078e2 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -33,12 +33,15 @@ "nvim-dap": { "branch": "master", "commit": "7367cec8e8f7a0b1e4566af9a7ef5959d11206a7" }, "nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" }, "nvim-highlight-colors": { "branch": "main", "commit": "e0c4a58ec8c3ca7c92d3ee4eb3bc1dd0f7be317e" }, + "nvim-lsp-file-operations": { "branch": "master", "commit": "9744b738183a5adca0f916527922078a965515ed" }, "nvim-lspconfig": { "branch": "master", "commit": "fa2662510d30b06168b6e2e6915518decde6bbac" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" }, "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, + "nvim-vtsls": { "branch": "main", "commit": "0b5f73c9e50ce95842ea07bb3f05c7d66d87d14a" }, "nvim-window-picker": { "branch": "main", "commit": "6382540b2ae5de6c793d4aa2e3fe6dbb518505ec" }, + "package-info.nvim": { "branch": "master", "commit": "a1de9eb91fa52ab8361f0c05032673670a3d10ff" }, "pendulum-nvim": { "branch": "main", "commit": "c129ae3d69f164b3e51e067b0eca45a8d3da29ee" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "resession.nvim": { "branch": "master", "commit": "cc819b0489938d03e4f3532a583354f0287c015b" }, @@ -46,6 +49,7 @@ "snacks.nvim": { "branch": "main", "commit": "da230e3ca8146da4b73752daaf0a1d07d343c12d" }, "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, + "tsc.nvim": { "branch": "main", "commit": "8c1b4ec6a48d038a79ced8674cb15e7db6dd8ef0" }, "vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" }, "which-key.nvim": { "branch": "main", "commit": "fcbf4eea17cb299c02557d576f0d568878e354a4" } } diff --git a/lua/community.lua b/lua/community.lua index fc5585f..abe2963 100644 --- a/lua/community.lua +++ b/lua/community.lua @@ -60,14 +60,22 @@ local function get_ai_modules() return nil end ----@type LazySpec -return { +---@type LazySpec[] +local modules = { -- Base AstroCommunity plugin "AstroNvim/astrocommunity", - - -- Framework-specific modules - unpack(get_framework_modules()), - - -- AI modules if enabled - get_ai_modules(), } + +-- Add framework-specific modules +local framework_modules = get_framework_modules() +for _, module in ipairs(framework_modules) do + table.insert(modules, module) +end + +-- Add AI modules if enabled +local ai_module = get_ai_modules() +if ai_module then + table.insert(modules, ai_module) +end + +return modules diff --git a/lua/plugins/mason/init.lua b/lua/plugins/mason/init.lua deleted file mode 100644 index ad4a5ab..0000000 --- a/lua/plugins/mason/init.lua +++ /dev/null @@ -1,47 +0,0 @@ --- Mason plugin configuration for automatic tool installation --- Dynamically installs tools based on the FRAMEWORK environment variable - --- Framework-specific tool configurations -local FRAMEWORK_TOOLS = { - python = { - "black", - "python-lsp-server", - "mypy", - "pylint", - "flake8", - "pylama", - "bandit", - "pydocstyle", - "pyproject-flake8", - "pyproject-fmt", - "reorder-python-imports", - }, - vue = { - "eslint-lsp", - "stylelint-lsp", - "tailwindcss-language-server", - "typescript-language-server", - "vue-language-server", - "stylelint", - "prettier", - } -} - ---- Retrieves the appropriate tool set based on the current framework environment ---- @return table List of tools to install for the detected framework -local function get_framework_tools() - local current_framework = os.getenv("FRAMEWORK") - return FRAMEWORK_TOOLS[current_framework] or {} -end - ----@type LazySpec -return { - -- Mason tool installer for automatic package management - { - "WhoIsSethDaniel/mason-tool-installer.nvim", - opts = { - -- Install tools based on the detected framework - ensure_installed = get_framework_tools(), - }, - }, -} diff --git a/lua/polish.lua b/lua/polish.lua index 642719f..1fe0947 100644 --- a/lua/polish.lua +++ b/lua/polish.lua @@ -1,5 +1,76 @@ -if true then return end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE - -- This will run last in the setup process. -- This is just pure lua so anything that doesn't -- fit in the normal config locations above can go here + +-- Framework-specific tool configurations +local FRAMEWORK_TOOLS = { + python = { + "black", + "python-lsp-server", + "mypy", + "pylint", + "flake8", + "pylama", + "bandit", + "pydocstyle", + "pyproject-flake8", + "pyproject-fmt", + "reorder-python-imports", + }, + vue = { + "eslint-lsp", + "stylelint-lsp", + "tailwindcss-language-server", + "typescript-language-server", + "stylelint", + "prettier", + }, +} + +--- Retrieves the appropriate tool set based on the current framework environment +--- @return table List of tools to install for the detected framework +local function get_framework_tools() + local current_framework = os.getenv "FRAMEWORK" + print("[DEBUG] Current FRAMEWORK environment variable: " .. tostring(current_framework)) + + if current_framework then + print("[DEBUG] Available frameworks: " .. vim.inspect(vim.tbl_keys(FRAMEWORK_TOOLS))) + local tools = FRAMEWORK_TOOLS[current_framework] + print("[DEBUG] Tools for framework '" .. current_framework .. "': " .. vim.inspect(tools)) + return tools or {} + else + print "[DEBUG] No FRAMEWORK environment variable set, returning empty list" + return {} + end +end + +-- Функция для установки списка пакетов Mason +function InstallMyMasonPackages() + print "[DEBUG] Starting InstallMyMasonPackages function" + local packages = get_framework_tools() + print("[DEBUG] Packages to install: " .. vim.inspect(packages)) + + if #packages > 0 then + -- Install packages one by one to handle individual failures + for _, package in ipairs(packages) do + print("[DEBUG] Installing package: " .. package) + local success, result = pcall(function() vim.cmd("MasonInstall " .. package) end) + + if not success then + print("[WARNING] Failed to install " .. package .. ": " .. tostring(result)) + else + print("[DEBUG] Successfully installed " .. package) + end + end + print "[DEBUG] MasonInstall process completed" + else + print "[DEBUG] No packages to install, skipping MasonInstall" + end +end + +-- Создание пользовательской команды +vim.api.nvim_create_user_command( + "MasonInstallR", -- Имя команды + InstallMyMasonPackages, -- Вызываемая функция + { nargs = 0 } -- Команда не принимает аргументов +)