local cmp = require "cmp" local plugins = { { "folke/neodev.nvim", opts = {} }, { "nvim-telescope/telescope.nvim", config = function() require("telescope").load_extension "git_worktree" end, }, { "hudclark/grpc-nvim", dependencies = "nvim-lua/plenary.nvim", }, { "ThePrimeagen/git-worktree.nvim", }, { "folke/noice.nvim", event = "VeryLazy", opts = { lsp = { -- override markdown rendering so that **cmp** and other plugins use **Treesitter** override = { ["vim.lsp.util.convert_input_to_markdown_lines"] = true, ["vim.lsp.util.stylize_markdown"] = true, ["cmp.entry.get_documentation"] = true, }, }, -- you can enable a preset for easier configuration presets = { bottom_search = true, -- use a classic bottom cmdline for search command_palette = true, -- position the cmdline and popupmenu together long_message_to_split = true, -- long messages will be sent to a split inc_rename = false, -- enables an input dialog for inc-rename.nvim lsp_doc_border = false, -- add a border to hover docs and signature help }, messages = { enabled = false, }, }, config = function(_, opts) require("noice").setup(opts) end, dependencies = { -- if you lazy-load any plugin below, make sure to add proper `module="..."` entries "MunifTanjim/nui.nvim", -- OPTIONAL: -- `nvim-notify` is only needed, if you want to use the notification view. -- If not available, we use `mini` as the fallback "rcarriga/nvim-notify", }, }, { "folke/trouble.nvim", opts = {}, cmd = "Trouble", }, { "williamboman/mason.nvim", opts = { ensure_installed = { "rust-analyzer", "typescript-language-server", "prettier", "js-debug-adapter", "terraform-ls", "gopls", "pyright", "mypy", "ruff", "black", "lua-language-server", "nil", "phpactor", }, }, }, { "neovim/nvim-lspconfig", config = function() require "plugins.configs.lspconfig" require "custom.configs.lspconfig" end, }, { "github/copilot.vim", lazy = false, }, { "rust-lang/rust.vim", ft = "rust", init = function() vim.g.rustfmt_autosave = 1 end, }, { "simrat39/rust-tools.nvim", ft = "rust", dependencies = { "neovim/nvim-lspconfig", "nvim-lua/plenary.nvim" }, opts = function() local lspconfig = require "plugins.configs.lspconfig" return { server = { tools = { hover_actions = { auto_focus = true, }, }, on_attach = lspconfig.on_attach, capabilities = lspconfig.capabilities, }, } end, }, { "kdheepak/lazygit.nvim", lazy = false, dependencies = { "nvim-lua/plenary.nvim", }, }, { "crnvl96/lazydocker.nvim", opts = {}, -- automatically calls `require("lazydocker").setup()` dependencies = { "MunifTanjim/nui.nvim", }, }, { "saecki/crates.nvim", event = { "BufRead Cargo.toml" }, config = function(_, opts) local crates = require "crates" crates.setup(opts) cmp.setup.buffer { sources = { { name = "crates" } }, } crates.show() require("core.utils").load_mappings "crates" end, }, { "hrsh7th/nvim-cmp", opts = function() local M = require "plugins.configs.cmp" M.completion.completeopt = "menu,menuone,noselect" M.mapping[""] = cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Insert, select = false, } table.insert(M.sources, { name = "crates" }) return M end, }, { "mhartington/formatter.nvim", event = "VeryLazy", opts = function() return require "custom.configs.formatter" end, }, { "laytan/cloak.nvim", lazy = false, config = function() require("cloak").setup { enabled = true, cloak_character = "*", -- The applied highlight group (colors) on the cloaking, see `:h highlight`. highlight_group = "Comment", patterns = { { -- Match any file starting with ".env". -- This can be a table to match multiple file patterns. file_pattern = { ".env*", "wrangler.toml", ".dev.vars", }, -- Match an equals sign and any character after it. -- This can also be a table of patterns to cloak, -- example: cloak_pattern = { ":.+", "-.+" } for yaml files. cloak_pattern = "=.+", }, }, } end, }, { "yetone/avante.nvim", -- if you want to build from source then do `make BUILD_FROM_SOURCE=true` -- ⚠️ must add this setting! ! ! build = vim.fn.has "win32" ~= 0 and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" or "make", event = "VeryLazy", version = false, -- Never set this value to "*"! Never! ---@module 'avante' opts = { -- add any opts here -- this file can contain specific instructions for your project instructions_file = "avante.md", -- for example provider = "claude", providers = { claude = { endpoint = "https://api.anthropic.com", model = "claude-sonnet-4-20250514", timeout = 30000, -- Timeout in milliseconds extra_request_body = { temperature = 0.75, max_tokens = 20480, }, }, moonshot = { endpoint = "https://api.moonshot.ai/v1", model = "kimi-k2-0711-preview", timeout = 30000, -- Timeout in milliseconds extra_request_body = { temperature = 0.75, max_tokens = 32768, }, }, }, }, dependencies = { "nvim-lua/plenary.nvim", "MunifTanjim/nui.nvim", --- The below dependencies are optional, "nvim-mini/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" }, }, }, }, } return plugins