diff options
Diffstat (limited to 'lua/plugins/example.lua')
| -rw-r--r-- | lua/plugins/example.lua | 189 | 
1 files changed, 189 insertions, 0 deletions
diff --git a/lua/plugins/example.lua b/lua/plugins/example.lua new file mode 100644 index 0000000..1e18038 --- /dev/null +++ b/lua/plugins/example.lua @@ -0,0 +1,189 @@ +-- 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 = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", 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 +      { +        "<leader>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", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) +          vim.keymap.set("n", "<leader>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<string, fun(server:string, opts:_.lspconfig.options):boolean?> +      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", +      }, +    }, +  }, +}  | 
