diff options
| author | Max Bossing <info@maxbossing.de> | 2025-08-12 15:47:14 +0200 | 
|---|---|---|
| committer | Max Bossing <info@maxbossing.de> | 2025-08-12 15:47:14 +0200 | 
| commit | 991c272423d8fa41c9dd21169ce0c3e9979f1c64 (patch) | |
| tree | b4343fb3035989a6bfcafcb02e7db91e91a39785 /nvim | |
| parent | 7c8d9ae3b0b5e843ffe10fad81e776806c0c5a8b (diff) | |
feat: finally a usable neovim config (switched to LazyVim)
Diffstat (limited to 'nvim')
| -rw-r--r-- | nvim/.gitignore | 8 | ||||
| -rw-r--r-- | nvim/.neoconf.json | 15 | ||||
| -rw-r--r-- | nvim/LICENSE | 201 | ||||
| -rw-r--r-- | nvim/init.lua | 16 | ||||
| -rw-r--r-- | nvim/lazyvim.json | 19 | ||||
| -rw-r--r-- | nvim/lua/config/autocmds.lua | 8 | ||||
| -rw-r--r-- | nvim/lua/config/keymaps.lua | 7 | ||||
| -rw-r--r-- | nvim/lua/config/lazy.lua | 53 | ||||
| -rw-r--r-- | nvim/lua/config/options.lua | 7 | ||||
| -rw-r--r-- | nvim/lua/keymap.lua | 31 | ||||
| -rw-r--r-- | nvim/lua/lsp.lua | 45 | ||||
| -rw-r--r-- | nvim/lua/options.lua | 36 | ||||
| -rw-r--r-- | nvim/lua/plugins.lua | 109 | ||||
| -rw-r--r-- | nvim/lua/plugins/example.lua | 197 | ||||
| -rw-r--r-- | nvim/lua/plugins/fugitive.lua | 6 | ||||
| -rw-r--r-- | nvim/lua/plugins/lualine.lua | 8 | ||||
| -rw-r--r-- | nvim/lua/plugins/oil.lua | 14 | ||||
| -rw-r--r-- | nvim/lua/plugins/telescope.lua | 2 | ||||
| -rw-r--r-- | nvim/lua/plugins/treesitter.lua | 3 | 
19 files changed, 536 insertions, 249 deletions
| diff --git a/nvim/.gitignore b/nvim/.gitignore index e033bc6..ed1d552 100644 --- a/nvim/.gitignore +++ b/nvim/.gitignore @@ -1 +1,9 @@ +tt.* +.tests +doc/tags +debug +.repro +foo.* +*.log +data  lazy-lock.json diff --git a/nvim/.neoconf.json b/nvim/.neoconf.json new file mode 100644 index 0000000..7c48087 --- /dev/null +++ b/nvim/.neoconf.json @@ -0,0 +1,15 @@ +{ +  "neodev": { +    "library": { +      "enabled": true, +      "plugins": true +    } +  }, +  "neoconf": { +    "plugins": { +      "lua_ls": { +        "enabled": true +      } +    } +  } +} diff --git a/nvim/LICENSE b/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/nvim/LICENSE @@ -0,0 +1,201 @@ +                                 Apache License +                           Version 2.0, January 2004 +                        http://www.apache.org/licenses/ + +   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +   1. Definitions. + +      "License" shall mean the terms and conditions for use, reproduction, +      and distribution as defined by Sections 1 through 9 of this document. + +      "Licensor" shall mean the copyright owner or entity authorized by +      the copyright owner that is granting the License. + +      "Legal Entity" shall mean the union of the acting entity and all +      other entities that control, are controlled by, or are under common +      control with that entity. For the purposes of this definition, +      "control" means (i) the power, direct or indirect, to cause the +      direction or management of such entity, whether by contract or +      otherwise, or (ii) ownership of fifty percent (50%) or more of the +      outstanding shares, or (iii) beneficial ownership of such entity. + +      "You" (or "Your") shall mean an individual or Legal Entity +      exercising permissions granted by this License. + +      "Source" form shall mean the preferred form for making modifications, +      including but not limited to software source code, documentation +      source, and configuration files. + +      "Object" form shall mean any form resulting from mechanical +      transformation or translation of a Source form, including but +      not limited to compiled object code, generated documentation, +      and conversions to other media types. + +      "Work" shall mean the work of authorship, whether in Source or +      Object form, made available under the License, as indicated by a +      copyright notice that is included in or attached to the work +      (an example is provided in the Appendix below). + +      "Derivative Works" shall mean any work, whether in Source or Object +      form, that is based on (or derived from) the Work and for which the +      editorial revisions, annotations, elaborations, or other modifications +      represent, as a whole, an original work of authorship. For the purposes +      of this License, Derivative Works shall not include works that remain +      separable from, or merely link (or bind by name) to the interfaces of, +      the Work and Derivative Works thereof. + +      "Contribution" shall mean any work of authorship, including +      the original version of the Work and any modifications or additions +      to that Work or Derivative Works thereof, that is intentionally +      submitted to Licensor for inclusion in the Work by the copyright owner +      or by an individual or Legal Entity authorized to submit on behalf of +      the copyright owner. For the purposes of this definition, "submitted" +      means any form of electronic, verbal, or written communication sent +      to the Licensor or its representatives, including but not limited to +      communication on electronic mailing lists, source code control systems, +      and issue tracking systems that are managed by, or on behalf of, the +      Licensor for the purpose of discussing and improving the Work, but +      excluding communication that is conspicuously marked or otherwise +      designated in writing by the copyright owner as "Not a Contribution." + +      "Contributor" shall mean Licensor and any individual or Legal Entity +      on behalf of whom a Contribution has been received by Licensor and +      subsequently incorporated within the Work. + +   2. Grant of Copyright License. Subject to the terms and conditions of +      this License, each Contributor hereby grants to You a perpetual, +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable +      copyright license to reproduce, prepare Derivative Works of, +      publicly display, publicly perform, sublicense, and distribute the +      Work and such Derivative Works in Source or Object form. + +   3. Grant of Patent License. Subject to the terms and conditions of +      this License, each Contributor hereby grants to You a perpetual, +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable +      (except as stated in this section) patent license to make, have made, +      use, offer to sell, sell, import, and otherwise transfer the Work, +      where such license applies only to those patent claims licensable +      by such Contributor that are necessarily infringed by their +      Contribution(s) alone or by combination of their Contribution(s) +      with the Work to which such Contribution(s) was submitted. If You +      institute patent litigation against any entity (including a +      cross-claim or counterclaim in a lawsuit) alleging that the Work +      or a Contribution incorporated within the Work constitutes direct +      or contributory patent infringement, then any patent licenses +      granted to You under this License for that Work shall terminate +      as of the date such litigation is filed. + +   4. Redistribution. You may reproduce and distribute copies of the +      Work or Derivative Works thereof in any medium, with or without +      modifications, and in Source or Object form, provided that You +      meet the following conditions: + +      (a) You must give any other recipients of the Work or +          Derivative Works a copy of this License; and + +      (b) You must cause any modified files to carry prominent notices +          stating that You changed the files; and + +      (c) You must retain, in the Source form of any Derivative Works +          that You distribute, all copyright, patent, trademark, and +          attribution notices from the Source form of the Work, +          excluding those notices that do not pertain to any part of +          the Derivative Works; and + +      (d) If the Work includes a "NOTICE" text file as part of its +          distribution, then any Derivative Works that You distribute must +          include a readable copy of the attribution notices contained +          within such NOTICE file, excluding those notices that do not +          pertain to any part of the Derivative Works, in at least one +          of the following places: within a NOTICE text file distributed +          as part of the Derivative Works; within the Source form or +          documentation, if provided along with the Derivative Works; or, +          within a display generated by the Derivative Works, if and +          wherever such third-party notices normally appear. The contents +          of the NOTICE file are for informational purposes only and +          do not modify the License. You may add Your own attribution +          notices within Derivative Works that You distribute, alongside +          or as an addendum to the NOTICE text from the Work, provided +          that such additional attribution notices cannot be construed +          as modifying the License. + +      You may add Your own copyright statement to Your modifications and +      may provide additional or different license terms and conditions +      for use, reproduction, or distribution of Your modifications, or +      for any such Derivative Works as a whole, provided Your use, +      reproduction, and distribution of the Work otherwise complies with +      the conditions stated in this License. + +   5. Submission of Contributions. Unless You explicitly state otherwise, +      any Contribution intentionally submitted for inclusion in the Work +      by You to the Licensor shall be under the terms and conditions of +      this License, without any additional terms or conditions. +      Notwithstanding the above, nothing herein shall supersede or modify +      the terms of any separate license agreement you may have executed +      with Licensor regarding such Contributions. + +   6. Trademarks. This License does not grant permission to use the trade +      names, trademarks, service marks, or product names of the Licensor, +      except as required for reasonable and customary use in describing the +      origin of the Work and reproducing the content of the NOTICE file. + +   7. Disclaimer of Warranty. Unless required by applicable law or +      agreed to in writing, Licensor provides the Work (and each +      Contributor provides its Contributions) on an "AS IS" BASIS, +      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +      implied, including, without limitation, any warranties or conditions +      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +      PARTICULAR PURPOSE. You are solely responsible for determining the +      appropriateness of using or redistributing the Work and assume any +      risks associated with Your exercise of permissions under this License. + +   8. Limitation of Liability. In no event and under no legal theory, +      whether in tort (including negligence), contract, or otherwise, +      unless required by applicable law (such as deliberate and grossly +      negligent acts) or agreed to in writing, shall any Contributor be +      liable to You for damages, including any direct, indirect, special, +      incidental, or consequential damages of any character arising as a +      result of this License or out of the use or inability to use the +      Work (including but not limited to damages for loss of goodwill, +      work stoppage, computer failure or malfunction, or any and all +      other commercial damages or losses), even if such Contributor +      has been advised of the possibility of such damages. + +   9. Accepting Warranty or Additional Liability. While redistributing +      the Work or Derivative Works thereof, You may choose to offer, +      and charge a fee for, acceptance of support, warranty, indemnity, +      or other liability obligations and/or rights consistent with this +      License. However, in accepting such obligations, You may act only +      on Your own behalf and on Your sole responsibility, not on behalf +      of any other Contributor, and only if You agree to indemnify, +      defend, and hold each Contributor harmless for any liability +      incurred by, or claims asserted against, such Contributor by reason +      of your accepting any such warranty or additional liability. + +   END OF TERMS AND CONDITIONS + +   APPENDIX: How to apply the Apache License to your work. + +      To apply the Apache License to your work, attach the following +      boilerplate notice, with the fields enclosed by brackets "[]" +      replaced with your own identifying information. (Don't include +      the brackets!)  The text should be enclosed in the appropriate +      comment syntax for the file format. We also recommend that a +      file or class name and description of purpose be included on the +      same "printed page" as the copyright notice for easier +      identification within third-party archives. + +   Copyright [yyyy] [name of copyright owner] + +   Licensed under the Apache License, Version 2.0 (the "License"); +   you may not use this file except in compliance with the License. +   You may obtain a copy of the License at + +       http://www.apache.org/licenses/LICENSE-2.0 + +   Unless required by applicable law or agreed to in writing, software +   distributed under the License is distributed on an "AS IS" BASIS, +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +   See the License for the specific language governing permissions and +   limitations under the License. diff --git a/nvim/init.lua b/nvim/init.lua index 2c5506b..2514f9e 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -1,14 +1,2 @@ -require('plugins') - -require('options') - -vim.cmd [[colorscheme tokyonight-moon]] - -require('lsp') - -require('plugins/lualine') -require('plugins/telescope') -require('plugins/oil') -require('plugins/treesitter') - -require('keymap') +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") diff --git a/nvim/lazyvim.json b/nvim/lazyvim.json new file mode 100644 index 0000000..f0199cb --- /dev/null +++ b/nvim/lazyvim.json @@ -0,0 +1,19 @@ +{ +  "extras": [ +    "lazyvim.plugins.extras.coding.mini-comment", +    "lazyvim.plugins.extras.coding.mini-surround", +    "lazyvim.plugins.extras.editor.fzf", +    "lazyvim.plugins.extras.lang.git", +    "lazyvim.plugins.extras.lang.markdown", +    "lazyvim.plugins.extras.lang.python", +    "lazyvim.plugins.extras.lang.rust", +    "lazyvim.plugins.extras.lang.toml", +    "lazyvim.plugins.extras.test.core", +    "lazyvim.plugins.extras.util.startuptime" +  ], +  "install_version": 8, +  "news": { +    "NEWS.md": "10960" +  }, +  "version": 8 +}
\ No newline at end of file diff --git a/nvim/lua/config/autocmds.lua b/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..4221e75 --- /dev/null +++ b/nvim/lua/config/autocmds.lua @@ -0,0 +1,8 @@ +-- Autocmds are automatically loaded on the VeryLazy event +-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua +-- +-- Add any additional autocmds here +-- with `vim.api.nvim_create_autocmd` +-- +-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults) +-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell") diff --git a/nvim/lua/config/keymaps.lua b/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..8450d44 --- /dev/null +++ b/nvim/lua/config/keymaps.lua @@ -0,0 +1,7 @@ +-- Keymaps are automatically loaded on the VeryLazy event +-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua +-- Add any additional keymaps here + +-- move code in visual line mode +vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv") +vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv") diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..d73bfa1 --- /dev/null +++ b/nvim/lua/config/lazy.lua @@ -0,0 +1,53 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then +  local lazyrepo = "https://github.com/folke/lazy.nvim.git" +  local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) +  if vim.v.shell_error ~= 0 then +    vim.api.nvim_echo({ +      { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, +      { out, "WarningMsg" }, +      { "\nPress any key to exit..." }, +    }, true, {}) +    vim.fn.getchar() +    os.exit(1) +  end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ +  spec = { +    -- add LazyVim and import its plugins +    { "LazyVim/LazyVim", import = "lazyvim.plugins" }, +    -- import/override with your plugins +    { import = "plugins" }, +  }, +  defaults = { +    -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. +    -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. +    lazy = false, +    -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, +    -- have outdated releases, which may break your Neovim install. +    version = false, -- always use the latest git commit +    -- version = "*", -- try installing the latest stable version for plugins that support semver +  }, +  install = { colorscheme = { "tokyonight", "habamax" } }, +  checker = { +    enabled = true, -- check for plugin updates periodically +    notify = false, -- notify on update +  }, -- automatically check for plugin updates +  performance = { +    rtp = { +      -- disable some rtp plugins +      disabled_plugins = { +        "gzip", +        -- "matchit", +        -- "matchparen", +        -- "netrwPlugin", +        "tarPlugin", +        "tohtml", +        "tutor", +        "zipPlugin", +      }, +    }, +  }, +}) diff --git a/nvim/lua/config/options.lua b/nvim/lua/config/options.lua new file mode 100644 index 0000000..98dddd5 --- /dev/null +++ b/nvim/lua/config/options.lua @@ -0,0 +1,7 @@ +-- Options are automatically loaded before lazy.nvim startup +-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua +-- Add any additional options here +vim.opt.tabstop = 2 +vim.opt.shiftwidth = 2 +vim.opt.smarttab = true +vim.opt.expandtab = true diff --git a/nvim/lua/keymap.lua b/nvim/lua/keymap.lua deleted file mode 100644 index 8b24603..0000000 --- a/nvim/lua/keymap.lua +++ /dev/null @@ -1,31 +0,0 @@ --- vim-fugitive -vim.keymap.set('n', '<leader>gs', ':Git<CR>') - --- move code in visual-line mode -vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv") -vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv") - --- Paste while yanking into void (paste without loosing register) -vim.keymap.set("x", "<leader>p", [["_dP]]) - --- directly yank into system clipboard -vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]]) -vim.keymap.set("n", "<leader>Y", [["+Y]]) - --- delete while yanking into void -vim.keymap.set({ "n", "v" }, "<leader>d", "\"_d") - --- telescope -vim.keymap.set('n', '<leader>tf', ':Telescope find_files<CR>')  -- file search -vim.keymap.set('n', '<leader>tb', ':Telescope buffers<CR>')     -- buffer peak -vim.keymap.set('n', '<leader>tp', ':Telescope builtin<CR>')     -- picker picker lmao -vim.keymap.set('n', '<leader>tg', ':Telescope live_grep<CR>')   -- grep - --- Oil -vim.keymap.set("n", "-", "<CMD>Oil<CR>") - --- Undotree -vim.keymap.set('n', '<leader>ut', ':UndotreeToggle<CR>') - --- Neotree -vim.keymap.set('n', '<leader>nt', ':Neotree toggle<CR>') diff --git a/nvim/lua/lsp.lua b/nvim/lua/lsp.lua deleted file mode 100644 index 8d8a804..0000000 --- a/nvim/lua/lsp.lua +++ /dev/null @@ -1,45 +0,0 @@ -require('mason').setup() - -local bufnr = vim.api.nvim_get_current_buf() -vim.keymap.set('n', 'gra',  -  function() -    vim.cmd.RustLsp('codeAction') -  end -) - -vim.keymap.set('n', 'K', -  function() -    vim.cmd.RustLsp({'hover', 'actions'}) -  end -) - -vim.keymap.set('n', 'grd',  -  function() -    vim.cmd.RustLsp({'renderDiagnostic', 'current'}) -  end -) - -local cmp = require('cmp') -cmp.setup({ -    mapping = cmp.mapping.preset.insert({ -      ['<C-p>'] = cmp.mapping.select_prev_item({behavior = cmp.SelectBehavior.Select}), -      ['<C-n>'] = cmp.mapping.select_next_item({behavior = cmp.SelectBehavior.Select}), -      ['<C-b>'] = cmp.mapping.scroll_docs(-4), -      ['<C-f>'] = cmp.mapping.scroll_docs(4), -      ['<C-Space>'] = cmp.mapping.complete(), -      ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. -    }), -    sources = cmp.config.sources({ -      { name = 'nvim_lsp' }, -    }, { -    { name = 'buffer' }, -    { name = "path" }, -  }) -}) - -cmp.setup.cmdline({ '/', '?' }, { -  mapping = cmp.mapping.preset.cmdline(), -  sources = { -    { name = 'buffer' } -  } -}) diff --git a/nvim/lua/options.lua b/nvim/lua/options.lua deleted file mode 100644 index 9de7b72..0000000 --- a/nvim/lua/options.lua +++ /dev/null @@ -1,36 +0,0 @@ -vim.g.loaded_netrw = 1 -vim.g.loaded_netrwPlugin = 1 - -vim.opt.termguicolors = true -vim.o.background = "dark" - -vim.opt.colorcolumn = "80" -vim.opt.updatetime = 50 - --- Map leader to space -vim.g.mapleader = ' ' - --- Tabs sind für lutscher -vim.opt.tabstop = 2 -vim.opt.shiftwidth = 2 -vim.o.expandtab = true -vim.opt.smartindent = true - --- QoL for search -vim.opt.hlsearch = false -vim.opt.incsearch = true - --- Scrolling -vim.opt.scrolloff = 10 -vim.opt.signcolumn = "yes" -vim.opt.isfname:append('@-@') - --- Numbers on the side -vim.wo.number = true -vim.wo.relativenumber = true  -vim.o.ruler = true - --- Show something in the command line not sure -vim.o.showcmd = true - -vim.diagnostic.config({ virtual_text = false }) diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua deleted file mode 100644 index 175de4f..0000000 --- a/nvim/lua/plugins.lua +++ /dev/null @@ -1,109 +0,0 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not vim.loop.fs_stat(lazypath) then -  vim.fn.system({ -    "git", -    "clone", -    "--filter=blob:none", -    "https://github.com/folke/lazy.nvim.git", -    "--branch=stable", -- latest stable release -    lazypath, -  }) -end -vim.opt.rtp:prepend(lazypath) - -require("lazy").setup({ - -  -- Color Scheme -  "folke/tokyonight.nvim", - -  -- Syntax highlighting -  'nvim-treesitter/nvim-treesitter', - -  -- Status line -  'nvim-lualine/lualine.nvim', - -  -- Git -  'airblade/vim-gitgutter', -   -  -- File System -  'stevearc/oil.nvim', -  'benomahony/oil-git.nvim', -   -  -- non-linear undo history  -  'mbbill/undotree', -   -  -- Git  -  'tpope/vim-fugitive', -   -  -- Comments -  "tpope/vim-commentary", - -  -- Surrounding -  'tpope/vim-surround', - -  -- Better . usage -  'tpope/vim-repeat', -   -  -- Some lsp shit -  'mason-org/mason.nvim', - -  -- Wakatime -  -- 'wakatime/vim-wakatime', - -  { -    'nvim-neo-tree/neo-tree.nvim', -    branch = 'v3.x', -    dependencies = { -      'nvim-lua/plenary.nvim', -      'MunifTanjim/nui.nvim', -      {'3rd/image.nvim', opts = {}}, -    }, -    lazy = false, -  }, -   -  -- Markdown -  { -    'OXY2DEV/markview.nvim', -    lazy = false, -    priority = 49, - -  }, - -  -- Telescope -  { -    'nvim-telescope/telescope.nvim', -    tag = '0.1.5', -    dependencies = { -      'nvim-lua/plenary.nvim', -      'sharkdp/fd', -      { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' }, -    } -  }, - -  -- Icons   -  { -    "echasnovski/mini.icons", -    lazy = true, -    init = function() -      package.preload["nvim-web-devicons"] = function() -        require("mini.icons").mock_nvim_web_devicons() -        return package.loaded["nvim-web-devicons"] -      end -    end, -  }, - -  -- Rust LSP -  { -    'mrcjkb/rustaceanvim', -    version = '^6', -- Recommended -    lazy = false, -- This plugin is already lazy -  }, - -  -- Completion -  "hrsh7th/nvim-cmp", -  "hrsh7th/cmp-buffer", -  "hrsh7th/cmp-path", -  "hrsh7th/cmp-nvim-lsp", -  "hrsh7th/cmp-nvim-lua", -}) - diff --git a/nvim/lua/plugins/example.lua b/nvim/lua/plugins/example.lua new file mode 100644 index 0000000..17f53d6 --- /dev/null +++ b/nvim/lua/plugins/example.lua @@ -0,0 +1,197 @@ +-- 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 the "plugins" directory 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 { +  -- add gruvbox +  { "ellisonleao/gruvbox.nvim" }, + +  -- Configure LazyVim to load gruvbox +  { +    "LazyVim/LazyVim", +    opts = { +      colorscheme = "gruvbox", +    }, +  }, + +  -- 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 }, + +  -- override nvim-cmp and add cmp-emoji +  { +    "hrsh7th/nvim-cmp", +    dependencies = { "hrsh7th/cmp-emoji" }, +    ---@param opts cmp.ConfigSchema +    opts = function(_, opts) +      table.insert(opts.sources, { name = "emoji" }) +    end, +  }, + +  -- change some telescope options and a keymap to browse plugin files +  { +    "nvim-telescope/telescope.nvim", +    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, +      }, +    }, +  }, + +  -- add pyright to lspconfig +  { +    "neovim/nvim-lspconfig", +    ---@class PluginLspOpts +    opts = { +      ---@type lspconfig.options +      servers = { +        -- pyright will be automatically installed with mason and loaded with lspconfig +        pyright = {}, +      }, +    }, +  }, + +  -- add tsserver and setup with typescript.nvim instead of lspconfig +  { +    "neovim/nvim-lspconfig", +    dependencies = { +      "jose-elias-alvarez/typescript.nvim", +      init = function() +        require("lazyvim.util").lsp.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 = { +        -- tsserver will be automatically installed with mason and loaded with lspconfig +        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", +        "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 new value. +  -- If you'd rather extend the default config, use the code below instead: +  { +    "nvim-treesitter/nvim-treesitter", +    opts = function(_, opts) +      -- add tsx and treesitter +      vim.list_extend(opts.ensure_installed, { +        "tsx", +        "typescript", +      }) +    end, +  }, + +  -- the opts function can also be used to change the default opts: +  { +    "nvim-lualine/lualine.nvim", +    event = "VeryLazy", +    opts = function(_, opts) +      table.insert(opts.sections.lualine_x, { +        function() +          return "😄" +        end, +      }) +    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 packages, and 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", +      }, +    }, +  }, +} diff --git a/nvim/lua/plugins/fugitive.lua b/nvim/lua/plugins/fugitive.lua new file mode 100644 index 0000000..d7f59af --- /dev/null +++ b/nvim/lua/plugins/fugitive.lua @@ -0,0 +1,6 @@ +return { +  { +    "tpope/vim-fugitive", +    lazy = false, +  }, +} diff --git a/nvim/lua/plugins/lualine.lua b/nvim/lua/plugins/lualine.lua deleted file mode 100644 index 2356803..0000000 --- a/nvim/lua/plugins/lualine.lua +++ /dev/null @@ -1,8 +0,0 @@ -require('lualine').setup { -  options = { -    icons_enabled = true, -    theme = 'auto', -    section_separators = { left = '', right = '' }, -    component_separators = { left = '', right = '' } -  }, -} diff --git a/nvim/lua/plugins/oil.lua b/nvim/lua/plugins/oil.lua index d24cfbb..39c9212 100644 --- a/nvim/lua/plugins/oil.lua +++ b/nvim/lua/plugins/oil.lua @@ -1 +1,13 @@ -require('oil').setup() +return { +  { +    "stevearc/oil.nvim", +    lazy = false, +    config = function() +      require("oil").setup() +    end, +    keys = { +      { "-", "<cmd>Oil<cr>", desc = "Move up" }, +    }, +  }, +  "benomahony/oil-git.nvim", +} diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua deleted file mode 100644 index f7ab271..0000000 --- a/nvim/lua/plugins/telescope.lua +++ /dev/null @@ -1,2 +0,0 @@ -local telescope = require('telescope') -telescope.load_extension('fzf') diff --git a/nvim/lua/plugins/treesitter.lua b/nvim/lua/plugins/treesitter.lua deleted file mode 100644 index 06536f3..0000000 --- a/nvim/lua/plugins/treesitter.lua +++ /dev/null @@ -1,3 +0,0 @@ -require('nvim-treesitter.configs').setup { -  highlight = { enable = true } -} | 
