local overrides = require "custom.configs.overrides" ---@type NvPluginSpec[] local plugins = { -- Override plugin definition options { "nvimtools/none-ls.nvim", lazy = false, config = function() require "custom.configs.none-ls" end, }, { "neovim/nvim-lspconfig", dependencies = "nvimtools/none-ls.nvim", config = function() require "plugins.configs.lspconfig" require "custom.configs.lspconfig" end, -- Override to setup mason-lspconfig }, -- override plugin configs { "NvChad/nvterm", opts = function() return require "custom.configs.nvterm" end, }, { "williamboman/mason.nvim", opts = vim.tbl_deep_extend("force", overrides.mason, { ensure_installed = { "rust-analyzer", "gopls", }, }), }, -- { -- "nvim-treesitter/nvim-treesitter", -- opts = overrides.treesitter, -- }, { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", dependencies = { "nvim-treesitter/nvim-treesitter-textobjects" }, }, { "nvim-tree/nvim-tree.lua", opts = overrides.nvimtree, }, -- Install a plugin { "max397574/better-escape.nvim", event = "InsertEnter", config = function() require("better_escape").setup() end, }, { "elixir-tools/elixir-tools.nvim", version = "*", event = { "BufReadPre", "BufNewFile" }, config = function() local elixir = require "elixir" local elixirls = require "elixir.elixirls" elixir.setup { nextls = { enable = true }, credo = {}, elixirls = { enable = true, settings = elixirls.settings { dialyzerEnabled = false, enableTestLenses = false, }, on_attach = function(client, bufnr) vim.keymap.set("n", "fp", ":ElixirFromPipe", { buffer = true, noremap = true }) vim.keymap.set("n", "tp", ":ElixirToPipe", { buffer = true, noremap = true }) vim.keymap.set("v", "em", ":ElixirExpandMacro", { buffer = true, noremap = true }) end, }, } end, dependencies = { "nvim-lua/plenary.nvim", }, }, { "rust-lang/rust.vim", ft = "rust", init = function() vim.g.rustfmt_autosave = 1 end, }, { "mrcjkb/rustaceanvim", version = "^3", ft = { "rust" }, -- dependencies = "neovim/nvim-lspconfig", -- opts = function() -- return require "custom.configs.rust-tools" -- end, -- config = function(, opts) -- require('rust-tools').setup(opts) -- end }, -- { -- "mfussenegger/nvim-dap", -- }, { "saecki/crates.nvim", dependencies = "hrsh7th/nvim-cmp", ft = { "rust", "toml" }, config = function(_, opts) local crates = require "crates" crates.setup(opts) crates.show() end, }, { "hrsh7th/nvim-cmp", opts = function() local M = require "plugins.configs.cmp" table.insert(M.sources, { name = "cartes" }) return M end, }, { "nvim-treesitter/nvim-treesitter-context", lazy = false, opts = { max_lines = 6 }, }, { "tpope/vim-surround", lazy = false }, { "famiu/bufdelete.nvim", lazy = false }, { "fladson/vim-kitty", ft = { "kitty" } }, -- { "tpope/vim-fugitive", lazy = false }, { "lewis6991/gitsigns.nvim", config = function(_, opts) require("gitsigns").setup(opts) end, }, { "lukas-reineke/indent-blankline.nvim", enabled = false, }, { "rouge8/neotest-rust" }, { "jfpedroza/neotest-elixir" }, { "lewis6991/fileline.nvim", lazy = false }, { "nvim-neotest/neotest", lazy = false, dependencies = { "nvim-neotest/nvim-nio", "nvim-lua/plenary.nvim", "antoinemadec/FixCursorHold.nvim", "nvim-treesitter/nvim-treesitter", }, config = function() require("neotest").setup { adapters = { require "neotest-rust", require "neotest-elixir" { -- -- The Mix task to use to run the tests -- -- Can be a function to return a dynamic value. -- -- Default: "test" -- mix_task = { "my_custom_task" }, -- -- Other formatters to pass to the test command as the formatters are overridden -- -- Can be a function to return a dynamic value. -- -- Default: {"ExUnit.CLIFormatter"} -- extra_formatters = { "ExUnit.CLIFormatter", "ExUnitNotifier" }, -- -- Extra test block identifiers -- -- Can be a function to return a dynamic value. -- -- Block identifiers "test", "feature" and "property" are always supported by default. -- -- Default: {} -- extra_block_identifiers = { "test_with_mock" }, -- -- Extra arguments to pass to mix test -- -- Can be a function that receives the position, to return a dynamic value -- -- Default: {} -- args = { "--trace" }, -- -- Command wrapper -- -- Must be a function that receives the mix command as a table, to return a dynamic value -- -- Default: function(cmd) return cmd end -- post_process_command = function(cmd) -- return vim.tbl_flatten { { "env", "FOO=bar" }, cmd } -- end, -- -- Delays writes so that results are updated at most every given milliseconds -- -- Decreasing this number improves snappiness at the cost of performance -- -- Can be a function to return a dynamic value. -- -- Default: 1000 -- write_delay = 1000, }, }, } end, }, { "ray-x/go.nvim", dependencies = { -- optional packages "ray-x/guihua.lua", "neovim/nvim-lspconfig", "nvim-treesitter/nvim-treesitter", }, config = function() require("go").setup() end, event = { "CmdlineEnter" }, ft = { "go", "gomod" }, build = ':lua require("go.install").update_all_sync()', -- if you need to install/update all binaries }, { "stevearc/conform.nvim", config = function() require("conform").setup { formatters_by_ft = { lua = { "stylua" }, -- Conform will run multiple formatters sequentially python = { "isort", "black" }, -- You can customize some of the format options for the filetype (:help conform.format) rust = { "rustfmt", lsp_format = "fallback" }, -- Conform will run the first available formatter javascript = { "prettierd", "prettier", stop_after_first = true }, go = { { "gofmt" } }, }, } end, }, -- { -- "olimorris/codecompanion.nvim", -- lazy = false, -- dependencies = { -- "nvim-lua/plenary.nvim", -- "nvim-treesitter/nvim-treesitter", -- }, -- opts = function() -- return require "custom.configs.codecompanion" -- end, -- config = function(_, opts) -- require("codecompanion").setup(opts) -- end, -- }, -- { "yetone/avante.nvim", event = "VeryLazy", version = false, -- Never set this value to "*"! Never! ---@module 'avante' ---@type avante.Config opts = { -- add any opts here -- for example provider = "ollama", providers = { ollama = { endpoint = "http://axiom.bell:11434", -- model = "devstral:24b", model = "qwen2.5-coder:32b", }, }, behavior = { -- auto_apply_diff_after_generation = true } }, -- if you want to build from source then do `make BUILD_FROM_SOURCE=true` build = "make", -- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-lua/plenary.nvim", "MunifTanjim/nui.nvim", --- The below dependencies are optional, "echasnovski/mini.pick", -- for file_selector provider mini.pick "nvim-telescope/telescope.nvim", -- for file_selector provider telescope "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions "ibhagwan/fzf-lua", -- for file_selector provider fzf "stevearc/dressing.nvim", -- for input provider dressing "folke/snacks.nvim", -- for input provider snacks "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons -- "zbirenbaum/copilot.lua", -- for providers='copilot' { -- support for image pasting "HakonHarnes/img-clip.nvim", event = "VeryLazy", opts = { -- recommended settings default = { embed_image_as_base64 = false, prompt_for_file_name = false, drag_and_drop = { insert_mode = true, }, -- required for Windows users use_absolute_path = true, }, }, }, { -- Make sure to set this up properly if you have lazy=true 'MeanderingProgrammer/render-markdown.nvim', opts = { file_types = { "markdown", "Avante" }, }, ft = { "markdown", "Avante" }, }, }, } -- { -- "rouge8/neotest-rust", -- config = function() end, -- }, -- -- { -- "jfpedroza/neotest-elixir", -- config = function() end, -- }, -- To make a plugin not be loaded -- { -- "NvChad/nvim-colorizer.lua", -- enabled = false -- }, -- All NvChad plugins are lazy-loaded by default -- For a plugin to be loaded, you will need to set either `ft`, `cmd`, `keys`, `event`, or set `lazy = false` -- If you want a plugin to load on startup, add `lazy = false` to a plugin spec, for example -- { -- "mg979/vim-visual-multi", -- lazy = false, -- } } return plugins