-- since this is just an example spec, don't actually load anything here and return an empty spec -- stylua: ignore if true then return {} end -- every spec file under config.plugins will be loaded automatically by lazy.nvim -- -- In your plugin files, you can: -- * add extra plugins -- * disable/enabled LazyVim plugins -- * override the configuration of LazyVim plugins return { -- change trouble config { "folke/trouble.nvim", -- opts will be merged with the parent spec opts = { use_diagnostic_signs = true }, }, -- disable trouble { "folke/trouble.nvim", enabled = false }, -- add symbols-outline { "simrat39/symbols-outline.nvim", cmd = "SymbolsOutline", keys = { { "cs", "SymbolsOutline", desc = "Symbols Outline" } }, config = true, }, -- override nvim-cmp and add cmp-emoji { "hrsh7th/nvim-cmp", dependencies = { "hrsh7th/cmp-emoji" }, ---@param opts cmp.ConfigSchema opts = function(_, opts) local cmp = require("cmp") opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } })) end, }, -- change some telescope options and add telescope-fzf-native { "nvim-telescope/telescope.nvim", dependencies = { { "nvim-telescope/telescope-fzf-native.nvim", build = "make" } }, keys = { -- add a keymap to browse plugin files -- stylua: ignore { "fp", function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, desc = "Find Plugin File", }, }, -- change some options opts = { defaults = { layout_strategy = "horizontal", layout_config = { prompt_position = "top" }, sorting_strategy = "ascending", winblend = 0, }, }, -- apply the config and additionally load fzf-native config = function(_, opts) local telescope = require("telescope") telescope.setup(opts) telescope.load_extension("fzf") end, }, -- add pyright and setup tsserver with typescript.nvim { "neovim/nvim-lspconfig", dependencies = { "jose-elias-alvarez/typescript.nvim", init = function() require("lazyvim.util").on_attach(function(_, buffer) -- stylua: ignore vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) end) end, }, ---@class PluginLspOpts opts = { ---@type lspconfig.options servers = { -- pyright will be automatically installed with mason and loaded with lspconfig pyright = {}, tsserver = {}, }, -- you can do any additional lsp server setup here -- return true if you don't want this server to be setup with lspconfig ---@type table setup = { -- example to setup with typescript.nvim tsserver = function(_, opts) require("typescript").setup({ server = opts }) return true end, -- Specify * to use this function as a fallback for any server -- ["*"] = function(server, opts) end, }, }, }, -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, -- treesitter, mason and typescript.nvim. So instead of the above, you can use: { import = "lazyvim.plugins.extras.lang.typescript" }, -- add more treesitter parsers { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = { "bash", "help", "html", "javascript", "json", "lua", "markdown", "markdown_inline", "python", "query", "regex", "tsx", "typescript", "vim", "yaml", }, }, }, -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above -- would overwrite `ensure_installed` with the ne value. -- If you'd rather extend the default config, use the code below instead: { "nvim-treesitter/nvim-treesitter", opts = function(_, opts) vim.list_extend(opts.ensure_installed, { -- add tsx and treesitter ensure_installed = { "tsx", "typescript", }, }) end, }, -- the opts function can als be used to change the default opts: { "nvim-lualine/lualine.nvim", event = "VeryLazy", opts = function(_, opts) table.insert(opts.sections.lualine_x, "😄") end, }, -- or you can return new options to override all the defaults { "nvim-lualine/lualine.nvim", event = "VeryLazy", opts = function() return { --[[add your custom lualine config here]] } end, }, -- use mini.starter instead of alpha { import = "lazyvim.plugins.extras.ui.mini-starter" }, -- add jsonls and schemastore ans setup treesitter for json, json5 and jsonc { import = "lazyvim.plugins.extras.lang.json" }, -- add any tools you want to have installed below { "williamboman/mason.nvim", opts = { ensure_installed = { "stylua", "shellcheck", "shfmt", "flake8", }, }, }, }