mirror of
https://github.com/LazyVim/LazyVim.git
synced 2026-07-25 14:01:06 +00:00
Merge branch 'main' into patch-2
This commit is contained in:
commit
6767e77cb9
40 changed files with 667 additions and 469 deletions
2
.github/.release-please-manifest.json
vendored
2
.github/.release-please-manifest.json
vendored
|
|
@ -1,3 +1,3 @@
|
||||||
{
|
{
|
||||||
".": "13.9.0"
|
".": "14.1.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
88
CHANGELOG.md
88
CHANGELOG.md
|
|
@ -1,5 +1,93 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [14.1.0](https://github.com/LazyVim/LazyVim/compare/v14.0.2...v14.1.0) (2024-12-13)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **blink:** use block vs. icon for colors ([#5037](https://github.com/LazyVim/LazyVim/issues/5037)) ([4488cb2](https://github.com/LazyVim/LazyVim/commit/4488cb24f72e04dd5adb2e7c0388a51c2b36f4f0))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **blink:** add backward compat for config ([1517ec9](https://github.com/LazyVim/LazyVim/commit/1517ec9bb46b454d253186aff5e5abd41e96d723))
|
||||||
|
|
||||||
|
## [14.0.2](https://github.com/LazyVim/LazyVim/compare/v14.0.1...v14.0.2) (2024-12-13)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **cmp:** disable nvim-cmp/blink.cmp when needed ([60b7704](https://github.com/LazyVim/LazyVim/commit/60b77045d57d5473e50042b9b879c9c1054e6a10))
|
||||||
|
* **cmp:** wrong extras check for nvim-cmp ([009e358](https://github.com/LazyVim/LazyVim/commit/009e3587be1badc04c9a8b8b459e8555b405509c))
|
||||||
|
|
||||||
|
## [14.0.1](https://github.com/LazyVim/LazyVim/compare/v14.0.0...v14.0.1) (2024-12-13)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **NEWS:** typo ([0fd7140](https://github.com/LazyVim/LazyVim/commit/0fd7140a6de936edb27a4ba4f4825153ae801c21))
|
||||||
|
|
||||||
|
## [14.0.0](https://github.com/LazyVim/LazyVim/compare/v13.9.1...v14.0.0) (2024-12-13)
|
||||||
|
|
||||||
|
|
||||||
|
### ⚠ BREAKING CHANGES
|
||||||
|
|
||||||
|
* **cmp:** moved `nvim-cmp` to extras and prefer `blink.cmp` on Neovim >= `0.10` as default completion engine
|
||||||
|
* **cmp:** moved `nvim-cmp` to extras and prefer `blink.cmp` on Neovim >= `0.10` as default completion engine
|
||||||
|
* **snacks:** use `snacks.scope` indent objects in favor of custom `mini.ai` indent objects
|
||||||
|
* **snacks:** use `snacks.indent` and moved `indent-blankline` to extras
|
||||||
|
* **pick:** make fzf the default picker for LazyVim
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **cmp:** moved `nvim-cmp` to extras and prefer `blink.cmp` on Neovim >= `0.10` as default completion engine ([152f9d1](https://github.com/LazyVim/LazyVim/commit/152f9d113fa2b4fc2af72d2846c4dd68c31b7596))
|
||||||
|
* **cmp:** moved `nvim-cmp` to extras and prefer `blink.cmp` on Neovim >= `0.10` as default completion engine ([2cbfb9b](https://github.com/LazyVim/LazyVim/commit/2cbfb9b6b7b9b4bb1c9ce94ad02ab0a851310fc0))
|
||||||
|
* **keymaps:** added leader-uD to toggle dim mode ([9b97388](https://github.com/LazyVim/LazyVim/commit/9b973882b8bcbab32f850da7c553cdc6388af4ad))
|
||||||
|
* **keymaps:** added leader-z to toggle zen mode ([e6d6a09](https://github.com/LazyVim/LazyVim/commit/e6d6a096b34ad887b9f954a3f43bcc3fd7833f73))
|
||||||
|
* **keymaps:** added leader-Z to toggle zoom ([f2e1cac](https://github.com/LazyVim/LazyVim/commit/f2e1cac965e41d7761073856b11bea223cac1e4d))
|
||||||
|
* **lualine:** add snacks profiler status ([7bc8490](https://github.com/LazyVim/LazyVim/commit/7bc8490d46e002d624f45037fc507e8dd10d4b70))
|
||||||
|
* **pick:** make fzf the default picker for LazyVim ([ae2340f](https://github.com/LazyVim/LazyVim/commit/ae2340f60a012df125c87fe46e6d98d0be04bd10))
|
||||||
|
* **rust:** exclude bad directories from rust-analyzer ([#5021](https://github.com/LazyVim/LazyVim/issues/5021)) ([94f6df0](https://github.com/LazyVim/LazyVim/commit/94f6df048fbecfdf2f65ab96156b713555df40dc))
|
||||||
|
* **snacks:** added `snacks.input` ([54bece1](https://github.com/LazyVim/LazyVim/commit/54bece17b390453ea0beac41e419394d5e0d69ff))
|
||||||
|
* **snacks:** added leader-ua to toggle global animations ([303980d](https://github.com/LazyVim/LazyVim/commit/303980d267577972bb12e34ef152a0e8b9a953e2))
|
||||||
|
* **snacks:** added leader-ug to toggle indent guides ([b3ac642](https://github.com/LazyVim/LazyVim/commit/b3ac642317cd60e9b35869068dd74fe779a22146))
|
||||||
|
* **snacks:** added leader-uS to toggle scroll ([cded8d4](https://github.com/LazyVim/LazyVim/commit/cded8d4d2808250db5ea864fb8e479fd8b5a4a2c))
|
||||||
|
* **snacks:** added profiler keymaps ([a8332c6](https://github.com/LazyVim/LazyVim/commit/a8332c6d50106cf35e45953cdaa463cbb6c5b085))
|
||||||
|
* **snacks:** enable `snacks.scroll` ([1a1a484](https://github.com/LazyVim/LazyVim/commit/1a1a48497c53e232b0f525baab87d5f23a2205b2))
|
||||||
|
* **snacks:** use `snacks.indent` and moved `indent-blankline` to extras ([94fdc42](https://github.com/LazyVim/LazyVim/commit/94fdc421a11b960e116888658dd9b2b85c3b58fc))
|
||||||
|
* **snacks:** use `snacks.scope` indent objects in favor of custom `mini.ai` indent objects ([d904a1e](https://github.com/LazyVim/LazyVim/commit/d904a1ef47638e4defede775a7f0966fb8e0a2b4))
|
||||||
|
* **snacks:** use `Snacks.zen.zoom()` instead of custom **maximize** ([e389a5a](https://github.com/LazyVim/LazyVim/commit/e389a5ada955c253771ff5c9f8301e2f17c206d2))
|
||||||
|
* **which-key:** make `helix` the default which-key preset ([44c712a](https://github.com/LazyVim/LazyVim/commit/44c712aa31e7e05971259841e1f87c9f3d9c6cd5))
|
||||||
|
* **zen:** zoom with leader-wm and leader-uZ. zen with leader-uz ([2acedaa](https://github.com/LazyVim/LazyVim/commit/2acedaa3a8312e53d84a299bd82d616e1c26328a))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **blink:** disable cmdline integration for now since it doesn't work well with the enter keymap ([20eff4f](https://github.com/LazyVim/LazyVim/commit/20eff4fc3f55fbeb1e415f0cc5a2d1f3019e5da6))
|
||||||
|
* **blink:** remove unneeded code ([d95e530](https://github.com/LazyVim/LazyVim/commit/d95e530c02cbb2bcf36da5bb3e235780bdf6d239))
|
||||||
|
* **blink:** unset provider.kind ([#5024](https://github.com/LazyVim/LazyVim/issues/5024)) ([29c4dea](https://github.com/LazyVim/LazyVim/commit/29c4dea4e75b82ad4b06c21e360eefa3951a3fba))
|
||||||
|
* **blink:** unset sources.compat. Fixes [#5016](https://github.com/LazyVim/LazyVim/issues/5016). Closes [#5017](https://github.com/LazyVim/LazyVim/issues/5017) ([2946031](https://github.com/LazyVim/LazyVim/commit/29460318f302b6dceaf16bd06c45cb3ed58d5fd8))
|
||||||
|
* **clangd:** avoid nil-indexing the completion sorting comparators ([#5011](https://github.com/LazyVim/LazyVim/issues/5011)) ([c4b0d6d](https://github.com/LazyVim/LazyVim/commit/c4b0d6d0d1ee11c07c0ab4ed3f87f97b76a6f592))
|
||||||
|
* **clangd:** nvim-cmp optional ([94be6fb](https://github.com/LazyVim/LazyVim/commit/94be6fb78786e9a53e914db9d5cfab09b13225ba))
|
||||||
|
* **copliot:** restructure copilot-cmp spec ([34d2bdc](https://github.com/LazyVim/LazyVim/commit/34d2bdcac6fabe5d02e157bffa3475391ca1f7ec))
|
||||||
|
* fqn for nvim-cmp ([a9a273d](https://github.com/LazyVim/LazyVim/commit/a9a273d041e2dd0e5654b5b492fd29138259fe68))
|
||||||
|
* **git:** make nvim-cmp optional for the git extra ([ec92fa8](https://github.com/LazyVim/LazyVim/commit/ec92fa85586b4082f04b30ad94cb98b24463665e))
|
||||||
|
* **java:** only setup debug adapter config if mason is installed ([#5013](https://github.com/LazyVim/LazyVim/issues/5013)) ([aad0edb](https://github.com/LazyVim/LazyVim/commit/aad0edbf749bcbe16e9ef8d2a65a19dd3fe2bd87))
|
||||||
|
* **java:** only setup debug adapter config if mason is installed (for real this time) ([#5014](https://github.com/LazyVim/LazyVim/issues/5014)) ([5b1b6b2](https://github.com/LazyVim/LazyVim/commit/5b1b6b29d717adeffb0528cffef9f1a3972d3701))
|
||||||
|
* **java:** only use mason-registry if mason installed ([#4991](https://github.com/LazyVim/LazyVim/issues/4991)) ([21b02f0](https://github.com/LazyVim/LazyVim/commit/21b02f056d924d0a3cb3513b163e3dbdfa9c15ec))
|
||||||
|
* **mini.animate:** disable `snacks.scroll` when `mini.animate` is enabled ([9b07544](https://github.com/LazyVim/LazyVim/commit/9b07544e89ecead354ef0f17ebc3127f3fa5bbd8))
|
||||||
|
* **mini.indentscope:** disable snacks and indent-blankline scope ([98c77f1](https://github.com/LazyVim/LazyVim/commit/98c77f1de479b12bc29dc8339fbfe694959d99ed))
|
||||||
|
* **nvim-cmp:** set high prio for loading the nvim-cmp extra to prevent issues with opts ([adf8db6](https://github.com/LazyVim/LazyVim/commit/adf8db69ed91f8c15fe3cf37df9dc0801dbaeb39))
|
||||||
|
* **nvim-cmp:** specs ([88e77b0](https://github.com/LazyVim/LazyVim/commit/88e77b0e2439a27d06e95e89839227f1e9446c74))
|
||||||
|
* **ui:** use `Snacks.util.color` instead of `LazyVim.ui.fg` ([6d774ba](https://github.com/LazyVim/LazyVim/commit/6d774ba8f21f87aaa8bf9dbeb0a84b747541b349))
|
||||||
|
|
||||||
|
## [13.9.1](https://github.com/LazyVim/LazyVim/compare/v13.9.0...v13.9.1) (2024-12-12)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **blink:** set kind to int, not string, if overriding ([#4999](https://github.com/LazyVim/LazyVim/issues/4999)) ([cee60a6](https://github.com/LazyVim/LazyVim/commit/cee60a6d3040181ac9c5b709d79e80e180b34d48))
|
||||||
|
|
||||||
## [13.9.0](https://github.com/LazyVim/LazyVim/compare/v13.8.0...v13.9.0) (2024-12-11)
|
## [13.9.0](https://github.com/LazyVim/LazyVim/compare/v13.8.0...v13.9.0) (2024-12-11)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
61
NEWS.md
61
NEWS.md
|
|
@ -1,5 +1,60 @@
|
||||||
# What's new?
|
# What's new?
|
||||||
|
|
||||||
|
## 14.x
|
||||||
|
|
||||||
|
Big new release with a lot of changes and improvements!
|
||||||
|
Two new plugins have been added, and a lot of plugins have been replaced.
|
||||||
|
With these changes, default **LazyVim** is now just `34` plugins.
|
||||||
|
|
||||||
|
### Added Plugins
|
||||||
|
|
||||||
|
- [fzf-lua](https://github.com/ibhagwan/fzf-lua) as a replacement for [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim)
|
||||||
|
- to use **telescope.nvim** instead, enable the `editor.telescope` extra
|
||||||
|
- [blink.cmp](https://github.com/saghen/blink.cmp) as a replacement for [nvim-cmp](https://github.com/hrsh7th/nvim-cmp)
|
||||||
|
- to use **nvim-cmp** instead, enable the `coding.nvim-cmp` extra
|
||||||
|
|
||||||
|
### Removed Plugins
|
||||||
|
|
||||||
|
- [dressing.nvim](https://github.com/stevearc/dressing.nvim) (replaced with [fzf-lua](https://github.com/ibhagwan/fzf-lua) and [snacks.input](https://github.com/folke/snacks.nvim))
|
||||||
|
- [telescope-fzf-native.nvim](https://github.com/nvim-telescope/telescope-fzf-native.nvim) (replaced with [fzf-lua](https://github.com/ibhagwan/fzf-lua))
|
||||||
|
- [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) (replaced with [fzf-lua](https://github.com/ibhagwan/fzf-lua))
|
||||||
|
- [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) (replaced with [snacks.indent](https://github.com/Folke/snacks.nvim))
|
||||||
|
- to use **indent-blankline.nvim** instead, enable the `indent-blankline` extra
|
||||||
|
- [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
- [nvim-snippets](https://github.com/hrsh7th/vim-vsnip) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
- [cmp-buffer](https://github.com/hrsh7th/cmp-buffer) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
- [cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
- [cmp-path](https://github.com/hrsh7th/cmp-path) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
- added [`snacks.input`](https://github.com/folke/snacks.nvim/blob/main/docs/input.md)
|
||||||
|
- added [`snacks.scroll`](https://github.com/folke/snacks.nvim/blob/main/docs/scroll.md)
|
||||||
|
- added [`snacks.indent`](https://github.com/folke/snacks.nvim/blob/main/docs/indent.md)
|
||||||
|
- added [`snacks.scope`](https://github.com/folke/snacks.nvim/blob/main/docs/scope.md)
|
||||||
|
- added [`snacks.dim`](https://github.com/folke/snacks.nvim/blob/main/docs/dim.md)
|
||||||
|
- added [`snacks.zen`](https://github.com/folke/snacks.nvim/blob/main/docs/zen.md)
|
||||||
|
- changed default [`which-key`](https://github.com/folke/which-key.nvim) preset to `helix`
|
||||||
|
- drop `LazyVim.ui.fg` in favor of [`Snacks.util.color`](https://github.com/folke/snacks.nvim/blob/main/docs/util.md)
|
||||||
|
|
||||||
|
To disable **all animations**, add the following to your `options.lua`:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
vim.g.snacks_animate = false
|
||||||
|
```
|
||||||
|
|
||||||
|
### Keymaps
|
||||||
|
|
||||||
|
- `<leader>uz` to toggle [zen mode](https://github.com/folke/snacks.nvim/blob/main/docs/zen.md)
|
||||||
|
- `<leader>uZ` & `<leader>wm` to toggle [zoom mode](https://github.com/folke/snacks.nvim/blob/main/docs/zen.md)
|
||||||
|
- `<leader>uD` to toggle [dimming](https://github.com/folke/snacks.nvim/blob/main/docs/dim.md)
|
||||||
|
- `<leader>ua` to toggle [animations](https://github.com/folke/snacks.nvim/blob/main/docs/animate.md)
|
||||||
|
- `<leader>uS` to toggle [scroll](https://github.com/folke/snacks.nvim/blob/main/docs/scroll.md)
|
||||||
|
- `<leader>ug` to toggle [indent guides](https://github.com/folke/snacks.nvim/blob/main/docs/indent.md)
|
||||||
|
- [`snacks.profiler`](https://github.com/folke/snacks.nvim/blob/main/docs/profiler.md) keymaps under `<leader>dp`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 13.x
|
## 13.x
|
||||||
|
|
||||||
- **LazyVim** now uses `Snacks.dashboard` as the default dashboard.
|
- **LazyVim** now uses `Snacks.dashboard` as the default dashboard.
|
||||||
|
|
@ -21,6 +76,8 @@
|
||||||
- `Snacks.terminal` is similar to `lazyterm`, but has more features
|
- `Snacks.terminal` is similar to `lazyterm`, but has more features
|
||||||
and creates bottom splits by default (similar to the `edgy` integrating)
|
and creates bottom splits by default (similar to the `edgy` integrating)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 12.x
|
## 12.x
|
||||||
|
|
||||||
- **Markdown Extra**: [headlines.nvim](https://github.com/lukas-reineke/headlines.nvim) has been removed in favor of [markdown.nvim](https://github.com/MeanderingProgrammer/markdown.nvim)
|
- **Markdown Extra**: [headlines.nvim](https://github.com/lukas-reineke/headlines.nvim) has been removed in favor of [markdown.nvim](https://github.com/MeanderingProgrammer/markdown.nvim)
|
||||||
|
|
@ -48,6 +105,8 @@
|
||||||
- moved `neoconf.nvim` to extras. Project specific LSP settings
|
- moved `neoconf.nvim` to extras. Project specific LSP settings
|
||||||
can be done with a `.lazy.lua` file instead.
|
can be done with a `.lazy.lua` file instead.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 11.x
|
## 11.x
|
||||||
|
|
||||||
- **Keymaps:**
|
- **Keymaps:**
|
||||||
|
|
@ -107,6 +166,8 @@ Additionally, some core plugins have been moved to extras.
|
||||||
- `mini.indentscope` scopes are now also highlighted with `indent-blankline`
|
- `mini.indentscope` scopes are now also highlighted with `indent-blankline`
|
||||||
- `nvim-treesitter-context`
|
- `nvim-treesitter-context`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 10.x
|
## 10.x
|
||||||
|
|
||||||
- added new extra for [mini.diff](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-diff.md)
|
- added new extra for [mini.diff](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-diff.md)
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ LazyVim 是一个基于 [💤 lazy.nvim](https://github.com/folke/lazy.nvim) 的
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker run -w /root -it --rm alpine:edge sh -uelic '
|
docker run -w /root -it --rm alpine:edge sh -uelic '
|
||||||
apk add git lazygit neovim ripgrep alpine-sdk --update
|
apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
|
||||||
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
||||||
cd ~/.config/nvim
|
cd ~/.config/nvim
|
||||||
nvim
|
nvim
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ Sie können eine Startvorlage für **LazyVim** [hier](https://github.com/LazyVim
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker run -w /root -it --rm alpine:edge sh -uelic '
|
docker run -w /root -it --rm alpine:edge sh -uelic '
|
||||||
apk add git lazygit neovim ripgrep alpine-sdk --update
|
apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
|
||||||
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
||||||
cd ~/.config/nvim
|
cd ~/.config/nvim
|
||||||
nvim
|
nvim
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ LazyVimは、ゼロから始めるか、あらかじめ作成されたディス
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker run -w /root -it --rm alpine:edge sh -uelic '
|
docker run -w /root -it --rm alpine:edge sh -uelic '
|
||||||
apk add git lazygit neovim ripgrep alpine-sdk --update
|
apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
|
||||||
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
||||||
cd ~/.config/nvim
|
cd ~/.config/nvim
|
||||||
nvim
|
nvim
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ LazyVim은 [💤 lazy.nvim](https://github.com/folke/lazy.nvim)를 기반으로
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker run -w /root -it --rm alpine:edge sh -uelic '
|
docker run -w /root -it --rm alpine:edge sh -uelic '
|
||||||
apk add git lazygit neovim ripgrep alpine-sdk --update
|
apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
|
||||||
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
||||||
cd ~/.config/nvim
|
cd ~/.config/nvim
|
||||||
nvim
|
nvim
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ Podes encontrar uma template **LazyVim** starter para começar, [aqui](https://g
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker run -w /root -it --rm alpine:edge sh -uelic '
|
docker run -w /root -it --rm alpine:edge sh -uelic '
|
||||||
apk add git lazygit neovim ripgrep alpine-sdk --update
|
apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
|
||||||
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
||||||
cd ~/.config/nvim
|
cd ~/.config/nvim
|
||||||
nvim
|
nvim
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ You can find a starter template for **LazyVim** [here](https://github.com/LazyVi
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker run -w /root -it --rm alpine:edge sh -uelic '
|
docker run -w /root -it --rm alpine:edge sh -uelic '
|
||||||
apk add git lazygit neovim ripgrep alpine-sdk --update
|
apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
|
||||||
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
||||||
cd ~/.config/nvim
|
cd ~/.config/nvim
|
||||||
nvim
|
nvim
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
*LazyVim.txt* For Neovim Last change: 2024 December 12
|
*LazyVim.txt* For Neovim Last change: 2024 December 13
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
Table of Contents *LazyVim-table-of-contents*
|
Table of Contents *LazyVim-table-of-contents*
|
||||||
|
|
@ -68,7 +68,7 @@ Try it with Docker ~
|
||||||
|
|
||||||
>sh
|
>sh
|
||||||
docker run -w /root -it --rm alpine:edge sh -uelic '
|
docker run -w /root -it --rm alpine:edge sh -uelic '
|
||||||
apk add git lazygit neovim ripgrep alpine-sdk --update
|
apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
|
||||||
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
||||||
cd ~/.config/nvim
|
cd ~/.config/nvim
|
||||||
nvim
|
nvim
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util")
|
||||||
---@class LazyVimConfig: LazyVimOptions
|
---@class LazyVimConfig: LazyVimOptions
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
M.version = "13.9.0" -- x-release-please-version
|
M.version = "14.1.0" -- x-release-please-version
|
||||||
LazyVim.config = M
|
LazyVim.config = M
|
||||||
|
|
||||||
---@class LazyVimOptions
|
---@class LazyVimOptions
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,15 @@ Snacks.toggle.line_number():map("<leader>ul")
|
||||||
Snacks.toggle.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2, name = "Conceal Level" }):map("<leader>uc")
|
Snacks.toggle.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2, name = "Conceal Level" }):map("<leader>uc")
|
||||||
Snacks.toggle.option("showtabline", { off = 0, on = vim.o.showtabline > 0 and vim.o.showtabline or 2, name = "Tabline" }):map("<leader>uA")
|
Snacks.toggle.option("showtabline", { off = 0, on = vim.o.showtabline > 0 and vim.o.showtabline or 2, name = "Tabline" }):map("<leader>uA")
|
||||||
Snacks.toggle.treesitter():map("<leader>uT")
|
Snacks.toggle.treesitter():map("<leader>uT")
|
||||||
|
|
||||||
Snacks.toggle.option("background", { off = "light", on = "dark" , name = "Dark Background" }):map("<leader>ub")
|
Snacks.toggle.option("background", { off = "light", on = "dark" , name = "Dark Background" }):map("<leader>ub")
|
||||||
|
Snacks.toggle.dim():map("<leader>uD")
|
||||||
|
Snacks.toggle.animate():map("<leader>ua")
|
||||||
|
Snacks.toggle.indent():map("<leader>ug")
|
||||||
|
Snacks.toggle.scroll():map("<leader>uS")
|
||||||
|
Snacks.toggle.profiler():map("<leader>dpp")
|
||||||
|
Snacks.toggle.profiler_highlights():map("<leader>dph")
|
||||||
|
|
||||||
if vim.lsp.inlay_hint then
|
if vim.lsp.inlay_hint then
|
||||||
Snacks.toggle.inlay_hints():map("<leader>uh")
|
Snacks.toggle.inlay_hints():map("<leader>uh")
|
||||||
end
|
end
|
||||||
|
|
@ -175,7 +183,8 @@ map("n", "<leader>w", "<c-w>", { desc = "Windows", remap = true })
|
||||||
map("n", "<leader>-", "<C-W>s", { desc = "Split Window Below", 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 })
|
map("n", "<leader>|", "<C-W>v", { desc = "Split Window Right", remap = true })
|
||||||
map("n", "<leader>wd", "<C-W>c", { desc = "Delete Window", remap = true })
|
map("n", "<leader>wd", "<C-W>c", { desc = "Delete Window", remap = true })
|
||||||
LazyVim.ui.maximize():map("<leader>wm")
|
Snacks.toggle.zoom():map("<leader>wm"):map("<leader>uZ")
|
||||||
|
Snacks.toggle.zen():map("<leader>uz")
|
||||||
|
|
||||||
-- tabs
|
-- tabs
|
||||||
map("n", "<leader><tab>l", "<cmd>tablast<cr>", { desc = "Last Tab" })
|
map("n", "<leader><tab>l", "<cmd>tablast<cr>", { desc = "Last Tab" })
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,22 @@ vim.g.maplocalleader = "\\"
|
||||||
-- LazyVim auto format
|
-- LazyVim auto format
|
||||||
vim.g.autoformat = true
|
vim.g.autoformat = true
|
||||||
|
|
||||||
|
-- Snacks animations
|
||||||
|
-- Set to `false` to globally disable all snacks animations
|
||||||
|
vim.g.snacks_animate = true
|
||||||
|
|
||||||
-- LazyVim picker to use.
|
-- LazyVim picker to use.
|
||||||
-- Can be one of: telescope, fzf
|
-- Can be one of: telescope, fzf
|
||||||
-- Leave it to "auto" to automatically use the picker
|
-- Leave it to "auto" to automatically use the picker
|
||||||
-- enabled with `:LazyExtras`
|
-- enabled with `:LazyExtras`
|
||||||
vim.g.lazyvim_picker = "auto"
|
vim.g.lazyvim_picker = "auto"
|
||||||
|
|
||||||
|
-- LazyVim completion engine to use.
|
||||||
|
-- Can be one of: nvim-cmp, blink.cmp
|
||||||
|
-- Leave it to "auto" to automatically use the completion engine
|
||||||
|
-- enabled with `:LazyExtras`
|
||||||
|
vim.g.lazyvim_cmp = "auto"
|
||||||
|
|
||||||
-- if the completion engine supports the AI source,
|
-- if the completion engine supports the AI source,
|
||||||
-- use that instead of inline suggestions
|
-- use that instead of inline suggestions
|
||||||
vim.g.ai_cmp = true
|
vim.g.ai_cmp = true
|
||||||
|
|
|
||||||
|
|
@ -1,113 +1,14 @@
|
||||||
return {
|
return {
|
||||||
|
|
||||||
-- auto completion
|
|
||||||
{
|
{
|
||||||
"hrsh7th/nvim-cmp",
|
import = "lazyvim.plugins.extras.coding.nvim-cmp",
|
||||||
version = false, -- last release is way too old
|
enabled = function()
|
||||||
event = "InsertEnter",
|
return LazyVim.cmp_engine() == "nvim-cmp"
|
||||||
dependencies = {
|
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
|
||||||
"hrsh7th/cmp-buffer",
|
|
||||||
"hrsh7th/cmp-path",
|
|
||||||
},
|
|
||||||
-- Not all LSP servers add brackets when completing a function.
|
|
||||||
-- To better deal with this, LazyVim adds a custom option to cmp,
|
|
||||||
-- that you can configure. For example:
|
|
||||||
--
|
|
||||||
-- ```lua
|
|
||||||
-- opts = {
|
|
||||||
-- auto_brackets = { "python" }
|
|
||||||
-- }
|
|
||||||
-- ```
|
|
||||||
opts = function()
|
|
||||||
vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true })
|
|
||||||
local cmp = require("cmp")
|
|
||||||
local defaults = require("cmp.config.default")()
|
|
||||||
local auto_select = true
|
|
||||||
return {
|
|
||||||
auto_brackets = {}, -- configure any filetype to auto add brackets
|
|
||||||
completion = {
|
|
||||||
completeopt = "menu,menuone,noinsert" .. (auto_select and "" or ",noselect"),
|
|
||||||
},
|
|
||||||
preselect = auto_select and cmp.PreselectMode.Item or cmp.PreselectMode.None,
|
|
||||||
mapping = cmp.mapping.preset.insert({
|
|
||||||
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
|
||||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
|
||||||
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
|
||||||
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
|
||||||
["<C-Space>"] = cmp.mapping.complete(),
|
|
||||||
["<CR>"] = LazyVim.cmp.confirm({ select = auto_select }),
|
|
||||||
["<C-y>"] = LazyVim.cmp.confirm({ select = true }),
|
|
||||||
["<S-CR>"] = LazyVim.cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
|
||||||
["<C-CR>"] = function(fallback)
|
|
||||||
cmp.abort()
|
|
||||||
fallback()
|
|
||||||
end,
|
|
||||||
["<tab>"] = function(fallback)
|
|
||||||
return LazyVim.cmp.map({ "snippet_forward", "ai_accept" }, fallback)()
|
|
||||||
end,
|
|
||||||
}),
|
|
||||||
sources = cmp.config.sources({
|
|
||||||
{ name = "nvim_lsp" },
|
|
||||||
{ name = "path" },
|
|
||||||
}, {
|
|
||||||
{ name = "buffer" },
|
|
||||||
}),
|
|
||||||
formatting = {
|
|
||||||
format = function(entry, item)
|
|
||||||
local icons = LazyVim.config.icons.kinds
|
|
||||||
if icons[item.kind] then
|
|
||||||
item.kind = icons[item.kind] .. item.kind
|
|
||||||
end
|
|
||||||
|
|
||||||
local widths = {
|
|
||||||
abbr = vim.g.cmp_widths and vim.g.cmp_widths.abbr or 40,
|
|
||||||
menu = vim.g.cmp_widths and vim.g.cmp_widths.menu or 30,
|
|
||||||
}
|
|
||||||
|
|
||||||
for key, width in pairs(widths) do
|
|
||||||
if item[key] and vim.fn.strdisplaywidth(item[key]) > width then
|
|
||||||
item[key] = vim.fn.strcharpart(item[key], 0, width - 1) .. "…"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return item
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
experimental = {
|
|
||||||
-- only show ghost text when we show ai completions
|
|
||||||
ghost_text = vim.g.ai_cmp and {
|
|
||||||
hl_group = "CmpGhostText",
|
|
||||||
} or false,
|
|
||||||
},
|
|
||||||
sorting = defaults.sorting,
|
|
||||||
}
|
|
||||||
end,
|
end,
|
||||||
main = "lazyvim.util.cmp",
|
|
||||||
},
|
},
|
||||||
|
|
||||||
-- snippets
|
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
import = "lazyvim.plugins.extras.coding.blink",
|
||||||
optional = true,
|
enabled = function()
|
||||||
dependencies = {
|
return LazyVim.cmp_engine() == "blink.cmp"
|
||||||
{
|
|
||||||
"garymjr/nvim-snippets",
|
|
||||||
opts = {
|
|
||||||
friendly_snippets = true,
|
|
||||||
},
|
|
||||||
dependencies = { "rafamadriz/friendly-snippets" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
opts = function(_, opts)
|
|
||||||
opts.snippet = {
|
|
||||||
expand = function(item)
|
|
||||||
return LazyVim.cmp.expand(item.body)
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
if LazyVim.has("nvim-snippets") then
|
|
||||||
table.insert(opts.sources, { name = "snippets" })
|
|
||||||
end
|
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -160,7 +61,6 @@ return {
|
||||||
{ "%u[%l%d]+%f[^%l%d]", "%f[%S][%l%d]+%f[^%l%d]", "%f[%P][%l%d]+%f[^%l%d]", "^[%l%d]+%f[^%l%d]" },
|
{ "%u[%l%d]+%f[^%l%d]", "%f[%S][%l%d]+%f[^%l%d]", "%f[%P][%l%d]+%f[^%l%d]", "^[%l%d]+%f[^%l%d]" },
|
||||||
"^().*()$",
|
"^().*()$",
|
||||||
},
|
},
|
||||||
i = LazyVim.mini.ai_indent, -- indent
|
|
||||||
g = LazyVim.mini.ai_buffer, -- buffer
|
g = LazyVim.mini.ai_buffer, -- buffer
|
||||||
u = ai.gen_spec.function_call(), -- u for "Usage"
|
u = ai.gen_spec.function_call(), -- u for "Usage"
|
||||||
U = ai.gen_spec.function_call({ name_pattern = "[%w_]" }), -- without dot in function name
|
U = ai.gen_spec.function_call({ name_pattern = "[%w_]" }), -- without dot in function name
|
||||||
|
|
@ -190,12 +90,4 @@ return {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
-- Add lazydev source to cmp
|
|
||||||
{
|
|
||||||
"hrsh7th/nvim-cmp",
|
|
||||||
optional = true,
|
|
||||||
opts = function(_, opts)
|
|
||||||
table.insert(opts.sources, { name = "lazydev", group_index = 0 })
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,9 @@ return {
|
||||||
{ "garymjr/nvim-snippets", enabled = false },
|
{ "garymjr/nvim-snippets", enabled = false },
|
||||||
{ import = "lazyvim.plugins.extras.coding.luasnip" },
|
{ import = "lazyvim.plugins.extras.coding.luasnip" },
|
||||||
|
|
||||||
|
-- Use nvim-cmp instead of blink.cmp
|
||||||
|
{ import = "lazyvim.plugins.extras.coding.nvim-cmp" },
|
||||||
|
|
||||||
-- Use mini.comment instead of ts-comments
|
-- Use mini.comment instead of ts-comments
|
||||||
{ "folke/ts-comments.nvim", enabled = false },
|
{ "folke/ts-comments.nvim", enabled = false },
|
||||||
{ import = "lazyvim.plugins.extras.coding.mini-comment" },
|
{ import = "lazyvim.plugins.extras.coding.mini-comment" },
|
||||||
|
|
|
||||||
|
|
@ -176,12 +176,15 @@ return {
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
opts_extend = { "spec" },
|
opts_extend = { "spec" },
|
||||||
opts = {
|
opts = {
|
||||||
|
preset = "helix",
|
||||||
defaults = {},
|
defaults = {},
|
||||||
spec = {
|
spec = {
|
||||||
{
|
{
|
||||||
mode = { "n", "v" },
|
mode = { "n", "v" },
|
||||||
{ "<leader><tab>", group = "tabs" },
|
{ "<leader><tab>", group = "tabs" },
|
||||||
{ "<leader>c", group = "code" },
|
{ "<leader>c", group = "code" },
|
||||||
|
{ "<leader>d", group = "debug" },
|
||||||
|
{ "<leader>dp", group = "profiler" },
|
||||||
{ "<leader>f", group = "file/find" },
|
{ "<leader>f", group = "file/find" },
|
||||||
{ "<leader>g", group = "git" },
|
{ "<leader>g", group = "git" },
|
||||||
{ "<leader>gh", group = "hunks" },
|
{ "<leader>gh", group = "hunks" },
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ return {
|
||||||
|
|
||||||
-- codeium cmp source
|
-- codeium cmp source
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
optional = true,
|
optional = true,
|
||||||
dependencies = { "codeium.nvim" },
|
dependencies = { "codeium.nvim" },
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
|
|
|
||||||
|
|
@ -58,57 +58,59 @@ return {
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- copilot cmp source
|
vim.g.ai_cmp
|
||||||
{
|
and {
|
||||||
"nvim-cmp",
|
-- copilot cmp source
|
||||||
optional = true,
|
{
|
||||||
dependencies = { -- this will only be evaluated if nvim-cmp is enabled
|
"hrsh7th/nvim-cmp",
|
||||||
{
|
optional = true,
|
||||||
"zbirenbaum/copilot-cmp",
|
dependencies = { -- this will only be evaluated if nvim-cmp is enabled
|
||||||
enabled = vim.g.ai_cmp, -- only enable if wanted
|
{
|
||||||
opts = {},
|
"zbirenbaum/copilot-cmp",
|
||||||
config = function(_, opts)
|
opts = {},
|
||||||
local copilot_cmp = require("copilot_cmp")
|
config = function(_, opts)
|
||||||
copilot_cmp.setup(opts)
|
local copilot_cmp = require("copilot_cmp")
|
||||||
-- attach cmp source whenever copilot attaches
|
copilot_cmp.setup(opts)
|
||||||
-- fixes lazy-loading issues with the copilot cmp source
|
-- attach cmp source whenever copilot attaches
|
||||||
LazyVim.lsp.on_attach(function()
|
-- fixes lazy-loading issues with the copilot cmp source
|
||||||
copilot_cmp._on_insert_enter({})
|
LazyVim.lsp.on_attach(function()
|
||||||
end, "copilot")
|
copilot_cmp._on_insert_enter({})
|
||||||
end,
|
end, "copilot")
|
||||||
specs = {
|
end,
|
||||||
{
|
specs = {
|
||||||
"nvim-cmp",
|
{
|
||||||
optional = true,
|
"hrsh7th/nvim-cmp",
|
||||||
---@param opts cmp.ConfigSchema
|
optional = true,
|
||||||
opts = function(_, opts)
|
---@param opts cmp.ConfigSchema
|
||||||
table.insert(opts.sources, 1, {
|
opts = function(_, opts)
|
||||||
name = "copilot",
|
table.insert(opts.sources, 1, {
|
||||||
group_index = 1,
|
name = "copilot",
|
||||||
priority = 100,
|
group_index = 1,
|
||||||
})
|
priority = 100,
|
||||||
end,
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
{
|
||||||
},
|
"saghen/blink.cmp",
|
||||||
},
|
optional = true,
|
||||||
|
dependencies = { "giuxtaposition/blink-cmp-copilot" },
|
||||||
vim.g.ai_cmp and {
|
opts = {
|
||||||
"saghen/blink.cmp",
|
sources = {
|
||||||
optional = true,
|
default = { "copilot" },
|
||||||
dependencies = { "giuxtaposition/blink-cmp-copilot" },
|
providers = {
|
||||||
opts = {
|
copilot = {
|
||||||
sources = {
|
name = "copilot",
|
||||||
default = { "copilot" },
|
module = "blink-cmp-copilot",
|
||||||
providers = {
|
kind = "Copilot",
|
||||||
copilot = {
|
},
|
||||||
name = "copilot",
|
},
|
||||||
module = "blink-cmp-copilot",
|
},
|
||||||
kind = "Copilot",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
},
|
or nil,
|
||||||
} or nil,
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ return {
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
optional = true,
|
optional = true,
|
||||||
dependencies = { "tzachar/cmp-tabnine" },
|
dependencies = { "tzachar/cmp-tabnine" },
|
||||||
---@param opts cmp.ConfigSchema
|
---@param opts cmp.ConfigSchema
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ end
|
||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
"hrsh7th/nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
|
optional = true,
|
||||||
enabled = false,
|
enabled = false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -52,7 +53,7 @@ return {
|
||||||
},
|
},
|
||||||
menu = {
|
menu = {
|
||||||
draw = {
|
draw = {
|
||||||
treesitter = true,
|
treesitter = { "lsp" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
documentation = {
|
documentation = {
|
||||||
|
|
@ -72,6 +73,7 @@ return {
|
||||||
-- with blink.compat
|
-- with blink.compat
|
||||||
compat = {},
|
compat = {},
|
||||||
default = { "lsp", "path", "snippets", "buffer" },
|
default = { "lsp", "path", "snippets", "buffer" },
|
||||||
|
cmdline = {},
|
||||||
},
|
},
|
||||||
|
|
||||||
keymap = {
|
keymap = {
|
||||||
|
|
@ -97,12 +99,18 @@ return {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- TODO: remove when blink made a new release > 0.7.6
|
--- NOTE: compat with latest version. Currenlty 0.7.6
|
||||||
if not vim.g.lazyvim_blink_main then
|
if not vim.g.lazyvim_blink_main then
|
||||||
opts.sources.completion = opts.sources.completion or {}
|
opts.sources.completion = opts.sources.completion or {}
|
||||||
opts.sources.completion.enabled_providers = enabled
|
opts.sources.completion.enabled_providers = enabled
|
||||||
|
if vim.tbl_get(opts, "completion", "menu", "draw", "treesitter") then
|
||||||
|
opts.completion.menu.draw.treesitter = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Unset custom prop to pass blink.cmp validation
|
||||||
|
opts.sources.compat = nil
|
||||||
|
|
||||||
-- check if we need to override symbol kinds
|
-- check if we need to override symbol kinds
|
||||||
for _, provider in pairs(opts.sources.providers or {}) do
|
for _, provider in pairs(opts.sources.providers or {}) do
|
||||||
---@cast provider blink.cmp.SourceProviderConfig|{kind?:string}
|
---@cast provider blink.cmp.SourceProviderConfig|{kind?:string}
|
||||||
|
|
@ -124,6 +132,9 @@ return {
|
||||||
end
|
end
|
||||||
return items
|
return items
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Unset custom prop to pass blink.cmp validation
|
||||||
|
provider.kind = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -137,6 +148,9 @@ return {
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
opts.appearance = opts.appearance or {}
|
opts.appearance = opts.appearance or {}
|
||||||
opts.appearance.kind_icons = LazyVim.config.icons.kinds
|
opts.appearance.kind_icons = LazyVim.config.icons.kinds
|
||||||
|
|
||||||
|
-- Use block instead of icon for color items to make swatches more usable
|
||||||
|
opts.appearance.kind_icons.Color = "██"
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ return {
|
||||||
|
|
||||||
-- nvim-cmp integration
|
-- nvim-cmp integration
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
optional = true,
|
optional = true,
|
||||||
dependencies = { "saadparwaiz1/cmp_luasnip" },
|
dependencies = { "saadparwaiz1/cmp_luasnip" },
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
|
|
|
||||||
118
lua/lazyvim/plugins/extras/coding/nvim-cmp.lua
Normal file
118
lua/lazyvim/plugins/extras/coding/nvim-cmp.lua
Normal file
|
|
@ -0,0 +1,118 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"saghen/blink.cmp",
|
||||||
|
enabled = false,
|
||||||
|
optional = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Setup nvim-cmp
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
version = false, -- last release is way too old
|
||||||
|
event = "InsertEnter",
|
||||||
|
dependencies = {
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
"hrsh7th/cmp-buffer",
|
||||||
|
"hrsh7th/cmp-path",
|
||||||
|
},
|
||||||
|
-- Not all LSP servers add brackets when completing a function.
|
||||||
|
-- To better deal with this, LazyVim adds a custom option to cmp,
|
||||||
|
-- that you can configure. For example:
|
||||||
|
--
|
||||||
|
-- ```lua
|
||||||
|
-- opts = {
|
||||||
|
-- auto_brackets = { "python" }
|
||||||
|
-- }
|
||||||
|
-- ```
|
||||||
|
opts = function()
|
||||||
|
vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true })
|
||||||
|
local cmp = require("cmp")
|
||||||
|
local defaults = require("cmp.config.default")()
|
||||||
|
local auto_select = true
|
||||||
|
return {
|
||||||
|
auto_brackets = {}, -- configure any filetype to auto add brackets
|
||||||
|
completion = {
|
||||||
|
completeopt = "menu,menuone,noinsert" .. (auto_select and "" or ",noselect"),
|
||||||
|
},
|
||||||
|
preselect = auto_select and cmp.PreselectMode.Item or cmp.PreselectMode.None,
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||||
|
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||||
|
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
|
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
|
["<C-Space>"] = cmp.mapping.complete(),
|
||||||
|
["<CR>"] = LazyVim.cmp.confirm({ select = auto_select }),
|
||||||
|
["<C-y>"] = LazyVim.cmp.confirm({ select = true }),
|
||||||
|
["<S-CR>"] = LazyVim.cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||||
|
["<C-CR>"] = function(fallback)
|
||||||
|
cmp.abort()
|
||||||
|
fallback()
|
||||||
|
end,
|
||||||
|
["<tab>"] = function(fallback)
|
||||||
|
return LazyVim.cmp.map({ "snippet_forward", "ai_accept" }, fallback)()
|
||||||
|
end,
|
||||||
|
}),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = "lazydev" },
|
||||||
|
{ name = "nvim_lsp" },
|
||||||
|
{ name = "path" },
|
||||||
|
}, {
|
||||||
|
{ name = "buffer" },
|
||||||
|
}),
|
||||||
|
formatting = {
|
||||||
|
format = function(entry, item)
|
||||||
|
local icons = LazyVim.config.icons.kinds
|
||||||
|
if icons[item.kind] then
|
||||||
|
item.kind = icons[item.kind] .. item.kind
|
||||||
|
end
|
||||||
|
|
||||||
|
local widths = {
|
||||||
|
abbr = vim.g.cmp_widths and vim.g.cmp_widths.abbr or 40,
|
||||||
|
menu = vim.g.cmp_widths and vim.g.cmp_widths.menu or 30,
|
||||||
|
}
|
||||||
|
|
||||||
|
for key, width in pairs(widths) do
|
||||||
|
if item[key] and vim.fn.strdisplaywidth(item[key]) > width then
|
||||||
|
item[key] = vim.fn.strcharpart(item[key], 0, width - 1) .. "…"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
experimental = {
|
||||||
|
-- only show ghost text when we show ai completions
|
||||||
|
ghost_text = vim.g.ai_cmp and {
|
||||||
|
hl_group = "CmpGhostText",
|
||||||
|
} or false,
|
||||||
|
},
|
||||||
|
sorting = defaults.sorting,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
main = "lazyvim.util.cmp",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- snippets
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
dependencies = {
|
||||||
|
{
|
||||||
|
"garymjr/nvim-snippets",
|
||||||
|
opts = {
|
||||||
|
friendly_snippets = true,
|
||||||
|
},
|
||||||
|
dependencies = { "rafamadriz/friendly-snippets" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = function(_, opts)
|
||||||
|
opts.snippet = {
|
||||||
|
expand = function(item)
|
||||||
|
return LazyVim.cmp.expand(item.body)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
if LazyVim.has("nvim-snippets") then
|
||||||
|
table.insert(opts.sources, { name = "snippets" })
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -33,7 +33,6 @@ return {
|
||||||
|
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
keys = {
|
keys = {
|
||||||
{ "<leader>d", "", desc = "+debug", mode = {"n", "v"} },
|
|
||||||
{ "<leader>dB", function() require("dap").set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, desc = "Breakpoint Condition" },
|
{ "<leader>dB", function() require("dap").set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, desc = "Breakpoint Condition" },
|
||||||
{ "<leader>db", function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint" },
|
{ "<leader>db", function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint" },
|
||||||
{ "<leader>dc", function() require("dap").continue() end, desc = "Run/Continue" },
|
{ "<leader>dc", function() require("dap").continue() end, desc = "Run/Continue" },
|
||||||
|
|
@ -46,7 +45,7 @@ return {
|
||||||
{ "<leader>dl", function() require("dap").run_last() end, desc = "Run Last" },
|
{ "<leader>dl", function() require("dap").run_last() end, desc = "Run Last" },
|
||||||
{ "<leader>do", function() require("dap").step_out() end, desc = "Step Out" },
|
{ "<leader>do", function() require("dap").step_out() end, desc = "Step Out" },
|
||||||
{ "<leader>dO", function() require("dap").step_over() end, desc = "Step Over" },
|
{ "<leader>dO", function() require("dap").step_over() end, desc = "Step Over" },
|
||||||
{ "<leader>dp", function() require("dap").pause() end, desc = "Pause" },
|
{ "<leader>dP", function() require("dap").pause() end, desc = "Pause" },
|
||||||
{ "<leader>dr", function() require("dap").repl.toggle() end, desc = "Toggle REPL" },
|
{ "<leader>dr", function() require("dap").repl.toggle() end, desc = "Toggle REPL" },
|
||||||
{ "<leader>ds", function() require("dap").session() end, desc = "Session" },
|
{ "<leader>ds", function() require("dap").session() end, desc = "Session" },
|
||||||
{ "<leader>dt", function() require("dap").terminate() end, desc = "Terminate" },
|
{ "<leader>dt", function() require("dap").terminate() end, desc = "Terminate" },
|
||||||
|
|
|
||||||
|
|
@ -103,8 +103,11 @@ return {
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
|
optional = true,
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
|
opts.sorting = opts.sorting or {}
|
||||||
|
opts.sorting.comparators = opts.sorting.comparators or {}
|
||||||
table.insert(opts.sorting.comparators, 1, require("clangd_extensions.cmp_scores"))
|
table.insert(opts.sorting.comparators, 1, require("clangd_extensions.cmp_scores"))
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@ return {
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
|
optional = true,
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{ "petertriho/cmp-git", opts = {} },
|
{ "petertriho/cmp-git", opts = {} },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -85,8 +85,12 @@ return {
|
||||||
dependencies = { "folke/which-key.nvim" },
|
dependencies = { "folke/which-key.nvim" },
|
||||||
ft = java_filetypes,
|
ft = java_filetypes,
|
||||||
opts = function()
|
opts = function()
|
||||||
local mason_registry = require("mason-registry")
|
local cmd = { vim.fn.exepath("jdtls") }
|
||||||
local lombok_jar = mason_registry.get_package("jdtls"):get_install_path() .. "/lombok.jar"
|
if LazyVim.has("mason.nvim") then
|
||||||
|
local mason_registry = require("mason-registry")
|
||||||
|
local lombok_jar = mason_registry.get_package("jdtls"):get_install_path() .. "/lombok.jar"
|
||||||
|
table.insert(cmd, string.format("--jvm-arg=-javaagent:%s", lombok_jar))
|
||||||
|
end
|
||||||
return {
|
return {
|
||||||
-- How to find the root dir for a given filename. The default comes from
|
-- How to find the root dir for a given filename. The default comes from
|
||||||
-- lspconfig which provides a function specifically for java projects.
|
-- lspconfig which provides a function specifically for java projects.
|
||||||
|
|
@ -107,10 +111,7 @@ return {
|
||||||
|
|
||||||
-- How to run jdtls. This can be overridden to a full java command-line
|
-- How to run jdtls. This can be overridden to a full java command-line
|
||||||
-- if the Python wrapper script doesn't suffice.
|
-- if the Python wrapper script doesn't suffice.
|
||||||
cmd = {
|
cmd = cmd,
|
||||||
vim.fn.exepath("jdtls"),
|
|
||||||
string.format("--jvm-arg=-javaagent:%s", lombok_jar),
|
|
||||||
},
|
|
||||||
full_cmd = function(opts)
|
full_cmd = function(opts)
|
||||||
local fname = vim.api.nvim_buf_get_name(0)
|
local fname = vim.api.nvim_buf_get_name(0)
|
||||||
local root_dir = opts.root_dir(fname)
|
local root_dir = opts.root_dir(fname)
|
||||||
|
|
@ -145,29 +146,30 @@ return {
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
-- Find the extra bundles that should be passed on the jdtls command-line
|
-- Find the extra bundles that should be passed on the jdtls command-line
|
||||||
-- if nvim-dap is enabled with java debug/test.
|
-- if nvim-dap is enabled with java debug/test.
|
||||||
local mason_registry = require("mason-registry")
|
|
||||||
local bundles = {} ---@type string[]
|
local bundles = {} ---@type string[]
|
||||||
if opts.dap and LazyVim.has("nvim-dap") and mason_registry.is_installed("java-debug-adapter") then
|
if LazyVim.has("mason.nvim") then
|
||||||
local java_dbg_pkg = mason_registry.get_package("java-debug-adapter")
|
local mason_registry = require("mason-registry")
|
||||||
local java_dbg_path = java_dbg_pkg:get_install_path()
|
if opts.dap and LazyVim.has("nvim-dap") and mason_registry.is_installed("java-debug-adapter") then
|
||||||
local jar_patterns = {
|
local java_dbg_pkg = mason_registry.get_package("java-debug-adapter")
|
||||||
java_dbg_path .. "/extension/server/com.microsoft.java.debug.plugin-*.jar",
|
local java_dbg_path = java_dbg_pkg:get_install_path()
|
||||||
}
|
local jar_patterns = {
|
||||||
-- java-test also depends on java-debug-adapter.
|
java_dbg_path .. "/extension/server/com.microsoft.java.debug.plugin-*.jar",
|
||||||
if opts.test and mason_registry.is_installed("java-test") then
|
}
|
||||||
local java_test_pkg = mason_registry.get_package("java-test")
|
-- java-test also depends on java-debug-adapter.
|
||||||
local java_test_path = java_test_pkg:get_install_path()
|
if opts.test and mason_registry.is_installed("java-test") then
|
||||||
vim.list_extend(jar_patterns, {
|
local java_test_pkg = mason_registry.get_package("java-test")
|
||||||
java_test_path .. "/extension/server/*.jar",
|
local java_test_path = java_test_pkg:get_install_path()
|
||||||
})
|
vim.list_extend(jar_patterns, {
|
||||||
end
|
java_test_path .. "/extension/server/*.jar",
|
||||||
for _, jar_pattern in ipairs(jar_patterns) do
|
})
|
||||||
for _, bundle in ipairs(vim.split(vim.fn.glob(jar_pattern), "\n")) do
|
end
|
||||||
table.insert(bundles, bundle)
|
for _, jar_pattern in ipairs(jar_patterns) do
|
||||||
|
for _, bundle in ipairs(vim.split(vim.fn.glob(jar_pattern), "\n")) do
|
||||||
|
table.insert(bundles, bundle)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function attach_jdtls()
|
local function attach_jdtls()
|
||||||
local fname = vim.api.nvim_buf_get_name(0)
|
local fname = vim.api.nvim_buf_get_name(0)
|
||||||
|
|
||||||
|
|
@ -239,40 +241,43 @@ return {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
if opts.dap and LazyVim.has("nvim-dap") and mason_registry.is_installed("java-debug-adapter") then
|
if LazyVim.has("mason.nvim") then
|
||||||
-- custom init for Java debugger
|
local mason_registry = require("mason-registry")
|
||||||
require("jdtls").setup_dap(opts.dap)
|
if opts.dap and LazyVim.has("nvim-dap") and mason_registry.is_installed("java-debug-adapter") then
|
||||||
require("jdtls.dap").setup_dap_main_class_configs(opts.dap_main)
|
-- custom init for Java debugger
|
||||||
|
require("jdtls").setup_dap(opts.dap)
|
||||||
|
require("jdtls.dap").setup_dap_main_class_configs(opts.dap_main)
|
||||||
|
|
||||||
-- Java Test require Java debugger to work
|
-- Java Test require Java debugger to work
|
||||||
if opts.test and mason_registry.is_installed("java-test") then
|
if opts.test and mason_registry.is_installed("java-test") then
|
||||||
-- custom keymaps for Java test runner (not yet compatible with neotest)
|
-- custom keymaps for Java test runner (not yet compatible with neotest)
|
||||||
wk.add({
|
wk.add({
|
||||||
{
|
|
||||||
mode = "n",
|
|
||||||
buffer = args.buf,
|
|
||||||
{ "<leader>t", group = "test" },
|
|
||||||
{
|
{
|
||||||
"<leader>tt",
|
mode = "n",
|
||||||
function()
|
buffer = args.buf,
|
||||||
require("jdtls.dap").test_class({
|
{ "<leader>t", group = "test" },
|
||||||
config_overrides = type(opts.test) ~= "boolean" and opts.test.config_overrides or nil,
|
{
|
||||||
})
|
"<leader>tt",
|
||||||
end,
|
function()
|
||||||
desc = "Run All Test",
|
require("jdtls.dap").test_class({
|
||||||
|
config_overrides = type(opts.test) ~= "boolean" and opts.test.config_overrides or nil,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
desc = "Run All Test",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>tr",
|
||||||
|
function()
|
||||||
|
require("jdtls.dap").test_nearest_method({
|
||||||
|
config_overrides = type(opts.test) ~= "boolean" and opts.test.config_overrides or nil,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
desc = "Run Nearest Test",
|
||||||
|
},
|
||||||
|
{ "<leader>tT", require("jdtls.dap").pick_test, desc = "Run Test" },
|
||||||
},
|
},
|
||||||
{
|
})
|
||||||
"<leader>tr",
|
end
|
||||||
function()
|
|
||||||
require("jdtls.dap").test_nearest_method({
|
|
||||||
config_overrides = type(opts.test) ~= "boolean" and opts.test.config_overrides or nil,
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
desc = "Run Nearest Test",
|
|
||||||
},
|
|
||||||
{ "<leader>tT", require("jdtls.dap").pick_test, desc = "Run Test" },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,19 @@ return {
|
||||||
["async-recursion"] = { "async_recursion" },
|
["async-recursion"] = { "async_recursion" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
files = {
|
||||||
|
excludeDirs = {
|
||||||
|
".direnv",
|
||||||
|
".git",
|
||||||
|
".github",
|
||||||
|
".gitlab",
|
||||||
|
"bin",
|
||||||
|
"node_modules",
|
||||||
|
"target",
|
||||||
|
"venv",
|
||||||
|
".venv",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
51
lua/lazyvim/plugins/extras/ui/indent-blankline.lua
Normal file
51
lua/lazyvim/plugins/extras/ui/indent-blankline.lua
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
return {
|
||||||
|
-- disable snacks indent when indent-blankline is enabled
|
||||||
|
{
|
||||||
|
"snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
indent = { enabled = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
|
event = "LazyFile",
|
||||||
|
opts = function()
|
||||||
|
Snacks.toggle({
|
||||||
|
name = "Indention Guides",
|
||||||
|
get = function()
|
||||||
|
return require("ibl.config").get_config(0).enabled
|
||||||
|
end,
|
||||||
|
set = function(state)
|
||||||
|
require("ibl").setup_buffer(0, { enabled = state })
|
||||||
|
end,
|
||||||
|
}):map("<leader>ug")
|
||||||
|
|
||||||
|
return {
|
||||||
|
indent = {
|
||||||
|
char = "│",
|
||||||
|
tab_char = "│",
|
||||||
|
},
|
||||||
|
scope = { show_start = false, show_end = false },
|
||||||
|
exclude = {
|
||||||
|
filetypes = {
|
||||||
|
"Trouble",
|
||||||
|
"alpha",
|
||||||
|
"dashboard",
|
||||||
|
"help",
|
||||||
|
"lazy",
|
||||||
|
"mason",
|
||||||
|
"neo-tree",
|
||||||
|
"notify",
|
||||||
|
"snacks_dashboard",
|
||||||
|
"snacks_notif",
|
||||||
|
"snacks_terminal",
|
||||||
|
"snacks_win",
|
||||||
|
"toggleterm",
|
||||||
|
"trouble",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
main = "ibl",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -1,54 +1,64 @@
|
||||||
-- animations
|
-- animations
|
||||||
return {
|
return {
|
||||||
"echasnovski/mini.animate",
|
-- disable snacks scroll when animate is enabled
|
||||||
recommended = true,
|
{
|
||||||
event = "VeryLazy",
|
"snacks.nvim",
|
||||||
cond = vim.g.neovide == nil,
|
opts = {
|
||||||
opts = function(_, opts)
|
scroll = { enabled = false },
|
||||||
-- don't use animate when scrolling with the mouse
|
},
|
||||||
local mouse_scrolled = false
|
},
|
||||||
for _, scroll in ipairs({ "Up", "Down" }) do
|
|
||||||
local key = "<ScrollWheel" .. scroll .. ">"
|
|
||||||
vim.keymap.set({ "", "i" }, key, function()
|
|
||||||
mouse_scrolled = true
|
|
||||||
return key
|
|
||||||
end, { expr = true })
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("FileType", {
|
-- setup animate
|
||||||
pattern = "grug-far",
|
{
|
||||||
callback = function()
|
"echasnovski/mini.animate",
|
||||||
vim.b.minianimate_disable = true
|
event = "VeryLazy",
|
||||||
end,
|
cond = vim.g.neovide == nil,
|
||||||
})
|
opts = function(_, opts)
|
||||||
|
-- don't use animate when scrolling with the mouse
|
||||||
|
local mouse_scrolled = false
|
||||||
|
for _, scroll in ipairs({ "Up", "Down" }) do
|
||||||
|
local key = "<ScrollWheel" .. scroll .. ">"
|
||||||
|
vim.keymap.set({ "", "i" }, key, function()
|
||||||
|
mouse_scrolled = true
|
||||||
|
return key
|
||||||
|
end, { expr = true })
|
||||||
|
end
|
||||||
|
|
||||||
Snacks.toggle({
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
name = "Mini Animate",
|
pattern = "grug-far",
|
||||||
get = function()
|
callback = function()
|
||||||
return not vim.g.minianimate_disable
|
vim.b.minianimate_disable = true
|
||||||
end,
|
end,
|
||||||
set = function(state)
|
})
|
||||||
vim.g.minianimate_disable = not state
|
|
||||||
end,
|
|
||||||
}):map("<leader>ua")
|
|
||||||
|
|
||||||
local animate = require("mini.animate")
|
Snacks.toggle({
|
||||||
return vim.tbl_deep_extend("force", opts, {
|
name = "Mini Animate",
|
||||||
resize = {
|
get = function()
|
||||||
timing = animate.gen_timing.linear({ duration = 50, unit = "total" }),
|
return not vim.g.minianimate_disable
|
||||||
},
|
end,
|
||||||
scroll = {
|
set = function(state)
|
||||||
timing = animate.gen_timing.linear({ duration = 150, unit = "total" }),
|
vim.g.minianimate_disable = not state
|
||||||
subscroll = animate.gen_subscroll.equal({
|
end,
|
||||||
predicate = function(total_scroll)
|
}):map("<leader>ua")
|
||||||
if mouse_scrolled then
|
|
||||||
mouse_scrolled = false
|
local animate = require("mini.animate")
|
||||||
return false
|
return vim.tbl_deep_extend("force", opts, {
|
||||||
end
|
resize = {
|
||||||
return total_scroll > 1
|
timing = animate.gen_timing.linear({ duration = 50, unit = "total" }),
|
||||||
end,
|
},
|
||||||
}),
|
scroll = {
|
||||||
},
|
timing = animate.gen_timing.linear({ duration = 150, unit = "total" }),
|
||||||
})
|
subscroll = animate.gen_subscroll.equal({
|
||||||
end,
|
predicate = function(total_scroll)
|
||||||
|
if mouse_scrolled then
|
||||||
|
mouse_scrolled = false
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return total_scroll > 1
|
||||||
|
end,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,11 +43,24 @@ return {
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- disable inent-blankline scope when mini-indentscope is enabled
|
||||||
{
|
{
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
|
optional = true,
|
||||||
event = "LazyFile",
|
event = "LazyFile",
|
||||||
opts = {
|
opts = {
|
||||||
scope = { enabled = false },
|
scope = { enabled = false },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- disable snacks scroll when mini-indentscope is enabled
|
||||||
|
{
|
||||||
|
"snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
indent = {
|
||||||
|
scope = { enabled = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,16 +10,6 @@ end
|
||||||
|
|
||||||
require("lazyvim.config").init()
|
require("lazyvim.config").init()
|
||||||
|
|
||||||
-- Terminal Mappings
|
|
||||||
local function term_nav(dir)
|
|
||||||
---@param self snacks.terminal
|
|
||||||
return function(self)
|
|
||||||
return self:is_floating() and "<c-" .. dir .. ">" or vim.schedule(function()
|
|
||||||
vim.cmd.wincmd(dir)
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
{ "folke/lazy.nvim", version = "*" },
|
{ "folke/lazy.nvim", version = "*" },
|
||||||
{ "LazyVim/LazyVim", priority = 10000, lazy = false, opts = {}, cond = true, version = "*" },
|
{ "LazyVim/LazyVim", priority = 10000, lazy = false, opts = {}, cond = true, version = "*" },
|
||||||
|
|
@ -27,34 +17,7 @@ return {
|
||||||
"folke/snacks.nvim",
|
"folke/snacks.nvim",
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
lazy = false,
|
lazy = false,
|
||||||
opts = function()
|
opts = {},
|
||||||
---@type snacks.Config
|
|
||||||
return {
|
|
||||||
bigfile = { enabled = true },
|
|
||||||
notifier = { enabled = true },
|
|
||||||
quickfile = { enabled = true },
|
|
||||||
statuscolumn = { enabled = false }, -- we set this in options.lua
|
|
||||||
terminal = {
|
|
||||||
win = {
|
|
||||||
keys = {
|
|
||||||
nav_h = { "<C-h>", term_nav("h"), desc = "Go to Left Window", expr = true, mode = "t" },
|
|
||||||
nav_j = { "<C-j>", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" },
|
|
||||||
nav_k = { "<C-k>", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" },
|
|
||||||
nav_l = { "<C-l>", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
toggle = { map = LazyVim.safe_keymap_set },
|
|
||||||
words = { enabled = true },
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
-- stylua: ignore
|
|
||||||
keys = {
|
|
||||||
{ "<leader>.", function() Snacks.scratch() end, desc = "Toggle Scratch Buffer" },
|
|
||||||
{ "<leader>S", function() Snacks.scratch.select() end, desc = "Select Scratch Buffer" },
|
|
||||||
{ "<leader>n", function() Snacks.notifier.show_history() end, desc = "Notification History" },
|
|
||||||
{ "<leader>un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" },
|
|
||||||
},
|
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
local notify = vim.notify
|
local notify = vim.notify
|
||||||
require("snacks").setup(opts)
|
require("snacks").setup(opts)
|
||||||
|
|
|
||||||
|
|
@ -105,29 +105,30 @@ return {
|
||||||
{ LazyVim.lualine.pretty_path() },
|
{ LazyVim.lualine.pretty_path() },
|
||||||
},
|
},
|
||||||
lualine_x = {
|
lualine_x = {
|
||||||
|
Snacks.profiler.status(),
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
{
|
{
|
||||||
function() return require("noice").api.status.command.get() end,
|
function() return require("noice").api.status.command.get() end,
|
||||||
cond = function() return package.loaded["noice"] and require("noice").api.status.command.has() end,
|
cond = function() return package.loaded["noice"] and require("noice").api.status.command.has() end,
|
||||||
color = function() return LazyVim.ui.fg("Statement") end,
|
color = function() return { fg = Snacks.util.color("Statement") } end,
|
||||||
},
|
},
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
{
|
{
|
||||||
function() return require("noice").api.status.mode.get() end,
|
function() return require("noice").api.status.mode.get() end,
|
||||||
cond = function() return package.loaded["noice"] and require("noice").api.status.mode.has() end,
|
cond = function() return package.loaded["noice"] and require("noice").api.status.mode.has() end,
|
||||||
color = function() return LazyVim.ui.fg("Constant") end,
|
color = function() return { fg = Snacks.util.color("Constant") } end,
|
||||||
},
|
},
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
{
|
{
|
||||||
function() return " " .. require("dap").status() end,
|
function() return " " .. require("dap").status() end,
|
||||||
cond = function() return package.loaded["dap"] and require("dap").status() ~= "" end,
|
cond = function() return package.loaded["dap"] and require("dap").status() ~= "" end,
|
||||||
color = function() return LazyVim.ui.fg("Debug") end,
|
color = function() return { fg = Snacks.util.color("Debug") } end,
|
||||||
},
|
},
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
{
|
{
|
||||||
require("lazy.status").updates,
|
require("lazy.status").updates,
|
||||||
cond = require("lazy.status").has_updates,
|
cond = require("lazy.status").has_updates,
|
||||||
color = function() return LazyVim.ui.fg("Special") end,
|
color = function() return { fg = Snacks.util.color("Special") } end,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"diff",
|
"diff",
|
||||||
|
|
@ -185,50 +186,6 @@ return {
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- indent guides for Neovim
|
|
||||||
{
|
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
|
||||||
event = "LazyFile",
|
|
||||||
opts = function()
|
|
||||||
Snacks.toggle({
|
|
||||||
name = "Indention Guides",
|
|
||||||
get = function()
|
|
||||||
return require("ibl.config").get_config(0).enabled
|
|
||||||
end,
|
|
||||||
set = function(state)
|
|
||||||
require("ibl").setup_buffer(0, { enabled = state })
|
|
||||||
end,
|
|
||||||
}):map("<leader>ug")
|
|
||||||
|
|
||||||
return {
|
|
||||||
indent = {
|
|
||||||
char = "│",
|
|
||||||
tab_char = "│",
|
|
||||||
},
|
|
||||||
scope = { show_start = false, show_end = false },
|
|
||||||
exclude = {
|
|
||||||
filetypes = {
|
|
||||||
"Trouble",
|
|
||||||
"alpha",
|
|
||||||
"dashboard",
|
|
||||||
"help",
|
|
||||||
"lazy",
|
|
||||||
"mason",
|
|
||||||
"neo-tree",
|
|
||||||
"notify",
|
|
||||||
"snacks_dashboard",
|
|
||||||
"snacks_notif",
|
|
||||||
"snacks_terminal",
|
|
||||||
"snacks_win",
|
|
||||||
"toggleterm",
|
|
||||||
"trouble",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
main = "ibl",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.
|
-- Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.
|
||||||
{
|
{
|
||||||
"folke/noice.nvim",
|
"folke/noice.nvim",
|
||||||
|
|
@ -308,7 +265,26 @@ return {
|
||||||
{ "MunifTanjim/nui.nvim", lazy = true },
|
{ "MunifTanjim/nui.nvim", lazy = true },
|
||||||
|
|
||||||
{
|
{
|
||||||
"folke/snacks.nvim",
|
"snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
indent = { enabled = true },
|
||||||
|
input = { enabled = true },
|
||||||
|
notifier = { enabled = true },
|
||||||
|
scope = { enabled = true },
|
||||||
|
scroll = { enabled = true },
|
||||||
|
statuscolumn = { enabled = false }, -- we set this in options.lua
|
||||||
|
toggle = { map = LazyVim.safe_keymap_set },
|
||||||
|
words = { enabled = true },
|
||||||
|
},
|
||||||
|
-- stylua: ignore
|
||||||
|
keys = {
|
||||||
|
{ "<leader>n", function() Snacks.notifier.show_history() end, desc = "Notification History" },
|
||||||
|
{ "<leader>un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"snacks.nvim",
|
||||||
opts = {
|
opts = {
|
||||||
dashboard = {
|
dashboard = {
|
||||||
preset = {
|
preset = {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,40 @@
|
||||||
|
-- Terminal Mappings
|
||||||
|
local function term_nav(dir)
|
||||||
|
---@param self snacks.terminal
|
||||||
|
return function(self)
|
||||||
|
return self:is_floating() and "<c-" .. dir .. ">" or vim.schedule(function()
|
||||||
|
vim.cmd.wincmd(dir)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
||||||
|
-- Snacks utils
|
||||||
|
{
|
||||||
|
"snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
quickfile = { enabled = true },
|
||||||
|
terminal = {
|
||||||
|
win = {
|
||||||
|
keys = {
|
||||||
|
nav_h = { "<C-h>", term_nav("h"), desc = "Go to Left Window", expr = true, mode = "t" },
|
||||||
|
nav_j = { "<C-j>", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" },
|
||||||
|
nav_k = { "<C-k>", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" },
|
||||||
|
nav_l = { "<C-l>", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- stylua: ignore
|
||||||
|
keys = {
|
||||||
|
{ "<leader>.", function() Snacks.scratch() end, desc = "Toggle Scratch Buffer" },
|
||||||
|
{ "<leader>S", function() Snacks.scratch.select() end, desc = "Select Scratch Buffer" },
|
||||||
|
{ "<leader>dps", function() Snacks.profiler.scratch() end, desc = "Profiler Scratch Buffer" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
-- Session management. This saves your session in the background,
|
-- Session management. This saves your session in the background,
|
||||||
-- keeping track of open buffers, window arrangement, and more.
|
-- keeping track of open buffers, window arrangement, and more.
|
||||||
-- You can restore sessions when returning through the dashboard.
|
-- You can restore sessions when returning through the dashboard.
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
local prios = {
|
local prios = {
|
||||||
["lazyvim.plugins.extras.test.core"] = 1,
|
["lazyvim.plugins.extras.test.core"] = 1,
|
||||||
["lazyvim.plugins.extras.dap.core"] = 1,
|
["lazyvim.plugins.extras.dap.core"] = 1,
|
||||||
|
["lazyvim.plugins.extras.coding.nvim-cmp"] = 2,
|
||||||
["lazyvim.plugins.extras.ui.edgy"] = 2,
|
["lazyvim.plugins.extras.ui.edgy"] = 2,
|
||||||
["lazyvim.plugins.extras.lang.typescript"] = 5,
|
["lazyvim.plugins.extras.lang.typescript"] = 5,
|
||||||
["lazyvim.plugins.extras.coding.blink"] = 5,
|
["lazyvim.plugins.extras.coding.blink"] = 5,
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,12 @@ M.moved = {
|
||||||
ui = {
|
ui = {
|
||||||
statuscolumn = { "Snacks.statuscolumn" },
|
statuscolumn = { "Snacks.statuscolumn" },
|
||||||
bufremove = { "Snacks.bufdelete" },
|
bufremove = { "Snacks.bufdelete" },
|
||||||
|
fg = {
|
||||||
|
"{ fg = Snacks.util.color(...) }",
|
||||||
|
fn = function(...)
|
||||||
|
return { fg = Snacks.util.color(...) }
|
||||||
|
end,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -33,6 +39,9 @@ function M.decorate(name, mod)
|
||||||
if M.moved[name][k] then
|
if M.moved[name][k] then
|
||||||
local to = M.moved[name][k][1]
|
local to = M.moved[name][k][1]
|
||||||
LazyVim.deprecate("LazyVim." .. name .. "." .. k, to)
|
LazyVim.deprecate("LazyVim." .. name .. "." .. k, to)
|
||||||
|
if M.moved[name][k].fn then
|
||||||
|
return M.moved[name][k].fn
|
||||||
|
end
|
||||||
local ret = vim.tbl_get(_G, unpack(vim.split(to, ".", { plain = true })))
|
local ret = vim.tbl_get(_G, unpack(vim.split(to, ".", { plain = true })))
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -265,4 +265,13 @@ function M.memoize(fn)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@return "nvim-cmp" | "blink.cmp"
|
||||||
|
function M.cmp_engine()
|
||||||
|
vim.g.lazyvim_cmp = vim.g.lazyvim_cmp or "auto"
|
||||||
|
if vim.g.lazyvim_cmp == "auto" then
|
||||||
|
return LazyVim.has_extra("coding.nvim-cmp") and "nvim-cmp" or "blink.cmp"
|
||||||
|
end
|
||||||
|
return vim.g.lazyvim_cmp
|
||||||
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ function M.status(icon, status)
|
||||||
return status() ~= nil
|
return status() ~= nil
|
||||||
end,
|
end,
|
||||||
color = function()
|
color = function()
|
||||||
return LazyVim.ui.fg(colors[status()] or colors.ok)
|
return { fg = Snacks.util.color(colors[status()] or colors.ok) }
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
@ -146,7 +146,7 @@ function M.root_dir(opts)
|
||||||
other = true,
|
other = true,
|
||||||
icon = " ",
|
icon = " ",
|
||||||
color = function()
|
color = function()
|
||||||
return LazyVim.ui.fg("Special")
|
return { fg = Snacks.util.color("Special") }
|
||||||
end,
|
end,
|
||||||
}, opts or {})
|
}, opts or {})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,47 +1,6 @@
|
||||||
---@class lazyvim.util.mini
|
---@class lazyvim.util.mini
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
---@alias Mini.ai.loc {line:number, col:number}
|
|
||||||
---@alias Mini.ai.region {from:Mini.ai.loc, to:Mini.ai.loc}
|
|
||||||
|
|
||||||
-- Mini.ai indent text object
|
|
||||||
-- For "a", it will include the non-whitespace line surrounding the indent block.
|
|
||||||
-- "a" is line-wise, "i" is character-wise.
|
|
||||||
function M.ai_indent(ai_type)
|
|
||||||
local spaces = (" "):rep(vim.o.tabstop)
|
|
||||||
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
|
|
||||||
local indents = {} ---@type {line: number, indent: number, text: string}[]
|
|
||||||
|
|
||||||
for l, line in ipairs(lines) do
|
|
||||||
if not line:find("^%s*$") then
|
|
||||||
indents[#indents + 1] = { line = l, indent = #line:gsub("\t", spaces):match("^%s*"), text = line }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local ret = {} ---@type (Mini.ai.region | {indent: number})[]
|
|
||||||
|
|
||||||
for i = 1, #indents do
|
|
||||||
if i == 1 or indents[i - 1].indent < indents[i].indent then
|
|
||||||
local from, to = i, i
|
|
||||||
for j = i + 1, #indents do
|
|
||||||
if indents[j].indent < indents[i].indent then
|
|
||||||
break
|
|
||||||
end
|
|
||||||
to = j
|
|
||||||
end
|
|
||||||
from = ai_type == "a" and from > 1 and from - 1 or from
|
|
||||||
to = ai_type == "a" and to < #indents and to + 1 or to
|
|
||||||
ret[#ret + 1] = {
|
|
||||||
indent = indents[i].indent,
|
|
||||||
from = { line = indents[from].line, col = ai_type == "a" and 1 or indents[from].indent + 1 },
|
|
||||||
to = { line = indents[to].line, col = #indents[to].text },
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
|
|
||||||
-- taken from MiniExtra.gen_ai_spec.buffer
|
-- taken from MiniExtra.gen_ai_spec.buffer
|
||||||
function M.ai_buffer(ai_type)
|
function M.ai_buffer(ai_type)
|
||||||
local start_line, end_line = 1, vim.fn.line("$")
|
local start_line, end_line = 1, vim.fn.line("$")
|
||||||
|
|
@ -92,6 +51,7 @@ function M.ai_whichkey(opts)
|
||||||
{ "}", desc = "{} with ws" },
|
{ "}", desc = "{} with ws" },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
---@type wk.Spec[]
|
||||||
local ret = { mode = { "o", "x" } }
|
local ret = { mode = { "o", "x" } }
|
||||||
---@type table<string, string>
|
---@type table<string, string>
|
||||||
local mappings = vim.tbl_extend("force", {}, {
|
local mappings = vim.tbl_extend("force", {}, {
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,11 @@ function M.register(picker)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@return "telescope" | "fzf"
|
||||||
function M.want()
|
function M.want()
|
||||||
vim.g.lazyvim_picker = vim.g.lazyvim_picker or "auto"
|
vim.g.lazyvim_picker = vim.g.lazyvim_picker or "auto"
|
||||||
if vim.g.lazyvim_picker == "auto" then
|
if vim.g.lazyvim_picker == "auto" then
|
||||||
return LazyVim.has_extra("editor.fzf") and "fzf" or "telescope"
|
return LazyVim.has_extra("editor.telescope") and "telescope" or "fzf"
|
||||||
end
|
end
|
||||||
return vim.g.lazyvim_picker
|
return vim.g.lazyvim_picker
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -24,55 +24,4 @@ function M.foldexpr()
|
||||||
return vim.b[buf].ts_folds and vim.treesitter.foldexpr() or "0"
|
return vim.b[buf].ts_folds and vim.treesitter.foldexpr() or "0"
|
||||||
end
|
end
|
||||||
|
|
||||||
---@return {fg?:string}?
|
|
||||||
function M.fg(name)
|
|
||||||
local hl = vim.api.nvim_get_hl(0, { name = name, link = false })
|
|
||||||
local fg = hl and hl.fg or hl.foreground
|
|
||||||
return fg and { fg = string.format("#%06x", fg) } or nil
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.maximize()
|
|
||||||
---@type {k:string, v:any}[]?
|
|
||||||
local maximized = nil
|
|
||||||
local toggle = Snacks.toggle({
|
|
||||||
name = "Maximize",
|
|
||||||
get = function()
|
|
||||||
return maximized ~= nil
|
|
||||||
end,
|
|
||||||
set = function(state)
|
|
||||||
if state then
|
|
||||||
maximized = {}
|
|
||||||
local function set(k, v)
|
|
||||||
table.insert(maximized, 1, { k = k, v = vim.o[k] })
|
|
||||||
vim.o[k] = v
|
|
||||||
end
|
|
||||||
set("winwidth", 999)
|
|
||||||
set("winheight", 999)
|
|
||||||
set("winminwidth", 10)
|
|
||||||
set("winminheight", 4)
|
|
||||||
vim.cmd("wincmd =")
|
|
||||||
else
|
|
||||||
for _, opt in ipairs(maximized) do
|
|
||||||
vim.o[opt.k] = opt.v
|
|
||||||
end
|
|
||||||
maximized = nil
|
|
||||||
vim.cmd("wincmd =")
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- `QuitPre` seems to be executed even if we quit a normal window, so we don't want that
|
|
||||||
-- `VimLeavePre` might be another consideration? Not sure about differences between the 2
|
|
||||||
vim.api.nvim_create_autocmd("ExitPre", {
|
|
||||||
group = vim.api.nvim_create_augroup("lazyvim_restore_max_exit_pre", { clear = true }),
|
|
||||||
desc = "Restore width/height when close Neovim while maximized",
|
|
||||||
callback = function()
|
|
||||||
if toggle:get() then
|
|
||||||
toggle:set(false)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
return toggle
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue