Compare commits

...

104 commits

Author SHA1 Message Date
github-actions[bot]
25abbf546d
chore(main): release 14.15.0 (#5623)
🤖 I have created a release *beep* *boop*
---


##
[14.15.0](https://github.com/LazyVim/LazyVim/compare/v14.14.0...v14.15.0)
(2025-05-12)


### Features

* **chezmoi:** enhance fzf-lua chezmoi picker and add snacks.dasbhoard
entry ([#5275](https://github.com/LazyVim/LazyVim/issues/5275))
([759a19e](759a19e785))
* **keymaps:** show lang when opening treesitter inspect
([9c59668](9c596681f6))
* **octo:** add support for snacks picker
([#5625](https://github.com/LazyVim/LazyVim/issues/5625))
([16a7724](16a772452a))
* **snippets:** mini.snippets standalone and blink.resubscribe
([#5507](https://github.com/LazyVim/LazyVim/issues/5507))
([f2f2aea](f2f2aea672))


### Bug Fixes

* **blink:** make sure to use `LazyVim.config.icons.kinds`
([#5668](https://github.com/LazyVim/LazyVim/issues/5668))
([771089f](771089f692))
* **blink:** remove unnecessary `sources` from `cmdline`
([#5620](https://github.com/LazyVim/LazyVim/issues/5620))
([5b94baa](5b94baa1d2))
* **copilot-chat:** switch from deprecated picker integrations
([#5707](https://github.com/LazyVim/LazyVim/issues/5707))
([b0334fd](b0334fd57c))
* **mason:** rename and pin to v1
([c20c402](c20c402295))
* **snacks.picker:** remove redundant leader-gc keymap. Closes
[#5646](https://github.com/LazyVim/LazyVim/issues/5646)
([606b964](606b96466e))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-12 11:00:03 +02:00
folke
1b1c7d0f45 chore(build): auto-generate docs 2025-05-12 08:59:27 +00:00
Folke Lemaitre
70b4615cb2
test(mason): fix tests 2025-05-12 10:58:20 +02:00
Folke Lemaitre
c20c402295
fix(mason): rename and pin to v1 2025-05-12 10:39:04 +02:00
folke
ec5981dfb1 chore(build): auto-generate docs 2025-03-01 14:22:16 +00:00
Tomas Slusny
b0334fd57c
fix(copilot-chat): switch from deprecated picker integrations (#5707)
- Instead of using picker integrations (that are now deprecated), switch
to using CopilotChat.select_prompt() that is using `vim.ui.select` which
brings the selector integration responsibility to pickers instead of
plugin
- Use vim.ui.input instead of vim.fn.input for consistency

Reason why this was deprecated in CopilotChat.nvim (by me) and will be
removed in future is because these integrations never made any sense
anyway when `vim.ui.select` overrides exist.

## Screenshots

Using fzf-lua in my config, outside of LazyNvim but same thing applies:


![image](https://github.com/user-attachments/assets/a5171ffe-63a6-4b79-9925-fd8bef52e52f)

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
2025-03-01 15:21:12 +01:00
folke
cb223553ff chore(build): auto-generate docs 2025-02-22 06:48:29 +00:00
Iordanis Petkakis
771089f692
fix(blink): make sure to use LazyVim.config.icons.kinds (#5668)
## Description
This blink
[commit](010d939e7f)
made a change, so that third party sources can provide their own
`item.kind_icon` and `item.kind_name`. The problem is that these icons
will take precedence over `config.kind_icons[kind]`, which LazyVim sets
[here](541b83276e/lua/lazyvim/plugins/extras/coding/blink.lua (L164-L164)).

I noticed that `blink-cmp-copilot` also started providing its own in the
items that it returns. I noticed this because I have the following in my
configuration `columns = { { "label", "label_description", gap = 1 }, {
"kind_icon", "kind" } }`. The icon that it uses is a smaller icon one
character long, which by default it will scale up and show normally like
the LazyVim icon. But when you put another component next to it (like
`kind`) in the `columns` field, then it shows the normal size of the
icon next to the `kind` and it looks kinda weird compared to the default
LazyVim icon.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots
Before (the default icon provided by `blink-cmp-copilot`)

![2025-02-22_02-17](https://github.com/user-attachments/assets/aa7da566-a577-4d32-822c-f2d891b3c047)

After (the LazyVim icon)

![2025-02-22_02-18](https://github.com/user-attachments/assets/342580a9-5a36-47fa-aad7-c139f2765d74)

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-22 07:47:27 +01:00
folke
541b83276e chore(build): auto-generate docs 2025-02-21 13:29:08 +00:00
Thomas Vandal
759a19e785
feat(chezmoi): enhance fzf-lua chezmoi picker and add snacks.dasbhoard entry (#5275)
## Description

<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

This PR enhances the fzf-lua picker for chezmoi by using the built-in
`files` picker and by opening the selected file with `ChezmoiEdit` and
`vimcmd_entry` to parse the entry. This simplifies the code and adds
icons and file preview.

The PR also replaces the config entry in snacks.dashboard with the
chezmoi picker, similar to what was already implemented for
dashboard-nvim

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

Current picker:


![image](https://github.com/user-attachments/assets/d0be9279-f199-4349-8055-04d8a351c6f9)


New picker:


![image](https://github.com/user-attachments/assets/c68fcb6a-79fa-4f65-8c48-60ce64450350)

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-21 14:28:05 +01:00
folke
f3e37a1f83 chore(build): auto-generate docs 2025-02-18 22:12:23 +00:00
Folke Lemaitre
9c596681f6
feat(keymaps): show lang when opening treesitter inspect 2025-02-18 23:11:12 +01:00
Folke Lemaitre
606b96466e
fix(snacks.picker): remove redundant leader-gc keymap. Closes #5646 2025-02-18 23:10:56 +01:00
Iordanis Petkakis
16a772452a
feat(octo): add support for snacks picker (#5625)
## Description
A [PR](https://github.com/pwntester/octo.nvim/pull/858) has landed in
`octo.nvim` that adds initial support for `snacks.picker`. Enable it in
`octo.nvim` Extra if user uses `snacks.picker`.

I also changed the checks to use `has_extra`. This was needed for
`snacks.picker`, since `has("snacks.nvim")` doesn't ensure that user
also has `snacks.picker` enabled. For the others I just changed it for
conformity, but if you think there might be something wrong about that
(that I'm unable to think of), please feel free to change them back.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-16 12:20:06 +01:00
abeldekat
f2f2aea672
feat(snippets): mini.snippets standalone and blink.resubscribe (#5507)
## Description


When using blink.cmp and mini.snippets, the same problem regarding
outdated completion items as solved in
[nvim-cmp](https://github.com/hrsh7th/nvim-cmp/pull/2126) can arise.

[This](https://github.com/Saghen/blink.cmp/pull/1035) PR has been
included into main.
When the PR is included into the next stable release, this PR can be
merged.
Current blink release: 0.11.0


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

Co-authored-by: abeldekat <abel@nomail.com>
2025-02-16 09:06:35 +01:00
folke
0ca49bcfed chore(build): auto-generate docs 2025-02-16 07:06:54 +00:00
Iordanis Petkakis
5b94baa1d2
fix(blink): remove unnecessary sources from cmdline (#5620)
## Description
Like Saghen already mentioned in the other PR, this
[commit](19f60a675e)
does a check based on the `enabled` field before adding sources, so it's
no longer needed to define it.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-16 08:05:52 +01:00
github-actions[bot]
3f034d0a7f
chore(main): release 14.14.0 (#5603)
🤖 I have created a release *beep* *boop*
---


##
[14.14.0](https://github.com/LazyVim/LazyVim/compare/v14.13.0...v14.14.0)
(2025-02-15)


### Features

* **extras:** setup neogen and mini.snippets integration
([#5594](https://github.com/LazyVim/LazyVim/issues/5594))
([5788b9d](5788b9d1e0))
* **keymaps:** enable toggling in quickfix list and location list
([#5608](https://github.com/LazyVim/LazyVim/issues/5608))
([32e575a](32e575aa75))
* **snacks.picker:** added support for Project shortcuts in other
dashboards ([#5607](https://github.com/LazyVim/LazyVim/issues/5607))
([401ef48](401ef48fcd))
* **snacks.picker:** move trouble keymap from `ctrl+t` -&gt; `alt+t`
([4aff006](4aff0063a4))


### Bug Fixes

* **blink:** `blink` released new version, remove previous hack
([#5616](https://github.com/LazyVim/LazyVim/issues/5616))
([b35015a](b35015ac59))
* **blink:** `cmdline` is now top-level on main branch
([#5615](https://github.com/LazyVim/LazyVim/issues/5615))
([0458e46](0458e46dcc))
* **blink:** enable Neovim native mapping with `&lt;Tab&gt;`
([#5617](https://github.com/LazyVim/LazyVim/issues/5617))
([e7f8e4f](e7f8e4faba))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-15 23:51:07 +01:00
Iordanis Petkakis
e7f8e4faba
fix(blink): enable Neovim native mapping with <Tab> (#5617)
## Description
Another blink fix unfortunately. 

I noticed that native Neovim `<Tab>` completion didn't work after the
breaking commit.

I checked the commit and noticed it had a boolean `enabled` field, so I
thought maybe that would disable the blink cmdline since we already have
`sources = {}`, but it didn't work. Looking through the commit, I
stumbled upon this piece of
[code](93215d8034 (diff-f313d6f0270f6fed848f1cb7e62c82d3cfaf9b6c7e0072266908eeaf202f11d5R66-R68))
and it seems that it's only checked for applying the blink cmdline
mappings.

So, it seems both `enabled = false` (for Neovim native cmdline mapping)
and `sources = {}` are needed to have default Neovim cmdline experience.

PS: Apparently I don't know how to link from the commit the necessary
part of the commit, so I'm just referencing here the part of the code
[directly in the
file](426a605518/lua/blink/cmp/keymap/init.lua (L66-L70)).
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-15 23:47:17 +01:00
Iordanis Petkakis
b35015ac59
fix(blink): blink released new version, remove previous hack (#5616)
## Description
`blink.cmp` just made a new stable release. So, remove the hack and
define the option properly in `opts`.

If I knew it would make a release tonight, I'd definitely hold off my
recent PR.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-15 22:51:17 +01:00
Iordanis Petkakis
0458e46dcc
fix(blink): cmdline is now top-level on main branch (#5615)
## Description
This `blink.cmp`
[commit](93215d8034)
introduced a breaking change on main branch. `cmdline` is now top-level
and the option is `opts.cmdline.sources = {}`.

I also added a note to remove this hack when the next blink stable
release comes out, which should be greater than current 0.11.0 and just
do it normally in `opts` instead.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None.
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-15 21:57:48 +01:00
Folke Lemaitre
4aff0063a4
feat(snacks.picker): move trouble keymap from ctrl+t -> alt+t 2025-02-15 15:46:51 +01:00
Jinfeng Guo
401ef48fcd
feat(snacks.picker): added support for Project shortcuts in other dashboards (#5607)
…shboard-nvim, and mini-starter

## Description

Though the snacks.picker extra provides a project picker, it only adds
the 'Projects' shortcut to snacks' dashboard, and no to the other three
dashboard extra: alpha, dashboard-nvim and mini-starter. In this PR, I
added the 'Projects' shortcuts to these three dashboard extras.

<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)

<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

- Fixes #5465

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

alpha


![image](https://github.com/user-attachments/assets/c050f260-8602-4660-a386-62ab8400ef87)

dashboard-nvim


![image](https://github.com/user-attachments/assets/8973cd62-ba97-4330-9462-74163b58dca9)

mini.starter


![image](https://github.com/user-attachments/assets/a31ec27d-7efb-4aa3-a136-2a4ffedf5ba1)

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-15 08:30:45 +01:00
folke
e9dad45f93 chore(build): auto-generate docs 2025-02-15 07:27:57 +00:00
Zhou Fang
32e575aa75
feat(keymaps): enable toggling in quickfix list and location list (#5608)
## Description

This PR addresses issue #5503 by modifying the behavior of `<leader>xq`
and `<leader>xl` so that they toggle the quickfix and location lists
rather than simply opening them.

To prevent the full Lua error stack from being printed when no list
exists prior to using `copen` or `lopen`, I've wrapped the commands in
`pcall` and used `vim.notify` to alert the user in the same manner as
before.

## Related Issue(s)

#5503

## Screenshots


https://github.com/user-attachments/assets/b22b1861-e6e5-4d8a-967e-f760cca15719

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-15 08:27:01 +01:00
folke
98fca895e8 chore(build): auto-generate docs 2025-02-14 16:33:36 +00:00
Roland Kaminski
5788b9d1e0
feat(extras): setup neogen and mini.snippets integration (#5594)
## Description

Configure neogen and mini.snippets integration.

See also #5593.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-14 17:32:33 +01:00
github-actions[bot]
45d94b3197
chore(main): release 14.13.0 (#5574)
🤖 I have created a release *beep* *boop*
---


##
[14.13.0](https://github.com/LazyVim/LazyVim/compare/v14.12.0...v14.13.0)
(2025-02-12)


### Features

* **editor:** update parameter for fzf-lua
([#5584](https://github.com/LazyVim/LazyVim/issues/5584))
([0a5965b](0a5965b787))
* **lsp:** use lsp_config picker instead of `LspInfo`
([7529773](7529773371))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-12 21:38:40 +01:00
folke
0db6891679 chore(build): auto-generate docs 2025-02-12 13:22:29 +00:00
Beartama
0a5965b787
feat(editor): update parameter for fzf-lua (#5584)
## Description

`fzf-lua` renames their parameter in
7cede182cf,
so this PR updates the parameter also to stop the deprecation warning.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-12 14:21:29 +01:00
Folke Lemaitre
7529773371
feat(lsp): use lsp_config picker instead of LspInfo 2025-02-11 14:00:03 +01:00
folke
7fe0b47f17 chore(build): auto-generate docs 2025-02-11 10:54:30 +00:00
github-actions[bot]
9d426ed7fc
chore(main): release 14.12.0 (#5553)
🤖 I have created a release *beep* *boop*
---


##
[14.12.0](https://github.com/LazyVim/LazyVim/compare/v14.11.0...v14.12.0)
(2025-02-10)


### Features

* **config:** add option to disable the order check to warning message
([da3b515](da3b5159df))
* **config:** allow disabling the order check with
`vim.g.lazyvim_check_order = false`
([0bbce17](0bbce1775b))


### Bug Fixes

* **copilot-chat:** added support for snacks picker. Closes
[#5432](https://github.com/LazyVim/LazyVim/issues/5432). Closes
[#5552](https://github.com/LazyVim/LazyVim/issues/5552)
([2a608f0](2a608f00d4))
* **extras:** disable import handling when loading `:LazyExtras` +
changed some recommendations
([121a2e2](121a2e27ef))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-11 11:53:22 +01:00
Folke Lemaitre
121a2e27ef
fix(extras): disable import handling when loading :LazyExtras + changed some recommendations 2025-02-10 23:27:24 +01:00
folke
66981fe5b2 chore(build): auto-generate docs 2025-02-10 11:15:22 +00:00
Folke Lemaitre
da3b5159df
feat(config): add option to disable the order check to warning message 2025-02-10 12:14:05 +01:00
Folke Lemaitre
0bbce1775b
feat(config): allow disabling the order check with vim.g.lazyvim_check_order = false 2025-02-08 20:34:17 +01:00
Folke Lemaitre
2a608f00d4
fix(copilot-chat): added support for snacks picker. Closes #5432. Closes #5552 2025-02-08 18:32:46 +01:00
github-actions[bot]
29829f7eb6
chore(main): release 14.11.0 (#5550)
🤖 I have created a release *beep* *boop*
---


##
[14.11.0](https://github.com/LazyVim/LazyVim/compare/v14.10.0...v14.11.0)
(2025-02-08)


### Features

* **config:** show a warning when lazy.nvim imports order is incorrect
([83988ea](83988ea46e))
* **defaults:** new installs now default to snacks picker/explorer.
Existing installs don't change.
([25d90b5](25d90b54a3))
* **extras:** big rework of default extras
([525377d](525377dee9))
* **util:** `has_extra` now also checks for manual imports in `lazy.lua`
([0416376](0416376733))


### Bug Fixes

* **extras:** remove debug
([b4c24a3](b4c24a3fe8))
* **snacks.explorer:** no longer needed to disable neo-tree
([2d6b492](2d6b49281d))
* **snacks.picker:** move dashboard shortcut to picker extra. Closes
[#5549](https://github.com/LazyVim/LazyVim/issues/5549)
([2b3bcf3](2b3bcf36b2))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-08 15:37:13 +01:00
Folke Lemaitre
2b3bcf36b2
fix(snacks.picker): move dashboard shortcut to picker extra. Closes #5549 2025-02-08 15:27:26 +01:00
Folke Lemaitre
2d6b49281d
fix(snacks.explorer): no longer needed to disable neo-tree 2025-02-08 15:25:10 +01:00
Folke Lemaitre
25d90b54a3
feat(defaults): new installs now default to snacks picker/explorer. Existing installs don't change. 2025-02-08 15:23:30 +01:00
Folke Lemaitre
b4c24a3fe8
fix(extras): remove debug 2025-02-08 15:06:57 +01:00
folke
d6829fb82c chore(build): auto-generate docs 2025-02-08 14:05:52 +00:00
Folke Lemaitre
525377dee9
feat(extras): big rework of default extras 2025-02-08 15:04:46 +01:00
Folke Lemaitre
0416376733
feat(util): has_extra now also checks for manual imports in lazy.lua 2025-02-08 13:49:05 +01:00
Folke Lemaitre
83988ea46e
feat(config): show a warning when lazy.nvim imports order is incorrect 2025-02-08 13:49:04 +01:00
github-actions[bot]
597cd8ffa3
chore(main): release 14.10.0 (#5500)
🤖 I have created a release *beep* *boop*
---


##
[14.10.0](https://github.com/LazyVim/LazyVim/compare/v14.9.0...v14.10.0)
(2025-02-07)


### Features

* **bufferline:** support for snacks picker sidebars
([3500d6a](3500d6a826))
* **refactoring:** fallback to using vim ui select for refactoring.nvim
([#5540](https://github.com/LazyVim/LazyVim/issues/5540))
([23a1bbd](23a1bbdae9))
* **snacks.explorer:** enabled netrw integration
([4f006f1](4f006f1fba))
* **snacks.picker:** add projects picker to dashboard if snacks picker
is enabled
([fb256f2](fb256f2b68))
* **snacks.picker:** some extra keymaps
([ab30442](ab30442652))
* **snippets:** mini.snippets is out of beta
([#5505](https://github.com/LazyVim/LazyVim/issues/5505))
([4a81a37](4a81a370d7))


### Bug Fixes

* **copilot:** remove load on BufReadPost instead of InsertEnter
([8f4e9b8](8f4e9b8c1e))
* **go:** update go.lua to eliminate fieldalignment from analyses
([#5170](https://github.com/LazyVim/LazyVim/issues/5170))
([5c97327](5c9732733d))


### Performance Improvements

* **snacks_picker:** lazy-load trouble open action
([1a4d948](1a4d948e0d))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-08 00:10:47 +01:00
folke
a10706e819 chore(build): auto-generate docs 2025-02-07 23:10:27 +00:00
cjon256
5c9732733d
fix(go): update go.lua to eliminate fieldalignment from analyses (#5170)
## Description

Removed a setting from the go lang plugin. The setting now just causes
an error:
LSP[gopls] Invalid settings: setting option "analyses": this setting is
deprecated, use "the 'fieldalignment' analyzer was removed in
gopls/v0.17.0; instead, hover over struct fields to see size/offset
information (https://go.dev/issue/66861)" instead

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

Note: submitted similar request as f96aac6 but was rejected by CI/CD for
naming reasons. Changing the name did not help. Retrying.
2025-02-08 00:09:03 +01:00
folke
94d0ac0a0c chore(build): auto-generate docs 2025-02-06 20:40:54 +00:00
RohitB
23a1bbdae9
feat(refactoring): fallback to using vim ui select for refactoring.nvim (#5540)
## Description

Fallback to using `require("refactoring").select_refactor()` if neither
of `telescope` or `fzf-lua` is installed. Since `select_refactor()` uses
`vim.ui.select` internally, it can use `snacks.picker` if it is enabled.
## Related Issue(s)

<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [ x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-02-06 21:39:37 +01:00
Folke Lemaitre
3e8fddcd54
style(snacks.picker): buffer diagnostics keymap desc 2025-02-05 14:41:30 +01:00
folke
634f3ea28f chore(build): auto-generate docs 2025-02-05 07:02:02 +00:00
Folke Lemaitre
ab30442652
feat(snacks.picker): some extra keymaps 2025-02-05 08:00:58 +01:00
Folke Lemaitre
fb256f2b68
feat(snacks.picker): add projects picker to dashboard if snacks picker is enabled 2025-02-02 23:34:07 +01:00
folke
7f8e797d2b chore(build): auto-generate docs 2025-02-02 17:04:34 +00:00
Folke Lemaitre
1a4d948e0d
perf(snacks_picker): lazy-load trouble open action 2025-02-02 18:03:13 +01:00
Folke Lemaitre
3500d6a826
feat(bufferline): support for snacks picker sidebars 2025-01-31 20:33:15 +01:00
Folke Lemaitre
8f4e9b8c1e
fix(copilot): remove load on BufReadPost instead of InsertEnter 2025-01-31 20:10:50 +01:00
abeldekat
4a81a370d7
feat(snippets): mini.snippets is out of beta (#5505)
## Description

mini.snippets is out of beta, so I adjusted the description for the
extra accordingly


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

---------

Co-authored-by: abeldekat <abel@nomail.com>
2025-01-31 17:11:26 +01:00
folke
3242ab8cff chore(build): auto-generate docs 2025-01-31 07:34:07 +00:00
Folke Lemaitre
0e94534dd9
style(picker.explorer): use shortcut 2025-01-31 08:33:15 +01:00
Folke Lemaitre
4f006f1fba
feat(snacks.explorer): enabled netrw integration 2025-01-31 08:32:48 +01:00
github-actions[bot]
eb8ddea8c9
chore(main): release 14.9.0 (#5438)
🤖 I have created a release *beep* *boop*
---


##
[14.9.0](https://github.com/LazyVim/LazyVim/compare/v14.8.0...v14.9.0)
(2025-01-30)


### Features

* **markdown:** added markdown support for codecompanion
([e9db488](e9db488aca))
* **snacks.picker:** added &lt;leader&gt;si to search icons
([#5460](https://github.com/LazyVim/LazyVim/issues/5460))
([eea52be](eea52be344))
* **snacks.picker:** added &lt;leader&gt;su to search undotree
([#5447](https://github.com/LazyVim/LazyVim/issues/5447))
([332b320](332b32080c))
* **snacks.picker:** added `leader-fB` to find any buffer (including
hidden & nofile)
([83bf636](83bf6360a1))
* **snacks.picker:** added `leader-sp` to search for plugin spec
([7cf4185](7cf4185dc4))
* **snacks.picker:** added alt-c to toggle between cwd/root dir
([6be7c4f](6be7c4fee4))
* **snacks.picker:** flash.nvim integration
([5d24aa6](5d24aa6311))
* **snacks.picker:** use snacks picker for notifications when enabled
([01a70cc](01a70cc60e))
* **snacks:** extra for snacks explorer (replacement for neo-tree)
([e20d9af](e20d9afcbc))
* **snippets:** an extra for mini.snippets
([#5274](https://github.com/LazyVim/LazyVim/issues/5274))
([8b4e6ff](8b4e6ff70d))


### Bug Fixes

* **keymaps:** remove unneeded and ambiguous `&lt;leader&gt;w` keymap
([#5459](https://github.com/LazyVim/LazyVim/issues/5459))
([132986a](132986a624))
* **luasnip:** schedule `jump` to be compatible with blink, nvim-cmp
still works after change
([#5470](https://github.com/LazyVim/LazyVim/issues/5470))
([0350934](0350934d56))
* **root:** pass args to root.get
([dc8512f](dc8512fce1))
* **snacks.picker:** flash integration
([b5cd0d0](b5cd0d0e27))
* **snacks.picker:** snacks =&gt; flash
([3de7b24](3de7b24cf6))
* **snacks:** use `Snacks.picker` for recent files
([#5485](https://github.com/LazyVim/LazyVim/issues/5485))
([f0d2629](f0d2629bd8))
* **sql:** better nvim-cmp check. Closes
[#5188](https://github.com/LazyVim/LazyVim/issues/5188)
([1e83b4f](1e83b4f843))
* **vscode:** diabled some snacks plugins. Fixes
[#5364](https://github.com/LazyVim/LazyVim/issues/5364)
([c7a7ab5](c7a7ab5112))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-01-30 22:07:58 +01:00
folke
0dee310e90 chore(build): auto-generate docs 2025-01-30 20:40:13 +00:00
Folke Lemaitre
e9db488aca
feat(markdown): added markdown support for codecompanion 2025-01-30 21:38:56 +01:00
Folke Lemaitre
e20d9afcbc
feat(snacks): extra for snacks explorer (replacement for neo-tree) 2025-01-30 15:21:01 +01:00
Folke Lemaitre
b5cd0d0e27
fix(snacks.picker): flash integration 2025-01-29 23:21:59 +01:00
Folke Lemaitre
3de7b24cf6
fix(snacks.picker): snacks => flash 2025-01-29 21:06:38 +01:00
folke
63a39ef8cf chore(build): auto-generate docs 2025-01-29 19:19:59 +00:00
Folke Lemaitre
5d24aa6311
feat(snacks.picker): flash.nvim integration 2025-01-29 20:18:43 +01:00
Iordanis Petkakis
f0d2629bd8
fix(snacks): use Snacks.picker for recent files (#5485)
## Description
Use `Snacks.picker` for recent files instead of `LazyVim.pick`, because
`root_dir` is being propagated to `opts.cwd` and does not correctly
filter out recent files when inside nested directories.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-28 18:55:02 +01:00
Folke Lemaitre
01a70cc60e
feat(snacks.picker): use snacks picker for notifications when enabled 2025-01-28 17:22:17 +01:00
iniw
132986a624
fix(keymaps): remove unneeded and ambiguous <leader>w keymap (#5459)
## Description

The `<leader>w` mapping, described as "Windows", was causing potentially
timeout-related bugs with many other mappings that also started with
`<leader>w`.

The problems caused by this are described in detail in issue #5456 and
in discussion #4157.

@dpetka2001 Suggested removing it as an experiment, which I tried and
found to work.

<!--
  - Fixes #5456
  - Fixes #4157
-->

## Checklist

- [X] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-28 12:42:48 +01:00
folke
a3b459c1a5 chore(build): auto-generate docs 2025-01-28 08:20:18 +00:00
Iordanis Petkakis
0350934d56
fix(luasnip): schedule jump to be compatible with blink, nvim-cmp still works after change (#5470)
## Description
Schedule `jump` in Luasnip `snippet_forward`, so that it doesn't get
stuck before the last placeholder.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #5469
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-28 09:19:01 +01:00
Folke Lemaitre
83bf6360a1
feat(snacks.picker): added leader-fB to find any buffer (including hidden & nofile) 2025-01-23 19:22:47 +01:00
Folke Lemaitre
7cf4185dc4
feat(snacks.picker): added leader-sp to search for plugin spec 2025-01-23 19:22:19 +01:00
Jorge Villalobos
eea52be344
feat(snacks.picker): added <leader>si to search icons (#5460)
## Description

As it reads on the tin can.

## Related Issue(s)

N/A

## Screenshots

![Screenshot 2025-01-23 at 11 49
49](https://github.com/user-attachments/assets/6c4d0e9a-0a8e-4128-9ef1-b7954ece2bc7)

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-23 19:19:48 +01:00
Jorge Villalobos
332b32080c
feat(snacks.picker): added <leader>su to search undotree (#5447)
## Description

As it reads on the title ;)

## Related Issue(s)

None.

## Screenshots

![Screenshot 2025-01-22 at 14 02
30](https://github.com/user-attachments/assets/f8d2ba88-f279-4715-8120-7610c58bd269)
![Screenshot 2025-01-22 at 14 03
04](https://github.com/user-attachments/assets/08bc1b26-f49c-4f25-ad66-1166a3f72605)

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-23 16:51:36 +01:00
folke
7fb320700a chore(build): auto-generate docs 2025-01-23 11:04:34 +00:00
abeldekat
8b4e6ff70d
feat(snippets): an extra for mini.snippets (#5274)
## Description

Mini.snippets, a plugin to manage and expand snippets, is currently in
[beta](https://github.com/echasnovski/mini.nvim/issues/1428).

I think the plugin is a very interesting alternative to `luasnip`.

The following `lazydoc` will be added:

```lua
if lazyvim_docs then
  -- Set to `false` to prevent "non-lsp snippets"" from appearing inside completion windows
  -- Motivation: Less clutter in completion windows and a more direct usage of snippits
  vim.g.lazyvim_mini_snippets_in_completion = true

  -- Using default mini.snippets, completion suggestions might appear directly after inserting a snippet
  -- This extra prevents that from happening.
  -- Motivation: A better display of the current snippet.
  -- Also, those completions do not appear when using luasnip or native snippets
  --
  -- Set to `false` to enable completion suggestions directly after inserting a snippet
  vim.g.lazyvim_mini_snippets_override_expand_insert = true

  -- NOTE: Please also read:
  -- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-snippets.md#expand
  -- :h MiniSnippets-session

  -- Example override for your own config:
  --[[
  return {
    {
      "echasnovski/mini.snippets",
      opts = function(_, opts)
        -- By default, for opts.snippets, the extra for mini.snippets only adds gen_loader.from_lang()
        -- This provides a sensible quickstart, integrating with friendly-snippets
        -- and your own language-specific snippets
        --
        -- In order to change opts.snippets, replace the entire table inside your own opts

        local snippets, config_path = require("mini.snippets"), vim.fn.stdpath("config")

        opts.snippets = { -- override opts.snippets provided by extra...
          -- Load custom file with global snippets first (order matters)
          snippets.gen_loader.from_file(config_path .. "/snippets/global.json"),

          -- Load snippets based on current language by reading files from
          -- "snippets/" subdirectories from 'runtimepath' directories.
          snippets.gen_loader.from_lang(), -- this is the default in the extra...
        }
      end,
    },
  }
--]]
end

```

It's possible to use the code from this PR directly in your own
configuration:

1. Copy the code to lua/extras/coding/mini_snippets.lua in your config
folder
2. Restart nvim and enable the "user" extra for `mini.snippets`
3. Restart nvim
 
## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

---------

Co-authored-by: abeldekat <abel@nomail.com>
2025-01-23 12:03:36 +01:00
Folke Lemaitre
1e83b4f843
fix(sql): better nvim-cmp check. Closes #5188 2025-01-20 20:32:17 +01:00
Folke Lemaitre
c7a7ab5112
fix(vscode): diabled some snacks plugins. Fixes #5364 2025-01-20 20:30:39 +01:00
Folke Lemaitre
6be7c4fee4
feat(snacks.picker): added alt-c to toggle between cwd/root dir 2025-01-20 20:21:23 +01:00
Folke Lemaitre
dc8512fce1
fix(root): pass args to root.get 2025-01-20 20:21:01 +01:00
github-actions[bot]
2bea40c447
chore(main): release 14.8.0 (#5409)
🤖 I have created a release *beep* *boop*
---


##
[14.8.0](https://github.com/LazyVim/LazyVim/compare/v14.7.0...v14.8.0)
(2025-01-20)


### Features

* **chezmoi:** add snacks picker integration for chezmoi files
([#5429](https://github.com/LazyVim/LazyVim/issues/5429))
([970d1a0](970d1a05da))
* **dial:** add checkbox augend for markdown
([#5411](https://github.com/LazyVim/LazyVim/issues/5411))
([b19f207](b19f2070b8))
* **snacks.picker:** added leader-sS to search lsp workspace symbols
([8787ec1](8787ec1227))
* **snacks:** added git diff keymap to pick hunks with leader-gd
([62cb4a4](62cb4a465c))


### Bug Fixes

* **markdown:** disable checkbox rendering since it's annoying to edit
([4f31bfa](4f31bfab86))
* **snacks.picker:** fix mapping for `Recent (cwd)`
([#5407](https://github.com/LazyVim/LazyVim/issues/5407))
([8307b0f](8307b0fe50))
* **snacks.picker:** fix mapping for Projects for consistency
([#5433](https://github.com/LazyVim/LazyVim/issues/5433))
([eb7b453](eb7b453b48))
* **snacks.picker:** respect lazyvim.config.kind_filter
([#5415](https://github.com/LazyVim/LazyVim/issues/5415))
([df7426e](df7426eefa))


### Performance Improvements

* **java:** setting opts.dap_main to false to disable main class scan
([#5391](https://github.com/LazyVim/LazyVim/issues/5391))
([66c3577](66c3577bc7))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-01-20 13:50:28 +01:00
Junyi Liu
66c3577bc7
perf(java): setting opts.dap_main to false to disable main class scan (#5391)
## Description

For large Java project, calling
`require("jdtls.dap").setup_dap_main_class_configs(opts.dap_main)` has a
huge performance impact on the LSP. I tested on a Java project with 3.7K
java source files and 12K other files, a simple go_definition can take
about 20-30 seconds.

This change allow user to set the `opts.dap_main` to false so we can
skip the main class scan. By using the `.lazy.lua` project specific
setting, we can easily customize this option per project.

## Related Issue(s)

#5387 

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-20 13:16:14 +01:00
folke
0e5d17537a chore(build): auto-generate docs 2025-01-20 10:56:42 +00:00
Daniel Chong
eb7b453b48
fix(snacks.picker): fix mapping for Projects for consistency (#5433)
## Description

`<leader>fp` is the mapping for Telescope and fzf for
[Projects](https://www.lazyvim.org/extras/util/project). This PR makes
this shortcut consistent for snacks picker.

## Related Issue(s)

## Screenshots

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-20 11:55:51 +01:00
folke
8f58fe0b62 chore(build): auto-generate docs 2025-01-19 17:34:47 +00:00
Folke Lemaitre
8787ec1227
feat(snacks.picker): added leader-sS to search lsp workspace symbols 2025-01-19 18:33:48 +01:00
folke
4e8d75144d chore(build): auto-generate docs 2025-01-18 13:53:19 +00:00
Imron Gamidli
970d1a05da
feat(chezmoi): add snacks picker integration for chezmoi files (#5429)
## Description

We have a new picker Snacks picker, it means telescope and fzf-lua can
be uninstalled. But chezmoi files still listed only with telescope and
fzf-lua. In this pr we add snacks.picker integration if the user has
chosen snacks.picker in the LazyVimExtras.
2025-01-18 14:52:25 +01:00
folke
b574f01af7 chore(build): auto-generate docs 2025-01-17 09:01:25 +00:00
Jorge Villalobos
b729e65318
refactor(blink): color swatch icon upstreamed (#5141)
## Description

I've upstreamed the block char vs. icon replacement for Tailwind colors
so we shouldn't need this here anymore. I've replaced it by extending
the default blink icons instead, just in case they introduce an icon
which isn't yet covered by Lazy's, it would still show up (unlikely, but
better, no?).

## Related Issue(s)

none

## Screenshots

none

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-17 10:00:30 +01:00
Riri
df7426eefa
fix(snacks.picker): respect lazyvim.config.kind_filter (#5415)
## Description

Currently, snacks.picker does not filter symbols based on the
kind_filter configured in lazyvim.

This PR addresses that issue.

## Screenshots

nil

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

Co-authored-by: ding.zhao <ding.zhao@trip.com>
2025-01-16 11:37:59 +01:00
Folke Lemaitre
4f31bfab86
fix(markdown): disable checkbox rendering since it's annoying to edit 2025-01-16 10:05:33 +01:00
Yusuf Aktepe
b19f2070b8
feat(dial): add checkbox augend for markdown (#5411)
## Description

Added support for markdown checkboxes. ( **[ ]** <-> **[x]** )

<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)

<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-16 10:01:30 +01:00
folke
915aab99ef chore(build): auto-generate docs 2025-01-16 08:59:38 +00:00
Folke Lemaitre
62cb4a465c
feat(snacks): added git diff keymap to pick hunks with leader-gd 2025-01-16 09:58:43 +01:00
folke
6aefa8ec3e chore(build): auto-generate docs 2025-01-15 18:54:50 +00:00
Iordanis Petkakis
8307b0fe50
fix(snacks.picker): fix mapping for Recent (cwd) (#5407)
## Description
The mapping `<leader>fR` was showing all recent files instead of the
ones in the `cwd` only.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-01-15 19:53:56 +01:00
56 changed files with 967 additions and 314 deletions

View file

@ -1,3 +1,3 @@
{
".": "14.7.0"
".": "14.15.0"
}

View file

@ -1,5 +1,154 @@
# Changelog
## [14.15.0](https://github.com/LazyVim/LazyVim/compare/v14.14.0...v14.15.0) (2025-05-12)
### Features
* **chezmoi:** enhance fzf-lua chezmoi picker and add snacks.dasbhoard entry ([#5275](https://github.com/LazyVim/LazyVim/issues/5275)) ([759a19e](https://github.com/LazyVim/LazyVim/commit/759a19e785735eb8513b4f8d4483ec5ab1b75307))
* **keymaps:** show lang when opening treesitter inspect ([9c59668](https://github.com/LazyVim/LazyVim/commit/9c596681f684c549e69652a5c77a68bd5ecc93e3))
* **octo:** add support for snacks picker ([#5625](https://github.com/LazyVim/LazyVim/issues/5625)) ([16a7724](https://github.com/LazyVim/LazyVim/commit/16a772452a515790c3304b358dd66a618fda3260))
* **snippets:** mini.snippets standalone and blink.resubscribe ([#5507](https://github.com/LazyVim/LazyVim/issues/5507)) ([f2f2aea](https://github.com/LazyVim/LazyVim/commit/f2f2aea6722b530281b476c08ec60f2d320f1c3d))
### Bug Fixes
* **blink:** make sure to use `LazyVim.config.icons.kinds` ([#5668](https://github.com/LazyVim/LazyVim/issues/5668)) ([771089f](https://github.com/LazyVim/LazyVim/commit/771089f6928512ab0f431e9db04e7dc802a5e1a5))
* **blink:** remove unnecessary `sources` from `cmdline` ([#5620](https://github.com/LazyVim/LazyVim/issues/5620)) ([5b94baa](https://github.com/LazyVim/LazyVim/commit/5b94baa1d2e7d8ec7e9a9cab82fabd8c3655d369))
* **copilot-chat:** switch from deprecated picker integrations ([#5707](https://github.com/LazyVim/LazyVim/issues/5707)) ([b0334fd](https://github.com/LazyVim/LazyVim/commit/b0334fd57cdb920e03afab3c1940114ad43e4fbe))
* **mason:** rename and pin to v1 ([c20c402](https://github.com/LazyVim/LazyVim/commit/c20c4022958780617424a090eee2360d560eb939))
* **snacks.picker:** remove redundant leader-gc keymap. Closes [#5646](https://github.com/LazyVim/LazyVim/issues/5646) ([606b964](https://github.com/LazyVim/LazyVim/commit/606b96466eeb39b1c1bb576c9b99041b64705f43))
## [14.14.0](https://github.com/LazyVim/LazyVim/compare/v14.13.0...v14.14.0) (2025-02-15)
### Features
* **extras:** setup neogen and mini.snippets integration ([#5594](https://github.com/LazyVim/LazyVim/issues/5594)) ([5788b9d](https://github.com/LazyVim/LazyVim/commit/5788b9d1e06dfb5f99f92354dc550c9f2c5a6710))
* **keymaps:** enable toggling in quickfix list and location list ([#5608](https://github.com/LazyVim/LazyVim/issues/5608)) ([32e575a](https://github.com/LazyVim/LazyVim/commit/32e575aa75792c63f710f0bdc3e2fb5aa8ea75ad))
* **snacks.picker:** added support for Project shortcuts in other dashboards ([#5607](https://github.com/LazyVim/LazyVim/issues/5607)) ([401ef48](https://github.com/LazyVim/LazyVim/commit/401ef48fcd617534b017ef471309bb1bd6465131))
* **snacks.picker:** move trouble keymap from `ctrl+t` -&gt; `alt+t` ([4aff006](https://github.com/LazyVim/LazyVim/commit/4aff0063a42bbc499cfa03feb6e58d4339c0950d))
### Bug Fixes
* **blink:** `blink` released new version, remove previous hack ([#5616](https://github.com/LazyVim/LazyVim/issues/5616)) ([b35015a](https://github.com/LazyVim/LazyVim/commit/b35015ac59f0c630b2efe18ccf10d693397d0ca4))
* **blink:** `cmdline` is now top-level on main branch ([#5615](https://github.com/LazyVim/LazyVim/issues/5615)) ([0458e46](https://github.com/LazyVim/LazyVim/commit/0458e46dcca49cc404062e04a9054a8bd058dcd3))
* **blink:** enable Neovim native mapping with `&lt;Tab&gt;` ([#5617](https://github.com/LazyVim/LazyVim/issues/5617)) ([e7f8e4f](https://github.com/LazyVim/LazyVim/commit/e7f8e4faba0c6d397526238923f1aeff1740d09c))
## [14.13.0](https://github.com/LazyVim/LazyVim/compare/v14.12.0...v14.13.0) (2025-02-12)
### Features
* **editor:** update parameter for fzf-lua ([#5584](https://github.com/LazyVim/LazyVim/issues/5584)) ([0a5965b](https://github.com/LazyVim/LazyVim/commit/0a5965b787e4d513b5a2e1182b35bd11ceafeeb3))
* **lsp:** use lsp_config picker instead of `LspInfo` ([7529773](https://github.com/LazyVim/LazyVim/commit/75297733710951e81b505d88b2d728a5b0a9b6ab))
## [14.12.0](https://github.com/LazyVim/LazyVim/compare/v14.11.0...v14.12.0) (2025-02-10)
### Features
* **config:** add option to disable the order check to warning message ([da3b515](https://github.com/LazyVim/LazyVim/commit/da3b5159df326bc31d5a0ebdfa2c5cbbd32df9d2))
* **config:** allow disabling the order check with `vim.g.lazyvim_check_order = false` ([0bbce17](https://github.com/LazyVim/LazyVim/commit/0bbce1775b7d6750d3c4d761f3ad1bcfb77fb805))
### Bug Fixes
* **copilot-chat:** added support for snacks picker. Closes [#5432](https://github.com/LazyVim/LazyVim/issues/5432). Closes [#5552](https://github.com/LazyVim/LazyVim/issues/5552) ([2a608f0](https://github.com/LazyVim/LazyVim/commit/2a608f00d47bb6679a27a313fb0404e4d3a2196c))
* **extras:** disable import handling when loading `:LazyExtras` + changed some recommendations ([121a2e2](https://github.com/LazyVim/LazyVim/commit/121a2e27ef0f4d8ab64bf76768b9600c45fd2364))
## [14.11.0](https://github.com/LazyVim/LazyVim/compare/v14.10.0...v14.11.0) (2025-02-08)
### Features
* **config:** show a warning when lazy.nvim imports order is incorrect ([83988ea](https://github.com/LazyVim/LazyVim/commit/83988ea46eccbe20953cd807984d2e89d679aa6e))
* **defaults:** new installs now default to snacks picker/explorer. Existing installs don't change. ([25d90b5](https://github.com/LazyVim/LazyVim/commit/25d90b54a3b1863cb4428fd309ab855732289710))
* **extras:** big rework of default extras ([525377d](https://github.com/LazyVim/LazyVim/commit/525377dee9ac3d19f53e333538e4e85586163ad8))
* **util:** `has_extra` now also checks for manual imports in `lazy.lua` ([0416376](https://github.com/LazyVim/LazyVim/commit/041637673371db7866f8bf00d77fc2fb6cc673c6))
### Bug Fixes
* **extras:** remove debug ([b4c24a3](https://github.com/LazyVim/LazyVim/commit/b4c24a3fe882c21555e60a1ec44087526e856eb9))
* **snacks.explorer:** no longer needed to disable neo-tree ([2d6b492](https://github.com/LazyVim/LazyVim/commit/2d6b49281d2550222be6aada0b7eeca07bb26e10))
* **snacks.picker:** move dashboard shortcut to picker extra. Closes [#5549](https://github.com/LazyVim/LazyVim/issues/5549) ([2b3bcf3](https://github.com/LazyVim/LazyVim/commit/2b3bcf36b2392bef94afefc07e2fcf32960960d7))
## [14.10.0](https://github.com/LazyVim/LazyVim/compare/v14.9.0...v14.10.0) (2025-02-07)
### Features
* **bufferline:** support for snacks picker sidebars ([3500d6a](https://github.com/LazyVim/LazyVim/commit/3500d6a826a32d06d921f3e22342734c61ef09fe))
* **refactoring:** fallback to using vim ui select for refactoring.nvim ([#5540](https://github.com/LazyVim/LazyVim/issues/5540)) ([23a1bbd](https://github.com/LazyVim/LazyVim/commit/23a1bbdae90f37aab4a86bfb4c113531a28e7f71))
* **snacks.explorer:** enabled netrw integration ([4f006f1](https://github.com/LazyVim/LazyVim/commit/4f006f1fba5fdaa0150c544ad7966b96ec9cb04a))
* **snacks.picker:** add projects picker to dashboard if snacks picker is enabled ([fb256f2](https://github.com/LazyVim/LazyVim/commit/fb256f2b688cb7ac9875f704fe6c00f27efc2354))
* **snacks.picker:** some extra keymaps ([ab30442](https://github.com/LazyVim/LazyVim/commit/ab304426527723e116742cd7862fc976f876107c))
* **snippets:** mini.snippets is out of beta ([#5505](https://github.com/LazyVim/LazyVim/issues/5505)) ([4a81a37](https://github.com/LazyVim/LazyVim/commit/4a81a370d7868d7db32042f69b0fc5a6218059c5))
### Bug Fixes
* **copilot:** remove load on BufReadPost instead of InsertEnter ([8f4e9b8](https://github.com/LazyVim/LazyVim/commit/8f4e9b8c1e43e354d91529484aedca54f04bdcf6))
* **go:** update go.lua to eliminate fieldalignment from analyses ([#5170](https://github.com/LazyVim/LazyVim/issues/5170)) ([5c97327](https://github.com/LazyVim/LazyVim/commit/5c9732733de62a4e15988826f53d16a4dfdf960c))
### Performance Improvements
* **snacks_picker:** lazy-load trouble open action ([1a4d948](https://github.com/LazyVim/LazyVim/commit/1a4d948e0dae360836187be8c86283d7e814b7ef))
## [14.9.0](https://github.com/LazyVim/LazyVim/compare/v14.8.0...v14.9.0) (2025-01-30)
### Features
* **markdown:** added markdown support for codecompanion ([e9db488](https://github.com/LazyVim/LazyVim/commit/e9db488acaa04f1a9eca6d022e57fed4271b8af8))
* **snacks.picker:** added &lt;leader&gt;si to search icons ([#5460](https://github.com/LazyVim/LazyVim/issues/5460)) ([eea52be](https://github.com/LazyVim/LazyVim/commit/eea52be3447502dde77d9e6fa75fd597a0b5a86a))
* **snacks.picker:** added &lt;leader&gt;su to search undotree ([#5447](https://github.com/LazyVim/LazyVim/issues/5447)) ([332b320](https://github.com/LazyVim/LazyVim/commit/332b32080c52727a16db90e06989caa0c378caa1))
* **snacks.picker:** added `leader-fB` to find any buffer (including hidden & nofile) ([83bf636](https://github.com/LazyVim/LazyVim/commit/83bf6360a1f28a3fc1afe31ae300247fc01c7a90))
* **snacks.picker:** added `leader-sp` to search for plugin spec ([7cf4185](https://github.com/LazyVim/LazyVim/commit/7cf4185dc4d1fe49ad004d33a6703603fb4500ff))
* **snacks.picker:** added alt-c to toggle between cwd/root dir ([6be7c4f](https://github.com/LazyVim/LazyVim/commit/6be7c4fee4fb755ff07f7bcc13eac96e1d8c279a))
* **snacks.picker:** flash.nvim integration ([5d24aa6](https://github.com/LazyVim/LazyVim/commit/5d24aa63111af68fbada8c97fedb75b07b8c3c92))
* **snacks.picker:** use snacks picker for notifications when enabled ([01a70cc](https://github.com/LazyVim/LazyVim/commit/01a70cc60ed2760afc819510177fb8d12a371b25))
* **snacks:** extra for snacks explorer (replacement for neo-tree) ([e20d9af](https://github.com/LazyVim/LazyVim/commit/e20d9afcbc980510093a3753a3991d8c934cbb75))
* **snippets:** an extra for mini.snippets ([#5274](https://github.com/LazyVim/LazyVim/issues/5274)) ([8b4e6ff](https://github.com/LazyVim/LazyVim/commit/8b4e6ff70d682cad3b1f4999623c3f0ac639fa82))
### Bug Fixes
* **keymaps:** remove unneeded and ambiguous `&lt;leader&gt;w` keymap ([#5459](https://github.com/LazyVim/LazyVim/issues/5459)) ([132986a](https://github.com/LazyVim/LazyVim/commit/132986a624b49bf740161d90ce94f16dd5ea5883))
* **luasnip:** schedule `jump` to be compatible with blink, nvim-cmp still works after change ([#5470](https://github.com/LazyVim/LazyVim/issues/5470)) ([0350934](https://github.com/LazyVim/LazyVim/commit/0350934d56579f3e6a9d40fa47313b2970d74772))
* **root:** pass args to root.get ([dc8512f](https://github.com/LazyVim/LazyVim/commit/dc8512fce1ec1cd4b0ca52d1077b2ed3894d51c8))
* **snacks.picker:** flash integration ([b5cd0d0](https://github.com/LazyVim/LazyVim/commit/b5cd0d0e27081be3ef1905475a0fe541b7661870))
* **snacks.picker:** snacks =&gt; flash ([3de7b24](https://github.com/LazyVim/LazyVim/commit/3de7b24cf6ed844772ea047476a400c56d5f4b42))
* **snacks:** use `Snacks.picker` for recent files ([#5485](https://github.com/LazyVim/LazyVim/issues/5485)) ([f0d2629](https://github.com/LazyVim/LazyVim/commit/f0d2629bd859eeac343999b0fe145f9beb227c4a))
* **sql:** better nvim-cmp check. Closes [#5188](https://github.com/LazyVim/LazyVim/issues/5188) ([1e83b4f](https://github.com/LazyVim/LazyVim/commit/1e83b4f843f88678189df81b1c88a400c53abdbc))
* **vscode:** diabled some snacks plugins. Fixes [#5364](https://github.com/LazyVim/LazyVim/issues/5364) ([c7a7ab5](https://github.com/LazyVim/LazyVim/commit/c7a7ab51129692927ae47f4e57ce22d10d48467e))
## [14.8.0](https://github.com/LazyVim/LazyVim/compare/v14.7.0...v14.8.0) (2025-01-20)
### Features
* **chezmoi:** add snacks picker integration for chezmoi files ([#5429](https://github.com/LazyVim/LazyVim/issues/5429)) ([970d1a0](https://github.com/LazyVim/LazyVim/commit/970d1a05da37554aa17b671c869431a7b387d8be))
* **dial:** add checkbox augend for markdown ([#5411](https://github.com/LazyVim/LazyVim/issues/5411)) ([b19f207](https://github.com/LazyVim/LazyVim/commit/b19f2070b847a3067436f4d16a0cc5b84a9f9819))
* **snacks.picker:** added leader-sS to search lsp workspace symbols ([8787ec1](https://github.com/LazyVim/LazyVim/commit/8787ec1227e10123ad7291cf916020d9a8626525))
* **snacks:** added git diff keymap to pick hunks with leader-gd ([62cb4a4](https://github.com/LazyVim/LazyVim/commit/62cb4a465c490c7d41f7a3bf52fb0e222f2cf83b))
### Bug Fixes
* **markdown:** disable checkbox rendering since it's annoying to edit ([4f31bfa](https://github.com/LazyVim/LazyVim/commit/4f31bfab86402c819e5ea1e18b3c5d139628c864))
* **snacks.picker:** fix mapping for `Recent (cwd)` ([#5407](https://github.com/LazyVim/LazyVim/issues/5407)) ([8307b0f](https://github.com/LazyVim/LazyVim/commit/8307b0fe506a38417f3b7835e2c4b43d9a970946))
* **snacks.picker:** fix mapping for Projects for consistency ([#5433](https://github.com/LazyVim/LazyVim/issues/5433)) ([eb7b453](https://github.com/LazyVim/LazyVim/commit/eb7b453b48ab7e3008013e0edf2822f622111e97))
* **snacks.picker:** respect lazyvim.config.kind_filter ([#5415](https://github.com/LazyVim/LazyVim/issues/5415)) ([df7426e](https://github.com/LazyVim/LazyVim/commit/df7426eefa79d5dfa2fcbe2f381abfb2cca70bad))
### Performance Improvements
* **java:** setting opts.dap_main to false to disable main class scan ([#5391](https://github.com/LazyVim/LazyVim/issues/5391)) ([66c3577](https://github.com/LazyVim/LazyVim/commit/66c3577bc779d31a7c2addd47de7cc6d215795ba))
## [14.7.0](https://github.com/LazyVim/LazyVim/compare/v14.6.1...v14.7.0) (2025-01-14)

View file

@ -1,4 +1,4 @@
*LazyVim.txt* For Neovim Last change: 2025 January 14
*LazyVim.txt* For Neovim Last change: 2025 May 12
==============================================================================
Table of Contents *LazyVim-table-of-contents*

View file

@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util")
---@class LazyVimConfig: LazyVimOptions
local M = {}
M.version = "14.7.0" -- x-release-please-version
M.version = "14.15.0" -- x-release-please-version
LazyVim.config = M
---@class LazyVimOptions
@ -136,16 +136,19 @@ local defaults = {
}
M.json = {
version = 7,
version = 8,
loaded = false,
path = vim.g.lazyvim_json or vim.fn.stdpath("config") .. "/lazyvim.json",
data = {
version = nil, ---@type string?
version = nil, ---@type number?
install_version = nil, ---@type number?
news = {}, ---@type table<string, string>
extras = {}, ---@type string[]
},
}
function M.json.load()
M.json.loaded = true
local f = io.open(M.json.path, "r")
if f then
local data = f:read("*a")
@ -157,6 +160,8 @@ function M.json.load()
LazyVim.json.migrate()
end
end
else
M.json.data.install_version = M.json.version
end
end
@ -206,6 +211,37 @@ function M.setup(opts)
"desc",
"vscode",
})
if vim.g.lazyvim_check_order == false then
return
end
-- Check lazy.nvim import order
local imports = require("lazy.core.config").spec.modules
local function find(pat, last)
for i = last and #imports or 1, last and 1 or #imports, last and -1 or 1 do
if imports[i]:find(pat) then
return i
end
end
end
local lazyvim_plugins = find("^lazyvim%.plugins$")
local extras = find("^lazyvim%.plugins%.extras%.", true) or lazyvim_plugins
local plugins = find("^plugins$") or math.huge
if lazyvim_plugins ~= 1 or extras > plugins then
local msg = {
"The order of your `lazy.nvim` imports is incorrect:",
"- `lazyvim.plugins` should be first",
"- followed by any `lazyvim.plugins.extras`",
"- and finally your own `plugins`",
"",
"If you think you know what you're doing, you can disable this check with:",
"```lua",
"vim.g.lazyvim_check_order = false",
"```",
}
vim.notify(table.concat(msg, "\n"), "warn", { title = "LazyVim" })
end
end,
})
@ -302,6 +338,69 @@ function M.init()
M.json.load()
end
---@alias LazyVimDefault {name: string, extra: string, enabled?: boolean, origin?: "global" | "default" | "extra" }
local default_extras ---@type table<string, LazyVimDefault>
function M.get_defaults()
if default_extras then
return default_extras
end
---@type table<string, LazyVimDefault[]>
local checks = {
picker = {
{ name = "snacks", extra = "editor.snacks_picker" },
{ name = "fzf", extra = "editor.fzf" },
{ name = "telescope", extra = "editor.telescope" },
},
cmp = {
{ name = "blink.cmp", extra = "coding.blink", enabled = vim.fn.has("nvim-0.10") == 1 },
{ name = "nvim-cmp", extra = "coding.nvim-cmp" },
},
explorer = {
{ name = "snacks", extra = "editor.snacks_explorer" },
{ name = "neo-tree", extra = "editor.neo-tree" },
},
}
-- existing installs keep their defaults
if (LazyVim.config.json.data.install_version or 7) < 8 then
table.insert(checks.picker, 1, table.remove(checks.picker, 2))
table.insert(checks.explorer, 1, table.remove(checks.explorer, 2))
end
default_extras = {}
for name, check in pairs(checks) do
local valid = {} ---@type string[]
for _, extra in ipairs(check) do
if extra.enabled ~= false then
valid[#valid + 1] = extra.name
end
end
local origin = "default"
local use = vim.g["lazyvim_" .. name]
use = vim.tbl_contains(valid, use or "auto") and use or nil
origin = use and "global" or origin
for _, extra in ipairs(use and {} or check) do
if extra.enabled ~= false and LazyVim.has_extra(extra.extra) then
use = extra.name
break
end
end
origin = use and "extra" or origin
use = use or valid[1]
for _, extra in ipairs(check) do
local import = "lazyvim.plugins.extras." .. extra.extra
extra = vim.deepcopy(extra)
extra.enabled = extra.name == use
if extra.enabled then
extra.origin = origin
end
default_extras[import] = extra
end
end
return default_extras
end
setmetatable(M, {
__index = function(_, key)
if options == nil then

View file

@ -94,8 +94,21 @@ map("n", "<leader>l", "<cmd>Lazy<cr>", { desc = "Lazy" })
-- new file
map("n", "<leader>fn", "<cmd>enew<cr>", { desc = "New File" })
map("n", "<leader>xl", "<cmd>lopen<cr>", { desc = "Location List" })
map("n", "<leader>xq", "<cmd>copen<cr>", { desc = "Quickfix List" })
-- location list
map("n", "<leader>xl", function()
local success, err = pcall(vim.fn.getloclist(0, { winid = 0 }).winid ~= 0 and vim.cmd.lclose or vim.cmd.lopen)
if not success and err then
vim.notify(err, vim.log.levels.ERROR)
end
end, { desc = "Location List" })
-- quickfix list
map("n", "<leader>xq", function()
local success, err = pcall(vim.fn.getqflist({ winid = 0 }).winid ~= 0 and vim.cmd.cclose or vim.cmd.copen)
if not success and err then
vim.notify(err, vim.log.levels.ERROR)
end
end, { desc = "Quickfix List" })
map("n", "[q", vim.cmd.cprev, { desc = "Previous Quickfix" })
map("n", "]q", vim.cmd.cnext, { desc = "Next Quickfix" })
@ -166,7 +179,7 @@ map("n", "<leader>qq", "<cmd>qa<cr>", { desc = "Quit All" })
-- highlights under cursor
map("n", "<leader>ui", vim.show_pos, { desc = "Inspect Pos" })
map("n", "<leader>uI", "<cmd>InspectTree<cr>", { desc = "Inspect Tree" })
map("n", "<leader>uI", function() vim.treesitter.inspect_tree() vim.api.nvim_input("I") end, { desc = "Inspect Tree" })
-- LazyVim Changelog
map("n", "<leader>L", function() LazyVim.news.changelog() end, { desc = "LazyVim Changelog" })
@ -182,7 +195,6 @@ map("t", "<C-/>", "<cmd>close<cr>", { desc = "Hide Terminal" })
map("t", "<c-_>", "<cmd>close<cr>", { desc = "which_key_ignore" })
-- windows
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>v", { desc = "Split Window Right", remap = true })
map("n", "<leader>wd", "<C-W>c", { desc = "Delete Window", remap = true })

View file

@ -1,17 +1,4 @@
return {
{
import = "lazyvim.plugins.extras.coding.nvim-cmp",
enabled = function()
return LazyVim.cmp_engine() == "nvim-cmp"
end,
},
{
import = "lazyvim.plugins.extras.coding.blink",
enabled = function()
return LazyVim.cmp_engine() == "blink.cmp"
end,
},
-- auto pairs
{
"echasnovski/mini.pairs",

View file

@ -1,131 +1,5 @@
return {
-- file explorer
{
"nvim-neo-tree/neo-tree.nvim",
cmd = "Neotree",
keys = {
{
"<leader>fe",
function()
require("neo-tree.command").execute({ toggle = true, dir = LazyVim.root() })
end,
desc = "Explorer NeoTree (Root Dir)",
},
{
"<leader>fE",
function()
require("neo-tree.command").execute({ toggle = true, dir = vim.uv.cwd() })
end,
desc = "Explorer NeoTree (cwd)",
},
{ "<leader>e", "<leader>fe", desc = "Explorer NeoTree (Root Dir)", remap = true },
{ "<leader>E", "<leader>fE", desc = "Explorer NeoTree (cwd)", remap = true },
{
"<leader>ge",
function()
require("neo-tree.command").execute({ source = "git_status", toggle = true })
end,
desc = "Git Explorer",
},
{
"<leader>be",
function()
require("neo-tree.command").execute({ source = "buffers", toggle = true })
end,
desc = "Buffer Explorer",
},
},
deactivate = function()
vim.cmd([[Neotree close]])
end,
init = function()
-- FIX: use `autocmd` for lazy-loading neo-tree instead of directly requiring it,
-- because `cwd` is not set up properly.
vim.api.nvim_create_autocmd("BufEnter", {
group = vim.api.nvim_create_augroup("Neotree_start_directory", { clear = true }),
desc = "Start Neo-tree with directory",
once = true,
callback = function()
if package.loaded["neo-tree"] then
return
else
local stats = vim.uv.fs_stat(vim.fn.argv(0))
if stats and stats.type == "directory" then
require("neo-tree")
end
end
end,
})
end,
opts = {
sources = { "filesystem", "buffers", "git_status" },
open_files_do_not_replace_types = { "terminal", "Trouble", "trouble", "qf", "Outline" },
filesystem = {
bind_to_cwd = false,
follow_current_file = { enabled = true },
use_libuv_file_watcher = true,
},
window = {
mappings = {
["l"] = "open",
["h"] = "close_node",
["<space>"] = "none",
["Y"] = {
function(state)
local node = state.tree:get_node()
local path = node:get_id()
vim.fn.setreg("+", path, "c")
end,
desc = "Copy Path to Clipboard",
},
["O"] = {
function(state)
require("lazy.util").open(state.tree:get_node().path, { system = true })
end,
desc = "Open with System Application",
},
["P"] = { "toggle_preview", config = { use_float = false } },
},
},
default_component_configs = {
indent = {
with_expanders = true, -- if nil and file nesting is enabled, will enable expanders
expander_collapsed = "",
expander_expanded = "",
expander_highlight = "NeoTreeExpander",
},
git_status = {
symbols = {
unstaged = "󰄱",
staged = "󰱒",
},
},
},
},
config = function(_, opts)
local function on_move(data)
Snacks.rename.on_rename_file(data.source, data.destination)
end
local events = require("neo-tree.events")
opts.event_handlers = opts.event_handlers or {}
vim.list_extend(opts.event_handlers, {
{ event = events.FILE_MOVED, handler = on_move },
{ event = events.FILE_RENAMED, handler = on_move },
})
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
{
"MagicDuck/grug-far.nvim",
@ -384,23 +258,4 @@ return {
{ "<leader>sT", "<cmd>TodoTelescope keywords=TODO,FIX,FIXME<cr>", desc = "Todo/Fix/Fixme" },
},
},
{
import = "lazyvim.plugins.extras.editor.fzf",
enabled = function()
return LazyVim.pick.want() == "fzf"
end,
},
{
import = "lazyvim.plugins.extras.editor.telescope",
enabled = function()
return LazyVim.pick.want() == "telescope"
end,
},
{
import = "lazyvim.plugins.extras.editor.snacks_picker",
enabled = function()
return LazyVim.pick.want() == "snacks"
end,
},
}

View file

@ -1,19 +1,3 @@
local M = {}
---@param kind string
function M.pick(kind)
return function()
local actions = require("CopilotChat.actions")
local items = actions[kind .. "_actions"]()
if not items then
LazyVim.warn("No " .. kind .. " found on the current line")
return
end
local ok = pcall(require, "fzf-lua")
require("CopilotChat.integrations." .. (ok and "fzflua" or "telescope")).pick(items)
end
end
return {
{
"CopilotC-Nvim/CopilotChat.nvim",
@ -53,16 +37,25 @@ return {
{
"<leader>aq",
function()
local input = vim.fn.input("Quick Chat: ")
if input ~= "" then
require("CopilotChat").ask(input)
end
vim.ui.input({
prompt = "Quick Chat: ",
}, function(input)
if input ~= "" then
require("CopilotChat").ask(input)
end
end)
end,
desc = "Quick Chat (CopilotChat)",
mode = { "n", "v" },
},
-- Show prompts actions with telescope
{ "<leader>ap", M.pick("prompt"), desc = "Prompt Actions (CopilotChat)", mode = { "n", "v" } },
{
"<leader>ap",
function()
require("CopilotChat").select_prompt()
end,
desc = "Prompt Actions (CopilotChat)",
mode = { "n", "v" },
},
},
config = function(_, opts)
local chat = require("CopilotChat")

View file

@ -5,11 +5,12 @@ return {
"zbirenbaum/copilot.lua",
cmd = "Copilot",
build = ":Copilot auth",
event = "InsertEnter",
event = "BufReadPost",
opts = {
suggestion = {
enabled = not vim.g.ai_cmp,
auto_trigger = true,
hide_during_completion = vim.g.ai_cmp,
keymap = {
accept = false, -- handled by nvim-cmp / blink.cmp
next = "<M-]>",

View file

@ -79,7 +79,10 @@ return {
-- with blink.compat
compat = {},
default = { "lsp", "path", "snippets", "buffer" },
cmdline = {},
},
cmdline = {
enabled = false,
},
keymap = {
@ -140,6 +143,7 @@ return {
items = transform_items and transform_items(ctx, items) or items
for _, item in ipairs(items) do
item.kind = kind_idx or item.kind
item.kind_icon = LazyVim.config.icons.kinds[item.kind_name] or item.kind_icon or nil
end
return items
end
@ -158,9 +162,7 @@ return {
"saghen/blink.cmp",
opts = function(_, opts)
opts.appearance = opts.appearance or {}
opts.appearance.kind_icons = vim.tbl_extend("keep", {
Color = "██", -- Use block instead of icon for color items to make swatches more usable
}, LazyVim.config.icons.kinds)
opts.appearance.kind_icons = vim.tbl_extend("force", opts.appearance.kind_icons or {}, LazyVim.config.icons.kinds)
end,
},

View file

@ -30,7 +30,9 @@ return {
opts = function()
LazyVim.cmp.actions.snippet_forward = function()
if require("luasnip").jumpable(1) then
require("luasnip").jump(1)
vim.schedule(function()
require("luasnip").jump(1)
end)
return true
end
end

View file

@ -0,0 +1,171 @@
if lazyvim_docs then
-- Set to `false` to prevent "non-lsp snippets"" from appearing inside completion windows
-- Motivation: Less clutter in completion windows and a more direct usage of snippits
vim.g.lazyvim_mini_snippets_in_completion = true
-- NOTE: Please also read:
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-snippets.md#expand
-- :h MiniSnippets-session
-- Example override for your own config:
--[[
return {
{
"echasnovski/mini.snippets",
opts = function(_, opts)
-- By default, for opts.snippets, the extra for mini.snippets only adds gen_loader.from_lang()
-- This provides a sensible quickstart, integrating with friendly-snippets
-- and your own language-specific snippets
--
-- In order to change opts.snippets, replace the entire table inside your own opts
local snippets, config_path = require("mini.snippets"), vim.fn.stdpath("config")
opts.snippets = { -- override opts.snippets provided by extra...
-- Load custom file with global snippets first (order matters)
snippets.gen_loader.from_file(config_path .. "/snippets/global.json"),
-- Load snippets based on current language by reading files from
-- "snippets/" subdirectories from 'runtimepath' directories.
snippets.gen_loader.from_lang(), -- this is the default in the extra...
}
end,
},
}
--]]
end
local include_in_completion = vim.g.lazyvim_mini_snippets_in_completion == nil
or vim.g.lazyvim_mini_snippets_in_completion
local function expand_from_lsp(snippet)
local insert = MiniSnippets.config.expand.insert or MiniSnippets.default_insert
insert({ body = snippet })
end
local function jump(direction)
local is_active = MiniSnippets.session.get(false) ~= nil
if is_active then
MiniSnippets.session.jump(direction)
return true
end
end
---@type fun(snippets, insert) | nil
local expand_select_override = nil
return {
-- disable builtin snippet support:
{ "garymjr/nvim-snippets", optional = true, enabled = false },
-- disable luasnip:
{ "L3MON4D3/LuaSnip", optional = true, enabled = false },
-- add mini.snippets
desc = "Manage and expand snippets (alternative to Luasnip)",
{
"echasnovski/mini.snippets",
event = "InsertEnter", -- don't depend on other plugins to load...
dependencies = "rafamadriz/friendly-snippets",
opts = function()
---@diagnostic disable-next-line: duplicate-set-field
LazyVim.cmp.actions.snippet_stop = function() end -- by design, <esc> should not stop the session!
---@diagnostic disable-next-line: duplicate-set-field
LazyVim.cmp.actions.snippet_forward = function()
return jump("next")
end
local mini_snippets = require("mini.snippets")
return {
snippets = { mini_snippets.gen_loader.from_lang() },
-- Following the behavior of vim.snippets,
-- the intended usage of <esc> is to be able to temporarily exit into normal mode for quick edits.
--
-- If you'd rather stop the snippet on <esc>, activate the line below in your own config:
-- mappings = { stop = "<esc>" }, -- <c-c> by default, see :h MiniSnippets-session
expand = {
select = function(snippets, insert)
-- Close completion window on snippet select - vim.ui.select
-- Needed to remove virtual text for fzf-lua and telescope, but not for mini.pick...
local select = expand_select_override or MiniSnippets.default_select
select(snippets, insert)
end,
},
}
end,
},
-- nvim-cmp integration
{
"hrsh7th/nvim-cmp",
optional = true,
dependencies = include_in_completion and { "abeldekat/cmp-mini-snippets" } or nil,
opts = function(_, opts)
local cmp = require("cmp")
local cmp_config = require("cmp.config")
opts.snippet = {
expand = function(args)
expand_from_lsp(args.body)
cmp.resubscribe({ "TextChangedI", "TextChangedP" })
cmp_config.set_onetime({ sources = {} })
end,
}
if include_in_completion then
table.insert(opts.sources, { name = "mini_snippets" })
else
expand_select_override = function(snippets, insert)
-- stylua: ignore
if cmp.visible() then cmp.close() end
MiniSnippets.default_select(snippets, insert)
end
end
end,
-- stylua: ignore
-- counterpart to <tab> defined in cmp.mappings
keys = include_in_completion and { { "<s-tab>", function() jump("prev") end, mode = "i" } } or nil,
},
-- blink.cmp integration
{
"saghen/blink.cmp",
optional = true,
opts = function(_, opts)
-- Return early
if include_in_completion then
opts.snippets = { preset = "mini_snippets" }
return
end
-- Standalone --
local blink = require("blink.cmp")
expand_select_override = function(snippets, insert)
-- Schedule, otherwise blink's virtual text is not removed on vim.ui.select
blink.cancel()
vim.schedule(function()
MiniSnippets.default_select(snippets, insert)
end)
end
--
-- Blink performs a require on blink.cmp.sources.snippets.default
-- By removing the source, that default engine will not be used
opts.sources.default = vim.tbl_filter(function(source)
return source ~= "snippets"
end, opts.sources.default)
opts.snippets = { -- need to repeat blink's preset here
expand = function(snippet)
expand_from_lsp(snippet)
blink.resubscribe()
end,
active = function()
return MiniSnippets.session.get(false) ~= nil
end,
jump = function(direction)
jump(direction == -1 and "prev" or "next")
end,
}
end,
},
}

View file

@ -4,7 +4,6 @@
-- and more.
return {
"echasnovski/mini.surround",
recommended = true,
keys = function(_, keys)
-- Populate the keys based on the user's options
local opts = LazyVim.opts("mini.surround")

View file

@ -1,5 +1,6 @@
return {
"danymat/neogen",
dependencies = LazyVim.has("mini.snippets") and { "mini.snippets" } or {},
cmd = "Neogen",
keys = {
{
@ -17,6 +18,7 @@ return {
local map = {
["LuaSnip"] = "luasnip",
["mini.snippets"] = "mini",
["nvim-snippy"] = "snippy",
["vim-vsnip"] = "vsnip",
}

View file

@ -140,6 +140,11 @@ return {
}),
},
markdown = {
augend.constant.new({
elements = { "[ ]", "[x]" },
word = false,
cyclic = true,
}),
augend.misc.alias.markdown_header,
},
json = {

View file

@ -40,7 +40,6 @@ end
return {
desc = "Awesome picker for FZF (alternative to Telescope)",
recommended = true,
{
"ibhagwan/fzf-lua",
cmd = "FzfLua",
@ -286,16 +285,13 @@ return {
{
"neovim/nvim-lspconfig",
opts = function()
if LazyVim.pick.want() ~= "fzf" then
return
end
local Keys = require("lazyvim.plugins.lsp.keymaps").get()
-- stylua: ignore
vim.list_extend(Keys, {
{ "gd", "<cmd>FzfLua lsp_definitions jump_to_single_result=true ignore_current_line=true<cr>", desc = "Goto Definition", has = "definition" },
{ "gr", "<cmd>FzfLua lsp_references jump_to_single_result=true ignore_current_line=true<cr>", desc = "References", nowait = true },
{ "gI", "<cmd>FzfLua lsp_implementations jump_to_single_result=true ignore_current_line=true<cr>", desc = "Goto Implementation" },
{ "gy", "<cmd>FzfLua lsp_typedefs jump_to_single_result=true ignore_current_line=true<cr>", desc = "Goto T[y]pe Definition" },
{ "gd", "<cmd>FzfLua lsp_definitions jump1=true ignore_current_line=true<cr>", desc = "Goto Definition", has = "definition" },
{ "gr", "<cmd>FzfLua lsp_references jump1=true ignore_current_line=true<cr>", desc = "References", nowait = true },
{ "gI", "<cmd>FzfLua lsp_implementations jump1=true ignore_current_line=true<cr>", desc = "Goto Implementation" },
{ "gy", "<cmd>FzfLua lsp_typedefs jump1=true ignore_current_line=true<cr>", desc = "Goto T[y]pe Definition" },
})
end,
},

View file

@ -0,0 +1,128 @@
return {
-- file explorer
{
"nvim-neo-tree/neo-tree.nvim",
cmd = "Neotree",
keys = {
{
"<leader>fe",
function()
require("neo-tree.command").execute({ toggle = true, dir = LazyVim.root() })
end,
desc = "Explorer NeoTree (Root Dir)",
},
{
"<leader>fE",
function()
require("neo-tree.command").execute({ toggle = true, dir = vim.uv.cwd() })
end,
desc = "Explorer NeoTree (cwd)",
},
{ "<leader>e", "<leader>fe", desc = "Explorer NeoTree (Root Dir)", remap = true },
{ "<leader>E", "<leader>fE", desc = "Explorer NeoTree (cwd)", remap = true },
{
"<leader>ge",
function()
require("neo-tree.command").execute({ source = "git_status", toggle = true })
end,
desc = "Git Explorer",
},
{
"<leader>be",
function()
require("neo-tree.command").execute({ source = "buffers", toggle = true })
end,
desc = "Buffer Explorer",
},
},
deactivate = function()
vim.cmd([[Neotree close]])
end,
init = function()
-- FIX: use `autocmd` for lazy-loading neo-tree instead of directly requiring it,
-- because `cwd` is not set up properly.
vim.api.nvim_create_autocmd("BufEnter", {
group = vim.api.nvim_create_augroup("Neotree_start_directory", { clear = true }),
desc = "Start Neo-tree with directory",
once = true,
callback = function()
if package.loaded["neo-tree"] then
return
else
local stats = vim.uv.fs_stat(vim.fn.argv(0))
if stats and stats.type == "directory" then
require("neo-tree")
end
end
end,
})
end,
opts = {
sources = { "filesystem", "buffers", "git_status" },
open_files_do_not_replace_types = { "terminal", "Trouble", "trouble", "qf", "Outline" },
filesystem = {
bind_to_cwd = false,
follow_current_file = { enabled = true },
use_libuv_file_watcher = true,
},
window = {
mappings = {
["l"] = "open",
["h"] = "close_node",
["<space>"] = "none",
["Y"] = {
function(state)
local node = state.tree:get_node()
local path = node:get_id()
vim.fn.setreg("+", path, "c")
end,
desc = "Copy Path to Clipboard",
},
["O"] = {
function(state)
require("lazy.util").open(state.tree:get_node().path, { system = true })
end,
desc = "Open with System Application",
},
["P"] = { "toggle_preview", config = { use_float = false } },
},
},
default_component_configs = {
indent = {
with_expanders = true, -- if nil and file nesting is enabled, will enable expanders
expander_collapsed = "",
expander_expanded = "",
expander_highlight = "NeoTreeExpander",
},
git_status = {
symbols = {
unstaged = "󰄱",
staged = "󰱒",
},
},
},
},
config = function(_, opts)
local function on_move(data)
Snacks.rename.on_rename_file(data.source, data.destination)
end
local events = require("neo-tree.events")
opts.event_handlers = opts.event_handlers or {}
vim.list_extend(opts.event_handlers, {
{ event = events.FILE_MOVED, handler = on_move },
{ event = events.FILE_RENAMED, handler = on_move },
})
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,
},
}

View file

@ -1,10 +1,10 @@
local pick = function()
local refactoring = require("refactoring")
if LazyVim.pick.picker.name == "telescope" then
return require("telescope").extensions.refactoring.refactors()
elseif LazyVim.pick.picker.name == "fzf" then
local fzf_lua = require("fzf-lua")
local results = require("refactoring").get_refactors()
local refactoring = require("refactoring")
local results = refactoring.get_refactors()
local opts = {
fzf_opts = {},
@ -16,6 +16,8 @@ local pick = function()
},
}
fzf_lua.fzf_exec(results, opts)
else
refactoring.select_refactor()
end
end

View file

@ -0,0 +1,24 @@
return {
desc = "Snacks File Explorer",
recommended = true,
"folke/snacks.nvim",
opts = { explorer = {} },
keys = {
{
"<leader>fe",
function()
Snacks.explorer({ cwd = LazyVim.root() })
end,
desc = "Explorer Snacks (root dir)",
},
{
"<leader>fE",
function()
Snacks.explorer()
end,
desc = "Explorer Snacks (cwd)",
},
{ "<leader>e", "<leader>fe", desc = "Explorer Snacks (root dir)", remap = true },
{ "<leader>E", "<leader>fE", desc = "Explorer Snacks (cwd)", remap = true },
},
}

View file

@ -27,11 +27,32 @@ end
return {
desc = "Fast and modern file picker",
-- recommended = true,
recommended = true,
{
"folke/snacks.nvim",
opts = {
picker = {},
picker = {
win = {
input = {
keys = {
["<a-c>"] = {
"toggle_cwd",
mode = { "n", "i" },
},
},
},
},
actions = {
---@param p snacks.Picker
toggle_cwd = function(p)
local root = LazyVim.root({ buf = p.input.filter.current_buf, normalize = true })
local cwd = vim.fs.normalize((vim.uv or vim.loop).cwd() or ".")
local current = p:cwd()
p:set_cwd(current == root and cwd or root)
p:find()
end,
},
},
},
-- stylua: ignore
keys = {
@ -39,32 +60,40 @@ return {
{ "<leader>/", LazyVim.pick("grep"), desc = "Grep (Root Dir)" },
{ "<leader>:", function() Snacks.picker.command_history() end, desc = "Command History" },
{ "<leader><space>", LazyVim.pick("files"), desc = "Find Files (Root Dir)" },
{ "<leader>n", function() Snacks.picker.notifications() end, desc = "Notification History" },
-- find
{ "<leader>fb", function() Snacks.picker.buffers() end, desc = "Buffers" },
{ "<leader>fB", function() Snacks.picker.buffers({ hidden = true, nofile = true }) end, desc = "Buffers (all)" },
{ "<leader>fc", LazyVim.pick.config_files(), desc = "Find Config File" },
{ "<leader>ff", LazyVim.pick("files"), desc = "Find Files (Root Dir)" },
{ "<leader>fF", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" },
{ "<leader>fg", function() Snacks.picker.git_files() end, desc = "Find Files (git-files)" },
{ "<leader>fr", LazyVim.pick("oldfiles"), desc = "Recent" },
{ "<leader>fR", LazyVim.pick("oldfiles", { only_cwd = true }), desc = "Recent (cwd)" },
{ "<leader>fR", function() Snacks.picker.recent({ filter = { cwd = true }}) end, desc = "Recent (cwd)" },
{ "<leader>fp", function() Snacks.picker.projects() end, desc = "Projects" },
-- git
{ "<leader>gc", function() Snacks.picker.git_log() end, desc = "Git Log" },
{ "<leader>gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (hunks)" },
{ "<leader>gs", function() Snacks.picker.git_status() end, desc = "Git Status" },
{ "<leader>gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" },
-- Grep
{ "<leader>sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" },
{ "<leader>sB", function() Snacks.picker.grep_buffers() end, desc = "Grep Open Buffers" },
{ "<leader>sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" },
{ "<leader>sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" },
{ "<leader>sp", function() Snacks.picker.lazy() end, desc = "Search for Plugin Spec" },
{ "<leader>sw", LazyVim.pick("grep_word"), desc = "Visual selection or word (Root Dir)", mode = { "n", "x" } },
{ "<leader>sW", LazyVim.pick("grep_word", { root = false }), desc = "Visual selection or word (cwd)", mode = { "n", "x" } },
-- search
{ '<leader>s"', function() Snacks.picker.registers() end, desc = "Registers" },
{ '<leader>s/', function() Snacks.picker.search_history() end, desc = "Search History" },
{ "<leader>sa", function() Snacks.picker.autocmds() end, desc = "Autocmds" },
{ "<leader>sc", function() Snacks.picker.command_history() end, desc = "Command History" },
{ "<leader>sC", function() Snacks.picker.commands() end, desc = "Commands" },
{ "<leader>sd", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" },
{ "<leader>sD", function() Snacks.picker.diagnostics_buffer() end, desc = "Buffer Diagnostics" },
{ "<leader>sh", function() Snacks.picker.help() end, desc = "Help Pages" },
{ "<leader>sH", function() Snacks.picker.highlights() end, desc = "Highlights" },
{ "<leader>si", function() Snacks.picker.icons() end, desc = "Icons" },
{ "<leader>sj", function() Snacks.picker.jumps() end, desc = "Jumps" },
{ "<leader>sk", function() Snacks.picker.keymaps() end, desc = "Keymaps" },
{ "<leader>sl", function() Snacks.picker.loclist() end, desc = "Location List" },
@ -72,8 +101,9 @@ return {
{ "<leader>sm", function() Snacks.picker.marks() end, desc = "Marks" },
{ "<leader>sR", function() Snacks.picker.resume() end, desc = "Resume" },
{ "<leader>sq", function() Snacks.picker.qflist() end, desc = "Quickfix List" },
{ "<leader>su", function() Snacks.picker.undo() end, desc = "Undotree" },
-- ui
{ "<leader>uC", function() Snacks.picker.colorschemes() end, desc = "Colorschemes" },
{ "<leader>qp", function() Snacks.picker.projects() end, desc = "Projects" },
},
},
{
@ -82,11 +112,15 @@ return {
if LazyVim.has("trouble.nvim") then
return vim.tbl_deep_extend("force", opts or {}, {
picker = {
actions = require("trouble.sources.snacks").actions,
actions = {
trouble_open = function(...)
return require("trouble.sources.snacks").actions.trouble_open.action(...)
end,
},
win = {
input = {
keys = {
["<c-t>"] = {
["<a-t>"] = {
"trouble_open",
mode = { "n", "i" },
},
@ -101,9 +135,6 @@ return {
{
"neovim/nvim-lspconfig",
opts = function()
if LazyVim.pick.want() ~= "snacks" then
return
end
local Keys = require("lazyvim.plugins.lsp.keymaps").get()
-- stylua: ignore
vim.list_extend(Keys, {
@ -111,7 +142,8 @@ return {
{ "gr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" },
{ "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" },
{ "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" },
{ "<leader>ss", function() Snacks.picker.lsp_symbols() end, desc = "LSP Symbols", has = "documentSymbol" },
{ "<leader>ss", function() Snacks.picker.lsp_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Symbols", has = "documentSymbol" },
{ "<leader>sS", function() Snacks.picker.lsp_workspace_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Workspace Symbols", has = "workspace/symbols" },
})
end,
},
@ -124,4 +156,100 @@ return {
{ "<leader>sT", function () Snacks.picker.todo_comments({ keywords = { "TODO", "FIX", "FIXME" } }) end, desc = "Todo/Fix/Fixme" },
},
},
{
"folke/snacks.nvim",
opts = function(_, opts)
table.insert(opts.dashboard.preset.keys, 3, {
icon = "",
key = "p",
desc = "Projects",
action = ":lua Snacks.picker.projects()",
})
end,
},
{
"goolord/alpha-nvim",
optional = true,
opts = function(_, dashboard)
local button = dashboard.button("p", "" .. " Projects", [[<cmd> lua Snacks.picker.projects() <cr>]])
button.opts.hl = "AlphaButtons"
button.opts.hl_shortcut = "AlphaShortcut"
table.insert(dashboard.section.buttons.val, 4, button)
end,
},
{
"echasnovski/mini.starter",
optional = true,
opts = function(_, opts)
local items = {
{
name = "Projects",
action = [[lua Snacks.picker.projects()]],
section = string.rep(" ", 22) .. "Telescope",
},
}
vim.list_extend(opts.items, items)
end,
},
{
"nvimdev/dashboard-nvim",
optional = true,
opts = function(_, opts)
if not vim.tbl_get(opts, "config", "center") then
return
end
local projects = {
action = "lua Snacks.picker.projects()",
desc = " Projects",
icon = "",
key = "p",
}
projects.desc = projects.desc .. string.rep(" ", 43 - #projects.desc)
projects.key_format = " %s"
table.insert(opts.config.center, 3, projects)
end,
},
{
"folke/flash.nvim",
optional = true,
specs = {
{
"folke/snacks.nvim",
opts = {
picker = {
win = {
input = {
keys = {
["<a-s>"] = { "flash", mode = { "n", "i" } },
["s"] = { "flash" },
},
},
},
actions = {
flash = function(picker)
require("flash").jump({
pattern = "^",
label = { after = { 0, 0 } },
search = {
mode = "search",
exclude = {
function(win)
return vim.bo[vim.api.nvim_win_get_buf(win)].filetype ~= "snacks_picker_list"
end,
},
},
action = function(match)
local idx = picker.list:row2idx(match.pos[1])
picker.list:_move(idx, true, true)
end,
})
end,
},
},
},
},
},
},
}

View file

@ -61,9 +61,6 @@ return {
{
"nvim-telescope/telescope.nvim",
cmd = "Telescope",
enabled = function()
return LazyVim.pick.want() == "telescope"
end,
version = false, -- telescope did only one release, so use HEAD for now
dependencies = {
{
@ -267,9 +264,6 @@ return {
{
"stevearc/dressing.nvim",
lazy = true,
enabled = function()
return LazyVim.pick.want() == "telescope"
end,
init = function()
---@diagnostic disable-next-line: duplicate-set-field
vim.ui.select = function(...)
@ -287,9 +281,6 @@ return {
{
"neovim/nvim-lspconfig",
opts = function()
if LazyVim.pick.want() ~= "telescope" then
return
end
local Keys = require("lazyvim.plugins.lsp.keymaps").get()
-- stylua: ignore
vim.list_extend(Keys, {

View file

@ -24,7 +24,7 @@ local supported = {
return {
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "biome" } },
},

View file

@ -1,6 +1,6 @@
return {
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = function(_, opts)
table.insert(opts.ensure_installed, "black")
end,

View file

@ -58,7 +58,7 @@ M.has_parser = LazyVim.memoize(M.has_parser)
return {
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "prettier" } },
},

View file

@ -6,7 +6,7 @@ return {
})
end,
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "ansible-lint" } },
},
{

View file

@ -117,7 +117,7 @@ return {
optional = true,
dependencies = {
-- Ensure C/C++ debugger is installed
"williamboman/mason.nvim",
"mason-org/mason.nvim",
optional = true,
opts = { ensure_installed = { "codelldb" } },
},

View file

@ -10,7 +10,7 @@ return {
},
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "elm-format" } },
},

View file

@ -37,7 +37,6 @@ return {
rangeVariableTypes = true,
},
analyses = {
fieldalignment = true,
nilness = true,
unusedparams = true,
unusedwrite = true,
@ -76,7 +75,7 @@ return {
},
-- Ensure Go tools are installed
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "goimports", "gofumpt" } },
},
{
@ -84,7 +83,7 @@ return {
optional = true,
dependencies = {
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "gomodifytags", "impl" } },
},
},
@ -112,7 +111,7 @@ return {
optional = true,
dependencies = {
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "delve" } },
},
{

View file

@ -28,7 +28,7 @@ return {
},
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "haskell-language-server" } },
},
@ -37,7 +37,7 @@ return {
optional = true,
dependencies = {
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "haskell-debug-adapter" } },
},
},

View file

@ -56,7 +56,7 @@ return {
end,
dependencies = {
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "java-debug-adapter", "java-test" } },
},
},
@ -130,6 +130,7 @@ return {
-- These depend on nvim-dap, but can additionally be disabled by setting false here.
dap = { hotcodereplace = "auto", config_overrides = {} },
-- Can set this to false to disable main class scan, which is a performance killer for large project
dap_main = {},
test = true,
settings = {
@ -246,7 +247,9 @@ return {
if opts.dap and LazyVim.has("nvim-dap") and mason_registry.is_installed("java-debug-adapter") then
-- custom init for Java debugger
require("jdtls").setup_dap(opts.dap)
require("jdtls.dap").setup_dap_main_class_configs(opts.dap_main)
if opts.dap_main then
require("jdtls.dap").setup_dap_main_class_configs(opts.dap_main)
end
-- Java Test require Java debugger to work
if opts.test and mason_registry.is_installed("java-test") then

View file

@ -14,7 +14,7 @@ return {
end,
-- Add packages(linting, debug adapter)
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "ktlint" } },
},
-- Add syntax highlighting
@ -35,7 +35,7 @@ return {
{
"mfussenegger/nvim-lint",
optional = true,
dependencies = "williamboman/mason.nvim",
dependencies = "mason-org/mason.nvim",
opts = {
linters_by_ft = { kotlin = { "ktlint" } },
},
@ -64,7 +64,7 @@ return {
{
"mfussenegger/nvim-dap",
optional = true,
dependencies = "williamboman/mason.nvim",
dependencies = "mason-org/mason.nvim",
opts = function()
local dap = require("dap")
if not dap.adapters.kotlin then

View file

@ -40,7 +40,7 @@ return {
},
},
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "markdownlint-cli2", "markdown-toc" } },
},
{
@ -104,8 +104,11 @@ return {
sign = false,
icons = {},
},
checkbox = {
enabled = false,
},
},
ft = { "markdown", "norg", "rmd", "org" },
ft = { "markdown", "norg", "rmd", "org", "codecompanion" },
config = function(_, opts)
require("render-markdown").setup(opts)
Snacks.toggle({

View file

@ -36,7 +36,7 @@ return {
},
},
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "csharpier", "netcoredbg" } },
},
{

View file

@ -35,7 +35,7 @@ return {
},
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = {
ensure_installed = {
"phpcs",

View file

@ -48,7 +48,7 @@ return {
},
},
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "erb-formatter", "erb-lint" } },
},
{

View file

@ -43,7 +43,7 @@ return {
-- Ensure Rust debugger is installed
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
optional = true,
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}

View file

@ -48,7 +48,7 @@ return {
vim.api.nvim_create_autocmd("FileType", {
pattern = sql_ft,
callback = function()
if LazyVim.has("nvim-cmp") then
if LazyVim.has_extra("coding.nvim-cmp") then
local cmp = require("cmp")
-- global sources
@ -143,7 +143,7 @@ return {
-- Linters & formatters
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "sqlfluff" } },
},
{

View file

@ -20,7 +20,7 @@ return {
},
-- ensure terraform tools are installed
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "tflint" } },
},
{

View file

@ -194,7 +194,7 @@ return {
optional = true,
dependencies = {
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
table.insert(opts.ensure_installed, "js-debug-adapter")

View file

@ -3,22 +3,44 @@ local pick_chezmoi = function()
require("telescope").extensions.chezmoi.find_files()
elseif LazyVim.pick.picker.name == "fzf" then
local fzf_lua = require("fzf-lua")
local results = require("chezmoi.commands").list()
local chezmoi = require("chezmoi.commands")
local opts = {
fzf_opts = {},
fzf_colors = true,
actions = {
["default"] = function(selected)
chezmoi.edit({
targets = { "~/" .. selected[1] },
args = { "--watch" },
})
end,
},
local actions = {
["enter"] = function(selected)
fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = os.getenv("HOME") })
end,
}
fzf_lua.fzf_exec(results, opts)
fzf_lua.files({ cmd = "chezmoi managed --include=files,symlinks", actions = actions })
elseif LazyVim.pick.picker.name == "snacks" then
local results = require("chezmoi.commands").list({
args = {
"--path-style",
"absolute",
"--include",
"files",
"--exclude",
"externals",
},
})
local items = {}
for _, czFile in ipairs(results) do
table.insert(items, {
text = czFile,
file = czFile,
})
end
---@type snacks.picker.Config
local opts = {
items = items,
confirm = function(picker, item)
picker:close()
require("chezmoi.commands").edit({
targets = { item.text },
args = { "--watch" },
})
end,
}
Snacks.picker.pick(opts)
end
end
@ -33,6 +55,7 @@ return {
},
{
"xvzc/chezmoi.nvim",
cmd = { "ChezmoiEdit" },
keys = {
{
"<leader>sz",
@ -88,6 +111,27 @@ return {
table.insert(opts.config.center, 5, projects)
end,
},
{
"folke/snacks.nvim",
optional = true,
opts = function(_, opts)
local chezmoi_entry = {
icon = "",
key = "c",
desc = "Config",
action = pick_chezmoi,
}
local config_index
for i = #opts.dashboard.preset.keys, 1, -1 do
if opts.dashboard.preset.keys[i].key == "c" then
table.remove(opts.dashboard.preset.keys, i)
config_index = i
break
end
end
table.insert(opts.dashboard.preset.keys, config_index, chezmoi_entry)
end,
},
-- Filetype icons
{

View file

@ -18,7 +18,7 @@ return {
},
},
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "shellcheck" } },
},
-- add some stuff to treesitter

View file

@ -2,7 +2,7 @@ return {
-- Ensure GitUI tool is installed
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
opts = { ensure_installed = { "gitui" } },
keys = {
{

View file

@ -42,12 +42,14 @@ return {
"pwntester/octo.nvim",
opts = function(_, opts)
vim.treesitter.language.register("markdown", "octo")
if LazyVim.has("telescope.nvim") then
if LazyVim.has_extra("editor.telescope") then
opts.picker = "telescope"
elseif LazyVim.has("fzf-lua") then
elseif LazyVim.has_extra("editor.fzf") then
opts.picker = "fzf-lua"
elseif LazyVim.has_extra("editor.snacks_picker") then
opts.picker = "snacks"
else
LazyVim.error("`octo.nvim` requires `telescope.nvim` or `fzf-lua`")
LazyVim.error("`octo.nvim` requires `telescope.nvim` or `fzf-lua` or `snacks.nvim`")
end
-- Keep some empty windows in sessions

View file

@ -57,9 +57,14 @@ return {
{
"snacks.nvim",
opts = {
bigfile = { enabled = false },
dashboard = { enabled = false },
indent = { enabled = false },
scroll = { enabled = false },
input = { enabled = false },
notifier = { enabled = false },
picker = { enabled = false },
quickfile = { enabled = false },
scroll = { enabled = false },
statuscolumn = { enabled = false },
},
},

View file

@ -5,7 +5,7 @@ return {
event = "LazyFile",
dependencies = {
"mason.nvim",
{ "williamboman/mason-lspconfig.nvim", config = function() end },
{ "mason-org/mason-lspconfig.nvim", config = function() end },
},
opts = function()
---@class PluginLspOpts
@ -257,7 +257,7 @@ return {
-- cmdline tools and lsp servers
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
cmd = "Mason",
keys = { { "<leader>cm", "<cmd>Mason<cr>", desc = "Mason" } },
build = ":MasonUpdate",
@ -292,4 +292,8 @@ return {
end)
end,
},
-- pin to v1 for now
{ "mason-org/mason.nvim", version = "^1.0.0" },
{ "mason-org/mason-lspconfig.nvim", version = "^1.0.0" },
}

View file

@ -13,7 +13,7 @@ function M.get()
end
-- stylua: ignore
M._keys = {
{ "<leader>cl", "<cmd>LspInfo<cr>", desc = "Lsp Info" },
{ "<leader>cl", function() Snacks.picker.lsp_config() end, desc = "Lsp Info" },
{ "gd", vim.lsp.buf.definition, desc = "Goto Definition", has = "definition" },
{ "gr", vim.lsp.buf.references, desc = "References", nowait = true },
{ "gI", vim.lsp.buf.implementation, desc = "Goto Implementation" },

View file

@ -37,6 +37,9 @@ return {
highlight = "Directory",
text_align = "left",
},
{
filetype = "snacks_layout_box",
},
},
---@param opts bufferline.IconFetcherOpts
get_element_icon = function(opts)
@ -278,7 +281,13 @@ return {
},
-- stylua: ignore
keys = {
{ "<leader>n", function() Snacks.notifier.show_history() end, desc = "Notification History" },
{ "<leader>n", function()
if Snacks.config.picker and Snacks.config.picker.enabled then
Snacks.picker.notifications()
else
Snacks.notifier.show_history()
end
end, desc = "Notification History" },
{ "<leader>un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" },
},
},

View file

@ -7,17 +7,40 @@ local prios = {
["lazyvim.plugins.extras.lang.typescript"] = 5,
["lazyvim.plugins.extras.coding.blink"] = 5,
["lazyvim.plugins.extras.formatting.prettier"] = 10,
-- default core extra priority is 20
-- default priority is 50
["lazyvim.plugins.extras.editor.aerial"] = 100,
["lazyvim.plugins.extras.editor.outline"] = 100,
["lazyvim.plugins.extras.ui.alpha"] = 19,
["lazyvim.plugins.extras.ui.dashboard-nvim"] = 19,
["lazyvim.plugins.extras.ui.mini-starter"] = 19,
}
if vim.g.xtras_prios then
prios = vim.tbl_deep_extend("force", prios, vim.g.xtras_prios or {})
end
local extras = {} ---@type string[]
local defaults = LazyVim.config.get_defaults()
-- Add extras from LazyExtras that are not disabled
for _, extra in ipairs(LazyVim.config.json.data.extras) do
local def = defaults[extra]
if not (def and def.enabled == false) then
extras[#extras + 1] = extra
end
end
-- Add default extras
for name, extra in pairs(defaults) do
if extra.enabled then
prios[name] = prios[name] or 20
extras[#extras + 1] = name
end
end
---@type string[]
local extras = LazyVim.dedup(LazyVim.config.json.data.extras)
extras = LazyVim.dedup(extras)
local version = vim.version()
local v = version.major .. "_" .. version.minor

View file

@ -83,6 +83,7 @@ end
---@param modname string
---@param source LazyExtraSource
function M.get_extra(source, modname)
LazyVim.plugin.handle_defaults = false
local enabled = vim.tbl_contains(M.state, modname)
local spec = Plugin.Spec.new(nil, { optional = true, pkg = false })
spec:parse({ import = modname })
@ -248,6 +249,9 @@ end
---@param extra LazyExtra
function X:extra(extra)
local defaults = LazyVim.config.get_defaults()
local def = defaults[extra.module]
local origin = def and (def.origin or "user") or nil
if not extra.managed then
---@type LazyExtra[]
local parents = {}
@ -263,7 +267,7 @@ function X:extra(extra)
self:diagnostic({
message = "Required by " .. table.concat(pp, ", "),
})
elseif vim.tbl_contains(LazyVim.plugin.core_imports, extra.module) then
elseif vim.tbl_contains(LazyVim.plugin.core_imports, extra.module) or origin == "default" then
self:diagnostic({
message = "This extra is included by default",
})

View file

@ -55,12 +55,33 @@ function M.has(plugin)
return M.get_plugin(plugin) ~= nil
end
--- Checks if the extras is enabled:
--- * If the module was imported
--- * If the module was added by LazyExtras
--- * If the module is in the user's lazy imports
---@param extra string
function M.has_extra(extra)
local Config = require("lazyvim.config")
local modname = "lazyvim.plugins.extras." .. extra
return vim.tbl_contains(require("lazy.core.config").spec.modules, modname)
or vim.tbl_contains(Config.json.data.extras, modname)
local LazyConfig = require("lazy.core.config")
-- check if it was imported already
if vim.tbl_contains(LazyConfig.spec.modules, modname) then
return true
end
-- check if it was added by LazyExtras
if vim.tbl_contains(Config.json.data.extras, modname) then
return true
end
-- check if it's in the imports
local spec = LazyConfig.options.spec
if type(spec) == "table" then
for _, s in ipairs(spec) do
if type(s) == "table" and s.import == modname then
return true
end
end
end
return false
end
---@param fn fun()
@ -265,13 +286,4 @@ function M.memoize(fn)
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

View file

@ -97,6 +97,8 @@ function M.migrate()
return vim.tbl_contains(ai, name) and ("lazyvim.plugins.extras.ai." .. name) or extra
end)
end, json.data.extras or {})
elseif json.data.version == 7 then
json.data.install_version = 7
end
M.save()

View file

@ -28,10 +28,6 @@ function M.register(picker)
return true
end
if M.picker and M.picker.name ~= M.want() then
M.picker = nil
end
if M.picker and M.picker.name ~= picker.name then
LazyVim.warn(
"`LazyVim.pick`: picker already set to `" .. M.picker.name .. "`,\nignoring new picker `" .. picker.name .. "`"
@ -42,17 +38,6 @@ function M.register(picker)
return true
end
---@return "telescope" | "fzf" | "snacks"
function M.want()
vim.g.lazyvim_picker = vim.g.lazyvim_picker or "auto"
if vim.g.lazyvim_picker == "auto" then
return LazyVim.has_extra("editor.snacks_picker") and "snacks"
or LazyVim.has_extra("editor.telescope") and "telescope"
or "fzf"
end
return vim.g.lazyvim_picker
end
---@param command? string
---@param opts? lazyvim.util.pick.Opts
function M.open(command, opts)

View file

@ -5,6 +5,7 @@ local M = {}
---@type string[]
M.core_imports = {}
M.handle_defaults = true
M.lazy_file_events = { "BufReadPost", "BufNewFile", "BufWritePre" }
@ -34,6 +35,8 @@ M.renames = {
["romgrk/nvim-treesitter-context"] = "nvim-treesitter/nvim-treesitter-context",
["glepnir/dashboard-nvim"] = "nvimdev/dashboard-nvim",
["markdown.nvim"] = "render-markdown.nvim",
["williamboman/mason.nvim"] = "mason-org/mason.nvim",
["williamboman/mason-lspconfig.nvim"] = "mason-org/mason-lspconfig.nvim",
}
function M.save_core()
@ -79,7 +82,16 @@ function M.lazy_file()
end
function M.fix_imports()
local defaults ---@type table<string, LazyVimDefault>
Plugin.Spec.import = LazyVim.inject.args(Plugin.Spec.import, function(_, spec)
if M.handle_defaults and LazyVim.config.json.loaded then
-- extra disabled by defaults?
defaults = defaults or LazyVim.config.get_defaults()
local def = defaults[spec.import]
if def and def.enabled == false then
return false
end
end
local dep = M.deprecated_extras[spec and spec.import]
if dep then
dep = dep .. "\n" .. "Please remove the extra from `lazyvim.json` to hide this warning."

View file

@ -1,8 +1,8 @@
---@class lazyvim.util.root
---@overload fun(): string
local M = setmetatable({}, {
__call = function(m)
return m.get()
__call = function(m, ...)
return m.get(...)
end,
})

View file

@ -44,7 +44,7 @@ describe("Extra", function()
local mod = require(extra.modname)
assert.is_not_nil(mod)
local spec = Plugin.Spec.new({
{ "williamboman/mason.nvim", opts = { ensure_installed = {} } },
{ "mason-org/mason.nvim", opts = { ensure_installed = {} } },
{ "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = {} } },
mod,
}, { optional = true })
@ -60,7 +60,7 @@ describe("Extra", function()
local mod = require(extra.modname)
local spec = Plugin.Spec.new({
{ "williamboman/mason.nvim", opts = { ensure_installed = {} } },
{ "mason-org/mason.nvim", opts = { ensure_installed = {} } },
{ "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = {} } },
mod,
}, { optional = true })

View file

@ -7,10 +7,10 @@ load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/ma
require("lazy.minit").setup({
spec = {
{ dir = vim.uv.cwd() },
"LazyVim/starter",
"williamboman/mason-lspconfig.nvim",
"williamboman/mason.nvim",
"nvim-treesitter/nvim-treesitter",
{ "LazyVim/starter" },
{ "nvim-treesitter/nvim-treesitter" },
{ "mason-org/mason-lspconfig.nvim", version = "^1.0.0" },
{ "mason-org/mason.nvim", version = "^1.0.0" },
{ "echasnovski/mini.icons", opts = {} },
},
})