local cmp = require("cmp") local overrides = require("custom.configs.overrides") local plugins = { { "NvChad/nvcommunity", { import = "nvcommunity.git.diffview" }, { import = "nvcommunity.git.lazygit" }, { import = "nvcommunity.lsp.prettyhover" }, }, -- LSP, formatter, linter { "neovim/nvim-lspconfig", config = function() require("plugins.configs.lspconfig") require("custom.configs.lspconfig") end, }, { "jay-babu/mason-nvim-dap.nvim", event = { "BufReadPre", "BufNewFile" }, config = function() require("mason-nvim-dap").setup({ ensure_installed = { "codelldb", }, automatic_installation = true, }) end, }, { "jay-babu/mason-null-ls.nvim", event = { "BufReadPre", "BufNewFile" }, config = function() require("mason-null-ls").setup({ ensure_installed = { "stylua", "prettierd", "ymlfmt", "shellharden", "shfmt", "goimports", "goimports-reviser", "golines", "gopls", }, automatic_installation = true, }) end, }, { "williamboman/mason-lspconfig.nvim", opts = { ensure_installed = { "lua_ls", "rust_analyzer", "html", "volar", "tsserver", "tailwindcss", "eslint", "cssls", "cssmodules_ls", "jsonls", "yamlls", "docker_compose_language_service", "dockerls", "bashls", "clangd", "lemminx", }, automatic_installation = true, }, config = function(_, opts) require("mason-lspconfig").setup(opts) end, }, { "williamboman/mason.nvim", }, { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = { -- defaults "vim", "vimdoc", "lua", -- web dev "html", "css", "javascript", "typescript", "tsx", "json", "vue", "markdown", "markdown_inline", "jsdoc", "scss", -- low level "rust", "toml", "go", "gomod", }, autotag = { enable = true, }, highlight = { disable = function(_, buf) local max_filesize = 100 * 1024 -- 100 KB local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) if ok and stats and stats.size > max_filesize then return true end end, }, }, }, { "nvimtools/none-ls.nvim", event = "VeryLazy", opts = function() return require("custom.configs.null-ls") end, }, { "hrsh7th/nvim-cmp", dependencies = { { "roobert/tailwindcss-colorizer-cmp.nvim", config = true }, }, opts = function() ---@diagnostic disable-next-line: different-requires local M = require("plugins.configs.cmp") M.completion.completeopt = "menu,menuone,noselect" M.mapping[""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true, }) table.insert(M.sources, { name = "crates" }) -- original LazyVim kind icon formatter local format_kinds = M.formatting.format M.formatting.format = function(entry, item) format_kinds(entry, item) -- add icons return require("tailwindcss-colorizer-cmp").formatter(entry, item) end return M end, }, -- rust { "mrcjkb/rustaceanvim", version = "^4", -- Recommended ft = "rust", config = function() require("custom.configs.rust") end, }, { "saecki/crates.nvim", ft = { "toml" }, config = function(_, opts) local crates = require("crates") crates.setup(opts) require("cmp").setup.buffer({ sources = { { name = "crates" } }, }) crates.show() require("core.utils").load_mappings("crates") end, }, { "rust-lang/rust.vim", ft = "rust", init = function() vim.g.rustfmt_autosave = 1 end, }, -- golang { "olexsmir/gopher.nvim", ft = "go", config = function(_, opts) require("gopher").setup(opts) end, build = function() vim.cmd([[silent! GoInstallDeps]]) end, }, { "dreamsofcode-io/nvim-dap-go", ft = "go", dependencies = "mfussenegger/nvim-dap", config = function(_, opts) require("dap-go").setup(opts) end, }, { "b0o/schemastore.nvim", }, -- debug { "rcarriga/nvim-dap-ui", event = "VeryLazy", dependencies = "mfussenegger/nvim-dap", config = function() local dap = require("dap") local dapui = require("dapui") require("dapui").setup() dap.listeners.after.event_initialized["dapui_config"] = function() dapui.open() end dap.listeners.before.event_terminated["dapui_config"] = function() dapui.close() end dap.listeners.before.event_exited["dapui_config"] = function() dapui.close() end end, }, { "mfussenegger/nvim-dap", config = function() require("custom.configs.dap") require("core.utils").load_mappings("dap") end, }, { "theHamsta/nvim-dap-virtual-text", lazy = false, config = function(_, opts) require("nvim-dap-virtual-text").setup(opts) end, }, -- telescope, code action ui { "nvim-telescope/telescope.nvim", opts = function() require("custom.configs.telescope") end, }, { "nvim-telescope/telescope-ui-select.nvim", }, { "nvim-telescope/telescope-fzf-native.nvim", build = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build", }, { "nvim-pack/nvim-spectre", event = "BufRead", }, -- motion, UI and others { "phaazon/hop.nvim", branch = "v2", -- optional but strongly recommended config = function() -- you can configure Hop the way you like here; see :h hop-config local hop = require("hop") hop.setup({ keys = "etovxqpdygfblzhckisuran" }) end, }, { "smoka7/multicursors.nvim", event = "VeryLazy", dependencies = { "smoka7/hydra.nvim", }, opts = { hint_config = false, }, cmd = { "MCstart", "MCvisual", "MCclear", "MCpattern", "MCvisualPattern", "MCunderCursor" }, keys = { { mode = { "v", "n" }, "m", --[[ "", ]] "MCstart", desc = "Create a selection for selected text or word under the cursor", }, }, }, { "jxnblk/vim-mdx-js", }, { "windwp/nvim-autopairs", event = "InsertEnter", opts = {}, }, { "windwp/nvim-ts-autotag", dependencies = "nvim-treesitter/nvim-treesitter", config = function() require("nvim-ts-autotag").setup({}) end, lazy = true, event = "VeryLazy", }, { "kylechui/nvim-surround", version = "*", -- Use for stability; omit to use `main` branch for the latest features event = "VeryLazy", config = function() require("nvim-surround").setup({}) end, }, -- comment string { "JoosepAlviste/nvim-ts-context-commentstring", }, { "numToStr/Comment.nvim", opts = { pre_hook = function(ctx) local U = require("Comment.utils") local location = nil if ctx.ctype == U.ctype.block then location = require("ts_context_commentstring.utils").get_cursor_location() elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then location = require("ts_context_commentstring.utils").get_visual_start_location() end return require("ts_context_commentstring.internal").calculate_commentstring({ key = ctx.ctype == U.ctype.line and "__default" or "__multiline", location = location, }) end, }, }, -- term { "NvChad/nvterm", config = function() require("nvterm").setup({ terminals = { type_opts = { float = { relative = "editor", row = 0.1, col = 0.1, width = 0.8, height = 0.8, border = "rounded", }, }, }, }) end, }, -- ui { "rcarriga/nvim-notify", opts = { fps = 120, render = "wrapped-compact", stages = "slide", top_down = false, }, }, { "folke/noice.nvim", event = "VeryLazy", dependencies = { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify", }, opts = { lsp = { message = { enabled = true, }, progress = { enabled = false, }, -- 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, }, hover = { enabled = false, }, signature = { enabled = false, }, }, -- 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 = true, -- add a border to hover docs and signature help }, }, }, { "folke/trouble.nvim", cmd = { "TroubleToggle", "Trouble", "TroubleRefresh" }, dependencies = { "nvim-tree/nvim-web-devicons" }, opts = {}, }, { "NvChad/nvim-colorizer.lua", opts = { user_default_options = { tailwind = true, }, }, }, { "folke/todo-comments.nvim", event = "BufReadPost", opts = {}, }, { "chikko80/error-lens.nvim", event = "BufRead", dependencies = { "nvim-telescope/telescope.nvim", }, opts = {}, }, { "RRethy/vim-illuminate", event = "BufRead", }, { "iamcco/markdown-preview.nvim", cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, ft = { "markdown" }, build = function() vim.fn["mkdp#util#install"]() end, }, -- git { "sindrets/diffview.nvim", opts = { enhanced_diff_hl = true, view = { merge_tool = { layout = "diff3_mixed", disable_diagnostics = true, }, }, keymaps = { view = { [""] = false, }, file_panel = { [""] = false, }, file_history_panel = { [""] = false, }, option_panel = { [""] = false, }, }, }, }, --[[ overrides ]] { "nvim-tree/nvim-tree.lua", opts = overrides.nvimtree, }, } return plugins