Compare commits

..

173 Commits

Author SHA1 Message Date
986a6374f4 chore(main): release 4.8.1 (#913)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-09 17:56:18 +02:00
30d03eda5b fix(edgy): make noice windows 0.4 height 2023-06-09 16:28:26 +02:00
d6bb907cf0 fix(keymaps): dont map jk in visual. Use x instead of v. Fixes #912 2023-06-09 16:27:45 +02:00
b2bceeed77 chore(main): release 4.8.0 (#903)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-09 12:57:09 +02:00
86fe83f311 chore(build): auto-generate vimdoc 2023-06-09 10:44:20 +00:00
04f17cb86b feat(edgy): added leader-ue to toggle edgy sidebars 2023-06-09 12:43:35 +02:00
9013f6e274 faet(edgy): leader-ue => leader-uE to select an edgy window 2023-06-09 12:43:35 +02:00
6ffc89512e feat(edgy): neo-tree filessystem is now also a pinned view 2023-06-09 12:43:35 +02:00
e049928b8b fix(keymaps): better j/k for visual mode (#902) 2023-06-08 13:48:23 +02:00
7c593dce1f chore(main): release 4.7.0 (#891)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-08 09:47:29 +02:00
47edc8918a feat(edgy): added noice 2023-06-08 07:54:14 +02:00
f7b0c853cc fix(edgy): dont layout toggleterm floats 2023-06-08 07:54:14 +02:00
448d502947 fix(qf): better error message. Fixes #892 2023-06-08 07:54:14 +02:00
57c7ba1c0d chore(build): auto-generate vimdoc 2023-06-08 05:49:10 +00:00
2ec4da7fa5 fix(format): eslint should respect autoformat (#897) 2023-06-08 07:48:34 +02:00
0731f08ee4 feat(edgy): added <leader>ue to quickly jump to an edgy window 2023-06-06 12:20:56 +02:00
00339b7b56 chore(main): release 4.6.2 (#890)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-06 07:59:08 +02:00
34a5d32561 chore(build): auto-generate vimdoc 2023-06-06 05:47:11 +00:00
1897617c98 fix(keymaps): terminal show/hide 2023-06-06 07:46:32 +02:00
41765a4041 chore(main): release 4.6.1 (#889)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-06 00:33:49 +02:00
ad6f6cfffd fix(edgy): dont edit help buffers in edgy 2023-06-06 00:11:53 +02:00
d31772f981 fix(keymaps): added c-_ mapped to c-/ to make it work in some terminals 2023-06-06 00:11:52 +02:00
6a01c9a180 chore(main): release 4.6.0 (#887)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-05 23:30:44 +02:00
b929413ddd feat(copilot): enable copilot in markdown and help files 2023-06-05 22:51:55 +02:00
56f092f1a8 feat: added extra for edgy.nvim 2023-06-05 19:29:11 +02:00
821672a0db chore(main): release 4.5.1 (#885)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-05 13:34:02 +02:00
8ce862e12e chore(build): auto-generate vimdoc 2023-06-05 10:11:35 +00:00
952a0cfb96 fix(keymaps): remove c-w mapping 2023-06-05 12:10:55 +02:00
d69d55afd4 chore(main): release 4.5.0 (#871)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-03 11:01:39 +02:00
7a36e2989c feat(keymaps): added <c-/> in normal/terminal mode to toggle main terminal 2023-06-03 10:54:29 +02:00
049fe77c3c chore(build): auto-generate vimdoc 2023-06-03 08:50:38 +00:00
5a47492535 feat(util): LazyVim terminals are now persistent by default (toggleterm) 2023-06-03 10:49:58 +02:00
15f5a229d9 fix(indentscope): dont use indentscope/blankline for lazyterm/toggleterm/notify 2023-06-03 10:49:58 +02:00
bb4a7fe410 fix(spectre): make spectre behave with regards to swap files 2023-06-03 10:49:58 +02:00
419086e8a3 feat(neo-tree): enabled document_symbols for neo-tree 2023-06-03 10:49:58 +02:00
49ae2344a1 feat(keymaps): added some useful keymaps for terminals 2023-06-03 10:49:58 +02:00
1efe3a96b2 chore(build): auto-generate vimdoc 2023-06-02 05:40:07 +00:00
5ed3250f24 fix(lualine): dont load copilot when not available. Fixes #872 2023-06-02 07:39:22 +02:00
9c1a5620ed chore(build): auto-generate vimdoc 2023-06-01 22:11:28 +00:00
08422bf559 perf(illuminate): on large files >2000 lines, enable lsp references only 2023-06-02 00:10:02 +02:00
fc236b3a2a feat(noice): route some undo messages to the mini view 2023-06-01 22:57:06 +02:00
01fbeb139b chore(build): auto-generate vimdoc 2023-05-30 21:21:43 +00:00
99ce1002d7 chore(main): release 4.4.0 (#854)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-30 23:21:07 +02:00
3b4c27e6a6 chore(build): auto-generate vimdoc 2023-05-29 20:29:14 +00:00
a94ef5953a fix(indent-blankline): don't load indent-blankline for nvim-notify 2023-05-29 22:28:28 +02:00
0c05f8a185 feat(catppuccin): enabled integration for plugins included with LazyVim 2023-05-29 22:28:28 +02:00
6b68378c2c chore(main): release 4.3.1 (#841)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-28 12:54:13 +02:00
0e671ad7fa fix(neotest): properly detect __call. Fixes #847 2023-05-28 12:52:22 +02:00
b68311eb6d chore: removed util.build. This is now part of the lazyvim website code 2023-05-28 12:39:51 +02:00
a866c6801d fix(neotest): removed <leader>tR in favor of <leader>tt 2023-05-28 11:07:02 +02:00
5c97e0c1d0 chore(build): auto-generate vimdoc 2023-05-28 07:42:37 +00:00
72b81553f3 fix(dashboard): center the LazyVim logo (#845)
* Center the LazyVim logo

This visually centers the LazyVim login on the starter page.

* fix(alpha): center logo

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2023-05-28 09:41:58 +02:00
88238e2109 fix(luasnip): use echo instead of echo -e for build warning 2023-05-27 23:03:44 +02:00
c272bba013 chore(main): release 4.3.0 (#839)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-27 09:58:08 +02:00
b16012b106 chore(build): auto-generate vimdoc 2023-05-27 07:38:41 +00:00
efc72b0649 feat(neotest): added <leader>tt and <leader>tT to run tests in file or all test files 2023-05-27 09:37:55 +02:00
2a3bac7690 fix(neotest): support neotest adapaters that use setup() for custom setup 2023-05-27 09:37:17 +02:00
98e2ffcf14 feat(neotest): allow adapter names as a list 2023-05-27 09:36:52 +02:00
2c89770504 feat(noetest): open trouble instead of quickfix on errors when available 2023-05-27 09:36:29 +02:00
30824369c2 fix(hipatterns): default options 2023-05-27 09:36:05 +02:00
1288f0d5a5 fix(neotest): added some additional filetypes to close with q 2023-05-27 09:35:49 +02:00
a3ec4c21f7 chore(main): release 4.2.0 (#831)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-26 17:01:21 +02:00
f7a63042f9 feat(hipatterns): made tailwind ft and style configurable 2023-05-26 16:42:07 +02:00
b7a925904e fix(hipatterns): reset hl groups when colorscheme changes 2023-05-26 16:32:34 +02:00
5eccaeb992 feat(lsp): added nvim-lspconfig.opts.format_notify. Enable this to debug formatter issues. 2023-05-26 10:51:07 +02:00
962fc6bab4 feat(lsp): added support for upcoming dynamic registration of formatters 2023-05-26 10:50:16 +02:00
e990d23cfe chore(main): release 4.1.1 (#829)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-26 08:20:25 +02:00
b027bebeab fix(hipatterns): make sure priority is higher than the one for references 2023-05-26 08:14:29 +02:00
19f4250888 chore(build): auto-generate vimdoc 2023-05-26 06:11:52 +00:00
33f61b58de fix(hipatterns): make it work on stable 2023-05-26 08:11:07 +02:00
5373af76f8 chore(main): release 4.1.0 (#828)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-25 23:34:31 +02:00
c526ea338b feat(hipatterns): better tailwind fg colors 2023-05-25 23:32:55 +02:00
ba0cfbccf3 chore(main): release 4.0.0 (#827)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-25 22:40:52 +02:00
47ee48faba build: fixed docs build 2023-05-25 22:37:45 +02:00
7bc979a7c1 feat: added extra for mini.hipatterns with tailwind support 2023-05-25 22:33:58 +02:00
9c7821e681 fix!: remove nvim-colorizer.lua It actually wasn't even enabled and I'll add hipatterns with optional tailwind support soon 2023-05-25 21:55:05 +02:00
95e2a07f16 chore(main): release 3.7.2 (#825)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-25 20:29:48 +02:00
d35d982984 chore: remove unused upvalue function (#823) 2023-05-25 20:05:02 +02:00
877e63ca8e fix(telescope): use last-known telescope commit to work on Neovim 0.8.0 when running in Neovim 0.8.0 2023-05-25 18:33:59 +02:00
bc24b68260 chore(main): release 3.7.1 (#820)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-25 14:27:09 +02:00
b75ed594a9 fix(mini.comment): removed dirty upvalues hack for mini.comments. no longer needed 2023-05-25 14:24:29 +02:00
4f2bb725be refactor(mason): use new handlers opt 2023-05-25 14:24:29 +02:00
2f0bfbbad8 chore(build): auto-generate vimdoc 2023-05-25 07:08:32 +00:00
01a6085b2b chore(main): release 3.7.0 (#818)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-25 09:07:44 +02:00
2b5ae7b63c feat(go): add workaround to get semantic token highlighting (#815) 2023-05-24 23:22:40 +02:00
dc40f02f35 chore(main): release 3.6.2 (#817)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-24 22:14:12 +02:00
4b367952f6 fix(tailwind): nil check on filetypes_exclude. See #816 2023-05-24 22:02:30 +02:00
7c9abd7463 fix(vscode): only remap keybinds when running in vscode 2023-05-24 21:59:37 +02:00
868ccedff2 chore(main): release 3.6.1 (#812)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-24 14:28:48 +02:00
29632c6b29 fix(go): actually set semantic tokens (#811) 2023-05-24 14:07:23 +02:00
5b7ae96c5d chore(main): release 3.6.0 (#801)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-24 11:30:49 +02:00
e9fb81e94d feat(typescript): added dap config for typescript. Will only be enabled when dap is also enabled 2023-05-24 10:47:54 +02:00
b172f47f27 fix(go): extend mason ensure_installed 2023-05-24 10:35:05 +02:00
9cfe88c7ba fix: remove debug notify (#808) 2023-05-24 10:34:27 +02:00
163a4f9275 feat(go): add go lang extras (#795)
* feat(go): add go lang extras

* fix(go): update plugin

* fix(go): add neotest adapter to adapters

* fix(go): pr changes
2023-05-24 08:55:03 +02:00
076b2e432e chore(build): auto-generate vimdoc 2023-05-24 06:46:02 +00:00
5bf45e3139 feat(vscode): better vscode support 2023-05-24 08:45:20 +02:00
eba510ec69 fix(vscode): properly cleanup disabled deps 2023-05-23 14:33:13 +02:00
39fa63646d feat(vscode): add vscode=true to any plugin spec you want to activate in vscode 2023-05-23 14:33:00 +02:00
e975f021ea fix(vscode): added ts-context-commentstring 2023-05-23 14:32:32 +02:00
bf66e71adc fix(neotest): pass opts to neotest 2023-05-23 14:07:11 +02:00
cd96e3d9e5 refactor(neotest): better way to pass custom options for adapters 2023-05-23 13:00:15 +02:00
5559228300 chore(main): release 3.5.0 (#796)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-23 09:01:26 +02:00
3dcc074693 fix(vscode): support older Neovim versions. Fixes #798 2023-05-23 08:44:51 +02:00
58c3842faa chore(build): auto-generate vimdoc 2023-05-23 06:43:03 +00:00
89db0157b1 feat(mini.comment): added ts-context-commentstring back and made it work with mini.comment 2023-05-23 08:41:44 +02:00
7443effe26 feat(test): added easy way to configure adapters 2023-05-22 21:31:12 +02:00
78298cb134 chore(main): release 3.4.0 (#782)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-22 21:00:46 +02:00
55bf4d104c build: dont generate docs for the vscode extra 2023-05-22 20:57:49 +02:00
c12835ab86 feat(vscode): added vscode extra with minimal functionality. Will only do something when vim.g.vscode is set 2023-05-22 20:57:33 +02:00
183fd89d76 fix: make some extra deps optional 2023-05-22 20:57:26 +02:00
99785ce36b fix(persistence): dont add rtp to session 2023-05-22 20:57:26 +02:00
bb0d4d4e7d feat(tests): added neotest (#642)
* feat(tests): adds test management

* refactor(tests): pr changes

* fix(tests): make dap keybind optional based on nvim-dap existence
2023-05-22 20:57:15 +02:00
f8982332be feat(project): add to mini.starter (#640)
* feat(project): add to mini.starter

* fix(project): make alpha and mini.starter optional
2023-05-22 20:30:18 +02:00
0c517d1f5c chore(build): auto-generate vimdoc 2023-05-22 14:39:48 +00:00
df6a0d3b10 style: removed deprecated option from neodev 2023-05-22 16:39:09 +02:00
7a7c024bf6 chore(build): auto-generate vimdoc 2023-05-21 08:53:25 +00:00
29554455aa feat(tailwind): don't enable tailwind in markdown files 2023-05-21 10:52:46 +02:00
b227d9727a perf(eslint): only run EslintFixAll for the current buffer when there are diagnostics from eslint 2023-05-19 22:49:25 +02:00
b4099a6477 fix(dap): fix the mason-nvim-dap setting name (#781) 2023-05-19 21:34:19 +02:00
5a27e1def0 chore(build): auto-generate vimdoc 2023-05-19 13:07:42 +00:00
06e4ba2fdb style: Fix comments on autocmds and keymaps loading (#779) 2023-05-19 15:06:59 +02:00
23410a4594 chore(main): release 3.3.0 (#772)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-18 16:31:55 +02:00
c737f2b6c2 feat(telescope): added <a-c> mapping for telescope pickers to switch to cwd instead of root 2023-05-18 09:46:46 +02:00
78354a1e5e fix(telescope): keep current prompt when switching to hidden/no_ignore 2023-05-18 09:46:46 +02:00
080ea29354 chore(main): release 3.2.0 (#759)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-18 08:30:28 +02:00
3d7238f753 chore(build): auto-generate vimdoc 2023-05-18 06:22:51 +00:00
a43d1b79f2 feat(noice): enable the inc_rename preset when inc_rename is availble 2023-05-18 08:22:08 +02:00
bd1ba54d13 fix(mini): lazy now supports mini plugins out of the box. no longer needed to have a custom config 2023-05-13 16:16:10 +02:00
9f2010a8b9 chore(main): release 3.1.0 (#757)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-13 15:49:06 +02:00
e09423b28c chore(build): auto-generate vimdoc 2023-05-13 13:46:15 +00:00
2525b91313 feat(noice): send written notifications to the mini view instead of notify 2023-05-13 15:45:28 +02:00
a213da4430 feat(noice): use noice's improved entry doc view for cmp 2023-05-13 15:45:02 +02:00
b57582bc91 chore(main): release 3.0.0 (#755)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-12 20:40:23 +02:00
d41ef05cc0 feat(mini.comment)!: removed ts-context-commentstring since mini.comment provides this functionality out of the box
If you use this plugin, you can add it again with the following code:
{
  "nvim-treesitter/nvim-treesitter",
  opts = {
    context_commentstring = {
      enable = true,
      enable_autocmd = false,
    },
  },
  dependencies = {
    "JoosepAlviste/nvim-ts-context-commentstring",
  },
}
2023-05-12 20:34:36 +02:00
dfde622847 chore(main): release 2.13.1 (#731)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-12 17:05:10 +02:00
44df7434d4 perf(comment): removed nvim-ts-context-commentstring, since mini.comment now handles that internally 2023-05-12 17:03:16 +02:00
049e323714 fix(copilot): removed special handling of copilot in cmp. no longer needed 2023-05-12 17:01:10 +02:00
7d96b07c6f chore(build): auto-generate vimdoc 2023-05-12 14:47:08 +00:00
ad229bbf42 fix(copilot): latest copilot-cmp requires passing opts to _on_insert_enter (#752) 2023-05-12 16:46:21 +02:00
cbf1d335ed chore(build): auto-generate vimdoc 2023-05-08 16:57:02 +00:00
6ebf3ab084 fix(icons): updated a dap icon 2023-05-08 18:56:18 +02:00
25d37a2cdd chore(main): release 2.13.0 (#702)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-05-04 18:32:55 +02:00
7409fef291 chore(build): auto-generate vimdoc 2023-05-04 16:28:28 +00:00
3f5c2c283e feat(extras): added extra for tailwindcss 2023-05-04 18:27:36 +02:00
f51719a12d chore(build): auto-generate vimdoc 2023-05-02 19:30:33 +00:00
DYY
ea4858874b fix(mason): exclude filetype mason in indent-blankline.nvim (#701) 2023-05-02 21:29:52 +02:00
c42ebc216a chore(main): release 2.12.1 (#685)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-04-28 15:26:43 +02:00
bdddb215cc chore(build): auto-generate vimdoc 2023-04-28 09:48:21 +00:00
eb143ebe11 fix(format): only do null-ls formatting logic when null-ls is availble. Fixes #684 2023-04-28 11:47:37 +02:00
86ac9989ea chore(build): auto-generate vimdoc 2023-04-25 07:13:27 +00:00
dc1d48f436 style: Change description of notify.dismiss() binding (#675) 2023-04-25 09:12:41 +02:00
5202a0f006 chore(main): release 2.12.0 (#671)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-04-24 20:47:45 +02:00
7b9145c12d fix(spectre): use new url by default 2023-04-24 08:45:40 +02:00
3e46dd61cd feat(bufferline): use mini.bufremove to close a buffer (#670)
* feat(bufferline): use `mini.bufremove` to close a buffer

* fix(bufferline): don't force remove buffers

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2023-04-24 08:40:57 +02:00
43763a6226 chore(build): auto-generate vimdoc 2023-04-24 06:39:25 +00:00
6c334fed6a feat(telescope): added keymap for recent files in the current directory. (#669)
* Support MRU in current directory.

* Update editor.lua

* fix(telescope): use cwd for oldfiles for consistency with other commands

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2023-04-24 08:38:42 +02:00
d18331ca89 chore(main): release 2.11.0 (#664)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-04-23 11:21:54 +02:00
59f3b3e096 feat(plugins): automatically handle plugin repo renames 2023-04-23 11:20:02 +02:00
J
4fbb7a2803 fix(health): remove deprecated api warning (#666) 2023-04-23 11:04:05 +02:00
b760ec63c4 chore(build): auto-generate vimdoc 2023-04-23 09:02:33 +00:00
d565684ade feat(lsp): automatically resolve denols/tsserver conflicts if both are configured 2023-04-23 11:01:46 +02:00
c7aeda9db1 chore(build): auto-generate vimdoc 2023-04-22 21:07:31 +00:00
3a718c5c85 feat(dap): Change DAP REPL binding from open to toggle (#663) 2023-04-22 23:06:55 +02:00
6c86952a0e chore(main): release 2.10.0 (#659)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-04-21 23:53:51 +02:00
ad214af54d feat(neo-tree): refresh neotree git status when closing a lazygit terminal 2023-04-21 23:42:30 +02:00
40983a3269 fix(copilot): re-enable copilot confirm with overwrite 2023-04-21 23:42:30 +02:00
2f93f69171 chore(main): release 2.9.0 (#655)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-04-21 18:30:09 +02:00
4379ae8ab9 fix(copilot): work-around Neovim bug. Fixes #656 2023-04-21 18:27:15 +02:00
eb92903342 feat(tsserver): set some tsserver formatting settings to their Neovim equivalents. Also used for organize imports 2023-04-21 16:50:12 +02:00
03282126e3 chore(main): release 2.8.0 (#652)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-04-21 09:25:43 +02:00
1274310e6d feat(copilot): better copilot status colors for lualine 2023-04-21 09:24:12 +02:00
14e708a246 fix: remove unintentional <lt>nop> mapping (#651) 2023-04-21 09:21:34 +02:00
29 changed files with 1683 additions and 501 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
*LazyVim.txt* For Neovim >= 0.8.0 Last change: 2023 April 21
*LazyVim.txt* For Neovim >= 0.8.0 Last change: 2023 June 09
==============================================================================
Table of Contents *LazyVim-table-of-contents*
@ -43,7 +43,6 @@ pre-configured setup.
FEATURES *LazyVim-features*
- Transform your Neovim into a full-fledged IDE
- Easily customize and extend your config with lazy.nvim <https://github.com/folke/lazy.nvim>
- Blazingly fast
@ -53,7 +52,6 @@ FEATURES *LazyVim-features*
REQUIREMENTS *LazyVim-requirements*
- Neovim >= **0.8.0** (needs to be built with **LuaJIT**)
- Git >= **2.19.0** (for partial clones support)
- a Nerd Font <https://www.nerdfonts.com/> **(optional)**
@ -77,7 +75,6 @@ Try it with Docker ~
Install the LazyVim Starter ~
- Make a backup of your current Neovim files:
>sh
mv ~/.config/nvim ~/.config/nvim.bak

View File

@ -1,4 +1,4 @@
-- This file is automatically loaded by plugins.init
-- This file is automatically loaded by lazyvim.config.init
local function augroup(name)
return vim.api.nvim_create_augroup("lazyvim_" .. name, { clear = true })
@ -51,7 +51,10 @@ vim.api.nvim_create_autocmd("FileType", {
"spectre_panel",
"startuptime",
"tsplayground",
"neotest-output",
"checkhealth",
"neotest-summary",
"neotest-output-panel",
},
callback = function(event)
vim.bo[event.buf].buflisted = false

View File

@ -20,7 +20,7 @@ local defaults = {
-- icons used by other plugins
icons = {
dap = {
Stopped = { " ", "DiagnosticWarn", "DapStoppedLine" },
Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" },
Breakpoint = "",
BreakpointCondition = "",
BreakpointRejected = { "", "DiagnosticError" },
@ -77,6 +77,10 @@ local defaults = {
},
}
M.renames = {
["windwp/nvim-spectre"] = "nvim-pack/nvim-spectre",
}
---@type LazyVimConfig
local options
@ -157,6 +161,8 @@ function M.load(name)
-- HACK: LazyVim may have overwritten options of the Lazy ui, so reset this here
vim.cmd([[do VimResized]])
end
local pattern = "LazyVim" .. name:sub(1, 1):upper() .. name:sub(2)
vim.api.nvim_exec_autocmds("User", { pattern = pattern, modeline = false })
end
M.did_init = false
@ -170,6 +176,14 @@ function M.init()
-- this is needed to make sure options will be correctly applied
-- after installing missing plugins
require("lazyvim.config").load("options")
local Plugin = require("lazy.core.plugin")
local add = Plugin.Spec.add
Plugin.Spec.add = function(self, plugin, ...)
if type(plugin) == "table" and M.renames[plugin[1]] then
plugin[1] = M.renames[plugin[1]]
end
return add(self, plugin, ...)
end
end
end

View File

@ -1,5 +1,4 @@
-- This file is automatically loaded by lazyvim.plugins.config
-- This file is automatically loaded by lazyvim.config.init
local Util = require("lazyvim.util")
local function map(mode, lhs, rhs, opts)
@ -9,19 +8,22 @@ local function map(mode, lhs, rhs, opts)
if not keys.active[keys.parse({ lhs, mode = mode }).id] then
opts = opts or {}
opts.silent = opts.silent ~= false
if opts.remap and not vim.g.vscode then
opts.remap = nil
end
vim.keymap.set(mode, lhs, rhs, opts)
end
end
-- better up/down
map("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
map("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
map({ "n", "x" }, "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
map({ "n", "x" }, "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
-- Move to window using the <ctrl> hjkl keys
map("n", "<C-h>", "<C-w>h", { desc = "Go to left window" })
map("n", "<C-j>", "<C-w>j", { desc = "Go to lower window" })
map("n", "<C-k>", "<C-w>k", { desc = "Go to upper window" })
map("n", "<C-l>", "<C-w>l", { desc = "Go to right window" })
map("n", "<C-h>", "<C-w>h", { desc = "Go to left window", remap = true })
map("n", "<C-j>", "<C-w>j", { desc = "Go to lower window", remap = true })
map("n", "<C-k>", "<C-w>k", { desc = "Go to upper window", remap = true })
map("n", "<C-l>", "<C-w>l", { desc = "Go to right window", remap = true })
-- Resize window using <ctrl> arrow keys
map("n", "<C-Up>", "<cmd>resize +2<cr>", { desc = "Increase window height" })
@ -124,17 +126,28 @@ if vim.fn.has("nvim-0.9.0") == 1 then
end
-- floating terminal
map("n", "<leader>ft", function() Util.float_term(nil, { cwd = Util.get_root() }) end, { desc = "Terminal (root dir)" })
local lazyterm = function() Util.float_term(nil, { cwd = Util.get_root() }) end
map("n", "<leader>ft", lazyterm, { desc = "Terminal (root dir)" })
map("n", "<leader>fT", function() Util.float_term() end, { desc = "Terminal (cwd)" })
map("n", "<c-/>", lazyterm, { desc = "Terminal (root dir)" })
map("n", "<c-_>", lazyterm, { desc = "which_key_ignore" })
-- Terminal Mappings
map("t", "<esc><esc>", "<c-\\><c-n>", { desc = "Enter Normal Mode" })
map("t", "<C-h>", "<cmd>wincmd h<cr>", { desc = "Go to left window" })
map("t", "<C-j>", "<cmd>wincmd j<cr>", { desc = "Go to lower window" })
map("t", "<C-k>", "<cmd>wincmd k<cr>", { desc = "Go to upper window" })
map("t", "<C-l>", "<cmd>wincmd l<cr>", { desc = "Go to right window" })
map("t", "<C-/>", "<cmd>close<cr>", { desc = "Hide Terminal" })
map("t", "<c-_>", "<cmd>close<cr>", { desc = "which_key_ignore" })
-- windows
map("n", "<leader>ww", "<C-W>p", { desc = "Other window" })
map("n", "<leader>wd", "<C-W>c", { desc = "Delete window" })
map("n", "<leader>w-", "<C-W>s", { desc = "Split window below" })
map("n", "<leader>w|", "<C-W>v", { desc = "Split window right" })
map("n", "<leader>-", "<C-W>s", { desc = "Split window below" })
map("n", "<leader>|", "<C-W>v", { desc = "Split window right" })
map("n", "<leader>ww", "<C-W>p", { desc = "Other window", remap = true })
map("n", "<leader>wd", "<C-W>c", { desc = "Delete window", remap = true })
map("n", "<leader>w-", "<C-W>s", { desc = "Split window below", remap = true })
map("n", "<leader>w|", "<C-W>v", { desc = "Split window right", remap = true })
map("n", "<leader>-", "<C-W>s", { desc = "Split window below", remap = true })
map("n", "<leader>|", "<C-W>v", { desc = "Split window right", remap = true })
-- tabs
map("n", "<leader><tab>l", "<cmd>tablast<cr>", { desc = "Last Tab" })

View File

@ -1,12 +1,17 @@
local M = {}
local start = vim.health.start or vim.health.report_start
local ok = vim.health.ok or vim.health.report_ok
local warn = vim.health.warn or vim.health.report_warn
local error = vim.health.error or vim.health.report_error
function M.check()
vim.health.report_start("LazyVim")
start("LazyVim")
if vim.fn.has("nvim-0.8.0") == 1 then
vim.health.report_ok("Using Neovim >= 0.8.0")
ok("Using Neovim >= 0.8.0")
else
vim.health.report_error("Neovim >= 0.8.0 is required")
error("Neovim >= 0.8.0 is required")
end
for _, cmd in ipairs({ "git", "rg", { "fd", "fdfind" }, "lazygit" }) do
@ -23,9 +28,9 @@ function M.check()
end
if found then
vim.health.report_ok(("`%s` is installed"):format(name))
ok(("`%s` is installed"):format(name))
else
vim.health.report_warn(("`%s` is not installed"):format(name))
warn(("`%s` is not installed"):format(name))
end
end
end

View File

@ -4,7 +4,7 @@ return {
{
"L3MON4D3/LuaSnip",
build = (not jit.os:find("Windows"))
and "echo -e 'NOTE: jsregexp is optional, so not a big deal if it fails to build\n'; make install_jsregexp"
and "echo 'NOTE: jsregexp is optional, so not a big deal if it fails to build'; make install_jsregexp"
or nil,
dependencies = {
"rafamadriz/friendly-snippets",
@ -93,9 +93,7 @@ return {
{
"echasnovski/mini.pairs",
event = "VeryLazy",
config = function(_, opts)
require("mini.pairs").setup(opts)
end,
opts = {},
},
-- surround
@ -130,10 +128,6 @@ return {
update_n_lines = "gzn", -- Update `n_lines`
},
},
config = function(_, opts)
-- use gz mappings instead of s to prevent conflict with leap
require("mini.surround").setup(opts)
end,
},
-- comments
@ -142,15 +136,12 @@ return {
"echasnovski/mini.comment",
event = "VeryLazy",
opts = {
hooks = {
pre = function()
require("ts_context_commentstring.internal").update_commentstring({})
options = {
custom_commentstring = function()
return require("ts_context_commentstring.internal").calculate_commentstring() or vim.bo.commentstring
end,
},
},
config = function(_, opts)
require("mini.comment").setup(opts)
end,
},
-- better text-objects

View File

@ -12,5 +12,34 @@ return {
"catppuccin/nvim",
lazy = true,
name = "catppuccin",
opts = {
integrations = {
alpha = true,
cmp = true,
gitsigns = true,
illuminate = true,
indent_blankline = { enabled = true },
lsp_trouble = true,
mini = true,
native_lsp = {
enabled = true,
underlines = {
errors = { "undercurl" },
hints = { "undercurl" },
warnings = { "undercurl" },
information = { "undercurl" },
},
},
navic = { enabled = true },
neotest = true,
noice = true,
notify = true,
nvimtree = true,
semantic_tokens = true,
telescope = true,
treesitter = true,
which_key = true,
},
},
},
}

View File

@ -37,9 +37,12 @@ return {
end
end,
opts = {
sources = { "filesystem", "buffers", "git_status", "document_symbols" },
open_files_do_not_replace_types = { "terminal", "Trouble", "qf", "Outline" },
filesystem = {
bind_to_cwd = false,
follow_current_file = true,
use_libuv_file_watcher = true,
},
window = {
mappings = {
@ -55,11 +58,24 @@ return {
},
},
},
config = function(_, opts)
require("neo-tree").setup(opts)
vim.api.nvim_create_autocmd("TermClose", {
pattern = "*lazygit",
callback = function()
if package.loaded["neo-tree.sources.git_status"] then
require("neo-tree.sources.git_status").refresh()
end
end,
})
end,
},
-- search/replace in multiple files
{
"windwp/nvim-spectre",
"nvim-pack/nvim-spectre",
cmd = "Spectre",
opts = { open_cmd = "noswapfile vnew" },
-- stylua: ignore
keys = {
{ "<leader>sr", function() require("spectre").open() end, desc = "Replace in files (Spectre)" },
@ -69,6 +85,7 @@ return {
-- fuzzy finder
{
"nvim-telescope/telescope.nvim",
commit = vim.fn.has("nvim-0.9.0") == 0 and "057ee0f8783" or nil,
cmd = "Telescope",
version = false, -- telescope did only one release, so use HEAD for now
keys = {
@ -81,6 +98,7 @@ return {
{ "<leader>ff", Util.telescope("files"), desc = "Find Files (root dir)" },
{ "<leader>fF", Util.telescope("files", { cwd = false }), desc = "Find Files (cwd)" },
{ "<leader>fr", "<cmd>Telescope oldfiles<cr>", desc = "Recent" },
{ "<leader>fR", Util.telescope("oldfiles", { cwd = vim.loop.cwd() }), desc = "Recent (cwd)" },
-- git
{ "<leader>gc", "<cmd>Telescope git_commits<CR>", desc = "commits" },
{ "<leader>gs", "<cmd>Telescope git_status<CR>", desc = "status" },
@ -153,10 +171,14 @@ return {
return require("trouble.providers.telescope").open_selected_with_trouble(...)
end,
["<a-i>"] = function()
Util.telescope("find_files", { no_ignore = true })()
local action_state = require("telescope.actions.state")
local line = action_state.get_current_line()
Util.telescope("find_files", { no_ignore = true, default_text = line })()
end,
["<a-h>"] = function()
Util.telescope("find_files", { hidden = true })()
local action_state = require("telescope.actions.state")
local line = action_state.get_current_line()
Util.telescope("find_files", { hidden = true, default_text = line })()
end,
["<C-Down>"] = function(...)
return require("telescope.actions").cycle_history_next(...)
@ -285,7 +307,13 @@ return {
{
"RRethy/vim-illuminate",
event = { "BufReadPost", "BufNewFile" },
opts = { delay = 200 },
opts = {
delay = 200,
large_file_cutoff = 2000,
large_file_overrides = {
providers = { "lsp" },
},
},
config = function(_, opts)
require("illuminate").configure(opts)
@ -339,7 +367,10 @@ return {
if require("trouble").is_open() then
require("trouble").previous({ skip_groups = true, jump = true })
else
vim.cmd.cprev()
local ok, err = pcall(vim.cmd.cprev)
if not ok then
vim.notify(err, vim.log.levels.ERROR)
end
end
end,
desc = "Previous trouble/quickfix item",
@ -350,7 +381,10 @@ return {
if require("trouble").is_open() then
require("trouble").next({ skip_groups = true, jump = true })
else
vim.cmd.cnext()
local ok, err = pcall(vim.cmd.cnext)
if not ok then
vim.notify(err, vim.log.levels.ERROR)
end
end
end,
desc = "Next trouble/quickfix item",

View File

@ -8,18 +8,23 @@ return {
opts = {
suggestion = { enabled = false },
panel = { enabled = false },
filetypes = {
markdown = true,
help = true,
},
},
},
{
"nvim-lualine/lualine.nvim",
optional = true,
event = "VeryLazy",
opts = function(_, opts)
local Util = require("lazyvim.util")
local colors = {
[""] = Util.fg("Special"),
["Normal"] = Util.fg("Special"),
["Warning"] = Util.fg("DiagnosticWarn"),
["InProgress"] = Util.fg("DiagnosticInfo"),
["Warning"] = Util.fg("DiagnosticError"),
["InProgress"] = Util.fg("DiagnosticWarn"),
}
table.insert(opts.sections.lualine_x, 2, {
function()
@ -28,10 +33,13 @@ return {
return icon .. (status.message or "")
end,
cond = function()
local clients = vim.lsp.get_active_clients({ name = "copilot", bufnr = 0 })
return #clients > 0
local ok, clients = pcall(vim.lsp.get_active_clients, { name = "copilot", bufnr = 0 })
return ok and #clients > 0
end,
color = function()
if not package.loaded["copilot"] then
return
end
local status = require("copilot.api").status.data
return colors[status.status] or colors[""]
end,
@ -54,7 +62,7 @@ return {
-- fixes lazy-loading issues with the copilot cmp source
require("lazyvim.util").on_attach(function(client)
if client.name == "copilot" then
copilot_cmp._on_insert_enter()
copilot_cmp._on_insert_enter({})
end
end)
end,
@ -66,21 +74,6 @@ return {
table.insert(opts.sources, 1, { name = "copilot", group_index = 2 })
local confirm = opts.mapping["<CR>"]
local confirm_copilot = cmp.mapping.confirm({
select = true,
behavior = cmp.ConfirmBehavior.Replace,
})
opts.mapping = vim.tbl_extend("force", opts.mapping, {
["<CR>"] = function(...)
local entry = cmp.get_selected_entry()
if entry and entry.source.name == "copilot" then
return confirm_copilot(...)
end
return confirm(...)
end,
})
opts.sorting = {
priority_weight = 2,
comparators = {

View File

@ -37,6 +37,7 @@ return {
-- which key integration
{
"folke/which-key.nvim",
optional = true,
opts = {
defaults = {
["<leader>d"] = { name = "+debug" },
@ -53,7 +54,7 @@ return {
opts = {
-- Makes a best effort to setup the various debuggers with
-- reasonable debug configurations
automatic_setup = true,
automatic_installation = true,
-- You can provide additional configuration to the handlers,
-- see mason-nvim-dap README for more information
@ -82,7 +83,7 @@ return {
{ "<leader>do", function() require("dap").step_out() end, desc = "Step Out" },
{ "<leader>dO", function() require("dap").step_over() end, desc = "Step Over" },
{ "<leader>dp", function() require("dap").pause() end, desc = "Pause" },
{ "<leader>dr", function() require("dap").repl.open() end, desc = "Repl" },
{ "<leader>dr", function() require("dap").repl.toggle() end, desc = "Toggle REPL" },
{ "<leader>ds", function() require("dap").session() end, desc = "Session" },
{ "<leader>dt", function() require("dap").terminate() end, desc = "Terminate" },
{ "<leader>dw", function() require("dap.ui.widgets").hover() end, desc = "Widgets" },

View File

@ -0,0 +1,77 @@
return {
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
vim.list_extend(opts.ensure_installed, {
"go",
"gomod",
"gowork",
"gosum",
})
end,
},
{
"neovim/nvim-lspconfig",
opts = {
servers = {
gopls = {
settings = {
gopls = {
semanticTokens = true,
},
},
},
},
setup = {
gopls = function()
-- workaround for gopls not supporting semantictokensprovider
-- https://github.com/golang/go/issues/54531#issuecomment-1464982242
require("lazyvim.util").on_attach(function(client, _)
if client.name == "gopls" then
if not client.server_capabilities.semanticTokensProvider then
local semantic = client.config.capabilities.textDocument.semanticTokens
client.server_capabilities.semanticTokensProvider = {
full = true,
legend = {
tokenTypes = semantic.tokenTypes,
tokenModifiers = semantic.tokenModifiers,
},
range = true,
}
end
end
end)
-- end workaround
end,
},
},
},
{
"mfussenegger/nvim-dap",
optional = true,
dependencies = {
{
"mason.nvim",
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
table.insert(opts.ensure_installed, "delve")
end,
},
},
},
{
"nvim-neotest/neotest",
optional = true,
dependencies = {
"nvim-neotest/neotest-go",
},
opts = {
adapters = {
["neotest-go"] = {
-- Here we can set options for neotest-go, e.g.
-- args = { "-tags=integration" }
},
},
},
},
}

View File

@ -0,0 +1,35 @@
return {
{
"neovim/nvim-lspconfig",
opts = {
servers = {
tailwindcss = {
filetypes_exclude = { "markdown" },
},
},
setup = {
tailwindcss = function(_, opts)
local tw = require("lspconfig.server_configurations.tailwindcss")
--- @param ft string
opts.filetypes = vim.tbl_filter(function(ft)
return not vim.tbl_contains(opts.filetypes_exclude or {}, ft)
end, tw.default_config.filetypes)
end,
},
},
},
{
"hrsh7th/nvim-cmp",
dependencies = {
{ "roobert/tailwindcss-colorizer-cmp.nvim", config = true },
},
opts = function(_, opts)
-- original LazyVim kind icon formatter
local format_kinds = opts.formatting.format
opts.formatting.format = function(entry, item)
format_kinds(entry, item) -- add icons
return require("tailwindcss-colorizer-cmp").formatter(entry, item)
end
end,
},
}

View File

@ -20,6 +20,20 @@ return {
---@type lspconfig.options.tsserver
tsserver = {
settings = {
typescript = {
format = {
indentSize = vim.o.shiftwidth,
convertTabsToSpaces = vim.o.expandtab,
tabSize = vim.o.tabstop,
},
},
javascript = {
format = {
indentSize = vim.o.shiftwidth,
convertTabsToSpaces = vim.o.expandtab,
tabSize = vim.o.tabstop,
},
},
completions = {
completeFunctionCalls = true,
},
@ -48,4 +62,56 @@ return {
table.insert(opts.sources, require("typescript.extensions.null-ls.code-actions"))
end,
},
{
"mfussenegger/nvim-dap",
optional = true,
dependencies = {
{
"williamboman/mason.nvim",
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
table.insert(opts.ensure_installed, "js-debug-adapter")
end,
},
},
opts = function()
local dap = require("dap")
if not dap.adapters["pwa-node"] then
require("dap").adapters["pwa-node"] = {
type = "server",
host = "localhost",
port = "${port}",
executable = {
command = "node",
-- 💀 Make sure to update this path to point to your installation
args = {
require("mason-registry").get_package("js-debug-adapter"):get_install_path()
.. "/js-debug/src/dapDebugServer.js",
"${port}",
},
},
}
end
for _, language in ipairs({ "typescript", "javascript" }) do
if not dap.configurations[language] then
dap.configurations[language] = {
{
type = "pwa-node",
request = "launch",
name = "Launch file",
program = "${file}",
cwd = "${workspaceFolder}",
},
{
type = "pwa-node",
request = "attach",
name = "Attach",
processId = require("dap.utils").pick_process,
cwd = "${workspaceFolder}",
},
}
end
end
end,
},
}

View File

@ -3,6 +3,7 @@ return {
"neovim/nvim-lspconfig",
-- other settings removed for brevity
opts = {
---@type lspconfig.options
servers = {
eslint = {
settings = {
@ -15,8 +16,17 @@ return {
eslint = function()
vim.api.nvim_create_autocmd("BufWritePre", {
callback = function(event)
if require("lspconfig.util").get_active_client_by_name(event.buf, "eslint") then
vim.cmd("EslintFixAll")
if not require("lazyvim.plugins.lsp.format").enabled() then
-- exit early if autoformat is not enabled
return
end
local client = vim.lsp.get_active_clients({ bufnr = event.buf, name = "eslint" })[1]
if client then
local diag = vim.diagnostic.get(event.buf, { namespace = vim.lsp.diagnostic.get_namespace(client.id) })
if #diag > 0 then
vim.cmd("EslintFixAll")
end
end
end,
})

View File

@ -0,0 +1,96 @@
return {
{
"folke/which-key.nvim",
optional = true,
opts = {
defaults = {
["<leader>t"] = { name = "+test" },
},
},
},
{
"nvim-neotest/neotest",
opts = {
-- Can be a list of adapters like what neotest expects,
-- or a list of adapter names,
-- or a table of adapter names, mapped to adapter configs.
-- The adapter will then be automatically loaded with the config.
adapters = {},
-- Example for loading neotest-go with a custom config
-- adapters = {
-- ["neotest-go"] = {
-- args = { "-tags=integration" },
-- },
-- },
status = { virtual_text = true },
output = { open_on_run = true },
quickfix = {
open = function()
if require("lazyvim.util").has("trouble.nvim") then
vim.cmd("Trouble quickfix")
else
vim.cmd("copen")
end
end,
},
},
config = function(_, opts)
local neotest_ns = vim.api.nvim_create_namespace("neotest")
vim.diagnostic.config({
virtual_text = {
format = function(diagnostic)
-- Replace newline and tab characters with space for more compact diagnostics
local message = diagnostic.message:gsub("\n", " "):gsub("\t", " "):gsub("%s+", " "):gsub("^%s+", "")
return message
end,
},
}, neotest_ns)
if opts.adapters then
local adapters = {}
for name, config in pairs(opts.adapters or {}) do
if type(name) == "number" then
if type(config) == "string" then
config = require(config)
end
adapters[#adapters + 1] = config
elseif config ~= false then
local adapter = require(name)
if type(config) == "table" and not vim.tbl_isempty(config) then
local meta = getmetatable(adapter)
if adapter.setup then
adapter.setup(config)
elseif meta and meta.__call then
adapter(config)
else
error("Adapter " .. name .. " does not support setup")
end
end
adapters[#adapters + 1] = adapter
end
end
opts.adapters = adapters
end
require("neotest").setup(opts)
end,
-- stylua: ignore
keys = {
{ "<leader>tt", function() require("neotest").run.run(vim.fn.expand("%")) end, desc = "Run File" },
{ "<leader>tT", function() require("neotest").run.run(vim.loop.cwd()) end, desc = "Run All Test Files" },
{ "<leader>tr", function() require("neotest").run.run() end, desc = "Run Nearest" },
{ "<leader>ts", function() require("neotest").summary.toggle() end, desc = "Toggle Summary" },
{ "<leader>to", function() require("neotest").output.open({ enter = true, auto_close = true }) end, desc = "Show Output" },
{ "<leader>tO", function() require("neotest").output_panel.toggle() end, desc = "Toggle Output Panel" },
{ "<leader>tS", function() require("neotest").run.stop() end, desc = "Stop" },
},
},
{
"mfussenegger/nvim-dap",
optional = true,
-- stylua: ignore
keys = {
{ "<leader>td", function() require("neotest").run.run({strategy = "dap"}) end, desc = "Debug Nearest" },
},
},
}

View File

@ -0,0 +1,136 @@
return {
-- edgy
{
"folke/edgy.nvim",
event = "VeryLazy",
keys = {
{
"<leader>ue",
function()
require("edgy").toggle()
end,
desc = "Edgy Toggle",
},
-- stylua: ignore
{ "<leader>uE", function() require("edgy").select() end, desc = "Edgy Select Window" },
},
opts = {
bottom = {
{
ft = "toggleterm",
size = { height = 0.4 },
filter = function(buf, win)
return vim.api.nvim_win_get_config(win).relative == ""
end,
},
{
ft = "noice",
size = { height = 0.4 },
filter = function(buf, win)
return vim.api.nvim_win_get_config(win).relative == ""
end,
},
{
ft = "lazyterm",
title = "LazyTerm",
size = { height = 0.4 },
filter = function(buf)
return not vim.b[buf].lazyterm_cmd
end,
},
"Trouble",
{ ft = "qf", title = "QuickFix" },
{
ft = "help",
size = { height = 20 },
-- don't open help files in edgy that we're editing
filter = function(buf)
return vim.bo[buf].buftype == "help"
end,
},
{ ft = "spectre_panel", size = { height = 0.4 } },
},
left = {
{
title = "Neo-Tree",
ft = "neo-tree",
filter = function(buf)
return vim.b[buf].neo_tree_source == "filesystem"
end,
pinned = true,
open = function()
vim.api.nvim_input("<esc><space>e")
end,
size = { height = 0.5 },
},
{
title = "Neo-Tree Git",
ft = "neo-tree",
filter = function(buf)
return vim.b[buf].neo_tree_source == "git_status"
end,
pinned = true,
open = "Neotree position=right git_status",
},
{
title = "Neo-Tree Buffers",
ft = "neo-tree",
filter = function(buf)
return vim.b[buf].neo_tree_source == "buffers"
end,
pinned = true,
open = "Neotree position=top buffers",
},
{
ft = "Outline",
pinned = true,
open = "SymbolsOutline",
},
"neo-tree",
},
},
},
-- prevent neo-tree from opening files in edgy windows
{
"nvim-neo-tree/neo-tree.nvim",
optional = true,
opts = function(_, opts)
opts.open_files_do_not_replace_types = opts.open_files_do_not_replace_types
or { "terminal", "Trouble", "qf", "Outline" }
table.insert(opts.open_files_do_not_replace_types, "edgy")
end,
},
-- Fix bufferline offsets when edgy is loaded
{
"akinsho/bufferline.nvim",
optional = true,
opts = function()
local Offset = require("bufferline.offset")
if not Offset.edgy then
local get = Offset.get
Offset.get = function()
if package.loaded.edgy then
local layout = require("edgy.config").layout
local ret = { left = "", left_size = 0, right = "", right_size = 0 }
for _, pos in ipairs({ "left", "right" }) do
local sb = layout[pos]
if sb and #sb.wins > 0 then
local title = " Sidebar" .. string.rep(" ", sb.bounds.width - 8)
ret[pos] = "%#EdgyTitle#" .. title .. "%*" .. "%#WinSeparator#│%*"
ret[pos .. "_size"] = sb.bounds.width
end
end
ret.total_size = ret.left_size + ret.right_size
if ret.total_size > 0 then
return ret
end
end
return get()
end
Offset.edgy = true
end
end,
},
}

View File

@ -33,8 +33,5 @@ return {
},
}
end,
config = function(_, opts)
require("mini.animate").setup(opts)
end,
},
}

View File

@ -10,12 +10,12 @@ return {
event = "VimEnter",
opts = function()
local logo = table.concat({
"██╗ █████╗ ███████╗██╗ ██╗██╗ ██╗██╗███╗ ███╗ Z",
"██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██║ ██║██║████╗ ████║ Z",
"██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║██║██╔████╔██║ z",
"██║ ██╔══██║ ███╔╝ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╔╝██║ z",
"███████╗██║ ██║███████╗ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║",
"╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝",
" ██╗ █████╗ ███████╗██╗ ██╗██╗ ██╗██╗███╗ ███╗ Z",
" ██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██║ ██║██║████╗ ████║ Z ",
" ██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║██║██╔████╔██║ z ",
" ██║ ██╔══██║ ███╔╝ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╔╝██║ z ",
" ███████╗██║ ██║███████╗ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║ ",
" ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ",
}, "\n")
local pad = string.rep(" ", 22)
local new_section = function(name, action, section)

File diff suppressed because it is too large Load Diff

View File

@ -20,6 +20,7 @@ return {
{
"goolord/alpha-nvim",
optional = true,
opts = function(_, dashboard)
local button = dashboard.button("p", "" .. " Projects", ":Telescope projects <CR>")
button.opts.hl = "AlphaButtons"
@ -27,4 +28,18 @@ return {
table.insert(dashboard.section.buttons.val, 4, button)
end,
},
{
"echasnovski/mini.starter",
optional = true,
opts = function(_, opts)
local items = {
{
name = "Projects",
action = "Telescope projects",
section = string.rep(" ", 22) .. "Telescope",
},
}
vim.list_extend(opts.items, items)
end,
},
}

View File

@ -0,0 +1,67 @@
if not vim.g.vscode then
return {}
end
local enabled = {
"flit.nvim",
"lazy.nvim",
"leap.nvim",
"mini.ai",
"mini.comment",
"mini.pairs",
"mini.surround",
"nvim-treesitter",
"nvim-treesitter-textobjects",
"nvim-ts-context-commentstring",
"vim-repeat",
"LazyVim",
}
local Config = require("lazy.core.config")
local Plugin = require("lazy.core.plugin")
Config.options.checker.enabled = false
Config.options.change_detection.enabled = false
-- HACK: disable all plugins except the ones we want
local fix_disabled = Plugin.Spec.fix_disabled
function Plugin.Spec.fix_disabled(self)
for _, plugin in pairs(self.plugins) do
if not (vim.tbl_contains(enabled, plugin.name) or plugin.vscode) then
plugin.enabled = false
end
end
fix_disabled(self)
end
-- HACK: don't clean plugins in vscode
local update_state = Plugin.update_state
function Plugin.update_state()
update_state()
Config.to_clean = {}
end
-- Add some vscode specific keymaps
vim.api.nvim_create_autocmd("User", {
pattern = "LazyVimKeymaps",
callback = function()
vim.keymap.set("n", "<leader><space>", "<cmd>Find<cr>")
vim.keymap.set("n", "<leader>/", [[<cmd>call VSCodeNotify('workbench.action.findInFiles')<cr>]])
vim.keymap.set("n", "<leader>ss", [[<cmd>call VSCodeNotify('workbench.action.gotoSymbol')<cr>]])
end,
})
return {
{
"LazyVim/LazyVim",
config = function(_, opts)
opts = opts or {}
-- disable the colorscheme
opts.colorscheme = function() end
require("lazyvim").setup(opts)
end,
},
{
"nvim-treesitter/nvim-treesitter",
opts = { highlight = { enable = false } },
},
}

View File

@ -2,16 +2,21 @@ local Util = require("lazy.core.util")
local M = {}
M.autoformat = true
---@type PluginLspOpts
M.opts = nil
function M.enabled()
return M.opts.autoformat
end
function M.toggle()
if vim.b.autoformat == false then
vim.b.autoformat = nil
M.autoformat = true
M.opts.autoformat = true
else
M.autoformat = not M.autoformat
M.opts.autoformat = not M.opts.autoformat
end
if M.autoformat then
if M.opts.autoformat then
Util.info("Enabled format on save", { title = "Format" })
else
Util.warn("Disabled format on save", { title = "Format" })
@ -24,41 +29,124 @@ function M.format(opts)
if vim.b.autoformat == false and not (opts and opts.force) then
return
end
local ft = vim.bo[buf].filetype
local have_nls = #require("null-ls.sources").get_available(ft, "NULL_LS_FORMATTING") > 0
local formatters = M.get_formatters(buf)
local client_ids = vim.tbl_map(function(client)
return client.id
end, formatters.active)
if #client_ids == 0 then
return
end
if M.opts.format_notify then
M.notify(formatters)
end
vim.lsp.buf.format(vim.tbl_deep_extend("force", {
bufnr = buf,
filter = function(client)
if have_nls then
return client.name == "null-ls"
end
return client.name ~= "null-ls"
return vim.tbl_contains(client_ids, client.id)
end,
}, require("lazyvim.util").opts("nvim-lspconfig").format or {}))
end
function M.on_attach(client, buf)
-- dont format if client disabled it
---@param formatters LazyVimFormatters
function M.notify(formatters)
local lines = { "# Active:" }
for _, client in ipairs(formatters.active) do
local line = "- **" .. client.name .. "**"
if client.name == "null-ls" then
line = line
.. " ("
.. table.concat(
vim.tbl_map(function(f)
return "`" .. f.name .. "`"
end, formatters.null_ls),
", "
)
.. ")"
end
table.insert(lines, line)
end
if #formatters.available > 0 then
table.insert(lines, "")
table.insert(lines, "# Disabled:")
for _, client in ipairs(formatters.available) do
table.insert(lines, "- **" .. client.name .. "**")
end
end
vim.notify(table.concat(lines, "\n"), vim.log.levels.INFO, {
title = "Formatting",
on_open = function(win)
vim.api.nvim_win_set_option(win, "conceallevel", 3)
vim.api.nvim_win_set_option(win, "spell", false)
local buf = vim.api.nvim_win_get_buf(win)
vim.treesitter.start(buf, "markdown")
end,
})
end
-- Gets all lsp clients that support formatting.
-- When a null-ls formatter is available for the current filetype,
-- only null-ls formatters are returned.
function M.get_formatters(bufnr)
local ft = vim.bo[bufnr].filetype
-- check if we have any null-ls formatters for the current filetype
local null_ls = package.loaded["null-ls"] and require("null-ls.sources").get_available(ft, "NULL_LS_FORMATTING") or {}
---@class LazyVimFormatters
local ret = {
---@type lsp.Client[]
active = {},
---@type lsp.Client[]
available = {},
null_ls = null_ls,
}
---@type lsp.Client[]
local clients = vim.lsp.get_active_clients({ bufnr = bufnr })
for _, client in ipairs(clients) do
if M.supports_format(client) then
if (#null_ls > 0 and client.name == "null-ls") or #null_ls == 0 then
table.insert(ret.active, client)
else
table.insert(ret.available, client)
end
end
end
return ret
end
-- Gets all lsp clients that support formatting
-- and have not disabled it in their client config
---@param client lsp.Client
function M.supports_format(client)
if
client.config
and client.config.capabilities
and client.config.capabilities.documentFormattingProvider == false
then
return
return false
end
return client.supports_method("textDocument/formatting") or client.supports_method("textDocument/rangeFormatting")
end
if client.supports_method("textDocument/formatting") then
vim.api.nvim_create_autocmd("BufWritePre", {
group = vim.api.nvim_create_augroup("LspFormat." .. buf, {}),
buffer = buf,
callback = function()
if M.autoformat then
M.format()
end
end,
})
end
---@param opts PluginLspOpts
function M.setup(opts)
M.opts = opts
vim.api.nvim_create_autocmd("BufWritePre", {
group = vim.api.nvim_create_augroup("LazyVimFormat", {}),
callback = function()
if M.opts.autoformat then
M.format()
end
end,
})
end
return M

View File

@ -5,7 +5,7 @@ return {
event = { "BufReadPre", "BufNewFile" },
dependencies = {
{ "folke/neoconf.nvim", cmd = "Neoconf", config = true },
{ "folke/neodev.nvim", opts = { experimental = { pathStrict = true } } },
{ "folke/neodev.nvim", opts = {} },
"mason.nvim",
"williamboman/mason-lspconfig.nvim",
{
@ -35,6 +35,9 @@ return {
capabilities = {},
-- Automatically format on save
autoformat = true,
-- Enable this to show formatters used in a notification
-- Useful for debugging formatter issues
format_notify = false,
-- options for vim.lsp.buf.format
-- `bufnr` and `filter` is handled by the LazyVim formatter,
-- but can be also overridden when specified
@ -75,11 +78,11 @@ return {
},
---@param opts PluginLspOpts
config = function(_, opts)
local Util = require("lazyvim.util")
-- setup autoformat
require("lazyvim.plugins.lsp.format").autoformat = opts.autoformat
require("lazyvim.plugins.lsp.format").setup(opts)
-- setup formatting and keymaps
require("lazyvim.util").on_attach(function(client, buffer)
require("lazyvim.plugins.lsp.format").on_attach(client, buffer)
Util.on_attach(function(client, buffer)
require("lazyvim.plugins.lsp.keymaps").on_attach(client, buffer)
end)
@ -150,8 +153,15 @@ return {
end
if have_mason then
mlsp.setup({ ensure_installed = ensure_installed })
mlsp.setup_handlers({ setup })
mlsp.setup({ ensure_installed = ensure_installed, handlers = { setup } })
end
if Util.lsp_get_config("denols") and Util.lsp_get_config("tsserver") then
local is_deno = require("lspconfig.util").root_pattern("deno.json", "deno.jsonc")
Util.lsp_disable("tsserver", is_deno)
Util.lsp_disable("denols", function(root_dir)
return not is_deno(root_dir)
end)
end
end,
},

View File

@ -34,7 +34,6 @@ return {
opts = {
highlight = { enable = true },
indent = { enable = true },
context_commentstring = { enable = true, enable_autocmd = false },
ensure_installed = {
"bash",
"c",
@ -60,7 +59,7 @@ return {
keymaps = {
init_selection = "<C-space>",
node_incremental = "<C-space>",
scope_incremental = "<nop>",
scope_incremental = false,
node_decremental = "<bs>",
},
},

View File

@ -8,7 +8,7 @@ return {
function()
require("notify").dismiss({ silent = true, pending = true })
end,
desc = "Delete all Notifications",
desc = "Dismiss all Notifications",
},
},
opts = {
@ -59,6 +59,10 @@ return {
},
opts = {
options = {
-- stylua: ignore
close_command = function(n) require("mini.bufremove").delete(n, false) end,
-- stylua: ignore
right_mouse_command = function(n) require("mini.bufremove").delete(n, false) end,
diagnostics = "nvim_lsp",
always_show_bufferline = false,
diagnostics_indicator = function(_, _, diag)
@ -165,7 +169,18 @@ return {
opts = {
-- char = "▏",
char = "",
filetype_exclude = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy" },
filetype_exclude = {
"help",
"alpha",
"dashboard",
"neo-tree",
"Trouble",
"lazy",
"mason",
"notify",
"toggleterm",
"lazyterm",
},
show_trailing_blankline_indent = false,
show_current_context = false,
},
@ -183,15 +198,23 @@ return {
},
init = function()
vim.api.nvim_create_autocmd("FileType", {
pattern = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason" },
pattern = {
"help",
"alpha",
"dashboard",
"neo-tree",
"Trouble",
"lazy",
"mason",
"notify",
"toggleterm",
"lazyterm",
},
callback = function()
vim.b.miniindentscope_disable = true
end,
})
end,
config = function(_, opts)
require("mini.indentscope").setup(opts)
end,
},
-- noicer ui
@ -214,12 +237,27 @@ return {
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
},
routes = {
{
filter = {
event = "msg_show",
any = {
{ find = "%d+L, %d+B" },
{ find = "; after #%d+" },
{ find = "; before #%d+" },
},
},
view = "mini",
},
},
presets = {
bottom_search = true,
command_palette = true,
long_message_to_split = true,
inc_rename = true,
},
},
-- stylua: ignore
@ -241,12 +279,12 @@ return {
opts = function()
local dashboard = require("alpha.themes.dashboard")
local logo = [[
██╗ █████╗ ███████╗██╗ ██╗██╗ ██╗██╗███╗ ███╗ Z
██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██║ ██║██║████╗ ████║ Z
██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║██║██╔████╔██║ z
██║ ██╔══██║ ███╔╝ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╔╝██║ z
███████╗██║ ██║███████╗ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║
╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝
██╗ █████╗ ███████╗██╗ ██╗██╗ ██╗██╗███╗ ███╗ Z
██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██║ ██║██║████╗ ████║ Z
██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║██║██╔████╔██║ z
██║ ██╔══██║ ███╔╝ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╔╝██║ z
███████╗██║ ██║███████╗ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║
╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝
]]
dashboard.section.header.val = vim.split(logo, "\n")

View File

@ -13,7 +13,7 @@ return {
{
"folke/persistence.nvim",
event = "BufReadPre",
opts = { options = { "buffers", "curdir", "tabpages", "winsize", "help", "globals" } },
opts = { options = { "buffers", "curdir", "tabpages", "winsize", "help", "globals", "skiprtp" } },
-- stylua: ignore
keys = {
{ "<leader>qs", function() require("persistence").load() end, desc = "Restore Session" },

File diff suppressed because it is too large Load Diff

View File

@ -105,21 +105,57 @@ function M.telescope(builtin, opts)
builtin = "find_files"
end
end
if opts.cwd and opts.cwd ~= vim.loop.cwd() then
opts.attach_mappings = function(_, map)
map("i", "<a-c>", function()
local action_state = require("telescope.actions.state")
local line = action_state.get_current_line()
M.telescope(
params.builtin,
vim.tbl_deep_extend("force", {}, params.opts or {}, { cwd = false, default_text = line })
)()
end)
return true
end
end
require("telescope.builtin")[builtin](opts)
end
end
---@type table<string,LazyFloat>
local terminals = {}
-- Opens a floating terminal (interactive by default)
---@param cmd? string[]|string
---@param opts? LazyCmdOptions|{interactive?:boolean, esc_esc?:false}
function M.float_term(cmd, opts)
opts = vim.tbl_deep_extend("force", {
ft = "lazyterm",
size = { width = 0.9, height = 0.9 },
}, opts or {})
local float = require("lazy.util").float_term(cmd, opts)
if opts.esc_esc == false then
vim.keymap.set("t", "<esc>", "<esc>", { buffer = float.buf, nowait = true })
}, opts or {}, { persistent = true })
---@cast opts LazyCmdOptions|{interactive?:boolean, esc_esc?:false}
local termkey = vim.inspect({ cmd = cmd or "shell", cwd = opts.cwd, env = opts.env })
if terminals[termkey] and terminals[termkey]:buf_valid() then
terminals[termkey]:toggle()
else
terminals[termkey] = require("lazy.util").float_term(cmd, opts)
local buf = terminals[termkey].buf
vim.b[buf].lazyterm_cmd = cmd
if opts.esc_esc == false then
vim.keymap.set("t", "<esc>", "<esc>", { buffer = buf, nowait = true })
end
vim.api.nvim_create_autocmd("BufEnter", {
buffer = buf,
callback = function()
vim.cmd.startinsert()
end,
})
end
return terminals[termkey]
end
---@param silent boolean?
@ -196,4 +232,21 @@ function M.lazy_notify()
timer:start(500, 0, replay)
end
function M.lsp_get_config(server)
local configs = require("lspconfig.configs")
return rawget(configs, server)
end
---@param server string
---@param cond fun( root_dir, config): boolean
function M.lsp_disable(server, cond)
local util = require("lspconfig.util")
local def = M.lsp_get_config(server)
def.document_config.on_new_config = util.add_hook_before(def.document_config.on_new_config, function(config, root_dir)
if cond(root_dir, config) then
config.enabled = false
end
end)
end
return M