---@type LazySpec return { { "goolord/alpha-nvim", opts = function(_, opts) opts.section.header.val = { " .-=*##%%+=* **+@@%%#+-: ", " -%@@@@@@@%++--: ---++#@@@@@@@@+ ", " *@@@@@@@@@@@@@@@%- =%@@@@@@@@@@@@@@@* ", " .@@@@@@@@#@@@@@@@@#. .#@@@@@@@@#@@@@@@@@: ", " =@@@@@@%=-*@@@%%@@@- -@@@%%@@@*-=#@@@@@@* ", " %@@@@@%-+--*%+--*@@+ +@@*=-=%*--+=*@@@@@@. ", " -@@@@@@--*+-------+#* *%+-------=*--#@@@@@= ", " +@@@%=---++--------=- ==--------++----#@@@# ", " #@@------=+---------.=---------+=------@@% ", " #@--------+--------=---------+=-------%%. ", " +*----=+**#=------=--------#**++----+* ", " -#+-------==-----=------=+-------=#= ", " +%=------=+----------==-------## ", " -%+------=*---.:---+=------=@= ", " : :-----*-. .-*=----:. .. ", " ..:::::.-: .-.:::::.. ", " ", "██╗ ██╗██╗ ██╗██████╗ ██╗ ██╗███╗ ██╗██╗ ██╗██╗███╗ ███╗", "██║ ██╔╝██║ ██║██╔══██╗██║ ██║████╗ ██║██║ ██║██║████╗ ████║", "█████╔╝ ██║ ██║██████╔╝██║ ██║██╔██╗ ██║██║ ██║██║██╔████╔██║", "██╔═██╗ ██║ ██║██╔══██╗██║ ██║██║╚██╗██║╚██╗ ██╔╝██║██║╚██╔╝██║", "██║ ██╗╚██████╔╝██║ ██║╚██████╔╝██║ ╚████║ ╚████╔╝ ██║██║ ╚═╝ ██║", "╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═══╝ ╚═╝╚═╝ ╚═╝", } return opts end, }, { "L3MON4D3/LuaSnip", config = function(plugin, opts) require "astronvim.plugins.configs.luasnip"(plugin, opts) local luasnip = require "luasnip" luasnip.filetype_extend("javascript", { "javascriptreact" }) require("luasnip.loaders.from_lua").lazy_load() require("luasnip.loaders.from_vscode").lazy_load { paths = vim.fn.stdpath "config" .. "/lua/snippets", } require("luasnip.loaders.from_snipmate").lazy_load() end, }, { "windwp/nvim-autopairs", config = function(plugin, opts) require "astronvim.plugins.configs.nvim-autopairs"(plugin, opts) local npairs = require "nvim-autopairs" local Rule = require "nvim-autopairs.rule" local cond = require "nvim-autopairs.conds" npairs.add_rules( { Rule("$", "$", { "tex", "latex" }) -- don't add a pair if the next character is % :with_pair(cond.not_after_regex "%%") -- don't add a pair if the previous character is xxx :with_pair( cond.not_before_regex("xxx", 3) ) -- don't move right when repeat character :with_move(cond.none()) -- don't delete if the next character is xx :with_del(cond.not_after_regex "xx") -- disable adding a newline when you press :with_cr(cond.none()), }, -- disable for .vim files, but it work for another filetypes Rule("a", "a", "-vim") ) end, }, { "jay-babu/mason-nvim-dap.nvim", dependencies = { "nvim-dap" }, opts = function(_, opts) local venv_path = os.getenv "VIRTUAL_ENV" or os.getenv "CONDA_PREFIX" require "astronvim." opts.ensure_installed = require("astrocore").extend_tbl(opts.ensure_installed, { "python", "stylua", "delve", }) opts.handlers = { function(config) require("mason-nvim-dap").default_setup(config) end, python = function(config) config.adapters = { type = "executable", command = vim.fn.exepath "debugpy-adapter", } config.configurations = { { type = "python", request = "launch", name = "Python: Django", program = "${workspaceFolder}/manage.py", pythonPath = venv_path and (venv_path .. "/bin/python") or nil, console = "integratedTerminal", args = { "runserver", "--noreload", "--nothreading" }, django = true, justMyCode = false, }, { type = "python", request = "launch", name = "Python: Launch file", program = "${file}", pythonPath = venv_path and (venv_path .. "/bin/python") or nil, console = "integratedTerminal", }, { type = "python", request = "launch", name = "Python: Launch package", program = "${workspaceFolder}/main.py", pythonPath = venv_path and (venv_path .. "/bin/python") or nil, console = "integratedTerminal", }, } require("mason-nvim-dap").default_setup(config) -- don't forget this! end, } end, }, { "mattn/emmet-vim", lazy = false, }, { "vim-test/vim-test", }, { "nvim-neotest/neotest", dependencies = { "vim-test/vim-test", "nvim-lua/plenary.nvim", "nvim-treesitter/nvim-treesitter", "antoinemadec/FixCursorHold.nvim", "nvim-neotest/neotest-python", }, opts = function(_, opts) local venv_path = os.getenv "VIRTUAL_ENV" or os.getenv "CONDA_PREFIX" opts.adapters = { require "neotest-python" { dap = { justMyCode = false, program = "${workspaceFolder}/manage.py", python = venv_path and (venv_path .. "/bin/python") or nil, args = { "test" }, }, runner = "pytest", is_test_file = function(file_path) if file_path:match "tests.py" or file_path:match "test_.+.py$" or file_path:match "^.+_tests.py$" then return file_path end end, }, } end, keys = { { "", function() require("neotest").summary.toggle() end, desc = "Toggle test summary", }, }, }, { "folke/todo-comments.nvim", dependencies = { "nvim-lua/plenary.nvim" }, opts = function(_, opts) opts.keywords = { FIX = { icon = " ", -- icon used for the sign, and in search results color = "error", -- can be a hex color, or a named color (see below) alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords }, TODO = { icon = " ", color = "info" }, HACK = { icon = " ", color = "warning" }, WARN = { icon = " ", color = "warning", alt = { "XXX" } }, PERF = { icon = "󰑮 ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } }, NOTE = { icon = "󱝿 ", color = "hint", alt = { "NOTE" } }, TEST = { icon = "󰙨 ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } }, } opts.signs = true opts.sign_priority = 8 opts.merge_keywords = true opts.pattern = [[(KEYWORDS):]] return opts end, keys = { { "xt", "TodoTrouble", desc = "Todo (Trouble)" }, }, }, { "ralismark/nvim-tabletops", lazy = false }, { "sindrets/diffview.nvim", lazy = false }, { "theHamsta/nvim-dap-virtual-text" }, { "laytan/cloak.nvim", lazy = false, opts = { enabled = true, cloak_character = "🔐", highlight_group = "Comment", cloak_length = 1, try_all_patterns = true, patterns = { { file_pattern = ".env*", cloak_pattern = "=.+", replace = nil, }, }, }, }, { "Exafunction/codeium.vim", enabled=false, event = "BufEnter", config = function() vim.keymap.set("i", "", function() return vim.fn["codeium#Accept"]() end, { expr = true, silent = true }) vim.keymap.set( "i", "", function() return vim.fn["codeium#CycleCompletions"](1) end, { expr = true, silent = true } ) vim.keymap.set( "i", "", function() return vim.fn["codeium#CycleCompletions"](-1) end, { expr = true, silent = true } ) vim.keymap.set("i", "", function() return vim.fn["codeium#Clear"]() end, { expr = true, silent = true }) end, }, { "folke/trouble.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, opts = {}, }, { "mbbill/undotree", config = function() vim.keymap.set("n", "ku", vim.cmd.UndotreeToggle) end, } }