Compare commits

...

233 commits

Author SHA1 Message Date
folke
459a4c3b10 chore(build): auto-generated vimdocs 2026-06-02 13:35:54 +00:00
github-actions[bot]
c10948c50b
chore(main): release 16.0.0 (#7128)
🤖 I have created a release *beep* *boop*
---


##
[16.0.0](https://github.com/LazyVim/LazyVim/compare/v15.15.0...v16.0.0)
(2026-05-27)


### ⚠ BREAKING CHANGES

* **refactoring:** conform to upstream breaking changes on 2.0 branch
([#7124](https://github.com/LazyVim/LazyVim/issues/7124))

### Features

* **keymaps:** added leader+bi to delete invisible buffers
([58089db](58089db8b1))


### Bug Fixes

* **autocmds:** correct version check for nvim-0.13
([#7184](https://github.com/LazyVim/LazyVim/issues/7184))
([6eb16e7](6eb16e730d))
* **autocmds:** replace `vim.hl.on_yank` with `vim.hl.hl_op` for
`nvim-0.13` and above
([#7171](https://github.com/LazyVim/LazyVim/issues/7171))
([b30c031](b30c0312ea))
* **go:** use semanticTokens if setup in gopls config init_options
([#7172](https://github.com/LazyVim/LazyVim/issues/7172))
([b830a52](b830a523b5))
* **hipatterns:** don't color #add (use it too often as a private
function in TS)
([dc6240f](dc6240f4d5))
* **oxc:** prefer top-level oxlint root_dir in monorepos
([d840410](d840410047))
* **refactoring:** conform to upstream breaking changes on 2.0 branch
([#7124](https://github.com/LazyVim/LazyVim/issues/7124))
([d926923](d92692309c))

---
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>
2026-06-02 15:34:30 +02:00
folke
35f56b9189 chore(build): auto-generated vimdocs 2026-05-27 13:04:26 +00:00
Iordanis Petkakis
6eb16e730d
fix(autocmds): correct version check for nvim-0.13 (#7184)
## Description
Fix the check for `nvim-0.13` for autocmd TextYankPost
<!-- 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.
2026-05-27 13:44:51 +02:00
Thomas Vandal
b30c0312ea
fix(autocmds): replace vim.hl.on_yank with vim.hl.hl_op for nvim-0.13 and above (#7171)
## Description

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

A recent PR (https://github.com/neovim/neovim/pull/39777) replaced
`vim.hl.on_yank` with a more generic `vim.hl.hl_op` and deprecated the
former.

This PR simply checks for `nvim-0.13` support and uses the new interface
if available.

This removes a deprecation warning and will avoid an error when
`on_yank` gets deprecated in the nvim 0.14 release.

Thanks!

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-05-26 15:27:06 +02:00
folke
c429ebb628 chore(build): auto-generated vimdocs 2026-05-26 13:26:59 +00:00
David Desmarais-Michaud
b830a523b5
fix(go): use semanticTokens if setup in gopls config init_options (#7172)
## Description

Since upgrading to the go lsp (gopls) to version 0.22.0 we receive the
following error on load of any Go file:

```
...nvim/lazy/LazyVim/lua/lazyvim/plugins/extras/lang/go.lua:64: attempt to index local 'semantic' (a nil value)
```

This PR adds a check to avoid this error.

If this causes degraded functionality, or a different fix around
semantic tokens is needed, I do not know.

## Screenshots

<img width="1423" height="219" alt="image"
src="https://github.com/user-attachments/assets/a4df1344-3e8f-4f29-9c8c-1257efed22b3"
/>

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-05-26 15:25:50 +02:00
folke
fa88241e2f chore(build): auto-generated vimdocs 2026-05-20 17:38:08 +00:00
Folke Lemaitre
58089db8b1
feat(keymaps): added leader+bi to delete invisible buffers 2026-05-20 19:36:43 +02:00
folke
2dc527e511 chore(build): auto-generated vimdocs 2026-05-18 10:33:59 +00:00
Folke Lemaitre
dc6240f4d5
fix(hipatterns): don't color #add (use it too often as a private function in TS) 2026-05-18 12:32:49 +02:00
folke
7c1301b895 chore(build): auto-generated vimdocs 2026-04-26 18:17:07 +00:00
Folke Lemaitre
d840410047
fix(oxc): prefer top-level oxlint root_dir in monorepos 2026-04-26 20:15:56 +02:00
folke
cdc47ae615 chore(build): auto-generated vimdocs 2026-04-22 09:33:58 +00:00
Iordanis Petkakis
d92692309c
fix(refactoring)!: conform to upstream breaking changes on 2.0 branch (#7124)
## Description
`refactoring.nvim` had a new 2.0 release with some breaking changes.
Adjust the LazyVim Extra.

Left `opts` with everything default as there've been changes there as
well, but I don't use the plugin.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #7122
<!--
  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.
2026-04-22 11:32:53 +02:00
github-actions[bot]
83d90f339d
chore(main): release 15.15.0 (#7034)
🤖 I have created a release *beep* *boop*
---


##
[15.15.0](https://github.com/LazyVim/LazyVim/compare/v15.14.0...v15.15.0)
(2026-04-02)


### Features

* **biome:** enable biome lsp for linting
([b2830cf](b2830cfcc5))
* **biome:** move biome extra from formatting.biome -&gt;
lang.typescript.biome
([242f098](242f0983de))
* **lazydev:** make lspconfig types available on word
`lspconfig.settings`
([36f5947](36f594716b))
* **lsp:** auto add organizeImport keymaps for LSPs that support it
([e54689e](e54689ebdc))
* **oxc:** added oxc extra for oxfmt and oxlint
([4e9eac5](4e9eac57ab))
* **sidekick:** ctrl+. focuses sidekick, but when already inside
sidekick, hides it
([50159fe](50159fe344))
* **typescript:** set `vim.g.lazyvim_ts_lsp = "tsgo"` to use the much
faster experimental lsp server
([e6f26f0](e6f26f0f23))
* **typescript:** split typescript extra in main, vtsls and tsgo
([9029d92](9029d928d2))


### Bug Fixes

* **biome:** added recommendation when root has biome config file
([ad25b31](ad25b31e51))
* **biome:** biome mason install is no longer needed
([5450006](5450006ccd))
* **biome:** use biome-check in conform that also fixes linting issues
and sorts imports
([954d874](954d8746e5))
* **lsp:** sort server names before setting keymaps
([6d0da34](6d0da34de9))
* **oxc:** added `fixKind = "all"`
([85afbbc](85afbbc94b))
* **r:** recommend for *.qmd instead of *qmd files
([3b3d649](3b3d649333))
* **terminal:** use Snacks.terminal.focus() for &lt;C-/&gt; mapping
([96f4f18](96f4f18d7d)),
closes [#7048](https://github.com/LazyVim/LazyVim/issues/7048)
* **treesitter:** `nvim-treesitter` on longer support nvim-0.11, so pin
when needed. Fixes
[#7092](https://github.com/LazyVim/LazyVim/issues/7092)
([ef272ff](ef272ff7cc))
* **tsgo:** disable inlayHints.functionLikeReturnTypes by default. Too
noisy
([8bcb620](8bcb620802))
* **tsgo:** remove some noisy inlay hints
([d07070b](d07070bf2f))
* **typescript:** remove keymaps for non-existing code actions
([53f4eab](53f4eabd77))
* **util.plugin:** single imports for extras
([1b4be53](1b4be534f1))


### Performance Improvements

* **extras:** never load nested extras
([8764dfb](8764dfbc8f))


### Reverts

* **lsp:** revert changes for
[#6456](https://github.com/LazyVim/LazyVim/issues/6456). Closes
[#6779](https://github.com/LazyVim/LazyVim/issues/6779)
([d0fe8c8](d0fe8c896f))

---
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>
2026-04-02 10:13:57 +02:00
Folke Lemaitre
ef272ff7cc
fix(treesitter): nvim-treesitter on longer support nvim-0.11, so pin when needed. Fixes #7092 2026-04-02 10:11:23 +02:00
Folke Lemaitre
d07070bf2f
fix(tsgo): remove some noisy inlay hints 2026-04-02 10:08:02 +02:00
Folke Lemaitre
85afbbc94b
fix(oxc): added fixKind = "all" 2026-04-02 10:07:50 +02:00
Folke Lemaitre
96f4f18d7d
fix(terminal): use Snacks.terminal.focus() for <C-/> mapping
Switches from toggle() to focus() so that <C-/> only hides
the terminal when you're currently in it. Restores hide win keys
for terminal mode.

Closes #7048

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 09:50:09 +01:00
Ira Chan
2a5c892835
fix(clojure): remove redundant on-filetype() call that leaks keymaps (#7065)
## Summary

The Conjure spec calls `require("conjure.mapping")["on-filetype"]()`
unconditionally in its `config` function. Because the plugin loads on
`event = "LazyFile"` (any file open), this sets Conjure's buffer-local
keymaps on whatever buffer triggered the load, regardless of filetype.

This call is redundant. `require("conjure.main").main()` internally
calls `mapping.init(filetypes)`, which:

1. Registers a `FileType` autocmd scoped to supported filetypes.
2. Checks if the current buffer's filetype is in the list before calling
`on-filetype()`.

From `conjure/mapping.lua`:

```lua
M.init = function(filetypes)
  local group = vim.api.nvim_create_augroup("conjure_init_filetypes", {})
  if (true == config["get-in"]({"mapping", "enable_ft_mappings"})) then
    vim.api.nvim_create_autocmd("FileType", {
      group = group, pattern = filetypes,
      callback = autocmd_callback(M["on-filetype"])
    })
    if core.some(function(x) return x == vim.bo.filetype end, filetypes) then
      vim.schedule(M["on-filetype"])
    end
  end
end
```

The extra `on-filetype()` bypasses this guard. Removing it restores the
intended behavior: Conjure keymaps only appear in buffers whose filetype
Conjure supports.

## Related Issue(s)

Fixes #7064

## Repro

Save as `repro.lua` and run with `nvim -u repro.lua`:

```lua
vim.env.LAZY_STDPATH = ".repro"
load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))()

require("lazy.minit").repro({
  spec = {
    { "LazyVim/LazyVim", import = "lazyvim.plugins" },
    { import = "lazyvim.plugins.extras.lang.clojure" },
  },
})
```

Steps:
1. `nvim -u repro.lua`
2. `:e test.md`
3. `:nmap <localleader>` — observe 25+ Conjure keymaps on a markdown
buffer

After this fix, `:nmap <localleader>` on `test.md` shows no Conjure
keymaps.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-03-21 09:04:39 +01:00
Folke Lemaitre
6d0da34de9
fix(lsp): sort server names before setting keymaps
Sort server names so that `*` (wildcard) keymaps are registered before
named servers, ensuring server-specific keymaps take precedence.

Fixes #6956, Fixes #6903

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 08:55:20 +01:00
Folke Lemaitre
6dadcc2065
docs(typescript): add some docs on how to enable tsgo with vim global 2026-03-21 06:40:53 +01:00
Folke Lemaitre
8bcb620802
fix(tsgo): disable inlayHints.functionLikeReturnTypes by default. Too noisy 2026-03-21 06:40:32 +01:00
Folke Lemaitre
59126caa31
test: fix tests 2026-03-20 23:16:04 +01:00
Folke Lemaitre
4e9eac57ab
feat(oxc): added oxc extra for oxfmt and oxlint 2026-03-20 22:15:34 +01:00
Folke Lemaitre
9029d928d2
feat(typescript): split typescript extra in main, vtsls and tsgo 2026-03-20 21:40:30 +01:00
Folke Lemaitre
1b4be534f1
fix(util.plugin): single imports for extras 2026-03-20 20:42:57 +01:00
Folke Lemaitre
8764dfbc8f
perf(extras): never load nested extras 2026-03-20 20:14:37 +01:00
Folke Lemaitre
76cb567e5c
refactor(lsp): cleaner support for code_actions 2026-03-20 19:01:02 +01:00
Folke Lemaitre
53f4eabd77
fix(typescript): remove keymaps for non-existing code actions 2026-03-20 19:00:29 +01:00
Folke Lemaitre
ad25b31e51
fix(biome): added recommendation when root has biome config file 2026-03-20 16:09:49 +01:00
Folke Lemaitre
e54689ebdc
feat(lsp): auto add organizeImport keymaps for LSPs that support it 2026-03-20 16:06:44 +01:00
Folke Lemaitre
242f0983de
feat(biome): move biome extra from formatting.biome -> lang.typescript.biome 2026-03-20 15:59:25 +01:00
Folke Lemaitre
fbf52d5496
refactor(typescript): move typescript to sub module init 2026-03-20 15:58:39 +01:00
Folke Lemaitre
3b3d649333
fix(r): recommend for *.qmd instead of *qmd files 2026-03-20 14:39:02 +01:00
Folke Lemaitre
5450006ccd
fix(biome): biome mason install is no longer needed 2026-03-20 12:18:26 +01:00
Folke Lemaitre
36f594716b
feat(lazydev): make lspconfig types available on word lspconfig.settings 2026-03-20 12:14:02 +01:00
Folke Lemaitre
e6f26f0f23
feat(typescript): set vim.g.lazyvim_ts_lsp = "tsgo" to use the much faster experimental lsp server 2026-03-20 12:13:32 +01:00
Folke Lemaitre
b2830cfcc5
feat(biome): enable biome lsp for linting 2026-03-20 12:12:45 +01:00
Folke Lemaitre
50159fe344
feat(sidekick): ctrl+. focuses sidekick, but when already inside sidekick, hides it 2026-03-20 11:08:09 +01:00
Folke Lemaitre
6055e59613
style: format 2026-03-16 19:07:44 +01:00
Folke Lemaitre
954d8746e5
fix(biome): use biome-check in conform that also fixes linting issues and sorts imports 2026-03-16 18:11:45 +01:00
Rubin Bhandari
31caef21fd
refactor(dial): use inbuilt augends (#7035)
Dial now has built in augends for weekdays and Pythonic booleans


[monaqa/dial.nvim#augend-alias](https://github.com/monaqa/dial.nvim#augend-alias)

## Description

<!-- 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

- [ ] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-03-01 14:45:56 +01:00
Folke Lemaitre
d0fe8c896f
revert(lsp): revert changes for #6456. Closes #6779 2026-03-01 10:50:17 +01:00
github-actions[bot]
fca0af57cc
chore(main): release 15.14.0 (#6738)
🤖 I have created a release *beep* *boop*
---


##
[15.14.0](https://github.com/LazyVim/LazyVim/compare/v15.13.0...v15.14.0)
(2026-03-01)


### Features

* **bufferline:** add &lt;leader&gt;bj keymap for BufferLinePick
([#6968](https://github.com/LazyVim/LazyVim/issues/6968))
([a50072f](a50072fa16))
* **dap:** close dap-float window with `q`.
([#6884](https://github.com/LazyVim/LazyVim/issues/6884))
([87c0027](87c0027892))
* **treesitter:** support query table in treesitter-textobjects mappings
([#6736](https://github.com/LazyVim/LazyVim/issues/6736))
([42c9f71](42c9f7152b))


### Bug Fixes

* **editor.overseer:** migrate to v2
([#6907](https://github.com/LazyVim/LazyVim/issues/6907))
([27824d7](27824d79a9))
* **fzf:** correct git_diff description from 'hunks' to 'files'
([#6983](https://github.com/LazyVim/LazyVim/issues/6983))
([e77d4ab](e77d4ab0d6))
* **lang.clang:** fix `clangd_extensions.nvim`
([#6804](https://github.com/LazyVim/LazyVim/issues/6804))
([730b691](730b69114d))
* **leap:** update urls to new leap.nvim repo. Fixes
[#6958](https://github.com/LazyVim/LazyVim/issues/6958)
([244af66](244af66f8b))
* **news:** resolve news.txt from $VIMRUNTIME first
([60fea62](60fea6236e)),
closes [#7019](https://github.com/LazyVim/LazyVim/issues/7019)
* **python:** set venv-selector.nvim override_notify = false
([#6936](https://github.com/LazyVim/LazyVim/issues/6936))
([b2917bd](b2917bd3bf))
* **terminal:** add -NoProfile to powershell shellcmdflag
([#6757](https://github.com/LazyVim/LazyVim/issues/6757))
([a507822](a507822c0f))
* **terminal:** partially revert previous mappings
([#6770](https://github.com/LazyVim/LazyVim/issues/6770))
([c64a617](c64a61734f))
* **treesitter:** fix `]c` textobject mappings when in diff mode
([#6911](https://github.com/LazyVim/LazyVim/issues/6911))
([16713e6](16713e6e12))
* **treesitter:** remove deleted jsonc parser
([#6848](https://github.com/LazyVim/LazyVim/issues/6848))
([92607e7](92607e79e0))
* **util.lsp:** `LazyVim.lsp.execute` only request single client
([#6904](https://github.com/LazyVim/LazyVim/issues/6904))
([a4e19e9](a4e19e9c9c))
* **util.lsp:** pass `formatters_by_ft` to `opts`
([#6894](https://github.com/LazyVim/LazyVim/issues/6894))
([03f1293](03f1293e33))
* **vtsls:** remove redundant deno logic, upstreamed in `nvim-lspconfig`
([#7011](https://github.com/LazyVim/LazyVim/issues/7011))
([8652c95](8652c95703))

---
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>
2026-03-01 10:37:36 +01:00
Chomba
a50072fa16
feat(bufferline): add <leader>bj keymap for BufferLinePick (#6968)
## Summary
- Adds `<leader>bj` keymap to quickly pick a buffer using BufferLinePick

## Motivation
BufferLinePick provides a great UX for quickly jumping to buffers by
letter key, similar to LunarVim's buffer picker. This keymap makes it
easily discoverable.

## Changes
- Added `<leader>bj` → `:BufferLinePick` in bufferline plugin config

## Testing
- Tested locally with multiple buffers open
- Press `<Space>bj`, letter labels appear on tabs, press letter to jump
2026-03-01 10:36:15 +01:00
Phúc H. Lê Khắc
87c0027892
feat(dap): close dap-float window with q. (#6884)
## Description

nvim-dap-ui's widget window to preview value of object under the cursor
has ftype `dap-float`. Include it so it can be closed quickly like other
popup windows.

## 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.
2026-03-01 10:35:14 +01:00
Frederick Zhang
b2917bd3bf
fix(python): set venv-selector.nvim override_notify = false (#6936)
## Description

<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->
<!-- === GH HISTORY FORMAT FENCE === --> <!--
### [`%h`]({{.url}}/commits/%H) %s%n%n%b%n
--> <!-- === GH HISTORY FORMAT FENCE === -->
<!-- === GH HISTORY FENCE === -->
This is a new option in venv-selector.nvim which stops it from
overriding vim.notify, so that it no longer interferes with noice.nvim.
See also [1].

[1] https://github.com/linux-cultist/venv-selector.nvim/issues/240

<!-- === GH HISTORY FENCE === -->

## Related Issue(s)

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

## Screenshots

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

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-03-01 10:33:07 +01:00
plsplsplslol
3f91371e21
docs(ui): fix typo (#6978)
## Description
this extra disables scope, not scroll

## Related Issue(s)

## Screenshots

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-03-01 10:32:37 +01:00
Talles Borges
e77d4ab0d6
fix(fzf): correct git_diff description from 'hunks' to 'files' (#6983)
Fixes #6960

`FzfLua git_diff` runs `git diff --name-only` which lists changed
**files**, not hunks.

Updated the description from `"Git Diff (hunks)"` to `"Git Diff
(files)"` to accurately reflect the command behavior.
2026-03-01 10:31:41 +01:00
Iordanis Petkakis
730b69114d
fix(lang.clang): fix clangd_extensions.nvim (#6804)
## Description
`clangd_extensions.nvim` does not seem to take `server` key any more,
which was used to setup the plugin with clangd `cmd`, `init_options`
etc. Instead you only need to configure the clangd server via lspconfig
and the plugin separately according to my understanding.

Remove the unnecessary `opts.setup` which also requires the plugin
itself and loads it and make the plugin lazy-loaded on c/c++ files only.

References:
- https://github.com/p00f/clangd_extensions.nvim#configuration
-
https://github.com/p00f/clangd_extensions.nvim/issues/49#issuecomment-1719654413

PS: I don't do C/C++, so testers would be welcome.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #6800
<!--
  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.
2026-03-01 10:13:30 +01:00
Iordanis Petkakis
03f1293e33
fix(util.lsp): pass formatters_by_ft to opts (#6894)
## Description
Here
c64a61734f/lua/lazyvim/util/lsp.lua (L50)
we call directly `conform.format` with our specific options.

`conform.nvim` also allows passing options such as `lsp_format` directly
to `formatter_by_ft` as also can be seen
[here](5420c4b5ea/doc/conform.txt (L20-L21)).
Those options are not passed when we call `conform.format(opts)` in the
LSP formatter.

So, we add these options. Also, fix the correct name for general format
options, since it had been changed at some time in `conform.nvim` and
that change made it to the plugin spec, but not here.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #6893
<!--
  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.
2026-03-01 10:12:58 +01:00
Iordanis Petkakis
16713e6e12
fix(treesitter): fix ]c textobject mappings when in diff mode (#6911)
## Description
It seems that after
5985ca0cf1
the default `]c` Neovim mapping in diff mode broke. This is an attempt
to fix that.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None, rather discussion #6910.
<!--
  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.
2026-03-01 10:11:09 +01:00
Iordanis Petkakis
92607e79e0
fix(treesitter): remove deleted jsonc parser (#6848)
## Description

d2350758b3
removed parsers not hosted on Github, `jsonc` among them. Remove it from
LazyVim as well. On a fresh new installation, there's no problem and it
doesn't even install, but on existing installation you get an error when
updating about parser not available.

<img width="2559" height="313" alt="2025-12-07_11-24"
src="https://github.com/user-attachments/assets/99802b66-ff39-4631-89c6-ee4f2516acf1"
/>

<!-- 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.
2026-03-01 10:08:09 +01:00
Iordanis Petkakis
8652c95703
fix(vtsls): remove redundant deno logic, upstreamed in nvim-lspconfig (#7011)
## Description
Since https://github.com/neovim/nvim-lspconfig/pull/4304
`nvim-lspconfig` has inherent deno logic to disambiguate between
deno/non-deno projects.

I believe it'd be better to remove the logic from LazyVim, since it
might lead to issues because of different behavior compared to
`nvim-lspconfig` defaults (whose logic doesn't only rely on the
existence of `deno/json`, but also looks for lock files and takes into
account which is the largest path with regards to the found pattern
files). It'd be better for users to change `root_dir` themselves if they
don't agree with the inherent logic.
<!-- 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.
2026-03-01 10:06:18 +01:00
Folke Lemaitre
ecd31f844e
test(extras): handle plugins using url instead of short format
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:04:26 +01:00
akioweh
27824d79a9
fix(editor.overseer): migrate to v2 (#6907)
## Description

Overseer.nvim recently-ish released v2.  
This PR updates the extras config according to the breaking changes.

A few commands were removed and the `bindings` config key was renamed to
`keymaps`.

I've also taken the liberty of marking the plugin as not lazy since it
lazy-loads itself.
The impact on startup is ~<1ms, which I think is acceptable over
lazy.nvim command/keymap listener overhead, but this is open to
discussion 🤷

## Related Issue(s)

fixes #6876 

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-03-01 09:33:20 +01:00
Iordanis Petkakis
a4e19e9c9c
fix(util.lsp): LazyVim.lsp.execute only request single client (#6904)
## Description
`LazyVim.lsp.execute` uses `vim.lsp.buf_request` which sends the request
to all attached clients.

`LazyVim.lsp.execute` seems to me to be the equivalent of
[vim.lsp.buf.execute_command](922816877f/runtime/lua/vim/lsp/buf.lua (L1366-L1376)),
but adds the option to also open in Trouble. Otherwise the request is
being made the same way. This command will be deprecated in 0.12 and
it's advised to use `client:exec_cmd` instead.

Since LazyVim supports Neovim >=0.11.2, it makes sense to refactor the
corresponding codeblock and use `client:cmd_exec` instead (it's already
available in Neovim 0.11).

I only changed the necessary parts where `vim.lsp.buf_request` was being
used and not Trouble (when `opts.open = true`), since I'm not familiar
with its codebase. That's also why I went for extending `params` in the
`else` branch instead of adding `title` into original `params`, since I
didn't know how Trouble will react to this change. Not sure if maybe
there also needs to be some change there.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #6900
<!--
  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.
2026-03-01 09:31:44 +01:00
Folke Lemaitre
244af66f8b
fix(leap): update urls to new leap.nvim repo. Fixes #6958 2026-03-01 09:30:39 +01:00
Folke Lemaitre
60fea6236e
fix(news): resolve news.txt from $VIMRUNTIME first
Plugins that ship their own `doc/news.txt` (e.g. rainbow-delimiters.nvim)
can shadow Neovim's bundled file when using `nvim_get_runtime_file()`.
First check $VIMRUNTIME, then fall back to the full runtimepath.

Fixes #7019
2026-03-01 09:17:53 +01:00
Iordanis Petkakis
c64a61734f
fix(terminal): partially revert previous mappings (#6770)
## Description
Commit 4efd0e2bea introduced some changes
to terminal mappings. I tested in a new LazyVim installation and
`sidekick.nvim` is not affected by `<C-/>` any more.

The mappings `hide_underscore` and `hide_slash` don't let user to create
new terminals with `2<C-/>`, `3<C-/>` and so on. Instead they hide the
terminal and user can't open split terminals next to each other any
more.

Therefore, I believe it would be a better default to revert these 2
mappings explicitly.

<!-- 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-11-11 09:35:25 +01:00
AK47are
a507822c0f
fix(terminal): add -NoProfile to powershell shellcmdflag (#6757)
## Description

changing the PowerShell profile might accidentally cause errors in
Neovim (see [issue](https://github.com/LazyVim/LazyVim/issues/4805)),
which is a subtle bug. Add the `-NoProfile` flag to ensure Neovim is not
affected by profile.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-11-06 12:40:40 +01:00
Thomas Vandal
42c9f7152b
feat(treesitter): support query table in treesitter-textobjects mappings (#6736)
## Description

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

`treesitter-textobjects` mappings accept a table query (for the "move"
mappings, at least, I haven't checked the others). Currently, in
LazyVim, using a table causes an error due to the assumption that
`query` is a string in the `config` function that creates the keymap
description. This PR adds a simple loop to gather the queries from a
table and join them with "or" in the description.

Here is an example config and the resulting error. Everything works as
expected with the PR and string (single) queries still behave as
expected.

```lua
  {
    "nvim-treesitter/nvim-treesitter-textobjects",
    opts = {
      move = {
        keys = {
          goto_next_start = { ["]j"] = { "@function.outer", "@class.outer" } },
          goto_next_end = { ["]J"] = { "@function.outer", "@class.outer" } },
          goto_previous_start = { ["[j"] = { "@function.outer", "@class.outer" } },
          goto_previous_end = { ["[J"] = { "@function.outer", "@class.outer" } },
        },
      },
    },
  }
```

```lua
Failed to run `config` for nvim-treesitter-textobjects

...vim-local/opt/LazyVim/lua/lazyvim/plugins/treesitter.lua:174: attempt to call method 'gsub' (a nil value)

# stacktrace:
  - repos/nvim-local/opt/LazyVim/lua/lazyvim/plugins/treesitter.lua:174
  - vim/shared.lua:0 _in_ **tbl_map**
  - repos/nvim-local/opt/LazyVim/lua/lazyvim/plugins/treesitter.lua:197 _in_ **config**
```



## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-11-03 07:51:07 +01:00
github-actions[bot]
28db03f958
chore(main): release 15.13.0
🤖 I have created a release *beep* *boop*
---


## [15.13.0](https://github.com/LazyVim/LazyVim/compare/v15.12.2...v15.13.0) (2025-11-01)


### Features

* **snacks:** `snacks.gh` integration. Enabled by default, unless the `util.octo` extra is enabled. ([5e981f9](5e981f9a8c))


### Bug Fixes

* **treesitter:** remove node requirement ([6b52a30](6b52a3059e))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
2025-11-01 13:44:04 +01:00
Folke Lemaitre
5e981f9a8c
feat(snacks): snacks.gh integration. Enabled by default, unless the util.octo extra is enabled. 2025-11-01 13:41:53 +01:00
Folke Lemaitre
6b52a3059e
fix(treesitter): remove node requirement 2025-10-31 17:28:02 +01:00
github-actions[bot]
064e61058b
chore(update): update repository (#6712)
Automated changes by
[create-pull-request](https://github.com/peter-evans/create-pull-request)
GitHub action

Co-authored-by: folke <292349+folke@users.noreply.github.com>
2025-10-28 16:14:16 +01:00
folke
cd745b14f8 chore(build): auto-generate docs 2025-10-26 15:06:24 +00:00
Folke Lemaitre
29fb479522
style: remove some vim.lsp calls during startup 2025-10-26 16:04:45 +01:00
github-actions[bot]
d72127eb93
chore(main): release 15.12.2 (#6703)
🤖 I have created a release *beep* *boop*
---


##
[15.12.2](https://github.com/LazyVim/LazyVim/compare/v15.12.1...v15.12.2)
(2025-10-26)


### Bug Fixes

* **lsp.keymaps:** make cond -&gt; enabled work again. Closes
[#6697](https://github.com/LazyVim/LazyVim/issues/6697)
([1a40162](1a40162714))

---
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-10-26 12:27:05 +01:00
Folke Lemaitre
1a40162714
fix(lsp.keymaps): make cond -> enabled work again. Closes #6697 2025-10-26 12:21:22 +01:00
github-actions[bot]
235cadf4cf
chore(main): release 15.12.1 (#6699)
🤖 I have created a release *beep* *boop*
---


##
[15.12.1](https://github.com/LazyVim/LazyVim/compare/v15.12.0...v15.12.1)
(2025-10-26)


### Bug Fixes

* **fzf-lua:** LSP keymaps. Closes
[#6698](https://github.com/LazyVim/LazyVim/issues/6698)
([b5ea1e9](b5ea1e9d25))
* **navic:** navic attach. Closes
[#6702](https://github.com/LazyVim/LazyVim/issues/6702)
([d2d0c64](d2d0c641ed))

---
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-10-26 12:01:47 +01:00
folke
7831bff9af chore(build): auto-generate docs 2025-10-26 10:59:58 +00:00
Folke Lemaitre
d2d0c641ed
fix(navic): navic attach. Closes #6702 2025-10-26 11:58:23 +01:00
Folke Lemaitre
b5ea1e9d25
fix(fzf-lua): LSP keymaps. Closes #6698 2025-10-25 23:20:54 +02:00
github-actions[bot]
8b8ceb6c87
chore(main): release 15.12.0 (#6677)
🤖 I have created a release *beep* *boop*
---


##
[15.12.0](https://github.com/LazyVim/LazyVim/compare/v15.11.0...v15.12.0)
(2025-10-25)


### Features

* **keymaps:** added `<localleader>r` to run the selection/file with lua
([acc3538](acc3538229))
* **lsp:** lsp keymaps can now be configured with
`lsp-config.opts.servers['*'].keys` like for lsp servers
([cd8c497](cd8c4977a0))
* **lsp:** refactor lsp code to use `Snacks.util.lsp.on`
([3964433](3964433062))
* **sidekick:** added NES toggle `<leader>uN`. Closes
[#6692](https://github.com/LazyVim/LazyVim/issues/6692)
([84ca4df](84ca4dffdb))


### Bug Fixes

* **chezmoi:** use vim.env.HOME instead of os.getenv("HOME") for Windows
compatibility
([231e476](231e476ec9))
* **clipboard:** connecting via vscpde's remote-ssh extension causes
severe lag during yank and copy operations.
([#6664](https://github.com/LazyVim/LazyVim/issues/6664))
([5098a69](5098a69870))
* **lang.ember:** remove '.git' lang.ember
([#6685](https://github.com/LazyVim/LazyVim/issues/6685))
([4796fb4](4796fb4ac5))
* **root:** don't use fs_realpath on windows
([46e419d](46e419d27e))

---
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-10-25 17:18:21 +02:00
Folke Lemaitre
acc3538229
feat(keymaps): added <localleader>r to run the selection/file with lua 2025-10-25 16:57:53 +02:00
Folke Lemaitre
cd8c4977a0
feat(lsp): lsp keymaps can now be configured with lsp-config.opts.servers['*'].keys like for lsp servers 2025-10-25 16:57:16 +02:00
Folke Lemaitre
3964433062
feat(lsp): refactor lsp code to use Snacks.util.lsp.on 2025-10-25 16:56:19 +02:00
folke
f581de8013 chore(build): auto-generate docs 2025-10-25 05:59:28 +00:00
Folke Lemaitre
84ca4dffdb
feat(sidekick): added NES toggle <leader>uN. Closes #6692 2025-10-25 07:57:39 +02:00
Folke Lemaitre
46e419d27e fix(root): don't use fs_realpath on windows 2025-10-24 15:35:49 -07:00
denisu14
4796fb4ac5
fix(lang.ember): remove '.git' lang.ember (#6685)
## Description

<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->
Removed ".git" from the recommended section of lang.ember so lang.ember
isn't recommended for every git directory.

## Related Issue(s)

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

<!-- Add screenshots of the changes if applicable. -->
<img width="1249" height="748" alt="image"
src="https://github.com/user-attachments/assets/594f262e-7f12-4174-ad3f-1872f388f039"
/>

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-24 08:12:11 +02:00
folke
28aa8feaf7 chore(build): auto-generate docs 2025-10-24 04:08:18 +00:00
Folke Lemaitre
231e476ec9
fix(chezmoi): use vim.env.HOME instead of os.getenv("HOME") for Windows compatibility
vim.env.HOME works correctly on Windows where the HOME environment variable may not be set, while os.getenv("HOME") returns nil in such cases.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 06:06:38 +02:00
narutozxp
5098a69870
fix(clipboard): connecting via vscpde's remote-ssh extension causes severe lag during yank and copy operations. (#6664)
## Description

When connecting to a remote server via VSCode's Remote-SSH extension,
the `SSH_TTY` environment variable is not set. Consequently, both the
`vscode-neovim` extension (when using the remote Neovim instance) and
Neovim launched from VSCode's integrated terminal use the system
clipboard, resulting in severe lag.

Additionally, the `yanky.nvim` plugin synchronizes with the system
clipboard by default, regardless of whether the `clipboard` option is
set to an empty string (`""`). This causes similar performance issues as
described above.

Using the `SSH_CONNECTION` environment variable instead of `SSH_TTY` can
effectively resolve this issue.



## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-23 12:04:47 +02:00
github-actions[bot]
0329bc0e50
chore(main): release 15.11.0 (#6658)
🤖 I have created a release *beep* *boop*
---


##
[15.11.0](https://github.com/LazyVim/LazyVim/compare/v15.10.1...v15.11.0)
(2025-10-23)


### Features

* **snacks_picker:** added gai/gao keymaps for calls incoming/outgoing
([b6e48a5](b6e48a57fb))
* **snacks.picker:** added `<leader>gD` to diff against merge base of
branch/PR
([f0a91d9](f0a91d9fa5))


### Bug Fixes

* **avante:** unset default keymaps
([#6657](https://github.com/LazyVim/LazyVim/issues/6657))
([e8a1d8b](e8a1d8b628))
* **extras:** remove custom formatter opts for dart/solidity. Closes
[#6665](https://github.com/LazyVim/LazyVim/issues/6665)
([b38de4e](b38de4e2fe))

---
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-10-23 11:47:53 +02:00
folke
4fd9878dea chore(build): auto-generate docs 2025-10-23 07:28:03 +00:00
Folke Lemaitre
0b4999a4b5
docs: added LSP keymap specs to CONTRIBUTING.md 2025-10-23 09:26:48 +02:00
Folke Lemaitre
f0a91d9fa5
feat(snacks.picker): added <leader>gD to diff against merge base of branch/PR 2025-10-23 09:26:22 +02:00
Folke Lemaitre
b6e48a57fb
feat(snacks_picker): added gai/gao keymaps for calls incoming/outgoing 2025-10-22 14:51:35 +02:00
folke
6568b1d4c2 chore(build): auto-generate docs 2025-10-22 04:31:53 +00:00
Folke Lemaitre
b38de4e2fe
fix(extras): remove custom formatter opts for dart/solidity. Closes #6665 2025-10-22 06:30:35 +02:00
Bryan Niwa
e8a1d8b628
fix(avante): unset default keymaps (#6657)
## Description

The extras spec includes its own keymaps for the most common commands
now so these are redundant and causing duplicate entries in which-key.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 19:37:51 +02:00
github-actions[bot]
a65d5d530d
chore(main): release 15.10.1 (#6652)
🤖 I have created a release *beep* *boop*
---


##
[15.10.1](https://github.com/LazyVim/LazyVim/compare/v15.10.0...v15.10.1)
(2025-10-20)


### Bug Fixes

* **avante:** correct key mapping declarations
([#6656](https://github.com/LazyVim/LazyVim/issues/6656))
([41d1b8d](41d1b8dc72))
* **blink:** added work-around back for unsupported native snippets
([899533a](899533a101))
* **treesitter:** added buf to treesitter start just to be sure
([3ffb471](3ffb471c18))

---
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-10-20 18:50:02 +02:00
Iain Lane
41d1b8dc72
fix(avante): correct key mapping declarations (#6656)
## Description

They were declared as

```lua
{
  { "n", "<leader>aa", ... },
  -- ...
}
```

Which remaps the `n` key!

## Demo

```console
$ nvim --headless +'verbose nmap n' +'quit!'
n  n           * <Lua 406: ~/.local/share/nvim/lazy/lazy.nvim/lua/lazy/core/handler/keys.lua:121>
                 Toggle Avante
```

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 17:34:08 +02:00
folke
1a7f264ada chore(build): auto-generate docs 2025-10-20 14:12:09 +00:00
Folke Lemaitre
4b69a6ed29
docs: remove video from readme, since it's outdated 2025-10-20 16:11:03 +02:00
Folke Lemaitre
899533a101
fix(blink): added work-around back for unsupported native snippets 2025-10-20 14:34:01 +02:00
Folke Lemaitre
3ffb471c18
fix(treesitter): added buf to treesitter start just to be sure 2025-10-20 14:34:01 +02:00
github-actions[bot]
70e316d41c
chore(main): release 15.10.0 (#6647)
🤖 I have created a release *beep* *boop*
---


##
[15.10.0](https://github.com/LazyVim/LazyVim/compare/v15.9.0...v15.10.0)
(2025-10-20)


### Features

* **ai:** add avante.nvim for a better AI experience
([#4440](https://github.com/LazyVim/LazyVim/issues/4440))
([2682ce0](2682ce0ab9))
* **extra:** allow users to add custom bundles through
opts.init_options.bundles to jdtls
([#6265](https://github.com/LazyVim/LazyVim/issues/6265))
([faeb24b](faeb24ba95))
* **extras:** add Dart language
([#4749](https://github.com/LazyVim/LazyVim/issues/4749))
([90f84e7](90f84e7e75))
* **extras:** added ember lang support
([#6203](https://github.com/LazyVim/LazyVim/issues/6203))
([ac4cce0](ac4cce0f2f))
* **extras:** added twig language
([#5464](https://github.com/LazyVim/LazyVim/issues/5464))
([a6eb51e](a6eb51e5b5))
* **extras:** ai: add `claudecode.nvim`
([#6229](https://github.com/LazyVim/LazyVim/issues/6229))
([e7a3e80](e7a3e80ee1))
* **extras:** automatically update lazyvim.json for renamed or
deprecated extras
([37ecd06](37ecd06fad))
* **extras:** renamed extra omnisharp -&gt; dotnet + added fautocomplete
to lspconfig
([1b2e6e8](1b2e6e8986))
* **extras:** utils: add `gh.nvim`
([#6250](https://github.com/LazyVim/LazyVim/issues/6250))
([8db9c75](8db9c75e8d))
* **go:** add linting with golangci-lint
([#6311](https://github.com/LazyVim/LazyVim/issues/6311))
([248876a](248876adb6))
* **haskell:** update `haskell-tools` version and add formatters +
linters ([#6230](https://github.com/LazyVim/LazyVim/issues/6230))
([82382f4](82382f455a))
* **lang/fsharp:** add F# support to omnisharp extra
([#6538](https://github.com/LazyVim/LazyVim/issues/6538))
([80a980a](80a980ab00))
* **lang:** add neotest config for PHP tests
([#5958](https://github.com/LazyVim/LazyVim/issues/5958))
([9b077c7](9b077c7a8e))
* **lang:** add solidity language support
([#4742](https://github.com/LazyVim/LazyVim/issues/4742))
([2cd46d4](2cd46d42ba))
* **lang:** add Typst language support
([#4042](https://github.com/LazyVim/LazyVim/issues/4042))
([645846b](645846be5c))
* **lang:** julia support
([#6231](https://github.com/LazyVim/LazyVim/issues/6231))
([5d186c0](5d186c009a))
* **lang:** nix add `statix` linter
([#6244](https://github.com/LazyVim/LazyVim/issues/6244))
([2a866f6](2a866f6c8c))
* **sidekick:** added sidekick cli status to lualine
([16917db](16917db94a))


### Bug Fixes

* **extras.lang:** fix Scala extra by using nvimMetals only
([#5726](https://github.com/LazyVim/LazyVim/issues/5726))
([f118dca](f118dca334))
* **fzf-lua:** added some missing keymaps similar to snacks picker.
Closes [#6036](https://github.com/LazyVim/LazyVim/issues/6036). Closes
[#5830](https://github.com/LazyVim/LazyVim/issues/5830)
([69a5744](69a5744803))
* **helm:** broken helm highlighting
([#5335](https://github.com/LazyVim/LazyVim/issues/5335))
([4d0d87f](4d0d87f626))
* **keymap:** remove select mode remaps of printable characters
([#6296](https://github.com/LazyVim/LazyVim/issues/6296))
([83468be](83468be350))
* **tailwind:** additional settings
([#5266](https://github.com/LazyVim/LazyVim/issues/5266))
([d2f9885](d2f9885d6b))
* **telescope:** sync keymaps with snacks picker + added some that were
missing
([1a08e9f](1a08e9f50f))
* **twig:** correct mason url
([9d345de](9d345dec44))
* **typescript:** better default pwa-node DAP config. Closes
[#6386](https://github.com/LazyVim/LazyVim/issues/6386)
([e4d3432](e4d34328f2))
* **typescript:** support chrome, node and msedge dap adapters
([#6649](https://github.com/LazyVim/LazyVim/issues/6649))
([0b65d33](0b65d33d85))
* **util.project:** different mapping on dashboard than
`snacks.projects`
([#5737](https://github.com/LazyVim/LazyVim/issues/5737))
([e389447](e38944799e))


### Reverts

* "feat(extra): allow users to add custom bundles through
opts.init_options.bundles to jdtls
([#6265](https://github.com/LazyVim/LazyVim/issues/6265))"
([#6650](https://github.com/LazyVim/LazyVim/issues/6650))
([a582f00](a582f00447))

---
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-10-20 14:30:38 +02:00
Jose Storopoli
e7a3e80ee1
feat(extras): ai: add claudecode.nvim (#6229)
## Description

Adds [`claudecode.nvim`](https://github.com/coder/claudecode.nvim) which
integrates Claude Code into NeoVim using snacks terminal.

I've been using this config for a while now and I think it's time to
upstream to LazyVim. The configurations are the recommended ones from
the plugin's README.

## Related Issue(s)

None

## Screenshots

![CleanShot 2025-07-05 at 06 58
15@2x](https://github.com/user-attachments/assets/23f8de5c-654e-470d-b814-0bf318ceb2b2)


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 13:37:58 +02:00
qw457812
a582f00447
revert: "feat(extra): allow users to add custom bundles through opts.init_options.bundles to jdtls (#6265)" (#6650)
Fixes:

```
Failed to run `config` for nvim-jdtls

...im/lazy/LazyVim/lua/lazyvim/plugins/extras/lang/java.lua:165: attempt to index field 'jdtls' (a function value)

  - /LazyVim/lua/lazyvim/plugins/extras/lang/java.lua:165 _in_ **config**
  - ~/.local/share/bob/nightly/share/nvim/runtime/filetype.lua:36
  - vim/shared.lua:0
  - ~/.local/share/bob/nightly/share/nvim/runtime/filetype.lua:35
  - vim/_editor.lua:0 _in_ **cmd**
  - /snacks.nvim/lua/snacks/picker/actions.lua:115 _in_ **fn**
  - /snacks.nvim/lua/snacks/win.lua:339
```

`init_options.bundles` already can be overridden by `opts.jdtls`, see:
https://github.com/LazyVim/LazyVim/pull/6265#issuecomment-3203831504 for
example.

## Description

Reverts the commit, which breaks `opts.jdtls` defined here:


faeb24ba95/lua/lazyvim/plugins/extras/lang/java.lua (L185-L185)

## Related Issue(s)

#6265 

## Screenshots

None.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 12:50:54 +02:00
Alexey Svirshchevskiy
0b65d33d85
fix(typescript): support chrome, node and msedge dap adapters (#6649)
## Description
Add support for `chrome`, `node` and `msedge` configs for dap
typescript.

## Related Issue(s)
https://github.com/LazyVim/LazyVim/pull/6328

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 12:25:13 +02:00
Zapan Gao
faeb24ba95
feat(extra): allow users to add custom bundles through opts.init_options.bundles to jdtls (#6265)
Allow users to add custom bundles through opts.init_options.bundles to
jdtls with lang java extra is on.
2025-10-20 11:49:08 +02:00
Julian Visser
ac4cce0f2f
feat(extras): added ember lang support (#6203)
## Description

Added support for
[emberjs](https://guides.emberjs.com/release/getting-started/).

-
[nvim-lspconfig/ember](https://github.com/neovim/nvim-lspconfig/blob/master/lsp/ember.lua)
- Uses prettier to format glimmer files

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 11:45:57 +02:00
Jarryd Tilbrook
9b077c7a8e
feat(lang): add neotest config for PHP tests (#5958)
## Description

Similar to some other languages (this closely follows the Go lang
extra), this adds neotest runners for the major PHP test runners:
PHPUnit and Pest.

Both work together, trying to use Pest if available and falling back to
PHPUnit which is a decent approach for the PHP ecosystem.

I read CONTRIBUTING.md which differs from the way the Go lang extra has
implemented a neotest adapters and opted to follow that instead. Ie.
adapters
have been added as dependencies instead of a separate spec with
`lazy=true`. Let me know if you want that changed.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 11:40:56 +02:00
Stanislav Zeman
90f84e7e75
feat(extras): add Dart language (#4749)
## Description

This PR add Dart language support to **extras** section.

## Testing

I checked that:
- the LSP correctly loads on Dart files and provides suggestions and
highlights errors
- `treesitter` parses the Dart language tree and highlights the code
- `conform` correctly formats Dart files using the built-in formatter
- `neotest` is capable of running Dart tests

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 11:27:52 +02:00
Folke Lemaitre
f4b08bb604
refactor(solidity): no need for opts to be a function 2025-10-20 11:24:28 +02:00
pugud
2cd46d42ba
feat(lang): add solidity language support (#4742)
## Description

### Summary

This PR adds comprehensive support for Solidity development in Neovim
using LazyVim. The following updates were made to streamline Solidity
development:
### Changes

1. **Solidity File Type Detection**
- Configured LazyVim to recognize Solidity projects by detecting
`foundry.toml`, `hardhat.config.js`, and `hardhat.config.ts` files.
2. **Treesitter Support for Solidity**
- Added `solidity` to the list of languages ensured by
`nvim-treesitter`, providing syntax highlighting and better code
structure understanding.
3. **Language Server Protocol (LSP) Setup**
- Configured `nvim-lspconfig` to support `solidity_ls` as the LSP for
Solidity files.
- Set up `root_dir` detection based on project files or a `.git`
directory to enable proper LSP functioning in Solidity projects.
4. **Solidity Formatter**
- Integrated `forge_fmt` as a formatter for Solidity files using
`conform.nvim`, which utilizes `forge fmt` to format code.
    
### Why use `forge fmt` instead of Prettier?

- **Prettier's Solidity support requires extra plugins**: Prettier does
not have native Solidity support and depends on
`prettier-plugin-solidity`. Even with
`vim.g.lazyvim_prettier_needs_config = false`, formatting won't work
unless a `.prettierrc` file is configured, creating unnecessary
complexity.
- **`forge fmt` is the native tool for Solidity development**: `Forge`
is a widely used tool within the Solidity ecosystem, especially when
working with Foundry. It provides built-in formatting with no extra
dependencies, making it simpler and more efficient to integrate.
- **Hardhat uses `prettier-plugin-solidity`**: For users of Hardhat,
`prettier-plugin-solidity` is required for code formatting. However, the
integration with Prettier might add complexity, while `forge fmt`
simplifies the process.
- **Future customization**: We may allow users to choose between
`prettier-plugin-solidity` and `forge fmt` for formatting in the future,
depending on their preferred tools.
    
  
### Testing

- Confirmed that Solidity files are detected and syntax-highlighted by
Treesitter.
- Verified LSP functionality for Solidity, including code navigation and
error detection.
- Tested `forge_fmt` for automatic code formatting on Solidity files.
### Motivation

These changes provide a smoother and more robust Solidity development
experience in Lazyvim, including syntax highlighting, code navigation,
and automatic formatting.

## Related Issue(s)
https://github.com/LazyVim/LazyVim/issues/1901

## Checklist

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

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2025-10-20 11:20:05 +02:00
Bahaa Mohamed
248876adb6
feat(go): add linting with golangci-lint (#6311)
## Description

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

Add Go linting support using
[golangci-lint](https://github.com/golangci/golangci-lint) and
nvim-lint.

- Installs golangci-lint via Mason.
- Configures nvim-lint to run it on Go files.

This improves the Go development experience by running a fast, popular
linter automatically

## Related Issue(s)

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

None

## 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-10-20 02:12:20 -07:00
snailed
4d0d87f626
fix(helm): broken helm highlighting (#5335)
## Description

This PR replaces the towolf/vim-helm plugin with a newer, lua
implementation of the plugin. This fixes syntax highlighting and makes
the workaround for the ftdetect/lsp load order superfluous.

## Related Issue(s)

  - Fixes #5334 

## Checklist

- [X] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 11:09:29 +02:00
Torbjørn Vatn
d2f9885d6b
fix(tailwind): additional settings (#5266)
Make it possible to define your own tailwind settings in opts, and merge
them with the default, additional Phoenix settings in tailwind.lua

## Description

Add the possibility to add your own tailwind settings in opts and have
them deep merged into the default `opts.settings`

I needed this for configuring support for tailwind when coding on a
[htmgo](https://htmgo.dev/docs/misc/tailwind-intellisense) project in
Neovim.

E.g.
```lua
return {
  "neovim/nvim-lspconfig",
  opts = {
    servers = {
      tailwindcss = {
        filetypes_include = { "go" },
        settings = {
          tailwindCSS = {
            includeLanguages = {
              go = "html",
            },
            experimental = {
              classRegex = {
                { "Class\\(([^)]*)\\)", '["`]([^"`]*)["`]' },
                { "ClassX\\(([^)]*)\\)", '["`]([^"`]*)["`]' },
                { "ClassIf\\(([^)]*)\\)", '["`]([^"`]*)["`]' },
                { "Classes\\(([^)]*)\\)", '["`]([^"`]*)["`]' },
              },
            },
          },
        },
      },
    },
  },
}
```

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 11:07:12 +02:00
Folke Lemaitre
9d345dec44
fix(twig): correct mason url 2025-10-20 10:55:37 +02:00
Folke Lemaitre
64377ba4de
test: detect old refs to plugins in extras 2025-10-20 10:55:05 +02:00
George Guimarães
2682ce0ab9
feat(ai): add avante.nvim for a better AI experience (#4440)
I switched over to https://github.com/yetone/avante.nvim and I think
this is the best experience in terms of UI and easiness to add patches
to your code.

I'm recommending it to everyone.

~~However, I couldn't make render-markdown to work on Avante. It seems
that my spec here is running before the one defined in
extras/lang/markdown.lua and getting overwritten even though I added
`optional = true`. I'll try to dig in deeper, but if someone has any
pointers, I'd appreciate it.~~

  - Fixes #4394

---------

Co-authored-by: PatMulligan <43773168+PatMulligan@users.noreply.github.com>
Co-authored-by: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com>
Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-20 01:47:17 -07:00
Jose Storopoli
5d186c009a
feat(lang): julia support (#6231)
## Description

- Another take on #4436.
- Adds LSP
- Adds cmp and blink.cmp for LaTeX symbols

## Related Issue(s)

#5455 

## Screenshots

![CleanShot 2025-07-05 at 08 05
01@2x](https://github.com/user-attachments/assets/36a6e5ac-2632-4a33-af9e-674b7f1b750d)

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 10:24:12 +02:00
Vo Quang Chien
645846be5c
feat(lang): add Typst language support (#4042)
## Description

This pull request introduces robust support for the
[Typst](https://github.com/typst/typst) language in LazyVim, enhancing
the Typst editing experience with several integrated tools:

1. **LSP Support**: Integrate with
[tinymist](https://github.com/Myriad-Dreamin/tinymist) provides
comprehensive LSP support.
2. **Code Formatting**: Integrate with
[typstyle](https://github.com/Enter-tainer/typstyle) for code
formatting.
3. **Preview Support**: Added
[typst-preview.nvim](https://github.com/chomosuke/typst-preview.nvim)
for live preview of Typst documents.

## Checklist

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

---------

Co-authored-by: Jose Storopoli <jose@storopoli.io>
Co-authored-by: Stefan Boca <45266795+stefanboca@users.noreply.github.com>
Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2025-10-20 10:23:30 +02:00
Halibut Git Wiz
a6eb51e5b5
feat(extras): added twig language (#5464)
## Description

Adds Twig templates language support as en extra.

Explanation for the tools choices:
- Linter/formatter: Twigcs and Twig-cs-fixer both follow the [coding
standards](https://twig.symfony.com/doc/3.x/coding_standards.html)
recommended by the Symfony Project, maintainers of Twig.
- LSP: I don't know it Twiggy is considered a standard in the community.
I picked it because it's the only server specific to Twig. The other
options are HTML servers that also include support for several templates
languages. I've been using it for a while and it works fine. It adds
much needed snippets (Twig syntax involves tags that are difficult to
type on most keyboards) and does not conflict with Twigcs diagnostics.

## Checklist

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

---------

Co-authored-by: tw <tw@pretexx.fr>
2025-10-20 10:19:38 +02:00
Jose Storopoli
82382f455a
feat(haskell): update haskell-tools version and add formatters + linters (#6230)
## Description

- Updates `haskell-tools` to use the recommended version in the plugin's
README
- Adds `ormolu` as a formatter
- Adds keybindings for `haskell-tools` that does not conflict with
LazyVim's defaults.

## Related Issue(s)

-
https://github.com/LazyVim/LazyVim/discussions/3325#discussioncomment-9562683:
adds `ormolu` formatter.
- https://github.com/LazyVim/LazyVim/pull/2052#issuecomment-2881764491:
@mrcjkb keeps getting bug reports because the version is still in `3`
and should be updated to `6`.

## Checklist

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

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-20 01:17:31 -07:00
Jose Storopoli
8db9c75e8d
feat(extras): utils: add gh.nvim (#6250)
## Description

Adds [`gh.nvim`](https://github.com/ldelossa/gh.nvim) to the extras.

`gh.nvim` brings a way richer reviewer interface to NeoVim by supporting
LSP and treesitter natively in review diff buffers.
I've been using successfully for a couple weeks instead of `Octo.nvim`.

## Related Issue(s)

None

## Screenshots

<img width="580" height="760" alt="CleanShot 2025-07-13 at 08 02 10@2x"
src="https://github.com/user-attachments/assets/ebee1a54-1c3e-4248-8a09-eba65c838351"
/>


## Checklist

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

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2025-10-20 00:47:54 -07:00
Yiqian Liu
83468be350
fix(keymap): remove select mode remaps of printable characters (#6296)
## Description

Most of the "visual mode" mappings use "v" instead of "x", and therefore
also affect select mode.
If the key is a printable character, it is now unusable in select mode.
This is most prominent with `<leader>`, which is space by default, a
printable character.

The most common use of select mode is when it is automatically triggered
by snippets. Currently, trying to type space, g, <, >, etc. as the first
character of a snippet field will trigger their bind instead of actually
inserting the character.

I cannot currently think of any good reason why anyone would rely on
using select mode to execute any of these mapped actions.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 00:10:08 -07:00
Watson Dinh
f118dca334
fix(extras.lang): fix Scala extra by using nvimMetals only (#5726)
## Description
Scala lang Extra should NOT be configured via `neovim/nvim-lspconfig`.
This PR removes `neovim/nvim-lspconfig` config and replace it by
`nvim-metals` only. From [nvim-metals
README.md](https://github.com/scalameta/nvim-metals): _"NOTE: This
plugin works without needing to install neovim/nvim-lspconfig. If you
have it installed for other languages, that's not a problem, but make
sure you do not have Metals configured through nvim-lspconfig while
using this plugin"_

## Related Issue(s)

No specific issue, this is attempt to follow users guide of Scala nvim
plugin : https://github.com/scalameta/nvim-metals

## Screenshots

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 09:04:35 +02:00
Thomas Ung
8c5cc77107
docs(fr): add readme in french (#5300)
## Description

Contribution for https://github.com/LazyVim/LazyVim/discussions/506


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 00:01:17 -07:00
Grzegorz Aleksander Klementowski
d27e7adb53
Added Polish translation of README (README-PL.md) (#5816)
Added Polish translation of README (README-PL.md):

<div align="center">
<img
src="https://user-images.githubusercontent.com/292349/213446185-2db63fd5-8c84-459c-9f04-e286382d6e80.png">
</div>

<hr>

<h4 align="center">
  <a href="https://lazyvim.github.io/installation">Install</a>
  ·
  <a href="https://lazyvim.github.io/configuration">Configure</a>
  ·
  <a href="https://lazyvim.github.io">Docs</a>
</h4>

<div align="center"><p>
    <a href="https://github.com/LazyVim/LazyVim/releases/latest">
<img alt="Latest release"
src="https://img.shields.io/github/v/release/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41&include_prerelease&sort=semver"
/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim/pulse">
<img alt="Last commit"
src="https://img.shields.io/github/last-commit/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=8bd5ca&logoColor=D9E0EE&labelColor=302D41"/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim/blob/main/LICENSE">
<img alt="License"
src="https://img.shields.io/github/license/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=ee999f&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim/stargazers">
<img alt="Stars"
src="https://img.shields.io/github/stars/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=c69ff5&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim/issues">
<img alt="Issues"
src="https://img.shields.io/github/issues/LazyVim/LazyVim?style=for-the-badge&logo=bilibili&color=F5E0DC&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
    <a href="https://github.com/LazyVim/LazyVim">
<img alt="Repo Size"
src="https://img.shields.io/github/repo-size/LazyVim/LazyVim?color=%23DDB6F2&label=SIZE&logo=codesandbox&style=for-the-badge&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
    <a href="https://twitter.com/intent/follow?screen_name=folke">
<img alt="follow on Twitter"
src="https://img.shields.io/twitter/follow/folke?style=for-the-badge&logo=twitter&color=8aadf3&logoColor=D9E0EE&labelColor=302D41"
/>
    </a>
</div>

LazyVim to konfiguracja Neovim oparta na [💤
lazy.nvim](https://github.com/folke/lazy.nvim)
która ułatwia dostosowywanie i rozszerzanie konfiguracji.
Zamiast wybierać między rozpoczynaniem od zera a używaniem gotowej
dystrybucji, LazyVim oferuje najlepsze z obu światów – elastyczność
pozwalającą na dostosowanie konfiguracji do własnych potrzeb oraz wygodę
wstępnie skonfigurowanego środowiska.


![image](https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png)


![image](https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png)

##  Funkcje

- 🔥 Przekształć Neovim w pełnoprawne IDE
- 💤 Łatwo dostosowuj i rozszerzaj swoją konfigurację dzięki
[lazy.nvim](https://github.com/folke/lazy.nvim)
- 🚀 Niezwykle szybkie działanie
- 🧹 Przemyślane domyślne ustawienia opcji, autocmd i skrótów
klawiszowych
- 📦 Zawiera bogaty zestaw wstępnie skonfigurowanych wtyczek gotowych do
użycia

## ️ Wymagania

- Neovim >= **0.9.0** (musi być skompilowany z **LuaJIT**)
- Git >= **2.19.0** (dla obsługi częściowego klonowania repozytoriów)
- [Nerd Font](https://www.nerdfonts.com/) **_(opcjonalnie)_**
- Kompilator **C** wymagany dla `nvim-treesitter`. Szczegóły
[tutaj](https://github.com/nvim-treesitter/nvim-treesitter#requirements)

## 🚀 Pierwsze kroki

Szablon startowy dla **LazyVim** znajdziesz
[tutaj](https://github.com/LazyVim/starter)

<details><summary>Wypróbuj z Dockerem</summary>

```sh
docker run -w /root -it --rm alpine:edge sh -uelic '
  apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
  git clone https://github.com/LazyVim/starter ~/.config/nvim
  cd ~/.config/nvim
  nvim
'
```

</details>

<details><summary>Zainstaluj <a
href="https://github.com/LazyVim/starter">Starter LazyVim</a></summary>

- Wykonaj kopię zapasową swoich obecnych plików Neovim:

  ```sh
  mv ~/.config/nvim ~/.config/nvim.bak
  mv ~/.local/share/nvim ~/.local/share/nvim.bak
  ```

- Sklonuj repozytorium startowe:

  ```sh
  git clone https://github.com/LazyVim/starter ~/.config/nvim
  ```

- Usuń folder `.git`, aby później móc dodać własne repozytorium:

  ```sh
  rm -rf ~/.config/nvim/.git
  ```

- Uruchom Neovim!

  ```sh
  nvim
  ```

W plikach znajdziesz komentarze, które pomogą Ci dostosować **LazyVim**.

</details>

---

[@elijahmanor](https://github.com/elijahmanor) stworzył świetne wideo z
przewodnikiem, jak zacząć.

[![Obejrzyj
wideo](https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg)](https://www.youtube.com/watch?v=N93cTbtLCIM)

[@dusty-phillips](https://github.com/dusty-phillips) napisał obszerną
książkę
[LazyVim for Ambitious
Developers](https://lazyvim-ambitious-devs.phillips.codes),
która jest dostępna za darmo online.

## 📂 Struktura plików

Pliki w katalogu `config` są automatycznie ładowane w odpowiednim
momencie,
więc nie musisz ich ręcznie dołączać.
**LazyVim** zawiera zestaw domyślnych plików konfiguracyjnych,
które zostaną załadowane **_przed_** Twoimi własnymi. Szczegóły
znajdziesz
[tutaj](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config).

Możesz dodać własne specyfikacje wtyczek w katalogu `lua/plugins/`.
Wszystkie pliki w tym folderze zostaną automatycznie załadowane przez
[lazy.nvim](https://github.com/folke/lazy.nvim).

<pre>
~/.config/nvim
├── lua
│   ├── config
│   │   ├── autocmds.lua
│   │   ├── keymaps.lua
│   │   ├── lazy.lua
│   │   └── options.lua
│   └── plugins
│       ├── spec1.lua
│       ├── **
│       └── spec2.lua
└── init.lua
</pre>

## ⚙️ Konfiguracja

Zapoznaj się z [dokumentacją](https://lazyvim.github.io).
2025-10-19 23:59:40 -07:00
Iordanis Petkakis
e38944799e
fix(util.project): different mapping on dashboard than snacks.projects (#5737)
## Description
Different mapping and description to not be confused with
`snacks.projects`.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #5736 
<!--
  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-10-20 08:52:12 +02:00
Folke Lemaitre
1b2e6e8986
feat(extras): renamed extra omnisharp -> dotnet + added fautocomplete to lspconfig 2025-10-20 08:47:38 +02:00
Folke Lemaitre
37ecd06fad
feat(extras): automatically update lazyvim.json for renamed or deprecated extras 2025-10-20 08:46:45 +02:00
Folke Lemaitre
d44f8bf317
test: fix mason in extra tests 2025-10-20 08:36:01 +02:00
Christoph Schmidpeter
80a980ab00
feat(lang/fsharp): add F# support to omnisharp extra (#6538)
## Description
Extend the existing C#/VB setup to support F# development with
formatting, LSP, and debugging integration.

- Extend recommended filetypes and roots to include F#
- Ensure Treesitter installs the `fsharp` parser
- Add Fantomas formatter in none-ls and Conform
- Ensure Mason installs fsautocomplete and fantomas
- Extend DAP configurations to include `fsharp`

⚠️ For debugging/neotest to work, this PR should be merged together with
[#6540](https://github.com/LazyVim/LazyVim/pull/6540),
which switches Omnisharp extras from `neotest-dotnet` to
`neotest-vstest`.

## Related Issue(s)

N/A

## Screenshots

### Without PR

Sample code:
<img width="1485" height="934" alt="2025-09-27-224704_hyprshot"
src="https://github.com/user-attachments/assets/40993ae2-c7eb-458a-bca9-6e77a1fad323"
/>

### With PR

`:ConformInfo`
<img width="1280" height="573" alt="image"
src="https://github.com/user-attachments/assets/b417fce7-8eb5-4ccc-8bd4-c554060bf9a0"
/>

`:NullLsInfo`
<img width="732" height="544" alt="image"
src="https://github.com/user-attachments/assets/5275e16b-353f-4776-b130-09ec27fde90b"
/>

Sample code before formatting:
<img width="1953" height="1228" alt="2025-09-27-224729_hyprshot"
src="https://github.com/user-attachments/assets/870b17c7-2473-4151-9ccc-23b70d9fbc42"
/>

Sample code after formatting (using Fantomas formatter):
<img width="1930" height="1216" alt="2025-09-27-224752_hyprshot"
src="https://github.com/user-attachments/assets/3b589c2e-b7b2-4fbf-bef7-0aabda586536"
/>

DAP/Neotest debugging the sample code: 
<img width="2548" height="1461" alt="image"
src="https://github.com/user-attachments/assets/b70a9498-041e-48c8-8e7c-78a828d0e17d"
/>



## Attachments
[Sample Project ZIP
Archive](https://github.com/user-attachments/files/22576868/FsSample.zip)

```
sudo pacman -S --needed curl unzip dotnet-sdk # or whatever package manger is on system
curl -O -L "https://github.com/user-attachments/files/22576868/FsSample.zip"
unzip FsSample.zip
cd FsSample
dotnet build  # restoring/building fixes LSP errors 
```     

## Checklist

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

Co-authored-by: Christoph Schmidpeter <christoph.schmidpeter@gmail.com>
2025-10-20 08:02:50 +02:00
Folke Lemaitre
38df28f28c
style: formatting 2025-10-20 07:53:39 +02:00
XTY
0dc41dfe9a
refactor(vscode): reimplement terminal integration and unify calls to extension API (#6076)
## Description

This PR proposes the following changes to the VS Code extra:
- Re-implement the VS Code terminal integration (broken since
[`2f46974`](2f4697443c (diff-f878104b5415a79ed4bb9036974722cad911327fdd46994e04f5065ff90e9a55)),
see comment referenced below)
- Unify calls to the [extension
API](https://github.com/vscode-neovim/vscode-neovim/tree/v1.18.21?tab=readme-ov-file#%EF%B8%8F-api)
- Fully adopt the Lua API in favour of the deprecated Vim script
functions (see [deprecation
notice](https://github.com/vscode-neovim/vscode-neovim/tree/v1.18.21?tab=readme-ov-file#vimscript))
  - Centralise `require("vscode")` calls

## Related Issue(s)

- Fixes
https://github.com/LazyVim/LazyVim/pull/4392#issuecomment-2881395017

## Checklist

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

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2025-10-20 07:36:15 +02:00
Jose Storopoli
2a866f6c8c
feat(lang): nix add statix linter (#6244)
## Description

Adds [`statix`](https://github.com/oppiliappan/statix) linter to
`lang/nix.lua` using `nvim-lint`

## Related Issue(s)

None

## Screenshots


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-20 07:20:47 +02:00
Folke Lemaitre
e4d34328f2
fix(typescript): better default pwa-node DAP config. Closes #6386 2025-10-20 07:19:18 +02:00
Folke Lemaitre
1a08e9f50f
fix(telescope): sync keymaps with snacks picker + added some that were missing 2025-10-20 07:04:55 +02:00
folke
c3c2ff465b chore(build): auto-generate docs 2025-10-20 05:02:32 +00:00
Folke Lemaitre
69a5744803
fix(fzf-lua): added some missing keymaps similar to snacks picker. Closes #6036. Closes #5830 2025-10-20 07:01:27 +02:00
Folke Lemaitre
16917db94a
feat(sidekick): added sidekick cli status to lualine 2025-10-19 22:53:32 +02:00
github-actions[bot]
42840b2ffb
chore(main): release 15.9.0 (#6643)
🤖 I have created a release *beep* *boop*
---


##
[15.9.0](https://github.com/LazyVim/LazyVim/compare/v15.8.1...v15.9.0)
(2025-10-19)


### Features

* **docker:** associate 'Containerfile' with 'dockerfile' filetype
([#5974](https://github.com/LazyVim/LazyVim/issues/5974))
([97af4a2](97af4a23bc))
* **extras.rest:** add keymap for changing environment
([#5678](https://github.com/LazyVim/LazyVim/issues/5678))
([1da659d](1da659db4a))
* **java:** enable `blink.cmp` capabilities to show signature
documentation ([#5218](https://github.com/LazyVim/LazyVim/issues/5218))
([9618e32](9618e327ed))
* **lang/omnisharp:** switch neotest adapter to vstest
([#6540](https://github.com/LazyVim/LazyVim/issues/6540))
([4086d44](4086d44a0b))
* **neotest:** extra keymap to attach to a test
([#6198](https://github.com/LazyVim/LazyVim/issues/6198))
([66e927f](66e927fd9d))


### Bug Fixes

* **blink:** remove snippet expand override (no longer needed). Closes
[#6044](https://github.com/LazyVim/LazyVim/issues/6044)
([336e2c3](336e2c3ea6))
* **chezmoi:** add `hidden=false` to fzf picker
([#6095](https://github.com/LazyVim/LazyVim/issues/6095))
([1aa1b59](1aa1b59a7e))
* **copilot-chat:** use up to date config for chat headers
([#6543](https://github.com/LazyVim/LazyVim/issues/6543))
([2c5eef7](2c5eef7df7))
* **extras/rust:** fix config key for files.exclude
([#5664](https://github.com/LazyVim/LazyVim/issues/5664))
([762a34d](762a34d5ad))
* **extras:** adjust switch source/header shortcut
([#6567](https://github.com/LazyVim/LazyVim/issues/6567))
([b36b858](b36b8589b6))
* **extras:** remove procMacro ignored
([#6117](https://github.com/LazyVim/LazyVim/issues/6117))
([4a3702e](4a3702e050))
* **lang.omnisharp:** update CSharpier command and arguments for Mason
compatibility ([#6156](https://github.com/LazyVim/LazyVim/issues/6156))
([dfebe70](dfebe70b8d))
* **lang.rust:** rust-analyzer hanging on root scanned
([#6178](https://github.com/LazyVim/LazyVim/issues/6178))
([7bf8c22](7bf8c22c56))
* **latex:** ensure tex extra installs latex tree-sitter parser
([#6357](https://github.com/LazyVim/LazyVim/issues/6357))
([ae74622](ae74622e66))
* **mini.animate:** schedule the toggle mapping to correctly take effect
([#6483](https://github.com/LazyVim/LazyVim/issues/6483))
([bd23357](bd233579a6))
* **sql:** fix autocomplete when `omni` is used as a `blink.cmp` source
([#5652](https://github.com/LazyVim/LazyVim/issues/5652))
([f6f72b9](f6f72b90d4))
* **treesitter:** attach textobject keymaps to existing buffers on load.
Closes [#6642](https://github.com/LazyVim/LazyVim/issues/6642). Closes
[#6639](https://github.com/LazyVim/LazyVim/issues/6639)
([92a7728](92a7728732))
* **typescript:** make_position_params with offset encoding.
([#6277](https://github.com/LazyVim/LazyVim/issues/6277))
([22152e9](22152e958f))
* **ui:** ignore sidekick_terminal in mini-indentscope
([#6619](https://github.com/LazyVim/LazyVim/issues/6619))
([f0b32b5](f0b32b5955))
* **util:** add some kulala keymaps back to global
([#5960](https://github.com/LazyVim/LazyVim/issues/5960))
([a16739e](a16739e332))
* **vscode:** don't sync undo/redo with vscode
([#5957](https://github.com/LazyVim/LazyVim/issues/5957))
([706ec44](706ec4443a))

---
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-10-19 13:00:52 +02:00
Folke Lemaitre
c460e97d2b
style: format 2025-10-19 12:57:09 +02:00
Lawrence Ho
9618e327ed
feat(java): enable blink.cmp capabilities to show signature documentation (#5218)
## Description

Enable `blink.cmp` capabilities to show Java signature documentation
during completion.
See also: https://github.com/Saghen/blink.cmp/issues/151

## 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-10-19 12:55:38 +02:00
Igor Guerrero
f6f72b90d4
fix(sql): fix autocomplete when omni is used as a blink.cmp source (#5652)
## Description

I was trying the `omni` source with `blink.cmp` and I had an error which
you can read more about in this `nvim-compe` issue:
https://github.com/hrsh7th/nvim-compe/issues/286 but the message keeps
showing up after setting that to `syntax` so I mark the default plugin
as loaded, and it works as expected, I think there are more items
returned but I cannot confirm that :).

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:54:41 +02:00
Jarryd Tilbrook
a16739e332
fix(util): add some kulala keymaps back to global (#5960)
## Description

Some kulala keymaps are useful to access globally, such as the
scratchpad. However, #4467 #4574 added all of them to http filetypes
only

This adds the scratchpad and replay last to global keymaps

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:53:46 +02:00
Michael Nikitochkin
97af4a23bc
feat(docker): associate 'Containerfile' with 'dockerfile' filetype (#5974)
## Description

'Containerfile' [1] is a supported alternative name for container build
definitions. It is recognized by Docker and other container tools, and
can help clarify intent in multi-container repositories or
non-Docker-specific setups.

[1]:
https://github.com/containers/common/blob/main/docs/Containerfile.5.md

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:47:59 +02:00
Kian Kasad
7038687b20
chore(python): use debugpy-adapter executable for nvim-dap-python (#6080)
## Description

Uses a less hacky and now officially-supported way of getting the
debugpy DAP adapter path for nvim-dap-python.

Since https://github.com/mfussenegger/nvim-dap-python/pull/184,
nvim-dap-python can start the debugpy adapter using the
`debugpy-adapter` executable. Since
[Mason](f7c1c2fde2/packages/debugpy/package.yaml (L17))
and [now debugpy itself](https://github.com/microsoft/debugpy/pull/1870)
provide this executable, there's no need to get the `python` executable
from debugpy's venv.

I've gone with just `"debugpy-adapter"` rather than
`LazyVim.get_pkg_path("debugpy", "debugpy-adapter")` so that a
system-wide installation of debugpy can also be used.

## 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-10-19 12:47:17 +02:00
CaueDosAnjos
dfebe70b8d
fix(lang.omnisharp): update CSharpier command and arguments for Mason compatibility (#6156)
## Description
This PR updates the CSharpier integration in LazyVim to reflect changes
in how Mason installs the formatter.

Previously, Mason installed CSharpier as the `dotnet-csharpier` binary,
which allowed running it without additional arguments. Now, Mason
installs it simply as `csharpier`, requiring the explicit format
argument for it to work correctly.

This change updates the formatter command and arguments accordingly to
ensure compatibility with the latest Mason installation and CSharpier
CLI behavior.

## Changes
Replaced `dotnet-csharpier` with `csharpier` as the executable command.

Added the required `format` argument to the command invocation.

## Related Issue(s)
Fixes #6155

## Checklist
I have read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:46:46 +02:00
Folke Lemaitre
336e2c3ea6
fix(blink): remove snippet expand override (no longer needed). Closes #6044 2025-10-19 12:45:07 +02:00
Felix Rath
762a34d5ad
fix(extras/rust): fix config key for files.exclude (#5664)
## Description

It seems like the key changed its name from `files.excludeDirs` to
`files.exclude` at some point. At least that is the (only) name that can
be found in the docs now:
https://rust-analyzer.github.io/book/configuration.html (ctrl+f for
"files.exclude")

Also add `".jj"` as an excluded directory, which is like `".git"` but
for jujutsu
(https://jj-vcs.github.io/jj/latest/cli-reference/#jj-git-init).

---

As an aside, `cargo.loadOutDirsFromCheck` also does not seem to exist
(anymore). But I don't know more about that option, so I haven't touched
it in this PR.

## Related Issue(s)

Not sure if any.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:37:57 +02:00
Ethan
4a3702e050
fix(extras): remove procMacro ignored (#6117)
## Description
I think we should remove rust-analyzer procMacro.ignore because it will
cause some diagnostics which are not expected.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
https://github.com/LazyVim/LazyVim/issues/6111

<!--
  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-10-19 12:36:04 +02:00
Theo Lemay
706ec4443a
fix(vscode): don't sync undo/redo with vscode (#5957)
## Description

Vscode-neovim maintainer here,
https://github.com/LazyVim/LazyVim/pull/4983 should not have been
merged, it creates more problems than it
solves. For the longest time I was trying to figure out why undo is
broken on my machine, didn't notice this slipped in.

The fundamental issue is that vscode's undo points are based on a
time-based heuristic, wheras neovim's undo points are based on atomic
actions (delete, insert, etc). Vscode doesn't understand the context of
what the user is doing, it just receives a stream of edits from neovim.

Ultimately this results in multiple unrelated edits being undone with a
single press of the u key, resulting in very confusing behavior.

## Related Issue(s)

https://github.com/LazyVim/LazyVim/pull/4983

## Screenshots

Current


https://github.com/user-attachments/assets/5ca33b0d-fe2e-49f9-aa17-66f3c42c0966

Expected


https://github.com/user-attachments/assets/d577a1f3-efb2-4725-be50-bd0cf691252d



## Checklist

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

Co-authored-by: Theo Lemay <tlemay@tesla.com>
2025-10-19 12:31:48 +02:00
Nguyen Hoai Nam
22152e958f
fix(typescript): make_position_params with offset encoding. (#6277)
Fixed for issue https://github.com/LazyVim/LazyVim/issues/6276
2025-10-19 12:30:58 +02:00
Christoph Schmidpeter
4086d44a0b
feat(lang/omnisharp): switch neotest adapter to vstest (#6540)
## Description
Replace `neotest-dotnet` with `neotest-vstest` in the Omnisharp extras.

The maintainer of `neotest-dotnet` has announced possible archiving and
recommended moving toward a vstest-based approach
(see Issafalcon/neotest-dotnet#142).

In addition, `neotest-dotnet` often fails to reliably discover tests
(currently reproducible), while `neotest-vstest` works consistently in
those same scenarios.

`neotest-vstest` delegates to Microsoft’s VSTest engine, which provides:

- Framework-agnostic discovery and execution (xUnit, NUnit, MSTest,
etc.)
- Support for both C# and F#
- Parameterized test support
- Compatibility with Microsoft.Testing.Platform going forward

According to the `neotest-dotnet` maintainer, this vstest-based approach
is more reliable and maintainable than parser-based discovery and is the
recommended path going forward.
## Related Issue(s)
- Ref: Issafalcon/neotest-dotnet#142
<!--
  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.

Co-authored-by: Christoph Schmidpeter <christoph.schmidpeter@gmail.com>
2025-10-19 12:29:00 +02:00
Tomas Slusny
2c5eef7df7
fix(copilot-chat): use up to date config for chat headers (#6543)
The config format changed a while ago due to function calling support

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
2025-10-19 12:28:25 +02:00
Roland Kaminski
b36b8589b6
fix(extras): adjust switch source/header shortcut (#6567)
The command to switch header and source is now called
`:LspClangdSwitchSourceHeader` and no longer
`:ClangdSwitchSourceHeader`.

## Description

This is just a small fix due to a command that has been renamed.

I did not find the documentation but the relevant line in the code where
the command is defined is here:
-
e688b486fe/lsp/clangd.lua (L92)

## Related Issue(s)

I did not find any related issues.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:27:42 +02:00
Lorenzo Bettini
d14b7733e7
docs(mini-snippets): fix typo in the documentation (#5953)
typo `snippits`

## Description

Just a fix for the typo `snippits`

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:26:42 +02:00
xusd320
7bf8c22c56
fix(lang.rust): rust-analyzer hanging on root scanned (#6178)
## Description

I encounter the RA hanging problem when coding on next.js project, and
found the solution to fix this at here .
https://github.com/rust-lang/rust-analyzer/issues/12613#issuecomment-2096386344
2025-10-19 12:26:20 +02:00
Jarryd Tilbrook
66e927fd9d
feat(neotest): extra keymap to attach to a test (#6198)
## Description

An extra keymap useful when running tests to attach to the test.

## Related Issue(s)

N/A

## Screenshots

N/A

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:23:23 +02:00
Frankie Robertson
ae74622e66
fix(latex): ensure tex extra installs latex tree-sitter parser (#6357)
## Description

Currently we don't ensure the latex treesitter is installed for latex.
Although it is not used for highlighting, it is used by default plugins
like flash, so this adds it to the list

## Related Issue(s)

https://github.com/LazyVim/LazyVim/pull/1156

Co-authored-by: Frankie Robertson <frankie@robertson.name>
2025-10-19 12:22:33 +02:00
Jackie Li
f0b32b5955
fix(ui): ignore sidekick_terminal in mini-indentscope (#6619) 2025-10-19 12:21:17 +02:00
Anant Thazhemadam
98b97d7b00
docs(ui): fix typo - s/inent/indent/ (#6584)
## Description

This fixes a typo I noticed in the docs.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:20:34 +02:00
Zhizhen He
dea0ae44be
style(lean): fix typo (#6600)
## Description

Fix typo in comment for lean extra.

<!-- 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-10-19 12:20:19 +02:00
Iordanis Petkakis
1aa1b59a7e
fix(chezmoi): add hidden=false to fzf picker (#6095)
## Description
Since #5275, the fzf picker has changed to use the `files` picker
instead of `fzf_exec` like before.

That means it also inherits the options of `files` picker, where `hidden
= true`. Just the command had been changed to use the `chezmoi` command,
but it doesn't make sense to have `hidden = true`, since it just appends
`--hidden` to the command which was supposed to be `fzf`, but now with
`chezmoi` it's not recognized.

Add `hidden = false` to the `files` picker when the command is chezmoi.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #6094
<!--
  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-10-19 12:19:30 +02:00
Rico Sta. Cruz
1da659db4a
feat(extras.rest): add keymap for changing environment (#5678)
## Description

Context:

- kulala.nvim is an HTTP client, which is used in extras.rest
- The kulala [default
keymaps](https://neovim.getkulala.net/docs/getting-started/default-keymaps)
include a keymap to "set environment" (eg to change from production to
staging)
- This keymap is missing in extras/rest.lua

In this PR:

This adds a keymap for `<leader>Re` in extras.rest.lua.

## Screenshots

This adds `e` here:

<img width="595" alt="image"
src="https://github.com/user-attachments/assets/f06f527c-731c-4f81-ad17-0018de9e95d0"
/>

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-19 12:16:55 +02:00
folke
3d824e1162 chore(build): auto-generate docs 2025-10-19 05:46:27 +00:00
Iordanis Petkakis
bd233579a6
fix(mini.animate): schedule the toggle mapping to correctly take effect (#6483)
## Description
`mini.animate`'s toggle mapping didn't take effect, presumably because
`keymaps.lua` is the last one to execute on `VeryLazy`. Schedule it to
correctly overwrite the default from `keymaps.lua`.

I would also be interested if you don't mind to explain to me how can I
find out the order of the events execution if there are multiple
executions on the same event (i.e on `VeryLazy` what is the order of the
execution? Is it arbitrary?)
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
None. Saw a discussion on `snacks.nvim` and OP wanted to change the
mapping and when I tested with `mini.animate` Extra I noticed that its
mapping wasn't overriding the default one from `keymaps.lua`.
<!--
  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-10-19 07:45:33 +02:00
Folke Lemaitre
92a7728732
fix(treesitter): attach textobject keymaps to existing buffers on load. Closes #6642. Closes #6639 2025-10-18 15:26:41 +02:00
github-actions[bot]
561da43c43
chore(main): release 15.8.1 (#6641)
🤖 I have created a release *beep* *boop*
---


##
[15.8.1](https://github.com/LazyVim/LazyVim/compare/v15.8.0...v15.8.1)
(2025-10-18)


### Bug Fixes

* **treesitter:** reload lazyvim.tresitter.util to prevent issues with
stale modules when upgrading
([62ce8a2](62ce8a23d8))

---
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-10-18 08:34:17 +02:00
folke
23bdbc91eb chore(build): auto-generate docs 2025-10-18 04:39:45 +00:00
Folke Lemaitre
62ce8a23d8
fix(treesitter): reload lazyvim.tresitter.util to prevent issues with stale modules when upgrading 2025-10-18 06:38:45 +02:00
github-actions[bot]
048056e952
chore(main): release 15.8.0 (#6576)
🤖 I have created a release *beep* *boop*
---


##
[15.8.0](https://github.com/LazyVim/LazyVim/compare/v15.7.1...v15.8.0)
(2025-10-17)


### Features

* **gleam:** add conform
([#5640](https://github.com/LazyVim/LazyVim/issues/5640))
([02b8dd3](02b8dd3f4b))
* **sidekick:** added `<leader>ad` to close/detach a terminal/session
([f8b062b](f8b062b130))
* **sidekick:** changed default keymaps for sidekick. Please check
updated docs at sidekick.nvim
([a3e52dd](a3e52dd346))
* **sidekick:** use `<a-a>` in any snacks picker to send the (selected)
results to an AI tool
([26c43a9](26c43a9b93))
* **treesitter:** add installation instructions to get a C compiler on
windows
([37032da](37032dabd6))
* **treesitter:** added support for `disable` langs to
indent/highlight/folds. Closes
[#6608](https://github.com/LazyVim/LazyVim/issues/6608)
([0e8069c](0e8069c78e))
* **treesitter:** better health checks for treesitter requirements
([413b9d5](413b9d5fa9))
* **treesitter:** on windows, use `gcc` if available and `cl.exe` is not
available for building parsers
([2a1f3c3](2a1f3c3701))


### Bug Fixes

* **blink:** disable blink left/right key in the cmdline
([94c4603](94c4603b68))
* **keymaps:** update deprecated diagnostic keymap to latest api change
([#6574](https://github.com/LazyVim/LazyVim/issues/6574))
([b9d38f6](b9d38f6920))
* **sidekick:** only add copilot to lspconfig when `opts.nes.enabled ~=
false`
([049db39](049db39de0))
* **terminal:** term toggle keymaps now only work for snacks terminals.
Closes [#6573](https://github.com/LazyVim/LazyVim/issues/6573)
([4efd0e2](4efd0e2bea))
* **treesiter:** check that `disable` options are tables
([e8c5fa7](e8c5fa7eae))
* **treesitter:** better check on windows if microsoft build tools is
installed
([5effc77](5effc77185))
* **xtras:** load `copilot-native` before `blink`
([#6588](https://github.com/LazyVim/LazyVim/issues/6588))
([aa2c436](aa2c43633a))


### Performance Improvements

* **ansible:** load on ft=yaml and run should only be mapped on
ft=yaml.ansible
([ebdcf1b](ebdcf1ba7e))

---
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-10-17 19:21:12 +02:00
folke
b90e9cb73a chore(build): auto-generate docs 2025-10-17 17:19:47 +00:00
Folke Lemaitre
26c43a9b93
feat(sidekick): use <a-a> in any snacks picker to send the (selected) results to an AI tool 2025-10-17 19:18:28 +02:00
Folke Lemaitre
5effc77185
fix(treesitter): better check on windows if microsoft build tools is installed 2025-10-15 19:43:44 +02:00
folke
144fe24be1 chore(build): auto-generate docs 2025-10-15 06:43:19 +00:00
Folke Lemaitre
37032dabd6
feat(treesitter): add installation instructions to get a C compiler on windows 2025-10-15 08:42:05 +02:00
Folke Lemaitre
413b9d5fa9
feat(treesitter): better health checks for treesitter requirements 2025-10-15 08:38:37 +02:00
Folke Lemaitre
2a1f3c3701
feat(treesitter): on windows, use gcc if available and cl.exe is not available for building parsers 2025-10-15 08:38:37 +02:00
folke
f8e8ea4b5e chore(build): auto-generate docs 2025-10-14 11:18:24 +00:00
Vu Nhat Chuong
02b8dd3f4b
feat(gleam): add conform (#5640)
## Description

Add conform.nvim formatter for gleam lanuage.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-14 13:17:22 +02:00
folke
cfc0ae0184 chore(build): auto-generate docs 2025-10-12 12:27:10 +00:00
Folke Lemaitre
ebdcf1ba7e
perf(ansible): load on ft=yaml and run should only be mapped on ft=yaml.ansible 2025-10-12 14:26:07 +02:00
Zhizhen He
c2aa088300
docs(README): bump Neovim requirement to 0.11.2 (#6611)
## Description

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

Update neovim requirement in readme.

## 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-10-11 08:48:48 +02:00
folke
eaa3d4d428 chore(build): auto-generate docs 2025-10-11 06:17:37 +00:00
Folke Lemaitre
049db39de0
fix(sidekick): only add copilot to lspconfig when opts.nes.enabled ~= false 2025-10-11 08:16:17 +02:00
Folke Lemaitre
f8b062b130
feat(sidekick): added <leader>ad to close/detach a terminal/session 2025-10-11 00:05:16 +02:00
Folke Lemaitre
e8c5fa7eae
fix(treesiter): check that disable options are tables 2025-10-10 20:57:44 +02:00
folke
c1aef3b62a chore(build): auto-generate docs 2025-10-10 04:46:21 +00:00
Folke Lemaitre
0e8069c78e
feat(treesitter): added support for disable langs to indent/highlight/folds. Closes #6608 2025-10-10 06:45:12 +02:00
Folke Lemaitre
4efd0e2bea
fix(terminal): term toggle keymaps now only work for snacks terminals. Closes #6573 2025-10-09 22:08:13 +02:00
Folke Lemaitre
94c4603b68
fix(blink): disable blink left/right key in the cmdline 2025-10-09 18:08:27 +02:00
folke
a205ef889f chore(build): auto-generate docs 2025-10-09 11:47:28 +00:00
Vlad
92ff787e73
chore(render-markdown): use API to toggle (#6558)
## Description

The `state` module in `render-markdown` is not expected to be accessed
outside of the package and may be refactored in the future.

Prevent any breaking changes in LazyVim by using the public API which
was updated here:

accaa600ba

## Related Issue(s)

None

## Screenshots

N/A

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-09 13:47:01 +02:00
Iordanis Petkakis
aa2c43633a
fix(xtras): load copilot-native before blink (#6588)
## Description
`blink` Extra loads earlier than `copilot-native` Extra and that causes
`ghost_text.enabled = vim.g.ai_cmp` to wrongly evaluate to `true` even
though `copilot-native` explicitly sets `vim.g.ai_cmp = false`.

I also changed the order of `blink` and `typescript` so that `blink`
comes logically right after `copilot-native`, hope that is not a
problem. If it is, feel free to revert the order and just keep the
change about `copilot-native`.

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

## Related Issue(s)
None, I was just trying to create a toggle mapping to disable/enable
both NES and inline_completion and even though they were disabled, I
could see ghost_text from blink.
<!--
  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-10-09 13:46:25 +02:00
Folke Lemaitre
a3e52dd346
feat(sidekick): changed default keymaps for sidekick. Please check updated docs at sidekick.nvim 2025-10-09 00:12:43 +02:00
folke
74f3c7c36d chore(build): auto-generate docs 2025-10-08 19:33:56 +00:00
Folke Lemaitre
8546f6232e
ci: update minit.lua 2025-10-08 21:32:23 +02:00
Folke Lemaitre
c220e04cd6
ci: update test scripts 2025-10-08 21:26:13 +02:00
Md. Iftakhar Awal Chowdhury
b9d38f6920
fix(keymaps): update deprecated diagnostic keymap to latest api change (#6574)
## Description

refectors deprecated `diagnostic_goto` calls to newer
`vim.diagnostic.jump` API.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-10-02 20:52:41 +02:00
github-actions[bot]
dc1ffa5bcb
chore(main): release 15.7.1 (#6575)
🤖 I have created a release *beep* *boop*
---


##
[15.7.1](https://github.com/LazyVim/LazyVim/compare/v15.7.0...v15.7.1)
(2025-10-02)


### Bug Fixes

* **sidekick:** better keymaps
([188b288](188b288614))

---
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-10-02 19:18:17 +02:00
Folke Lemaitre
188b288614
fix(sidekick): better keymaps 2025-10-02 19:14:52 +02:00
folke
7fb57a7081 chore(build): auto-generate docs 2025-10-02 05:24:03 +00:00
github-actions[bot]
fab399c90d
chore(main): release 15.7.0 (#6556)
🤖 I have created a release *beep* *boop*
---


##
[15.7.0](https://github.com/LazyVim/LazyVim/compare/v15.6.0...v15.7.0)
(2025-10-01)


### Features

* **sidekick:** updated keymaps for sidekick
([2942bd4](2942bd4a0d))


### Bug Fixes

* **copilot-native:** schedule inline_completion.enable
([23b1da1](23b1da170f))
* **sidekick:** better keymaps
([aabc03f](aabc03f88d))
* **stylua:** stylua is now also an LSP. Disable it since we use the CLI
tool.
([2f76d57](2f76d572a2))

---
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-10-02 07:22:59 +02:00
Folke Lemaitre
2942bd4a0d
feat(sidekick): updated keymaps for sidekick 2025-10-01 22:18:05 +02:00
Folke Lemaitre
aabc03f88d
fix(sidekick): better keymaps 2025-10-01 19:05:48 +02:00
folke
2df7988b1e chore(build): auto-generate docs 2025-10-01 17:05:13 +00:00
Folke Lemaitre
23b1da170f
fix(copilot-native): schedule inline_completion.enable 2025-10-01 19:04:14 +02:00
Folke Lemaitre
2f76d572a2
fix(stylua): stylua is now also an LSP. Disable it since we use the CLI tool. 2025-09-30 18:10:39 +02:00
github-actions[bot]
4ebcd611b2
chore(main): release 15.6.0 (#6536)
🤖 I have created a release *beep* *boop*
---


##
[15.6.0](https://github.com/LazyVim/LazyVim/compare/v15.5.0...v15.6.0)
(2025-09-30)


### Features

* **sidekick:** added keymaps to work with AI cli tools
([5d18a46](5d18a46b6a))
* **sidekick:** fancier lualine component
([b889978](b889978151))


### Bug Fixes

* **config:** clipboard:get()
([22851dc](22851dce97))
* **copilot-native:** change Copilot-native's `<M-[>` description to
"Prev Suggestion"
([#6553](https://github.com/LazyVim/LazyVim/issues/6553))
([089d0a5](089d0a5ac1))
* **sidekick:** changed keymap to open new tool
([3d3739b](3d3739b4b8))

---
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-09-30 16:43:00 +02:00
Folke Lemaitre
22851dce97
fix(config): clipboard:get() 2025-09-30 15:42:15 +02:00
folke
aa8115848d chore(build): auto-generate docs 2025-09-30 04:49:39 +00:00
Jonathan Pollak
089d0a5ac1
fix(copilot-native): change Copilot-native's <M-[> description to "Prev Suggestion" (#6553)
## Description

<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->
The description for both `<M-]>` and `<M-[>` in the `copilot-native`
extra are described as `Next Copilot Suggestion`. The PR changes the
description of `<M-[>` to be `Prev Copilot Suggestion`

## 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-09-30 06:48:46 +02:00
Folke Lemaitre
3d3739b4b8
fix(sidekick): changed keymap to open new tool 2025-09-30 00:03:41 +02:00
folke
44e3797416 chore(build): auto-generate docs 2025-09-29 21:13:28 +00:00
Folke Lemaitre
5d18a46b6a
feat(sidekick): added keymaps to work with AI cli tools 2025-09-29 23:12:20 +02:00
Folke Lemaitre
b889978151
feat(sidekick): fancier lualine component 2025-09-27 19:53:16 +02:00
github-actions[bot]
060e6dfaf7
chore(main): release 15.5.0 (#6533)
🤖 I have created a release *beep* *boop*
---


##
[15.5.0](https://github.com/LazyVim/LazyVim/compare/v15.4.0...v15.5.0)
(2025-09-27)


### Features

* **ai.copilot-native:** let sidekick.nvim handle some things if
available
([b25ea9c](b25ea9c153))
* **ai:** added completion hooks for next edit suggestions
([30a325d](30a325d671))
* **extras:** added extra for `sidekick.nvim` (Copilot LSP integration)
([dbfe209](dbfe20996c))


### Bug Fixes

* **ai.copilot:** disable copilot lsp if installed. copilot.lua needs
its own version of the LSP
([e9bc607](e9bc6074d1))

---
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-09-27 18:54:19 +02:00
folke
eee364552e chore(build): auto-generate docs 2025-09-27 16:42:47 +00:00
Folke Lemaitre
dbfe20996c
feat(extras): added extra for sidekick.nvim (Copilot LSP integration) 2025-09-27 18:41:34 +02:00
Folke Lemaitre
30a325d671
feat(ai): added completion hooks for next edit suggestions 2025-09-26 15:57:00 +02:00
Folke Lemaitre
b25ea9c153
feat(ai.copilot-native): let sidekick.nvim handle some things if available 2025-09-26 15:56:17 +02:00
Folke Lemaitre
e9bc6074d1
fix(ai.copilot): disable copilot lsp if installed. copilot.lua needs its own version of the LSP 2025-09-26 15:55:32 +02:00
github-actions[bot]
92b7fcf7b1
chore(main): release 15.4.0 (#6515)
🤖 I have created a release *beep* *boop*
---


##
[15.4.0](https://github.com/LazyVim/LazyVim/compare/v15.3.0...v15.4.0)
(2025-09-26)


### Features

* **copilot-native:** added experimental support for next edit
suggestions. check the docs to enable
([c83df9e](c83df9e68d))
* **copilot-native:** added keymaps to cycle suggestions
([6bd630c](6bd630cec6))
* **copilot-native:** better lualine status
([9913e16](9913e1665d))
* **copilot-native:** removed experimental **nes** support with
`copilot_lsp` for now, since it's not the best experience right now
([ed637bb](ed637bb0f7))
* **copilot:** added `copilot-native` extra to setup native inline
completions in Neovim
([3b02963](3b02963585))


### Bug Fixes

* **catppuccin:** follow-up on api change
([#6505](https://github.com/LazyVim/LazyVim/issues/6505))
([af6e250](af6e2505b5))
* **treesitter:** create buffer-local textobjects keymaps only when
available. Closes
[#6508](https://github.com/LazyVim/LazyVim/issues/6508)
([5985ca0](5985ca0cf1))

---
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-09-26 12:16:12 +02:00
Folke Lemaitre
ed637bb0f7
feat(copilot-native): removed experimental **nes** support with copilot_lsp for now, since it's not the best experience right now 2025-09-26 12:14:33 +02:00
folke
c467282a83 chore(build): auto-generate docs 2025-09-26 04:37:07 +00:00
robin
af6e2505b5
fix(catppuccin): follow-up on api change (#6505)
## Description

https://github.com/catppuccin/nvim/pull/931 will change the api for
accessing the bufferline integration. im making this follow up pr so it
wont have to be done through a user :)
(sorry about https://github.com/LazyVim/LazyVim/pull/6354)

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2025-09-26 06:36:14 +02:00
Folke Lemaitre
c83df9e68d
feat(copilot-native): added experimental support for next edit suggestions. check the docs to enable 2025-09-25 15:30:28 +02:00
Folke Lemaitre
6bd630cec6
feat(copilot-native): added keymaps to cycle suggestions 2025-09-25 12:30:50 +02:00
Folke Lemaitre
9913e1665d
feat(copilot-native): better lualine status 2025-09-25 11:11:40 +02:00
Folke Lemaitre
3b02963585
feat(copilot): added copilot-native extra to setup native inline completions in Neovim 2025-09-25 10:31:17 +02:00
folke
1d404815f0 chore(build): auto-generate docs 2025-09-25 05:37:13 +00:00
Folke Lemaitre
5985ca0cf1
fix(treesitter): create buffer-local textobjects keymaps only when available. Closes #6508 2025-09-25 07:35:59 +02:00
Folke Lemaitre
8a76098461
style(lsp): typo 2025-09-23 13:06:34 +02:00
111 changed files with 2872 additions and 1049 deletions

View file

@ -1,3 +1,3 @@
{ {
".": "15.3.0" ".": "16.0.0"
} }

3
.markdownlint-cli2.yaml Normal file
View file

@ -0,0 +1,3 @@
config:
MD013: false
MD033: false

View file

@ -1,5 +1,338 @@
# Changelog # Changelog
## [16.0.0](https://github.com/LazyVim/LazyVim/compare/v15.15.0...v16.0.0) (2026-05-27)
### ⚠ BREAKING CHANGES
* **refactoring:** conform to upstream breaking changes on 2.0 branch ([#7124](https://github.com/LazyVim/LazyVim/issues/7124))
### Features
* **keymaps:** added leader+bi to delete invisible buffers ([58089db](https://github.com/LazyVim/LazyVim/commit/58089db8b198fc81f91789b6f12d0617cae21437))
### Bug Fixes
* **autocmds:** correct version check for nvim-0.13 ([#7184](https://github.com/LazyVim/LazyVim/issues/7184)) ([6eb16e7](https://github.com/LazyVim/LazyVim/commit/6eb16e730d1a686224dca41b05ba125cfd62c1bb))
* **autocmds:** replace `vim.hl.on_yank` with `vim.hl.hl_op` for `nvim-0.13` and above ([#7171](https://github.com/LazyVim/LazyVim/issues/7171)) ([b30c031](https://github.com/LazyVim/LazyVim/commit/b30c0312ea1c5bed6b28e72d930059622b0525f8))
* **go:** use semanticTokens if setup in gopls config init_options ([#7172](https://github.com/LazyVim/LazyVim/issues/7172)) ([b830a52](https://github.com/LazyVim/LazyVim/commit/b830a523b5973c300639d4d9c4fea7d92fa04dc3))
* **hipatterns:** don't color #add (use it too often as a private function in TS) ([dc6240f](https://github.com/LazyVim/LazyVim/commit/dc6240f4d56ae0d40cd0e673ca740dda50c4bf3b))
* **oxc:** prefer top-level oxlint root_dir in monorepos ([d840410](https://github.com/LazyVim/LazyVim/commit/d840410047d20a8f93fb8d473599209ebe95584e))
* **refactoring:** conform to upstream breaking changes on 2.0 branch ([#7124](https://github.com/LazyVim/LazyVim/issues/7124)) ([d926923](https://github.com/LazyVim/LazyVim/commit/d92692309c41581e1f839033fbccd745be732c7e))
## [15.15.0](https://github.com/LazyVim/LazyVim/compare/v15.14.0...v15.15.0) (2026-04-02)
### Features
* **biome:** enable biome lsp for linting ([b2830cf](https://github.com/LazyVim/LazyVim/commit/b2830cfcc5c9c09ebbf9545beb3947a55ce89dbd))
* **biome:** move biome extra from formatting.biome -&gt; lang.typescript.biome ([242f098](https://github.com/LazyVim/LazyVim/commit/242f0983de9fdb70f0d82057a8039e32bc171764))
* **lazydev:** make lspconfig types available on word `lspconfig.settings` ([36f5947](https://github.com/LazyVim/LazyVim/commit/36f594716bcb0bec84a05a6c55f702134d2e89c3))
* **lsp:** auto add organizeImport keymaps for LSPs that support it ([e54689e](https://github.com/LazyVim/LazyVim/commit/e54689ebdc5458cb30f4a48b954c710bb381cd01))
* **oxc:** added oxc extra for oxfmt and oxlint ([4e9eac5](https://github.com/LazyVim/LazyVim/commit/4e9eac57aba1ea575ef008a503cba8327257e4a4))
* **sidekick:** ctrl+. focuses sidekick, but when already inside sidekick, hides it ([50159fe](https://github.com/LazyVim/LazyVim/commit/50159fe344d93329a569cee136c0323e48b0d3da))
* **typescript:** set `vim.g.lazyvim_ts_lsp = "tsgo"` to use the much faster experimental lsp server ([e6f26f0](https://github.com/LazyVim/LazyVim/commit/e6f26f0f23e9cb4c6bcc351b06474f4863319aff))
* **typescript:** split typescript extra in main, vtsls and tsgo ([9029d92](https://github.com/LazyVim/LazyVim/commit/9029d928d2f7b7f76f132b618d2931499c9b6eb9))
### Bug Fixes
* **biome:** added recommendation when root has biome config file ([ad25b31](https://github.com/LazyVim/LazyVim/commit/ad25b31e512892ca51a1fa3ffa96d1375c391039))
* **biome:** biome mason install is no longer needed ([5450006](https://github.com/LazyVim/LazyVim/commit/5450006ccdd7df341f7f60dded58ea4a87aa9c15))
* **biome:** use biome-check in conform that also fixes linting issues and sorts imports ([954d874](https://github.com/LazyVim/LazyVim/commit/954d8746e5cf1266d93cf4210c00c1506f20423b))
* **lsp:** sort server names before setting keymaps ([6d0da34](https://github.com/LazyVim/LazyVim/commit/6d0da34de9c4a82170e3359d4e7853bf89a557b3))
* **oxc:** added `fixKind = "all"` ([85afbbc](https://github.com/LazyVim/LazyVim/commit/85afbbc94bb45891799a4851b2edf753b51f18b0))
* **r:** recommend for *.qmd instead of *qmd files ([3b3d649](https://github.com/LazyVim/LazyVim/commit/3b3d6493332798674fb7b82aea600bab18eaf311))
* **terminal:** use Snacks.terminal.focus() for &lt;C-/&gt; mapping ([96f4f18](https://github.com/LazyVim/LazyVim/commit/96f4f18d7d81c786ac0df5723bc7aca058bf2165)), closes [#7048](https://github.com/LazyVim/LazyVim/issues/7048)
* **treesitter:** `nvim-treesitter` on longer support nvim-0.11, so pin when needed. Fixes [#7092](https://github.com/LazyVim/LazyVim/issues/7092) ([ef272ff](https://github.com/LazyVim/LazyVim/commit/ef272ff7cc9b53d48baf6544618b5923d65c0282))
* **tsgo:** disable inlayHints.functionLikeReturnTypes by default. Too noisy ([8bcb620](https://github.com/LazyVim/LazyVim/commit/8bcb6208021bd4e4257de64c9598c6b78688be28))
* **tsgo:** remove some noisy inlay hints ([d07070b](https://github.com/LazyVim/LazyVim/commit/d07070bf2ff83ae513097d02d71460920af85a91))
* **typescript:** remove keymaps for non-existing code actions ([53f4eab](https://github.com/LazyVim/LazyVim/commit/53f4eabd7723faba2d7c14afe53226d8c18bf16c))
* **util.plugin:** single imports for extras ([1b4be53](https://github.com/LazyVim/LazyVim/commit/1b4be534f1d8959480ba1f622a457654bd737ce5))
### Performance Improvements
* **extras:** never load nested extras ([8764dfb](https://github.com/LazyVim/LazyVim/commit/8764dfbc8fcb8923397153eb3a2cfcac7ea988f1))
### Reverts
* **lsp:** revert changes for [#6456](https://github.com/LazyVim/LazyVim/issues/6456). Closes [#6779](https://github.com/LazyVim/LazyVim/issues/6779) ([d0fe8c8](https://github.com/LazyVim/LazyVim/commit/d0fe8c896f4dca003e8d56e2091ee5ec7da7af75))
## [15.14.0](https://github.com/LazyVim/LazyVim/compare/v15.13.0...v15.14.0) (2026-03-01)
### Features
* **bufferline:** add &lt;leader&gt;bj keymap for BufferLinePick ([#6968](https://github.com/LazyVim/LazyVim/issues/6968)) ([a50072f](https://github.com/LazyVim/LazyVim/commit/a50072fa16cfc1f00b1ae282150bc667f1d1e096))
* **dap:** close dap-float window with `q`. ([#6884](https://github.com/LazyVim/LazyVim/issues/6884)) ([87c0027](https://github.com/LazyVim/LazyVim/commit/87c002789220d922bb94637c690b444bd1ba5611))
* **treesitter:** support query table in treesitter-textobjects mappings ([#6736](https://github.com/LazyVim/LazyVim/issues/6736)) ([42c9f71](https://github.com/LazyVim/LazyVim/commit/42c9f7152b9bd1a4f739b115390370c208dc2a55))
### Bug Fixes
* **editor.overseer:** migrate to v2 ([#6907](https://github.com/LazyVim/LazyVim/issues/6907)) ([27824d7](https://github.com/LazyVim/LazyVim/commit/27824d79a952c54cd9d93c85a699543e4a031dd4))
* **fzf:** correct git_diff description from 'hunks' to 'files' ([#6983](https://github.com/LazyVim/LazyVim/issues/6983)) ([e77d4ab](https://github.com/LazyVim/LazyVim/commit/e77d4ab0d6574efb7142ec40f4f5dcff750a3ee9))
* **lang.clang:** fix `clangd_extensions.nvim` ([#6804](https://github.com/LazyVim/LazyVim/issues/6804)) ([730b691](https://github.com/LazyVim/LazyVim/commit/730b69114d56834f4499fd3e5aecf18920234c39))
* **leap:** update urls to new leap.nvim repo. Fixes [#6958](https://github.com/LazyVim/LazyVim/issues/6958) ([244af66](https://github.com/LazyVim/LazyVim/commit/244af66f8b4e376d60c6604f9b3fd758165f5799))
* **news:** resolve news.txt from $VIMRUNTIME first ([60fea62](https://github.com/LazyVim/LazyVim/commit/60fea6236e342e1f4aa34d078461746d5f587c74)), closes [#7019](https://github.com/LazyVim/LazyVim/issues/7019)
* **python:** set venv-selector.nvim override_notify = false ([#6936](https://github.com/LazyVim/LazyVim/issues/6936)) ([b2917bd](https://github.com/LazyVim/LazyVim/commit/b2917bd3bfe61c40e686f5a2c20f540430945b73))
* **terminal:** add -NoProfile to powershell shellcmdflag ([#6757](https://github.com/LazyVim/LazyVim/issues/6757)) ([a507822](https://github.com/LazyVim/LazyVim/commit/a507822c0f67df661d1411f9274a65ca9cc832f5))
* **terminal:** partially revert previous mappings ([#6770](https://github.com/LazyVim/LazyVim/issues/6770)) ([c64a617](https://github.com/LazyVim/LazyVim/commit/c64a61734fc9d45470a72603395c02137802bc6f))
* **treesitter:** fix `]c` textobject mappings when in diff mode ([#6911](https://github.com/LazyVim/LazyVim/issues/6911)) ([16713e6](https://github.com/LazyVim/LazyVim/commit/16713e6e1200eb90ad4b4a394bb7254fb5612484))
* **treesitter:** remove deleted jsonc parser ([#6848](https://github.com/LazyVim/LazyVim/issues/6848)) ([92607e7](https://github.com/LazyVim/LazyVim/commit/92607e79e09a2761d930877a09edc00438b97fc3))
* **util.lsp:** `LazyVim.lsp.execute` only request single client ([#6904](https://github.com/LazyVim/LazyVim/issues/6904)) ([a4e19e9](https://github.com/LazyVim/LazyVim/commit/a4e19e9c9c939c1a3fc2f30ffefe37311d3ecadf))
* **util.lsp:** pass `formatters_by_ft` to `opts` ([#6894](https://github.com/LazyVim/LazyVim/issues/6894)) ([03f1293](https://github.com/LazyVim/LazyVim/commit/03f1293e33541073288f23abdaf581a8e0dec4c4))
* **vtsls:** remove redundant deno logic, upstreamed in `nvim-lspconfig` ([#7011](https://github.com/LazyVim/LazyVim/issues/7011)) ([8652c95](https://github.com/LazyVim/LazyVim/commit/8652c9570377678a78ecb19dbd33695e0e4ec4fc))
## [15.13.0](https://github.com/LazyVim/LazyVim/compare/v15.12.2...v15.13.0) (2025-11-01)
### Features
* **snacks:** `snacks.gh` integration. Enabled by default, unless the `util.octo` extra is enabled. ([5e981f9](https://github.com/LazyVim/LazyVim/commit/5e981f9a8cd75eb6f49756e188411037b82b8045))
### Bug Fixes
* **treesitter:** remove node requirement ([6b52a30](https://github.com/LazyVim/LazyVim/commit/6b52a3059e52eed062b6ff3f56e70cffcbf879fe))
## [15.12.2](https://github.com/LazyVim/LazyVim/compare/v15.12.1...v15.12.2) (2025-10-26)
### Bug Fixes
* **lsp.keymaps:** make cond -&gt; enabled work again. Closes [#6697](https://github.com/LazyVim/LazyVim/issues/6697) ([1a40162](https://github.com/LazyVim/LazyVim/commit/1a401627146c66beaeb213f66dd02662f1006e82))
## [15.12.1](https://github.com/LazyVim/LazyVim/compare/v15.12.0...v15.12.1) (2025-10-26)
### Bug Fixes
* **fzf-lua:** LSP keymaps. Closes [#6698](https://github.com/LazyVim/LazyVim/issues/6698) ([b5ea1e9](https://github.com/LazyVim/LazyVim/commit/b5ea1e9d25202e38a47f0b03ac35cc587c80e6d7))
* **navic:** navic attach. Closes [#6702](https://github.com/LazyVim/LazyVim/issues/6702) ([d2d0c64](https://github.com/LazyVim/LazyVim/commit/d2d0c641ed443f8d2ea9e131ec90df59ea149d0a))
## [15.12.0](https://github.com/LazyVim/LazyVim/compare/v15.11.0...v15.12.0) (2025-10-25)
### Features
* **keymaps:** added `<localleader>r` to run the selection/file with lua ([acc3538](https://github.com/LazyVim/LazyVim/commit/acc35382294d91b279b319510b906249a03b2764))
* **lsp:** lsp keymaps can now be configured with `lsp-config.opts.servers['*'].keys` like for lsp servers ([cd8c497](https://github.com/LazyVim/LazyVim/commit/cd8c4977a0a8e80750ed6a10992f988f811c6417))
* **lsp:** refactor lsp code to use `Snacks.util.lsp.on` ([3964433](https://github.com/LazyVim/LazyVim/commit/39644330624139dddb857ed833987c1cfd8432cf))
* **sidekick:** added NES toggle `<leader>uN`. Closes [#6692](https://github.com/LazyVim/LazyVim/issues/6692) ([84ca4df](https://github.com/LazyVim/LazyVim/commit/84ca4dffdbf175a5e7bc39904157700854d8b2ad))
### Bug Fixes
* **chezmoi:** use vim.env.HOME instead of os.getenv("HOME") for Windows compatibility ([231e476](https://github.com/LazyVim/LazyVim/commit/231e476ec9292b56258f86e28773843cddaf34b8))
* **clipboard:** connecting via vscpde's remote-ssh extension causes severe lag during yank and copy operations. ([#6664](https://github.com/LazyVim/LazyVim/issues/6664)) ([5098a69](https://github.com/LazyVim/LazyVim/commit/5098a6987009199d5a5c4bfb8086d0fe4a94e0bb))
* **lang.ember:** remove '.git' lang.ember ([#6685](https://github.com/LazyVim/LazyVim/issues/6685)) ([4796fb4](https://github.com/LazyVim/LazyVim/commit/4796fb4ac54744b69a45a6044655543b1c4231f0))
* **root:** don't use fs_realpath on windows ([46e419d](https://github.com/LazyVim/LazyVim/commit/46e419d27efb5b7282a5ab17a49f4745ce23b55a))
## [15.11.0](https://github.com/LazyVim/LazyVim/compare/v15.10.1...v15.11.0) (2025-10-23)
### Features
* **snacks_picker:** added gai/gao keymaps for calls incoming/outgoing ([b6e48a5](https://github.com/LazyVim/LazyVim/commit/b6e48a57fb4ad7a79f24646016926eef68ce3002))
* **snacks.picker:** added `<leader>gD` to diff against merge base of branch/PR ([f0a91d9](https://github.com/LazyVim/LazyVim/commit/f0a91d9fa5f0cf27d6ba5fac759fa1d4e0df97a3))
### Bug Fixes
* **avante:** unset default keymaps ([#6657](https://github.com/LazyVim/LazyVim/issues/6657)) ([e8a1d8b](https://github.com/LazyVim/LazyVim/commit/e8a1d8b6286f82d75e5830de5ea93bd7622cec8c))
* **extras:** remove custom formatter opts for dart/solidity. Closes [#6665](https://github.com/LazyVim/LazyVim/issues/6665) ([b38de4e](https://github.com/LazyVim/LazyVim/commit/b38de4e2fe4ad887cae1604fd9f1fbd230e0118f))
## [15.10.1](https://github.com/LazyVim/LazyVim/compare/v15.10.0...v15.10.1) (2025-10-20)
### Bug Fixes
* **avante:** correct key mapping declarations ([#6656](https://github.com/LazyVim/LazyVim/issues/6656)) ([41d1b8d](https://github.com/LazyVim/LazyVim/commit/41d1b8dc72d4270c49db3365edba670d9fa01fbd))
* **blink:** added work-around back for unsupported native snippets ([899533a](https://github.com/LazyVim/LazyVim/commit/899533a101e4bacf35dadf091977b4d12875dbf6))
* **treesitter:** added buf to treesitter start just to be sure ([3ffb471](https://github.com/LazyVim/LazyVim/commit/3ffb471c187a66562b19bdf68382be9f82ac670d))
## [15.10.0](https://github.com/LazyVim/LazyVim/compare/v15.9.0...v15.10.0) (2025-10-20)
### Features
* **ai:** add avante.nvim for a better AI experience ([#4440](https://github.com/LazyVim/LazyVim/issues/4440)) ([2682ce0](https://github.com/LazyVim/LazyVim/commit/2682ce0ab95c0a88867855ada41948107db8232e))
* **extra:** allow users to add custom bundles through opts.init_options.bundles to jdtls ([#6265](https://github.com/LazyVim/LazyVim/issues/6265)) ([faeb24b](https://github.com/LazyVim/LazyVim/commit/faeb24ba956f103c5551bde11506991d8b594bc5))
* **extras:** add Dart language ([#4749](https://github.com/LazyVim/LazyVim/issues/4749)) ([90f84e7](https://github.com/LazyVim/LazyVim/commit/90f84e7e755f72bb99dc8a9dedbfef05e58eb09d))
* **extras:** added ember lang support ([#6203](https://github.com/LazyVim/LazyVim/issues/6203)) ([ac4cce0](https://github.com/LazyVim/LazyVim/commit/ac4cce0f2f436b3e2dd93ad9179178436ab8c600))
* **extras:** added twig language ([#5464](https://github.com/LazyVim/LazyVim/issues/5464)) ([a6eb51e](https://github.com/LazyVim/LazyVim/commit/a6eb51e5b5897749bed8721ce98cd2491b2ea8e2))
* **extras:** ai: add `claudecode.nvim` ([#6229](https://github.com/LazyVim/LazyVim/issues/6229)) ([e7a3e80](https://github.com/LazyVim/LazyVim/commit/e7a3e80ee1327ac012c7bb7257bb2d49f9f2fd89))
* **extras:** automatically update lazyvim.json for renamed or deprecated extras ([37ecd06](https://github.com/LazyVim/LazyVim/commit/37ecd06fad65d5c188ad2d2e55d47a8fd1594d16))
* **extras:** renamed extra omnisharp -&gt; dotnet + added fautocomplete to lspconfig ([1b2e6e8](https://github.com/LazyVim/LazyVim/commit/1b2e6e8986b3cfee19635920129fc08df4f32b38))
* **extras:** utils: add `gh.nvim` ([#6250](https://github.com/LazyVim/LazyVim/issues/6250)) ([8db9c75](https://github.com/LazyVim/LazyVim/commit/8db9c75e8d3a8609926dcb868d2e462e0f0b1d3d))
* **go:** add linting with golangci-lint ([#6311](https://github.com/LazyVim/LazyVim/issues/6311)) ([248876a](https://github.com/LazyVim/LazyVim/commit/248876adb6b1f54031be350e45bbf0c7835d486f))
* **haskell:** update `haskell-tools` version and add formatters + linters ([#6230](https://github.com/LazyVim/LazyVim/issues/6230)) ([82382f4](https://github.com/LazyVim/LazyVim/commit/82382f455ad37bc4fa928fe4a6fb9379a924fa3a))
* **lang/fsharp:** add F# support to omnisharp extra ([#6538](https://github.com/LazyVim/LazyVim/issues/6538)) ([80a980a](https://github.com/LazyVim/LazyVim/commit/80a980ab00a871777c37ec3f0db9c394509b2465))
* **lang:** add neotest config for PHP tests ([#5958](https://github.com/LazyVim/LazyVim/issues/5958)) ([9b077c7](https://github.com/LazyVim/LazyVim/commit/9b077c7a8ec96050f3a3b73219c8b904d3d83ab0))
* **lang:** add solidity language support ([#4742](https://github.com/LazyVim/LazyVim/issues/4742)) ([2cd46d4](https://github.com/LazyVim/LazyVim/commit/2cd46d42ba357a42b11c5e4f5e16641bde0516d6))
* **lang:** add Typst language support ([#4042](https://github.com/LazyVim/LazyVim/issues/4042)) ([645846b](https://github.com/LazyVim/LazyVim/commit/645846be5c7d798c7e87e61d00e8cae4fd3741c7))
* **lang:** julia support ([#6231](https://github.com/LazyVim/LazyVim/issues/6231)) ([5d186c0](https://github.com/LazyVim/LazyVim/commit/5d186c009a85efbdad2b92115d4268c7c4a7aa18))
* **lang:** nix add `statix` linter ([#6244](https://github.com/LazyVim/LazyVim/issues/6244)) ([2a866f6](https://github.com/LazyVim/LazyVim/commit/2a866f6c8c974c88cb9c723560cbec4308d304a2))
* **sidekick:** added sidekick cli status to lualine ([16917db](https://github.com/LazyVim/LazyVim/commit/16917db94a056fe01b3bac604bc89da4077bd9cd))
### Bug Fixes
* **extras.lang:** fix Scala extra by using nvimMetals only ([#5726](https://github.com/LazyVim/LazyVim/issues/5726)) ([f118dca](https://github.com/LazyVim/LazyVim/commit/f118dca334d40cf8e78e0f0d5aa3108b972e8d84))
* **fzf-lua:** added some missing keymaps similar to snacks picker. Closes [#6036](https://github.com/LazyVim/LazyVim/issues/6036). Closes [#5830](https://github.com/LazyVim/LazyVim/issues/5830) ([69a5744](https://github.com/LazyVim/LazyVim/commit/69a57448032253ca086d999c0d53d6e33ad4e505))
* **helm:** broken helm highlighting ([#5335](https://github.com/LazyVim/LazyVim/issues/5335)) ([4d0d87f](https://github.com/LazyVim/LazyVim/commit/4d0d87f6268969987e5c58f59e086c886e77e1ae))
* **keymap:** remove select mode remaps of printable characters ([#6296](https://github.com/LazyVim/LazyVim/issues/6296)) ([83468be](https://github.com/LazyVim/LazyVim/commit/83468be35062d06896c233d90d2f1c1cd24d84f3))
* **tailwind:** additional settings ([#5266](https://github.com/LazyVim/LazyVim/issues/5266)) ([d2f9885](https://github.com/LazyVim/LazyVim/commit/d2f9885d6b8244818066cc16a5c72cb656748f6c))
* **telescope:** sync keymaps with snacks picker + added some that were missing ([1a08e9f](https://github.com/LazyVim/LazyVim/commit/1a08e9f50f8c11a329c3017c4bfdd4b96b7ec541))
* **twig:** correct mason url ([9d345de](https://github.com/LazyVim/LazyVim/commit/9d345dec446f577f75d36a147164ae258ffc2d8c))
* **typescript:** better default pwa-node DAP config. Closes [#6386](https://github.com/LazyVim/LazyVim/issues/6386) ([e4d3432](https://github.com/LazyVim/LazyVim/commit/e4d34328f244fc0c7f91587258e767bfb55d0648))
* **typescript:** support chrome, node and msedge dap adapters ([#6649](https://github.com/LazyVim/LazyVim/issues/6649)) ([0b65d33](https://github.com/LazyVim/LazyVim/commit/0b65d33d8545d179207c8827025f40764de61d06))
* **util.project:** different mapping on dashboard than `snacks.projects` ([#5737](https://github.com/LazyVim/LazyVim/issues/5737)) ([e389447](https://github.com/LazyVim/LazyVim/commit/e38944799e7fc45baea0483f5c955472f3ffde27))
### Reverts
* "feat(extra): allow users to add custom bundles through opts.init_options.bundles to jdtls ([#6265](https://github.com/LazyVim/LazyVim/issues/6265))" ([#6650](https://github.com/LazyVim/LazyVim/issues/6650)) ([a582f00](https://github.com/LazyVim/LazyVim/commit/a582f004473a3bade99c19c62fea649fb0b1c20f))
## [15.9.0](https://github.com/LazyVim/LazyVim/compare/v15.8.1...v15.9.0) (2025-10-19)
### Features
* **docker:** associate 'Containerfile' with 'dockerfile' filetype ([#5974](https://github.com/LazyVim/LazyVim/issues/5974)) ([97af4a2](https://github.com/LazyVim/LazyVim/commit/97af4a23bccac85eb02e489f573db68863d6ed33))
* **extras.rest:** add keymap for changing environment ([#5678](https://github.com/LazyVim/LazyVim/issues/5678)) ([1da659d](https://github.com/LazyVim/LazyVim/commit/1da659db4a3fbcd6d171f3b38d0092ced0887e61))
* **java:** enable `blink.cmp` capabilities to show signature documentation ([#5218](https://github.com/LazyVim/LazyVim/issues/5218)) ([9618e32](https://github.com/LazyVim/LazyVim/commit/9618e327edfb79d9cbb037a2039c4315a95df63f))
* **lang/omnisharp:** switch neotest adapter to vstest ([#6540](https://github.com/LazyVim/LazyVim/issues/6540)) ([4086d44](https://github.com/LazyVim/LazyVim/commit/4086d44a0b5c576630c603c7b71c6be5198d9eaf))
* **neotest:** extra keymap to attach to a test ([#6198](https://github.com/LazyVim/LazyVim/issues/6198)) ([66e927f](https://github.com/LazyVim/LazyVim/commit/66e927fd9d0b0ff2886b9fe1465d9396461a2665))
### Bug Fixes
* **blink:** remove snippet expand override (no longer needed). Closes [#6044](https://github.com/LazyVim/LazyVim/issues/6044) ([336e2c3](https://github.com/LazyVim/LazyVim/commit/336e2c3ea67636c4eea3cf8f7538feb86b5a0610))
* **chezmoi:** add `hidden=false` to fzf picker ([#6095](https://github.com/LazyVim/LazyVim/issues/6095)) ([1aa1b59](https://github.com/LazyVim/LazyVim/commit/1aa1b59a7ec7cab61fa7b096db53df15ec5008e7))
* **copilot-chat:** use up to date config for chat headers ([#6543](https://github.com/LazyVim/LazyVim/issues/6543)) ([2c5eef7](https://github.com/LazyVim/LazyVim/commit/2c5eef7df7520fbc6fe0d90150cd26ac9e4f325b))
* **extras/rust:** fix config key for files.exclude ([#5664](https://github.com/LazyVim/LazyVim/issues/5664)) ([762a34d](https://github.com/LazyVim/LazyVim/commit/762a34d5ad95447b241287e8d540b657a699d141))
* **extras:** adjust switch source/header shortcut ([#6567](https://github.com/LazyVim/LazyVim/issues/6567)) ([b36b858](https://github.com/LazyVim/LazyVim/commit/b36b8589b62f55b181367afe954606c73233c0a1))
* **extras:** remove procMacro ignored ([#6117](https://github.com/LazyVim/LazyVim/issues/6117)) ([4a3702e](https://github.com/LazyVim/LazyVim/commit/4a3702e050881fea262ccae980ae1ff9e849d275))
* **lang.omnisharp:** update CSharpier command and arguments for Mason compatibility ([#6156](https://github.com/LazyVim/LazyVim/issues/6156)) ([dfebe70](https://github.com/LazyVim/LazyVim/commit/dfebe70b8d09514dd3ee85e12463f266f93c5dd7))
* **lang.rust:** rust-analyzer hanging on root scanned ([#6178](https://github.com/LazyVim/LazyVim/issues/6178)) ([7bf8c22](https://github.com/LazyVim/LazyVim/commit/7bf8c22c56283fa6d5d35246dcd0f49d37a5c709))
* **latex:** ensure tex extra installs latex tree-sitter parser ([#6357](https://github.com/LazyVim/LazyVim/issues/6357)) ([ae74622](https://github.com/LazyVim/LazyVim/commit/ae74622e6666ea4c3e6c58c4ef2d3f313d8e8f20))
* **mini.animate:** schedule the toggle mapping to correctly take effect ([#6483](https://github.com/LazyVim/LazyVim/issues/6483)) ([bd23357](https://github.com/LazyVim/LazyVim/commit/bd233579a66018f526b6b0970e33afde4cde399e))
* **sql:** fix autocomplete when `omni` is used as a `blink.cmp` source ([#5652](https://github.com/LazyVim/LazyVim/issues/5652)) ([f6f72b9](https://github.com/LazyVim/LazyVim/commit/f6f72b90d41d9347b93a07d0b680195541f64c55))
* **treesitter:** attach textobject keymaps to existing buffers on load. Closes [#6642](https://github.com/LazyVim/LazyVim/issues/6642). Closes [#6639](https://github.com/LazyVim/LazyVim/issues/6639) ([92a7728](https://github.com/LazyVim/LazyVim/commit/92a77287321236f52ff38648a38cf314ab223137))
* **typescript:** make_position_params with offset encoding. ([#6277](https://github.com/LazyVim/LazyVim/issues/6277)) ([22152e9](https://github.com/LazyVim/LazyVim/commit/22152e958f3f7c2b732cb6429ccc90541e0ad17f))
* **ui:** ignore sidekick_terminal in mini-indentscope ([#6619](https://github.com/LazyVim/LazyVim/issues/6619)) ([f0b32b5](https://github.com/LazyVim/LazyVim/commit/f0b32b5955889d4d2d3636a52d2ddf5d113646df))
* **util:** add some kulala keymaps back to global ([#5960](https://github.com/LazyVim/LazyVim/issues/5960)) ([a16739e](https://github.com/LazyVim/LazyVim/commit/a16739e3328c2687d96f868839c575765c49baad))
* **vscode:** don't sync undo/redo with vscode ([#5957](https://github.com/LazyVim/LazyVim/issues/5957)) ([706ec44](https://github.com/LazyVim/LazyVim/commit/706ec4443a33ec474f2329b5b806e9cdb85cce43))
## [15.8.1](https://github.com/LazyVim/LazyVim/compare/v15.8.0...v15.8.1) (2025-10-18)
### Bug Fixes
* **treesitter:** reload lazyvim.tresitter.util to prevent issues with stale modules when upgrading ([62ce8a2](https://github.com/LazyVim/LazyVim/commit/62ce8a23d89fa766956447a3df01d9f3448e9a66))
## [15.8.0](https://github.com/LazyVim/LazyVim/compare/v15.7.1...v15.8.0) (2025-10-17)
### Features
* **gleam:** add conform ([#5640](https://github.com/LazyVim/LazyVim/issues/5640)) ([02b8dd3](https://github.com/LazyVim/LazyVim/commit/02b8dd3f4bd55f06be133471fad027f3131238f4))
* **sidekick:** added `<leader>ad` to close/detach a terminal/session ([f8b062b](https://github.com/LazyVim/LazyVim/commit/f8b062b130177f07d3c1c13b642402d42e980df5))
* **sidekick:** changed default keymaps for sidekick. Please check updated docs at sidekick.nvim ([a3e52dd](https://github.com/LazyVim/LazyVim/commit/a3e52dd346ea35db5521b66e46dca95d32f00cb4))
* **sidekick:** use `<a-a>` in any snacks picker to send the (selected) results to an AI tool ([26c43a9](https://github.com/LazyVim/LazyVim/commit/26c43a9b931f3ab04a8c449671250182ac9ddca6))
* **treesitter:** add installation instructions to get a C compiler on windows ([37032da](https://github.com/LazyVim/LazyVim/commit/37032dabd657ae567011e7ab4f881ecbf476eb76))
* **treesitter:** added support for `disable` langs to indent/highlight/folds. Closes [#6608](https://github.com/LazyVim/LazyVim/issues/6608) ([0e8069c](https://github.com/LazyVim/LazyVim/commit/0e8069c78ee92279055236388df8c2019476767a))
* **treesitter:** better health checks for treesitter requirements ([413b9d5](https://github.com/LazyVim/LazyVim/commit/413b9d5fa91c5bd5088b28c6d1764caa88542cb1))
* **treesitter:** on windows, use `gcc` if available and `cl.exe` is not available for building parsers ([2a1f3c3](https://github.com/LazyVim/LazyVim/commit/2a1f3c370145c3465c0142deade3e3b2660ce829))
### Bug Fixes
* **blink:** disable blink left/right key in the cmdline ([94c4603](https://github.com/LazyVim/LazyVim/commit/94c4603b6838fbe75343b6e3342b4343744157dc))
* **keymaps:** update deprecated diagnostic keymap to latest api change ([#6574](https://github.com/LazyVim/LazyVim/issues/6574)) ([b9d38f6](https://github.com/LazyVim/LazyVim/commit/b9d38f692015fecaa72d55282b74a3d601e4c9fa))
* **sidekick:** only add copilot to lspconfig when `opts.nes.enabled ~= false` ([049db39](https://github.com/LazyVim/LazyVim/commit/049db39de0f272e8368a4b3881ac5a13f0d04b09))
* **terminal:** term toggle keymaps now only work for snacks terminals. Closes [#6573](https://github.com/LazyVim/LazyVim/issues/6573) ([4efd0e2](https://github.com/LazyVim/LazyVim/commit/4efd0e2bea2a387d6fcdea8cf36a62049e8bafed))
* **treesiter:** check that `disable` options are tables ([e8c5fa7](https://github.com/LazyVim/LazyVim/commit/e8c5fa7eae06539c883699507caeadb46d74f401))
* **treesitter:** better check on windows if microsoft build tools is installed ([5effc77](https://github.com/LazyVim/LazyVim/commit/5effc77185f94f557809375b5650d427e7171c32))
* **xtras:** load `copilot-native` before `blink` ([#6588](https://github.com/LazyVim/LazyVim/issues/6588)) ([aa2c436](https://github.com/LazyVim/LazyVim/commit/aa2c43633adee0f80faf8d743d6476ea4f8ba5ca))
### Performance Improvements
* **ansible:** load on ft=yaml and run should only be mapped on ft=yaml.ansible ([ebdcf1b](https://github.com/LazyVim/LazyVim/commit/ebdcf1ba7ef18daa8c897c8922a5ef770e8bcffb))
## [15.7.1](https://github.com/LazyVim/LazyVim/compare/v15.7.0...v15.7.1) (2025-10-02)
### Bug Fixes
* **sidekick:** better keymaps ([188b288](https://github.com/LazyVim/LazyVim/commit/188b2886147acb4d9e2a5c8ae7b73770fd66a92c))
## [15.7.0](https://github.com/LazyVim/LazyVim/compare/v15.6.0...v15.7.0) (2025-10-01)
### Features
* **sidekick:** updated keymaps for sidekick ([2942bd4](https://github.com/LazyVim/LazyVim/commit/2942bd4a0d738d693af51354e96aa7be5407d105))
### Bug Fixes
* **copilot-native:** schedule inline_completion.enable ([23b1da1](https://github.com/LazyVim/LazyVim/commit/23b1da170f6367fafe0be47b9c141770ed75a78e))
* **sidekick:** better keymaps ([aabc03f](https://github.com/LazyVim/LazyVim/commit/aabc03f88d30b0424926d9d894adc5c91eb84ec2))
* **stylua:** stylua is now also an LSP. Disable it since we use the CLI tool. ([2f76d57](https://github.com/LazyVim/LazyVim/commit/2f76d572a2b172e5e7e236d3e972443242c36b66))
## [15.6.0](https://github.com/LazyVim/LazyVim/compare/v15.5.0...v15.6.0) (2025-09-30)
### Features
* **sidekick:** added keymaps to work with AI cli tools ([5d18a46](https://github.com/LazyVim/LazyVim/commit/5d18a46b6a7bb5b946a6c87b9a45a2738c9ec9c3))
* **sidekick:** fancier lualine component ([b889978](https://github.com/LazyVim/LazyVim/commit/b8899781516da71ba0f63afa93fb4a6b25dff144))
### Bug Fixes
* **config:** clipboard:get() ([22851dc](https://github.com/LazyVim/LazyVim/commit/22851dce979c4cac379c6795ca7885c83c1c7eaf))
* **copilot-native:** change Copilot-native's `<M-[>` description to "Prev Suggestion" ([#6553](https://github.com/LazyVim/LazyVim/issues/6553)) ([089d0a5](https://github.com/LazyVim/LazyVim/commit/089d0a5ac1ab85238804e017ac1ef0dc0a8341f0))
* **sidekick:** changed keymap to open new tool ([3d3739b](https://github.com/LazyVim/LazyVim/commit/3d3739b4b8943b5e7143d37f60bb0adbb6cf82f3))
## [15.5.0](https://github.com/LazyVim/LazyVim/compare/v15.4.0...v15.5.0) (2025-09-27)
### Features
* **ai.copilot-native:** let sidekick.nvim handle some things if available ([b25ea9c](https://github.com/LazyVim/LazyVim/commit/b25ea9c153e76d11579731e1d5529f275a36f91d))
* **ai:** added completion hooks for next edit suggestions ([30a325d](https://github.com/LazyVim/LazyVim/commit/30a325d67184a80006dc55352d9663cdf01082d5))
* **extras:** added extra for `sidekick.nvim` (Copilot LSP integration) ([dbfe209](https://github.com/LazyVim/LazyVim/commit/dbfe20996ce62d6b0048245ab4e304610548da04))
### Bug Fixes
* **ai.copilot:** disable copilot lsp if installed. copilot.lua needs its own version of the LSP ([e9bc607](https://github.com/LazyVim/LazyVim/commit/e9bc6074d1ea69e921a6195d1dc34333eaa310f8))
## [15.4.0](https://github.com/LazyVim/LazyVim/compare/v15.3.0...v15.4.0) (2025-09-26)
### Features
* **copilot-native:** added experimental support for next edit suggestions. check the docs to enable ([c83df9e](https://github.com/LazyVim/LazyVim/commit/c83df9e68dd41f5a3f7df5a7048169ee286a7da8))
* **copilot-native:** added keymaps to cycle suggestions ([6bd630c](https://github.com/LazyVim/LazyVim/commit/6bd630cec6f905665691d593dc5d0fb3d54f560c))
* **copilot-native:** better lualine status ([9913e16](https://github.com/LazyVim/LazyVim/commit/9913e1665d783d9c4407633bc33475d403aff433))
* **copilot-native:** removed experimental **nes** support with `copilot_lsp` for now, since it's not the best experience right now ([ed637bb](https://github.com/LazyVim/LazyVim/commit/ed637bb0f7f418de069a4d5a7ed8a7b3b93eb425))
* **copilot:** added `copilot-native` extra to setup native inline completions in Neovim ([3b02963](https://github.com/LazyVim/LazyVim/commit/3b0296358508da1eb258c8716df163dd04fa6449))
### Bug Fixes
* **catppuccin:** follow-up on api change ([#6505](https://github.com/LazyVim/LazyVim/issues/6505)) ([af6e250](https://github.com/LazyVim/LazyVim/commit/af6e2505b54270c30145e8f4191b865870537287))
* **treesitter:** create buffer-local textobjects keymaps only when available. Closes [#6508](https://github.com/LazyVim/LazyVim/issues/6508) ([5985ca0](https://github.com/LazyVim/LazyVim/commit/5985ca0cf1a0c1ddee8b2b718c730f988cec7001))
## [15.3.0](https://github.com/LazyVim/LazyVim/compare/v15.2.0...v15.3.0) (2025-09-23) ## [15.3.0](https://github.com/LazyVim/LazyVim/compare/v15.2.0...v15.3.0) (2025-09-23)

View file

@ -29,3 +29,21 @@
- Every language extra requires a `recommended` section as part of the extra. - Every language extra requires a `recommended` section as part of the extra.
Check lspconfig server configurations for the proper filetypes and root directories. Check lspconfig server configurations for the proper filetypes and root directories.
Refer to other extras for creating the `recommended` section. Refer to other extras for creating the `recommended` section.
### Language-Specific Keymaps
- Use `<localleader>` for language-specific keymaps (follows Vim/Neovim convention for filetype-specific mappings).
- For LSP servers, define keymaps in the server's `keys` field, not in `on_attach`:
```lua
servers = {
rust_analyzer = {
keys = {
{ "<localleader>e", function() vim.cmd.RustLsp("expandMacro") end, desc = "Expand Macro" },
}
}
}
```
- LazyVim's LSP system will automatically resolve and apply these keymaps (see `lua/lazyvim/plugins/lsp/keymaps.lua`).
- Don't override standard LSP keymaps (like `K` for hover, `gd` for definition) unless absolutely necessary.
- Use standard `<leader>c*` keymaps where they make sense (e.g., `<leader>co` for organize imports).
- Refer to the R and Haskell extras for examples of proper `<localleader>` usage.

View file

@ -54,7 +54,7 @@ LazyVim 是一个基于 [💤 lazy.nvim](https://github.com/folke/lazy.nvim) 的
## ⚡️ 环境要求 ## ⚡️ 环境要求
- Neovim >= **0.9.0** (需要用 **LuaJIT** 构建) - Neovim >= **0.11.2** (需要用 **LuaJIT** 构建)
- Git >= **2.19.0** (用于部分克隆支持) - Git >= **2.19.0** (用于部分克隆支持)
- 一个 [Nerd Font](https://www.nerdfonts.com/) 字体 **_(可选)_** - 一个 [Nerd Font](https://www.nerdfonts.com/) 字体 **_(可选)_**
- 一个用于 `nvim-treesitter`**C** 编译器。看 [这里](https://github.com/nvim-treesitter/nvim-treesitter#requirements) - 一个用于 `nvim-treesitter`**C** 编译器。看 [这里](https://github.com/nvim-treesitter/nvim-treesitter#requirements)

View file

@ -56,7 +56,7 @@ und die Einfachheit von einem vorgefertigten Setup.
## ⚡️ Vorraussetzungen ## ⚡️ Vorraussetzungen
- Neovim >= **0.8.0** (gebraucht um mit **LuaJIT** zu bauen) - Neovim >= **0.11.2** (gebraucht um mit **LuaJIT** zu bauen)
- Git >= **2.19.0** (um Teil-Klone zu unterstützen) - Git >= **2.19.0** (um Teil-Klone zu unterstützen)
- eine [Nerd Font](https://www.nerdfonts.com/) **_(optional)_** - eine [Nerd Font](https://www.nerdfonts.com/) **_(optional)_**

View file

@ -52,7 +52,7 @@ LazyVim es una configuración de Neovim impulsada por [💤 lazy.nvim](https://g
## ⚡️ Requisitos ## ⚡️ Requisitos
- Neovim >= **0.9.0** (debe ser compilado con **LuaJIT**) - Neovim >= **0.11.2** (debe ser compilado con **LuaJIT**)
- Git >= **2.19.0** (para soporte de clones parciales) - Git >= **2.19.0** (para soporte de clones parciales)
- una [Fuente Nerd](https://www.nerdfonts.com/) **_(opcional)_** - una [Fuente Nerd](https://www.nerdfonts.com/) **_(opcional)_**
- un compilador **C** para `nvim-treesitter`. Consulta [aquí](https://github.com/nvim-treesitter/nvim-treesitter#requirements) - un compilador **C** para `nvim-treesitter`. Consulta [aquí](https://github.com/nvim-treesitter/nvim-treesitter#requirements)

151
README-FR.md Normal file
View file

@ -0,0 +1,151 @@
<div align="center">
<img src="https://user-images.githubusercontent.com/292349/213446185-2db63fd5-8c84-459c-9f04-e286382d6e80.png">
</div>
<hr>
<h4 align="center">
<a href="https://lazyvim.github.io/installation">Install</a>
·
<a href="https://lazyvim.github.io/configuration">Configure</a>
·
<a href="https://lazyvim.github.io">Docs</a>
</h4>
<div align="center"><p>
<a href="https://github.com/LazyVim/LazyVim/releases/latest">
<img alt="Latest release" src="https://img.shields.io/github/v/release/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41&include_prerelease&sort=semver" />
</a>
<a href="https://github.com/LazyVim/LazyVim/pulse">
<img alt="Last commit" src="https://img.shields.io/github/last-commit/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=8bd5ca&logoColor=D9E0EE&labelColor=302D41"/>
</a>
<a href="https://github.com/LazyVim/LazyVim/blob/main/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=ee999f&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/LazyVim/LazyVim/stargazers">
<img alt="Stars" src="https://img.shields.io/github/stars/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=c69ff5&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/LazyVim/LazyVim/issues">
<img alt="Issues" src="https://img.shields.io/github/issues/LazyVim/LazyVim?style=for-the-badge&logo=bilibili&color=F5E0DC&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/LazyVim/LazyVim">
<img alt="Repo Size" src="https://img.shields.io/github/repo-size/LazyVim/LazyVim?color=%23DDB6F2&label=SIZE&logo=codesandbox&style=for-the-badge&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://twitter.com/intent/follow?screen_name=folke">
<img alt="follow on Twitter" src="https://img.shields.io/twitter/follow/folke?style=for-the-badge&logo=twitter&color=8aadf3&logoColor=D9E0EE&labelColor=302D41" />
</a>
</div>
LazyVim est une configuration Neovim basée sur [💤 lazy.nvim](https://github.com/folke/lazy.nvim)
facilitant la personnalisation et l'ajout d'extensions.
Plutôt que d'imposer le choix entre partir de rien et utiliser
une distribution toute faite, LazyVim offre le meilleur des deux mondes
: la flexibilité d'une config ajustable selon vos besoins, et le confort
d'une configuration pensée et peaufinée à l'avance.
![image](https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png)
![image](https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png)
## ✨ Fonctionnalités
- 🔥 Transforme Neovim en un environnement de développement complet
- 💤 Customise et étends ta config sans effort grâce à [lazy.nvim](https://github.com/folke/lazy.nvim)
- 🚀 Rapide comme l'éclair !
- 🧹 Configuration par défaut propre et intuitive pour les options, les autocmds, et les keymaps
- 📦 Livré avec une variété de plugins pre-configurés et prêts à être utilisés
## ⚡️ Pré-requis
- Neovim >= **0.9.0** (doit être compilé avec **LuaJIT**)
- Git >= **2.19.0** (pour supporter le clonage partiel)
- Un [Nerd Font](https://www.nerdfonts.com/) **_(optionel)_**
- Un compileur **C** pour `nvim-treesitter`. Voir [ici](https://github.com/nvim-treesitter/nvim-treesitter#requirements)
## 🚀 Comment commencer
Un template pour **LazyVim** peut être trouvé [ici](https://github.com/LazyVim/starter)
<details><summary>Essayer avec Docker</summary>
```sh
docker run -w /root -it --rm alpine:edge sh -uelic '
apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
git clone https://github.com/LazyVim/starter ~/.config/nvim
cd ~/.config/nvim
nvim
'
```
</details>
<details><summary>Installer le <a href="https://github.com/LazyVim/starter">LazyVim Starter</a></summary>
- Sauvegardez votre configuration Neovim :
```sh
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
```
- Clonez le starter
```sh
git clone https://github.com/LazyVim/starter ~/.config/nvim
```
- Supprimez le dossier `.git`, afin que vous puissiez l'ajouter à votre repo plus tard
```sh
rm -rf ~/.config/nvim/.git
```
- Lancez Neovim !
```sh
nvim
```
Consultez les commentaires dans les fichiers pour savoir comment personnaliser **LazyVim**.
</details>
---
Il y a une superbe vidéo (en anglais) de [@elijahmanor](https://github.com/elijahmanor)
qui vous guide pas-à-pas pour commencer.
[![Watch the video](https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg)](https://www.youtube.com/watch?v=N93cTbtLCIM)
[@dusty-phillips](https://github.com/dusty-phillips) a écrit un livre exhaustif
sur LazyVim, nommé [LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes)
disponible gratuitement en ligne.
## 📂 Structure de fichier
Les fichiers dans le dossier config vont être chargés automatiquement en temps voulu,
donc pas besoin de `require` ces fichiers manuellement.
**LazyVim** vient avec un ensemble de fichiers de configuration par défaut qui seront chargés
**_avant_** les vôtres. Voir [ici](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config)
Vous pouvez ajouter vos configurations de plugins sous `lua/plugins/`.
Ici, tous les fichiers seront automatiquement chargés par [lazy.nvim](https://github.com/folke/lazy.nvim)
<pre>
~/.config/nvim
├── lua
│ ├── config
│ │ ├── autocmds.lua
│ │ ├── keymaps.lua
│ │ ├── lazy.lua
│ │ └── options.lua
│ └── plugins
│ ├── spec1.lua
│ ├── **
│ └── spec2.lua
└── init.lua
</pre>
## ⚙️ Configuration
Veuillez vous référer à la [documentation](https://lazyvim.github.io)

View file

@ -57,7 +57,7 @@ insieme alla comodità di un setup preconfigurato.
## ⚡️ Requisiti ## ⚡️ Requisiti
- Neovim >= **0.9.0** (deve essere compilato con **LuaJIT**) - Neovim >= **0.11.2** (deve essere compilato con **LuaJIT**)
- Git >= **2.19.0** (per supportare cloni parziali) - Git >= **2.19.0** (per supportare cloni parziali)
- a [Nerd Font](https://www.nerdfonts.com/) **_(opzionale)_** - a [Nerd Font](https://www.nerdfonts.com/) **_(opzionale)_**
- un compilatore **C** per `nvim-treesitter`. Leggi [qui](https://github.com/nvim-treesitter/nvim-treesitter#requirements) - un compilatore **C** per `nvim-treesitter`. Leggi [qui](https://github.com/nvim-treesitter/nvim-treesitter#requirements)

View file

@ -54,7 +54,7 @@ LazyVimは、ゼロから始めるか、あらかじめ作成されたディス
## ⚡️ 必要要件 ## ⚡️ 必要要件
- Neovim >= **0.9.0** (**LuaJIT**でビルドされている必要があります) - Neovim >= **0.11.2** (**LuaJIT**でビルドされている必要があります)
- Git >= **2.19.0** (部分的なcloneサポートのため) - Git >= **2.19.0** (部分的なcloneサポートのため)
- [Nerd Font](https://www.nerdfonts.com/) **_(任意)_** - [Nerd Font](https://www.nerdfonts.com/) **_(任意)_**
- `nvim-treesitter`用の**C**コンパイラ。詳細は[こちら](https://github.com/nvim-treesitter/nvim-treesitter#requirements) - `nvim-treesitter`用の**C**コンパイラ。詳細は[こちら](https://github.com/nvim-treesitter/nvim-treesitter#requirements)

View file

@ -52,7 +52,7 @@ LazyVim은 [💤 lazy.nvim](https://github.com/folke/lazy.nvim)를 기반으로
## ⚡️ 요구사항 ## ⚡️ 요구사항
- **0.9.0**이상의 Neovim (LuaJIT과 함께 개발이 되어져있어야함니다.) - **0.11.2**이상의 Neovim (LuaJIT과 함께 개발이 되어져있어야함니다.)
- **2.19.0**이상의 Git (이것은 부분적인 클론기능을 지원하기 위함입니다.) - **2.19.0**이상의 Git (이것은 부분적인 클론기능을 지원하기 위함입니다.)
- [Nerd Font](https://www.nerdfonts.com/) **_(옵션)_** - [Nerd Font](https://www.nerdfonts.com/) **_(옵션)_**
- `nvim-treesitter`를 위한 **C** 컴파일러. [이 문서](https://github.com/nvim-treesitter/nvim-treesitter#requirements)를 확인해주시기바랍니다. - `nvim-treesitter`를 위한 **C** 컴파일러. [이 문서](https://github.com/nvim-treesitter/nvim-treesitter#requirements)를 확인해주시기바랍니다.

147
README-PL.md Normal file
View file

@ -0,0 +1,147 @@
<div align="center">
<img src="https://user-images.githubusercontent.com/292349/213446185-2db63fd5-8c84-459c-9f04-e286382d6e80.png">
</div>
<hr>
<h4 align="center">
<a href="https://lazyvim.github.io/installation">Install</a>
·
<a href="https://lazyvim.github.io/configuration">Configure</a>
·
<a href="https://lazyvim.github.io">Docs</a>
</h4>
<div align="center"><p>
<a href="https://github.com/LazyVim/LazyVim/releases/latest">
<img alt="Latest release" src="https://img.shields.io/github/v/release/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41&include_prerelease&sort=semver" />
</a>
<a href="https://github.com/LazyVim/LazyVim/pulse">
<img alt="Last commit" src="https://img.shields.io/github/last-commit/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=8bd5ca&logoColor=D9E0EE&labelColor=302D41"/>
</a>
<a href="https://github.com/LazyVim/LazyVim/blob/main/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=ee999f&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/LazyVim/LazyVim/stargazers">
<img alt="Stars" src="https://img.shields.io/github/stars/LazyVim/LazyVim?style=for-the-badge&logo=starship&color=c69ff5&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/LazyVim/LazyVim/issues">
<img alt="Issues" src="https://img.shields.io/github/issues/LazyVim/LazyVim?style=for-the-badge&logo=bilibili&color=F5E0DC&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/LazyVim/LazyVim">
<img alt="Repo Size" src="https://img.shields.io/github/repo-size/LazyVim/LazyVim?color=%23DDB6F2&label=SIZE&logo=codesandbox&style=for-the-badge&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://twitter.com/intent/follow?screen_name=folke">
<img alt="follow on Twitter" src="https://img.shields.io/twitter/follow/folke?style=for-the-badge&logo=twitter&color=8aadf3&logoColor=D9E0EE&labelColor=302D41" />
</a>
</div>
LazyVim to konfiguracja Neovim oparta na [💤 lazy.nvim](https://github.com/folke/lazy.nvim)
która ułatwia dostosowywanie i rozszerzanie konfiguracji.
Zamiast wybierać między rozpoczynaniem od zera a używaniem gotowej dystrybucji, LazyVim oferuje najlepsze z obu światów elastyczność pozwalającą na dostosowanie konfiguracji do własnych potrzeb oraz wygodę wstępnie skonfigurowanego środowiska.
![image](https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png)
![image](https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png)
## ✨ Funkcje
- 🔥 Przekształć Neovim w pełnoprawne IDE
- 💤 Łatwo dostosowuj i rozszerzaj swoją konfigurację dzięki [lazy.nvim](https://github.com/folke/lazy.nvim)
- 🚀 Niezwykle szybkie działanie
- 🧹 Przemyślane domyślne ustawienia opcji, autocmd i skrótów klawiszowych
- 📦 Zawiera bogaty zestaw wstępnie skonfigurowanych wtyczek gotowych do użycia
## ⚡️ Wymagania
- Neovim >= **0.9.0** (musi być skompilowany z **LuaJIT**)
- Git >= **2.19.0** (dla obsługi częściowego klonowania repozytoriów)
- [Nerd Font](https://www.nerdfonts.com/) **_(opcjonalnie)_**
- Kompilator **C** wymagany dla `nvim-treesitter`. Szczegóły [tutaj](https://github.com/nvim-treesitter/nvim-treesitter#requirements)
## 🚀 Pierwsze kroki
Szablon startowy dla **LazyVim** znajdziesz [tutaj](https://github.com/LazyVim/starter)
<details><summary>Wypróbuj z Dockerem</summary>
```sh
docker run -w /root -it --rm alpine:edge sh -uelic '
apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update
git clone https://github.com/LazyVim/starter ~/.config/nvim
cd ~/.config/nvim
nvim
'
```
</details>
<details><summary>Zainstaluj <a href="https://github.com/LazyVim/starter">Starter LazyVim</a></summary>
- Wykonaj kopię zapasową swoich obecnych plików Neovim:
```sh
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
```
- Sklonuj repozytorium startowe:
```sh
git clone https://github.com/LazyVim/starter ~/.config/nvim
```
- Usuń folder `.git`, aby później móc dodać własne repozytorium:
```sh
rm -rf ~/.config/nvim/.git
```
- Uruchom Neovim!
```sh
nvim
```
W plikach znajdziesz komentarze, które pomogą Ci dostosować **LazyVim**.
</details>
---
[@elijahmanor](https://github.com/elijahmanor) stworzył świetne wideo z przewodnikiem, jak zacząć.
[![Obejrzyj wideo](https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg)](https://www.youtube.com/watch?v=N93cTbtLCIM)
[@dusty-phillips](https://github.com/dusty-phillips) napisał obszerną książkę
[LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes),
która jest dostępna za darmo online.
## 📂 Struktura plików
Pliki w katalogu `config` są automatycznie ładowane w odpowiednim momencie,
więc nie musisz ich ręcznie dołączać.
**LazyVim** zawiera zestaw domyślnych plików konfiguracyjnych,
które zostaną załadowane **_przed_** Twoimi własnymi. Szczegóły znajdziesz [tutaj](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config).
Możesz dodać własne specyfikacje wtyczek w katalogu `lua/plugins/`.
Wszystkie pliki w tym folderze zostaną automatycznie załadowane przez [lazy.nvim](https://github.com/folke/lazy.nvim).
<pre>
~/.config/nvim
├── lua
│   ├── config
│   │   ├── autocmds.lua
│   │   ├── keymaps.lua
│   │   ├── lazy.lua
│   │   └── options.lua
│   └── plugins
│   ├── spec1.lua
│   ├── **
│   └── spec2.lua
└── init.lua
</pre>
## ⚙️ Konfiguracja
Zapoznaj się z [dokumentacją](https://lazyvim.github.io).

View file

@ -57,7 +57,7 @@ como necessário, junto com a conveniência de um setup pré-configurado.
## ⚡️ Requesitos ## ⚡️ Requesitos
- Neovim >= **0.9.0** (preciso fazer build com **LuaJIT**) - Neovim >= **0.11.2** (preciso fazer build com **LuaJIT**)
- Git >= **2.19.0** (para suporte parcial de clones) - Git >= **2.19.0** (para suporte parcial de clones)
- uma [Nerd Font](https://www.nerdfonts.com/) **_(opcional)_** - uma [Nerd Font](https://www.nerdfonts.com/) **_(opcional)_**
- um compilador de **C** para `nvim-treesitter`. Mais informações [aqui](https://github.com/nvim-treesitter/nvim-treesitter#requirements) - um compilador de **C** para `nvim-treesitter`. Mais informações [aqui](https://github.com/nvim-treesitter/nvim-treesitter#requirements)

View file

@ -111,10 +111,6 @@ docker run -w /root -it --rm alpine:edge sh -uelic '
--- ---
There's a great video created by [@elijahmanor](https://github.com/elijahmanor) with a walkthrough to get started.
[![Watch the video](https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg)](https://www.youtube.com/watch?v=N93cTbtLCIM)
[@dusty-phillips](https://github.com/dusty-phillips) wrote a comprehensive book called [@dusty-phillips](https://github.com/dusty-phillips) wrote a comprehensive book called
[LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes) [LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes)
available for free online. available for free online.

View file

@ -1,4 +1,5 @@
*LazyVim.txt* For Neovim Last change: 2025 September 23 *LazyVim.txt* LazyVim docs
For Neovim Last change: 2026 June 02
============================================================================== ==============================================================================
Table of Contents *LazyVim-table-of-contents* Table of Contents *LazyVim-table-of-contents*
@ -78,30 +79,29 @@ Try it with Docker ~
Install the LazyVim Starter ~ Install the LazyVim Starter ~
- Make a backup of your current Neovim files: - Make a backup of your current Neovim files:
>sh
>sh
mv ~/.config/nvim ~/.config/nvim.bak mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak
< <
- Clone the starter - Clone the starter
>sh
>sh
git clone https://github.com/LazyVim/starter ~/.config/nvim git clone https://github.com/LazyVim/starter ~/.config/nvim
< <
- Remove the `.git` folder, so you can add it to your own repo later - Remove the `.git` folder, so you can add it to your own repo later
>sh
>sh
rm -rf ~/.config/nvim/.git rm -rf ~/.config/nvim/.git
< <
- Start Neovim! - Start Neovim!
>sh
>sh
nvim nvim
< <
Refer to the comments in the files on how to customize **LazyVim**. Refer to the comments in the files on how to customize **LazyVim**.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Theres a great video created by @elijahmanor
<https://github.com/elijahmanor> with a walkthrough to get started.
<https://www.youtube.com/watch?v=N93cTbtLCIM>
@dusty-phillips <https://github.com/dusty-phillips> wrote a comprehensive book @dusty-phillips <https://github.com/dusty-phillips> wrote a comprehensive book
called LazyVim for Ambitious Developers called LazyVim for Ambitious Developers
<https://lazyvim-ambitious-devs.phillips.codes> available for free online. <https://lazyvim-ambitious-devs.phillips.codes> available for free online.
@ -127,9 +127,7 @@ Refer to the docs <https://lazyvim.github.io>
1. *image*: https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png 1. *image*: https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png
2. *image*: https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png 2. *image*: https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png
3. *@elijahmanor*: 3. *@dusty-phillips*:
4. *Watch the video*: https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg
5. *@dusty-phillips*:
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc> Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>

View file

@ -18,7 +18,11 @@ vim.api.nvim_create_autocmd({ "FocusGained", "TermClose", "TermLeave" }, {
vim.api.nvim_create_autocmd("TextYankPost", { vim.api.nvim_create_autocmd("TextYankPost", {
group = augroup("highlight_yank"), group = augroup("highlight_yank"),
callback = function() callback = function()
(vim.hl or vim.highlight).on_yank() if vim.fn.has("nvim-0.13") == 1 then
vim.hl.hl_op()
else
(vim.hl or vim.highlight).on_yank()
end
end, end,
}) })
@ -56,6 +60,7 @@ vim.api.nvim_create_autocmd("FileType", {
pattern = { pattern = {
"PlenaryTestPopup", "PlenaryTestPopup",
"checkhealth", "checkhealth",
"dap-float",
"dbout", "dbout",
"gitsigns-blame", "gitsigns-blame",
"grug-far", "grug-far",

View file

@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util")
---@class LazyVimConfig: LazyVimOptions ---@class LazyVimConfig: LazyVimOptions
local M = {} local M = {}
M.version = "15.3.0" -- x-release-please-version M.version = "16.0.0" -- x-release-please-version
LazyVim.config = M LazyVim.config = M
---@class LazyVimOptions ---@class LazyVimOptions
@ -34,7 +34,9 @@ local defaults = {
dots = "󰇘", dots = "󰇘",
}, },
ft = { ft = {
octo = "", octo = "",
gh = "",
["markdown.gh"] = "",
}, },
dap = { dap = {
Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" }, Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" },
@ -335,7 +337,7 @@ function M.init()
M._options.foldexpr = vim.o.foldexpr M._options.foldexpr = vim.o.foldexpr
-- defer built-in clipboard handling: "xsel" and "pbcopy" can be slow -- defer built-in clipboard handling: "xsel" and "pbcopy" can be slow
lazy_clipboard = vim.opt.clipboard lazy_clipboard = vim.opt.clipboard:get()
vim.opt.clipboard = "" vim.opt.clipboard = ""
if vim.g.deprecation_warnings == false then if vim.g.deprecation_warnings == false then
@ -346,13 +348,81 @@ function M.init()
M.json.load() M.json.load()
end end
---@alias LazyVimDefault {name: string, extra: string, enabled?: boolean, origin?: "global" | "default" | "extra" } ---@alias LazyVimDefault {name: string, group: string, extra: string, import: string, enabled?: boolean, origin?: "global" | "default" | "extra" }
---
local default_extras ---@type table<string, LazyVimDefault> local default_extras ---@type table<string, LazyVimDefault>
---@param name string
---@param extras LazyVimDefault[]
function M.register_defaults(name, extras)
assert(default_extras, "defaults should be loaded by now, this should never happen")
local valid = vim.tbl_map(function(extra)
return extra.name
end, extras) --[[@as string[] ]]
local origin = "default"
local ret ---@type LazyVimDefault?
local use ---@type string?
local global = vim.g["lazyvim_" .. name]
if vim.tbl_contains(valid, global) then
origin = "global" -- was set by the user in their config
use = global
else
if global and global ~= "auto" then
vim.notify(
("Invalid value for `vim.g.lazyvim_%s`: `%s`\nValid options are: %s"):format(
name,
global,
table.concat(valid, ", ")
),
vim.log.levels.ERROR,
{ title = "LazyVim" }
)
end
for _, extra in ipairs(extras) do
if LazyVim.has_extra(extra.extra) then
use = extra.name -- was imported by the user in their lazy spec or added by LazyExtras
origin = "extra"
break
end
end
end
use = use or valid[1] -- fallback to the first one if nothing was set
for _, extra in ipairs(extras) do
local import = "lazyvim.plugins.extras." .. extra.extra
extra = vim.deepcopy(extra)
extra.enabled = extra.name == use
extra.import = import
extra.group = name
if extra.enabled then
extra.origin = origin
ret = extra
end
default_extras[import] = extra
end
return assert(ret, "One of the extras should be enabled, this should never happen")
end
---@param group string
---@return LazyVimDefault?
function M.get_default(group)
for _, extra in pairs(M.get_defaults()) do
if extra.group == group and extra.enabled then
return extra
end
end
end
function M.get_defaults() function M.get_defaults()
if default_extras then if default_extras then
return default_extras return default_extras
end end
default_extras = {}
---@type table<string, LazyVimDefault[]> ---@type table<string, LazyVimDefault[]>
local checks = { local checks = {
picker = { picker = {
@ -376,36 +446,10 @@ function M.get_defaults()
table.insert(checks.explorer, 1, table.remove(checks.explorer, 2)) table.insert(checks.explorer, 1, table.remove(checks.explorer, 2))
end end
default_extras = {} for name, extras in pairs(checks) do
for name, check in pairs(checks) do M.register_defaults(name, extras)
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 end
return default_extras return default_extras
end end

View file

@ -43,6 +43,9 @@ end, { desc = "Delete Buffer" })
map("n", "<leader>bo", function() map("n", "<leader>bo", function()
Snacks.bufdelete.other() Snacks.bufdelete.other()
end, { desc = "Delete Other Buffers" }) end, { desc = "Delete Other Buffers" })
map("n", "<leader>bi", function()
Snacks.bufdelete.invisible()
end, { desc = "Delete Invisible Buffers" })
map("n", "<leader>bD", "<cmd>:bd<cr>", { desc = "Delete Buffer and Window" }) map("n", "<leader>bD", "<cmd>:bd<cr>", { desc = "Delete Buffer and Window" })
-- Clear search and stop snippet on escape -- Clear search and stop snippet on escape
@ -81,8 +84,8 @@ map({ "i", "x", "n", "s" }, "<C-s>", "<cmd>w<cr><esc>", { desc = "Save File" })
map("n", "<leader>K", "<cmd>norm! K<cr>", { desc = "Keywordprg" }) map("n", "<leader>K", "<cmd>norm! K<cr>", { desc = "Keywordprg" })
-- better indenting -- better indenting
map("v", "<", "<gv") map("x", "<", "<gv")
map("v", ">", ">gv") map("x", ">", ">gv")
-- commenting -- commenting
map("n", "gco", "o<esc>Vcx<esc><cmd>normal gcc<cr>fxa<bs>", { desc = "Add Comment Below" }) map("n", "gco", "o<esc>Vcx<esc><cmd>normal gcc<cr>fxa<bs>", { desc = "Add Comment Below" })
@ -114,16 +117,18 @@ map("n", "[q", vim.cmd.cprev, { desc = "Previous Quickfix" })
map("n", "]q", vim.cmd.cnext, { desc = "Next Quickfix" }) map("n", "]q", vim.cmd.cnext, { desc = "Next Quickfix" })
-- formatting -- formatting
map({ "n", "v" }, "<leader>cf", function() map({ "n", "x" }, "<leader>cf", function()
LazyVim.format({ force = true }) LazyVim.format({ force = true })
end, { desc = "Format" }) end, { desc = "Format" })
-- diagnostic -- diagnostic
local diagnostic_goto = function(next, severity) local diagnostic_goto = function(next, severity)
local go = next and vim.diagnostic.goto_next or vim.diagnostic.goto_prev
severity = severity and vim.diagnostic.severity[severity] or nil
return function() return function()
go({ severity = severity }) vim.diagnostic.jump({
count = (next and 1 or -1) * vim.v.count1,
severity = severity and vim.diagnostic.severity[severity] or nil,
float = true,
})
end end
end end
map("n", "<leader>cd", vim.diagnostic.open_float, { desc = "Line Diagnostics" }) map("n", "<leader>cd", vim.diagnostic.open_float, { desc = "Line Diagnostics" })
@ -187,12 +192,8 @@ map("n", "<leader>L", function() LazyVim.news.changelog() end, { desc = "LazyVim
-- floating terminal -- floating terminal
map("n", "<leader>fT", function() Snacks.terminal() end, { desc = "Terminal (cwd)" }) map("n", "<leader>fT", function() Snacks.terminal() end, { desc = "Terminal (cwd)" })
map("n", "<leader>ft", function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" }) map("n", "<leader>ft", function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" })
map("n", "<c-/>", function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" }) map({"n","t"}, "<c-/>",function() Snacks.terminal.focus(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" })
map("n", "<c-_>", function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "which_key_ignore" }) map({"n","t"}, "<c-_>",function() Snacks.terminal.focus(nil, { cwd = LazyVim.root() }) end, { desc = "which_key_ignore" })
-- Terminal Mappings
map("t", "<C-/>", "<cmd>close<cr>", { desc = "Hide Terminal" })
map("t", "<c-_>", "<cmd>close<cr>", { desc = "which_key_ignore" })
-- windows -- windows
map("n", "<leader>-", "<C-W>s", { desc = "Split Window Below", remap = true }) map("n", "<leader>-", "<C-W>s", { desc = "Split Window Below", remap = true })
@ -209,3 +210,6 @@ map("n", "<leader><tab><tab>", "<cmd>tabnew<cr>", { desc = "New Tab" })
map("n", "<leader><tab>]", "<cmd>tabnext<cr>", { desc = "Next Tab" }) map("n", "<leader><tab>]", "<cmd>tabnext<cr>", { desc = "Next Tab" })
map("n", "<leader><tab>d", "<cmd>tabclose<cr>", { desc = "Close Tab" }) map("n", "<leader><tab>d", "<cmd>tabclose<cr>", { desc = "Close Tab" })
map("n", "<leader><tab>[", "<cmd>tabprevious<cr>", { desc = "Previous Tab" }) map("n", "<leader><tab>[", "<cmd>tabprevious<cr>", { desc = "Previous Tab" })
-- lua
map({"n", "x"}, "<localleader>r", function() Snacks.debug.run() end, { desc = "Run Lua", ft = "lua" })

View file

@ -54,7 +54,7 @@ local opt = vim.opt
opt.autowrite = true -- Enable auto write opt.autowrite = true -- Enable auto write
-- only set clipboard if not in ssh, to make sure the OSC 52 -- only set clipboard if not in ssh, to make sure the OSC 52
-- integration works automatically. -- integration works automatically.
opt.clipboard = vim.env.SSH_TTY and "" or "unnamedplus" -- Sync with system clipboard opt.clipboard = vim.env.SSH_CONNECTION and "" or "unnamedplus" -- Sync with system clipboard
opt.completeopt = "menu,menuone,noselect" opt.completeopt = "menu,menuone,noselect"
opt.conceallevel = 2 -- Hide * markup for bold and italic, but not markers with substitutions opt.conceallevel = 2 -- Hide * markup for bold and italic, but not markers with substitutions
opt.confirm = true -- Confirm to save changes before exiting modified buffer opt.confirm = true -- Confirm to save changes before exiting modified buffer

View file

@ -4,6 +4,7 @@ local start = vim.health.start or vim.health.report_start
local ok = vim.health.ok or vim.health.report_ok local ok = vim.health.ok or vim.health.report_ok
local warn = vim.health.warn or vim.health.report_warn local warn = vim.health.warn or vim.health.report_warn
local error = vim.health.error or vim.health.report_error local error = vim.health.error or vim.health.report_error
local info = vim.health.info or vim.health.report_info
function M.check() function M.check()
start("LazyVim") start("LazyVim")
@ -33,6 +34,23 @@ function M.check()
warn(("`%s` is not installed"):format(name)) warn(("`%s` is not installed"):format(name))
end end
end end
start("LazyVim nvim-treesitter")
local tsok, health = LazyVim.treesitter.check()
local keys = vim.tbl_keys(health) ---@type string[]
table.sort(keys)
for _, k in pairs(keys) do
(health[k] and ok or error)(("`%s` is %s"):format(k, health[k] and "installed" or "not installed"))
end
if not tsok then
info(
"See the requirements at [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter/tree/main?tab=readme-ov-file#requirements)"
)
info("Run `:checkhealth nvim-treesitter` for more information.")
if vim.fn.has("win32") == 1 and not health["C compiler"] then
info("Install a C compiler with `winget install --id=BrechtSanders.WinLibs.POSIX.UCRT -e`")
end
end
end end
return M return M

View file

@ -82,6 +82,7 @@ return {
{ path = "LazyVim", words = { "LazyVim" } }, { path = "LazyVim", words = { "LazyVim" } },
{ path = "snacks.nvim", words = { "Snacks" } }, { path = "snacks.nvim", words = { "Snacks" } },
{ path = "lazy.nvim", words = { "LazyVim" } }, { path = "lazy.nvim", words = { "LazyVim" } },
{ path = "nvim-lspconfig", words = { "lspconfig.settings" } },
}, },
}, },
}, },

View file

@ -13,6 +13,14 @@ return {
lazy = true, lazy = true,
name = "catppuccin", name = "catppuccin",
opts = { opts = {
lsp_styles = {
underlines = {
errors = { "undercurl" },
hints = { "undercurl" },
warnings = { "undercurl" },
information = { "undercurl" },
},
},
integrations = { integrations = {
aerial = true, aerial = true,
alpha = true, alpha = true,
@ -28,26 +36,14 @@ return {
leap = true, leap = true,
lsp_trouble = true, lsp_trouble = true,
mason = true, mason = true,
markdown = true,
mini = true, mini = true,
native_lsp = {
enabled = true,
underlines = {
errors = { "undercurl" },
hints = { "undercurl" },
warnings = { "undercurl" },
information = { "undercurl" },
},
},
navic = { enabled = true, custom_bg = "lualine" }, navic = { enabled = true, custom_bg = "lualine" },
neotest = true, neotest = true,
neotree = true, neotree = true,
noice = true, noice = true,
notify = true, notify = true,
semantic_tokens = true,
snacks = true, snacks = true,
telescope = true, telescope = true,
treesitter = true,
treesitter_context = true, treesitter_context = true,
which_key = true, which_key = true,
}, },
@ -58,7 +54,7 @@ return {
optional = true, optional = true,
opts = function(_, opts) opts = function(_, opts)
if (vim.g.colors_name or ""):find("catppuccin") then if (vim.g.colors_name or ""):find("catppuccin") then
opts.highlights = require("catppuccin.groups.integrations.bufferline").get_theme() opts.highlights = require("catppuccin.special.bufferline").get_theme()
end end
end, end,
}, },

View file

@ -18,7 +18,7 @@ return {
}, },
}) })
end, end,
mode = { "n", "v" }, mode = { "n", "x" },
desc = "Search and Replace", desc = "Search and Replace",
}, },
}, },
@ -64,7 +64,7 @@ return {
defaults = {}, defaults = {},
spec = { spec = {
{ {
mode = { "n", "v" }, mode = { "n", "x" },
{ "<leader><tab>", group = "tabs" }, { "<leader><tab>", group = "tabs" },
{ "<leader>c", group = "code" }, { "<leader>c", group = "code" },
{ "<leader>d", group = "debug" }, { "<leader>d", group = "debug" },
@ -173,8 +173,8 @@ return {
end, "Prev Hunk") end, "Prev Hunk")
map("n", "]H", function() gs.nav_hunk("last") end, "Last Hunk") map("n", "]H", function() gs.nav_hunk("last") end, "Last Hunk")
map("n", "[H", function() gs.nav_hunk("first") end, "First Hunk") map("n", "[H", function() gs.nav_hunk("first") end, "First Hunk")
map({ "n", "v" }, "<leader>ghs", ":Gitsigns stage_hunk<CR>", "Stage Hunk") map({ "n", "x" }, "<leader>ghs", ":Gitsigns stage_hunk<CR>", "Stage Hunk")
map({ "n", "v" }, "<leader>ghr", ":Gitsigns reset_hunk<CR>", "Reset Hunk") map({ "n", "x" }, "<leader>ghr", ":Gitsigns reset_hunk<CR>", "Reset Hunk")
map("n", "<leader>ghS", gs.stage_buffer, "Stage Buffer") map("n", "<leader>ghS", gs.stage_buffer, "Stage Buffer")
map("n", "<leader>ghu", gs.undo_stage_hunk, "Undo Stage Hunk") map("n", "<leader>ghu", gs.undo_stage_hunk, "Undo Stage Hunk")
map("n", "<leader>ghR", gs.reset_buffer, "Reset Buffer") map("n", "<leader>ghR", gs.reset_buffer, "Reset Buffer")

View file

@ -0,0 +1,89 @@
return {
{ "MunifTanjim/nui.nvim", lazy = true },
{
"yetone/avante.nvim",
build = vim.fn.has("win32") ~= 0 and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false"
or "make",
event = "VeryLazy",
opts = {
provider = "copilot",
selection = {
hint_display = "none",
},
behaviour = {
auto_set_keymaps = false,
},
},
cmd = {
"AvanteAsk",
"AvanteBuild",
"AvanteChat",
"AvanteClear",
"AvanteEdit",
"AvanteFocus",
"AvanteHistory",
"AvanteModels",
"AvanteRefresh",
"AvanteShowRepoMap",
"AvanteStop",
"AvanteSwitchProvider",
"AvanteToggle",
},
keys = {
{ "<leader>aa", "<cmd>AvanteAsk<CR>", desc = "Ask Avante" },
{ "<leader>ac", "<cmd>AvanteChat<CR>", desc = "Chat with Avante" },
{ "<leader>ae", "<cmd>AvanteEdit<CR>", desc = "Edit Avante" },
{ "<leader>af", "<cmd>AvanteFocus<CR>", desc = "Focus Avante" },
{ "<leader>ah", "<cmd>AvanteHistory<CR>", desc = "Avante History" },
{ "<leader>am", "<cmd>AvanteModels<CR>", desc = "Select Avante Model" },
{ "<leader>an", "<cmd>AvanteChatNew<CR>", desc = "New Avante Chat" },
{ "<leader>ap", "<cmd>AvanteSwitchProvider<CR>", desc = "Switch Avante Provider" },
{ "<leader>ar", "<cmd>AvanteRefresh<CR>", desc = "Refresh Avante" },
{ "<leader>as", "<cmd>AvanteStop<CR>", desc = "Stop Avante" },
{ "<leader>at", "<cmd>AvanteToggle<CR>", desc = "Toggle Avante" },
},
},
-- support for image pasting
{
"HakonHarnes/img-clip.nvim",
event = "VeryLazy",
optional = true,
opts = {
-- recommended settings
default = {
embed_image_as_base64 = false,
prompt_for_file_name = false,
drag_and_drop = {
insert_mode = true,
},
-- required for Windows users
use_absolute_path = true,
},
},
},
-- Make sure to set this up properly if you have lazy=true
{
"MeanderingProgrammer/render-markdown.nvim",
optional = true,
opts = {
file_types = { "markdown", "Avante" },
},
ft = { "markdown", "Avante" },
},
-- blink.cmp source for avante.nvim
{
"saghen/blink.cmp",
optional = true,
specs = { "Kaiser-Yang/blink-cmp-avante" },
opts = {
sources = {
default = { "avante" },
providers = { avante = { module = "blink-cmp-avante", name = "Avante" } },
},
},
},
}

View file

@ -0,0 +1,22 @@
return {
"coder/claudecode.nvim",
opts = {},
keys = {
{ "<leader>a", "", desc = "+ai", mode = { "n", "v" } },
{ "<leader>ac", "<cmd>ClaudeCode<cr>", desc = "Toggle Claude" },
{ "<leader>af", "<cmd>ClaudeCodeFocus<cr>", desc = "Focus Claude" },
{ "<leader>ar", "<cmd>ClaudeCode --resume<cr>", desc = "Resume Claude" },
{ "<leader>aC", "<cmd>ClaudeCode --continue<cr>", desc = "Continue Claude" },
{ "<leader>ab", "<cmd>ClaudeCodeAdd %<cr>", desc = "Add current buffer" },
{ "<leader>as", "<cmd>ClaudeCodeSend<cr>", mode = "v", desc = "Send to Claude" },
{
"<leader>as",
"<cmd>ClaudeCodeTreeAdd<cr>",
desc = "Add file",
ft = { "NvimTree", "neo-tree", "oil" },
},
-- Diff management
{ "<leader>aa", "<cmd>ClaudeCodeDiffAccept<cr>", desc = "Accept diff" },
{ "<leader>ad", "<cmd>ClaudeCodeDiffDeny<cr>", desc = "Deny diff" },
},
}

View file

@ -8,8 +8,11 @@ return {
user = user:sub(1, 1):upper() .. user:sub(2) user = user:sub(1, 1):upper() .. user:sub(2)
return { return {
auto_insert_mode = true, auto_insert_mode = true,
question_header = "" .. user .. " ", headers = {
answer_header = " Copilot ", user = "" .. user .. " ",
assistant = " Copilot ",
tool = "󰊳 Tool ",
},
window = { window = {
width = 0.4, width = 0.4,
}, },
@ -17,14 +20,14 @@ return {
end, end,
keys = { keys = {
{ "<c-s>", "<CR>", ft = "copilot-chat", desc = "Submit Prompt", remap = true }, { "<c-s>", "<CR>", ft = "copilot-chat", desc = "Submit Prompt", remap = true },
{ "<leader>a", "", desc = "+ai", mode = { "n", "v" } }, { "<leader>a", "", desc = "+ai", mode = { "n", "x" } },
{ {
"<leader>aa", "<leader>aa",
function() function()
return require("CopilotChat").toggle() return require("CopilotChat").toggle()
end, end,
desc = "Toggle (CopilotChat)", desc = "Toggle (CopilotChat)",
mode = { "n", "v" }, mode = { "n", "x" },
}, },
{ {
"<leader>ax", "<leader>ax",
@ -32,7 +35,7 @@ return {
return require("CopilotChat").reset() return require("CopilotChat").reset()
end, end,
desc = "Clear (CopilotChat)", desc = "Clear (CopilotChat)",
mode = { "n", "v" }, mode = { "n", "x" },
}, },
{ {
"<leader>aq", "<leader>aq",
@ -46,7 +49,7 @@ return {
end) end)
end, end,
desc = "Quick Chat (CopilotChat)", desc = "Quick Chat (CopilotChat)",
mode = { "n", "v" }, mode = { "n", "x" },
}, },
{ {
"<leader>ap", "<leader>ap",
@ -54,7 +57,7 @@ return {
require("CopilotChat").select_prompt() require("CopilotChat").select_prompt()
end, end,
desc = "Prompt Actions (CopilotChat)", desc = "Prompt Actions (CopilotChat)",
mode = { "n", "v" }, mode = { "n", "x" },
}, },
}, },
config = function(_, opts) config = function(_, opts)

View file

@ -0,0 +1,95 @@
---@diagnostic disable: missing-fields
if lazyvim_docs then
-- Native inline completions don't support being shown as regular completions
vim.g.ai_cmp = false
end
if LazyVim.has_extra("ai.copilot-native") then
if vim.fn.has("nvim-0.12") == 0 then
LazyVim.error("You need Neovim >= 0.12 to use the `ai.copilot-native` extra.")
return {}
end
if LazyVim.has_extra("ai.copilot") then
LazyVim.error("Please disable the `ai.copilot` extra if you want to use `ai.copilot-native`")
return {}
end
end
vim.g.ai_cmp = false
local status = {} ---@type table<number, "ok" | "error" | "pending">
return {
desc = "Native Copilot LSP integration. Requires Neovim >= 0.12",
-- copilot-language-server
{
"neovim/nvim-lspconfig",
opts = {
servers = {
copilot = {
-- stylua: ignore
keys = {
{
"<M-]>",
function() vim.lsp.inline_completion.select({ count = 1 }) end,
desc = "Next Copilot Suggestion",
mode = { "i", "n" },
},
{
"<M-[>",
function() vim.lsp.inline_completion.select({ count = -1 }) end,
desc = "Prev Copilot Suggestion",
mode = { "i", "n" },
},
},
},
},
setup = {
copilot = function()
vim.schedule(function()
vim.lsp.inline_completion.enable()
end)
-- Accept inline suggestions or next edits
LazyVim.cmp.actions.ai_accept = function()
return vim.lsp.inline_completion.get()
end
if not LazyVim.has_extra("ai.sidekick") then
vim.lsp.config("copilot", {
handlers = {
didChangeStatus = function(err, res, ctx)
if err then
return
end
status[ctx.client_id] = res.kind ~= "Normal" and "error" or res.busy and "pending" or "ok"
if res.status == "Error" then
LazyVim.error("Please use `:LspCopilotSignIn` to sign in to Copilot")
end
end,
},
})
end
end,
},
},
},
-- lualine
{
"nvim-lualine/lualine.nvim",
optional = true,
event = "VeryLazy",
opts = function(_, opts)
if LazyVim.has_extra("ai.sidekick") then
return
end
table.insert(
opts.sections.lualine_x,
2,
LazyVim.lualine.status(LazyVim.config.icons.kinds.Copilot, function()
local clients = vim.lsp.get_clients({ name = "copilot", bufnr = 0 })
return #clients > 0 and status[clients[1].id] or nil
end)
)
end,
},
}

View file

@ -25,6 +25,17 @@ return {
}, },
}, },
-- copilot-language-server
{
"neovim/nvim-lspconfig",
opts = {
servers = {
-- copilot.lua only works with its own copilot lsp server
copilot = { enabled = false },
},
},
},
-- add ai_accept action -- add ai_accept action
{ {
"zbirenbaum/copilot.lua", "zbirenbaum/copilot.lua",
@ -59,60 +70,58 @@ return {
end, end,
}, },
vim.g.ai_cmp vim.g.ai_cmp and {
and { -- copilot cmp source
-- copilot cmp source {
"hrsh7th/nvim-cmp",
optional = true,
dependencies = { -- this will only be evaluated if nvim-cmp is enabled
{ {
"hrsh7th/nvim-cmp", "zbirenbaum/copilot-cmp",
optional = true, opts = {},
dependencies = { -- this will only be evaluated if nvim-cmp is enabled config = function(_, opts)
local copilot_cmp = require("copilot_cmp")
copilot_cmp.setup(opts)
-- attach cmp source whenever copilot attaches
-- fixes lazy-loading issues with the copilot cmp source
Snacks.util.lsp.on({ name = "copilot" }, function()
copilot_cmp._on_insert_enter({})
end)
end,
specs = {
{ {
"zbirenbaum/copilot-cmp", "hrsh7th/nvim-cmp",
opts = {}, optional = true,
config = function(_, opts) ---@param opts cmp.ConfigSchema
local copilot_cmp = require("copilot_cmp") opts = function(_, opts)
copilot_cmp.setup(opts) table.insert(opts.sources, 1, {
-- attach cmp source whenever copilot attaches
-- fixes lazy-loading issues with the copilot cmp source
LazyVim.lsp.on_attach(function()
copilot_cmp._on_insert_enter({})
end, "copilot")
end,
specs = {
{
"hrsh7th/nvim-cmp",
optional = true,
---@param opts cmp.ConfigSchema
opts = function(_, opts)
table.insert(opts.sources, 1, {
name = "copilot",
group_index = 1,
priority = 100,
})
end,
},
},
},
},
},
{
"saghen/blink.cmp",
optional = true,
dependencies = { "fang2hou/blink-copilot" },
opts = {
sources = {
default = { "copilot" },
providers = {
copilot = {
name = "copilot", name = "copilot",
module = "blink-copilot", group_index = 1,
score_offset = 100, priority = 100,
async = true, })
}, end,
},
}, },
}, },
}, },
} },
or nil, },
{
"saghen/blink.cmp",
optional = true,
dependencies = { "fang2hou/blink-copilot" },
opts = {
sources = {
default = { "copilot" },
providers = {
copilot = {
name = "copilot",
module = "blink-copilot",
score_offset = 100,
async = true,
},
},
},
},
},
} or nil,
} }

View file

@ -0,0 +1,155 @@
return {
desc = "Next edit suggestions with the Copilot LSP server",
-- copilot-language-server
{
"neovim/nvim-lspconfig",
opts = function(_, opts)
local sk = LazyVim.opts("sidekick.nvim") ---@type sidekick.Config|{}
if vim.tbl_get(sk, "nes", "enabled") ~= false then
opts.servers = opts.servers or {}
opts.servers.copilot = opts.servers.copilot or {}
end
end,
},
-- lualine
{
"nvim-lualine/lualine.nvim",
optional = true,
event = "VeryLazy",
opts = function(_, opts)
local icons = {
Error = { "", "DiagnosticError" },
Inactive = { "", "MsgArea" },
Warning = { "", "DiagnosticWarn" },
Normal = { LazyVim.config.icons.kinds.Copilot, "Special" },
}
table.insert(opts.sections.lualine_x, 2, {
function()
local status = require("sidekick.status").get()
return status and vim.tbl_get(icons, status.kind, 1)
end,
cond = function()
return require("sidekick.status").get() ~= nil
end,
color = function()
local status = require("sidekick.status").get()
local hl = status and (status.busy and "DiagnosticWarn" or vim.tbl_get(icons, status.kind, 2))
return { fg = Snacks.util.color(hl) }
end,
})
table.insert(opts.sections.lualine_x, 2, {
function()
local status = require("sidekick.status").cli()
return "" .. (#status > 1 and #status or "")
end,
cond = function()
return #require("sidekick.status").cli() > 0
end,
color = function()
return { fg = Snacks.util.color("Special") }
end,
})
end,
},
{
"folke/sidekick.nvim",
opts = function()
-- Accept inline suggestions or next edits
LazyVim.cmp.actions.ai_nes = function()
local Nes = require("sidekick.nes")
if Nes.have() and (Nes.jump() or Nes.apply()) then
return true
end
end
Snacks.toggle({
name = "Sidekick NES",
get = function()
return require("sidekick.nes").enabled
end,
set = function(state)
require("sidekick.nes").enable(state)
end,
}):map("<leader>uN")
end,
-- stylua: ignore
keys = {
-- nes is also useful in normal mode
{ "<tab>", LazyVim.cmp.map({ "ai_nes" }, "<tab>"), mode = { "n" }, expr = true },
{ "<leader>a", "", desc = "+ai", mode = { "n", "v" } },
{
"<c-.>",
function() require("sidekick.cli").focus() end,
desc = "Sidekick Focus",
mode = { "n", "t", "i", "x" },
},
{
"<leader>aa",
function() require("sidekick.cli").toggle() end,
desc = "Sidekick Toggle CLI",
},
{
"<leader>as",
function() require("sidekick.cli").select() end,
-- Or to select only installed tools:
-- require("sidekick.cli").select({ filter = { installed = true } })
desc = "Select CLI",
},
{
"<leader>ad",
function() require("sidekick.cli").close() end,
desc = "Detach a CLI Session",
},
{
"<leader>at",
function() require("sidekick.cli").send({ msg = "{this}" }) end,
mode = { "x", "n" },
desc = "Send This",
},
{
"<leader>af",
function() require("sidekick.cli").send({ msg = "{file}" }) end,
desc = "Send File",
},
{
"<leader>av",
function() require("sidekick.cli").send({ msg = "{selection}" }) end,
mode = { "x" },
desc = "Send Visual Selection",
},
{
"<leader>ap",
function() require("sidekick.cli").prompt() end,
mode = { "n", "x" },
desc = "Sidekick Select Prompt",
},
},
},
{
"folke/snacks.nvim",
optional = true,
opts = {
picker = {
actions = {
sidekick_send = function(...)
return require("sidekick.cli.picker.snacks").send(...)
end,
},
win = {
input = {
keys = {
["<a-a>"] = {
"sidekick_send",
mode = { "n", "i" },
},
},
},
},
},
},
},
}

View file

@ -37,9 +37,7 @@ return {
---@type blink.cmp.Config ---@type blink.cmp.Config
opts = { opts = {
snippets = { snippets = {
expand = function(snippet, _) preset = "default",
return LazyVim.cmp.expand(snippet)
end,
}, },
appearance = { appearance = {
@ -85,7 +83,11 @@ return {
cmdline = { cmdline = {
enabled = true, enabled = true,
keymap = { preset = "cmdline" }, keymap = {
preset = "cmdline",
["<Right>"] = false,
["<Left>"] = false,
},
completion = { completion = {
list = { selection = { preselect = false } }, list = { selection = { preselect = false } },
menu = { menu = {
@ -104,6 +106,9 @@ return {
}, },
---@param opts blink.cmp.Config | { sources: { compat: string[] } } ---@param opts blink.cmp.Config | { sources: { compat: string[] } }
config = function(_, opts) config = function(_, opts)
if opts.snippets and opts.snippets.preset == "default" then
opts.snippets.expand = LazyVim.cmp.expand
end
-- setup compat sources -- setup compat sources
local enabled = opts.sources.default local enabled = opts.sources.default
for _, source in ipairs(opts.sources.compat or {}) do for _, source in ipairs(opts.sources.compat or {}) do
@ -122,12 +127,12 @@ return {
if opts.keymap.preset == "super-tab" then -- super-tab if opts.keymap.preset == "super-tab" then -- super-tab
opts.keymap["<Tab>"] = { opts.keymap["<Tab>"] = {
require("blink.cmp.keymap.presets").get("super-tab")["<Tab>"][1], require("blink.cmp.keymap.presets").get("super-tab")["<Tab>"][1],
LazyVim.cmp.map({ "snippet_forward", "ai_accept" }), LazyVim.cmp.map({ "snippet_forward", "ai_nes", "ai_accept" }),
"fallback", "fallback",
} }
else -- other presets else -- other presets
opts.keymap["<Tab>"] = { opts.keymap["<Tab>"] = {
LazyVim.cmp.map({ "snippet_forward", "ai_accept" }), LazyVim.cmp.map({ "snippet_forward", "ai_nes", "ai_accept" }),
"fallback", "fallback",
} }
end end

View file

@ -1,6 +1,6 @@
if lazyvim_docs then if lazyvim_docs then
-- Set to `false` to prevent "non-lsp snippets"" from appearing inside completion windows -- 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 -- Motivation: Less clutter in completion windows and a more direct usage of snippets
vim.g.lazyvim_mini_snippets_in_completion = true vim.g.lazyvim_mini_snippets_in_completion = true
-- NOTE: Please also read: -- NOTE: Please also read:

View file

@ -8,7 +8,7 @@ return {
-- Populate the keys based on the user's options -- Populate the keys based on the user's options
local opts = LazyVim.opts("mini.surround") local opts = LazyVim.opts("mini.surround")
local mappings = { local mappings = {
{ opts.mappings.add, desc = "Add Surrounding", mode = { "n", "v" } }, { opts.mappings.add, desc = "Add Surrounding", mode = { "n", "x" } },
{ opts.mappings.delete, desc = "Delete Surrounding" }, { opts.mappings.delete, desc = "Delete Surrounding" },
{ opts.mappings.find, desc = "Find Right Surrounding" }, { opts.mappings.find, desc = "Find Right Surrounding" },
{ opts.mappings.find_left, desc = "Find Left Surrounding" }, { opts.mappings.find_left, desc = "Find Left Surrounding" },

View file

@ -52,7 +52,7 @@ return {
fallback() fallback()
end, end,
["<tab>"] = function(fallback) ["<tab>"] = function(fallback)
return LazyVim.cmp.map({ "snippet_forward", "ai_accept" }, fallback)() return LazyVim.cmp.map({ "snippet_forward", "ai_nes", "ai_accept" }, fallback)()
end, end,
}), }),
sources = cmp.config.sources({ sources = cmp.config.sources({

View file

@ -5,6 +5,9 @@ return {
desc = "Better Yank/Paste", desc = "Better Yank/Paste",
event = "LazyFile", event = "LazyFile",
opts = { opts = {
system_clipboard = {
sync_with_ring = not vim.env.SSH_CONNECTION,
},
highlight = { timer = 150 }, highlight = { timer = 150 },
}, },
keys = { keys = {

View file

@ -84,7 +84,7 @@ return {
-- stylua: ignore -- stylua: ignore
keys = { keys = {
{ "<leader>du", function() require("dapui").toggle({ }) end, desc = "Dap UI" }, { "<leader>du", function() require("dapui").toggle({ }) end, desc = "Dap UI" },
{ "<leader>de", function() require("dapui").eval() end, desc = "Eval", mode = {"n", "v"} }, { "<leader>de", function() require("dapui").eval() end, desc = "Eval", mode = {"n", "x"} },
}, },
opts = {}, opts = {},
config = function(_, opts) config = function(_, opts)

View file

@ -19,8 +19,8 @@ return {
keys = { keys = {
{ "<C-a>", function() return M.dial(true) end, expr = true, desc = "Increment", mode = {"n", "v"} }, { "<C-a>", function() return M.dial(true) end, expr = true, desc = "Increment", mode = {"n", "v"} },
{ "<C-x>", function() return M.dial(false) end, expr = true, desc = "Decrement", mode = {"n", "v"} }, { "<C-x>", function() return M.dial(false) end, expr = true, desc = "Decrement", mode = {"n", "v"} },
{ "g<C-a>", function() return M.dial(true, true) end, expr = true, desc = "Increment", mode = {"n", "v"} }, { "g<C-a>", function() return M.dial(true, true) end, expr = true, desc = "Increment", mode = {"n", "x"} },
{ "g<C-x>", function() return M.dial(false, true) end, expr = true, desc = "Decrement", mode = {"n", "v"} }, { "g<C-x>", function() return M.dial(false, true) end, expr = true, desc = "Decrement", mode = {"n", "x"} },
}, },
opts = function() opts = function()
local augend = require("dial.augend") local augend = require("dial.augend")
@ -53,20 +53,6 @@ return {
cyclic = true, cyclic = true,
}) })
local weekdays = augend.constant.new({
elements = {
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
},
word = true,
cyclic = true,
})
local months = augend.constant.new({ local months = augend.constant.new({
elements = { elements = {
"January", "January",
@ -86,15 +72,6 @@ return {
cyclic = true, cyclic = true,
}) })
local capitalized_boolean = augend.constant.new({
elements = {
"True",
"False",
},
word = true,
cyclic = true,
})
return { return {
dials_by_ft = { dials_by_ft = {
css = "css", css = "css",
@ -116,11 +93,12 @@ return {
augend.integer.alias.decimal_int, -- nonnegative and negative decimal number augend.integer.alias.decimal_int, -- nonnegative and negative decimal number
augend.integer.alias.hex, -- nonnegative hex number (0x01, 0x1a1f, etc.) augend.integer.alias.hex, -- nonnegative hex number (0x01, 0x1a1f, etc.)
augend.date.alias["%Y/%m/%d"], -- date (2022/02/19, etc.) augend.date.alias["%Y/%m/%d"], -- date (2022/02/19, etc.)
augend.constant.alias.en_weekday, -- Mon, Tue, ..., Sat, Sun
augend.constant.alias.en_weekday_full, -- Monday, Tuesday, ..., Saturday, Sunday
ordinal_numbers, ordinal_numbers,
weekdays,
months, months,
capitalized_boolean,
augend.constant.alias.bool, -- boolean value (true <-> false) augend.constant.alias.bool, -- boolean value (true <-> false)
augend.constant.alias.Bool, -- boolean value (True <-> False)
logical_alias, logical_alias,
}, },
vue = { vue = {

View file

@ -218,6 +218,7 @@ return {
{ "<leader><space>", LazyVim.pick("files"), desc = "Find Files (Root Dir)" }, { "<leader><space>", LazyVim.pick("files"), desc = "Find Files (Root Dir)" },
-- find -- find
{ "<leader>fb", "<cmd>FzfLua buffers sort_mru=true sort_lastused=true<cr>", desc = "Buffers" }, { "<leader>fb", "<cmd>FzfLua buffers sort_mru=true sort_lastused=true<cr>", desc = "Buffers" },
{ "<leader>fB", "<cmd>FzfLua buffers<cr>", desc = "Buffers (all)" },
{ "<leader>fc", LazyVim.pick.config_files(), desc = "Find Config File" }, { "<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"), desc = "Find Files (Root Dir)" },
{ "<leader>fF", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" }, { "<leader>fF", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" },
@ -226,15 +227,19 @@ return {
{ "<leader>fR", LazyVim.pick("oldfiles", { cwd = vim.uv.cwd() }), desc = "Recent (cwd)" }, { "<leader>fR", LazyVim.pick("oldfiles", { cwd = vim.uv.cwd() }), desc = "Recent (cwd)" },
-- git -- git
{ "<leader>gc", "<cmd>FzfLua git_commits<CR>", desc = "Commits" }, { "<leader>gc", "<cmd>FzfLua git_commits<CR>", desc = "Commits" },
{ "<leader>gd", "<cmd>FzfLua git_diff<cr>", desc = "Git Diff (files)" },
{ "<leader>gl", "<cmd>FzfLua git_commits<CR>", desc = "Commits" },
{ "<leader>gs", "<cmd>FzfLua git_status<CR>", desc = "Status" }, { "<leader>gs", "<cmd>FzfLua git_status<CR>", desc = "Status" },
{ "<leader>gS", "<cmd>FzfLua git_stash<cr>", desc = "Git Stash" },
-- search -- search
{ '<leader>s"', "<cmd>FzfLua registers<cr>", desc = "Registers" }, { '<leader>s"', "<cmd>FzfLua registers<cr>", desc = "Registers" },
{ "<leader>s/", "<cmd>FzfLua search_history<cr>", desc = "Search History" },
{ "<leader>sa", "<cmd>FzfLua autocmds<cr>", desc = "Auto Commands" }, { "<leader>sa", "<cmd>FzfLua autocmds<cr>", desc = "Auto Commands" },
{ "<leader>sb", "<cmd>FzfLua grep_curbuf<cr>", desc = "Buffer" }, { "<leader>sb", "<cmd>FzfLua lines<cr>", desc = "Buffer Lines" },
{ "<leader>sc", "<cmd>FzfLua command_history<cr>", desc = "Command History" }, { "<leader>sc", "<cmd>FzfLua command_history<cr>", desc = "Command History" },
{ "<leader>sC", "<cmd>FzfLua commands<cr>", desc = "Commands" }, { "<leader>sC", "<cmd>FzfLua commands<cr>", desc = "Commands" },
{ "<leader>sd", "<cmd>FzfLua diagnostics_document<cr>", desc = "Document Diagnostics" }, { "<leader>sd", "<cmd>FzfLua diagnostics_workspace<cr>", desc = "Diagnostics" },
{ "<leader>sD", "<cmd>FzfLua diagnostics_workspace<cr>", desc = "Workspace Diagnostics" }, { "<leader>sD", "<cmd>FzfLua diagnostics_document<cr>", desc = "Buffer Diagnostics" },
{ "<leader>sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" }, { "<leader>sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" },
{ "<leader>sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" }, { "<leader>sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" },
{ "<leader>sh", "<cmd>FzfLua help_tags<cr>", desc = "Help Pages" }, { "<leader>sh", "<cmd>FzfLua help_tags<cr>", desc = "Help Pages" },
@ -248,8 +253,8 @@ return {
{ "<leader>sq", "<cmd>FzfLua quickfix<cr>", desc = "Quickfix List" }, { "<leader>sq", "<cmd>FzfLua quickfix<cr>", desc = "Quickfix List" },
{ "<leader>sw", LazyVim.pick("grep_cword"), desc = "Word (Root Dir)" }, { "<leader>sw", LazyVim.pick("grep_cword"), desc = "Word (Root Dir)" },
{ "<leader>sW", LazyVim.pick("grep_cword", { root = false }), desc = "Word (cwd)" }, { "<leader>sW", LazyVim.pick("grep_cword", { root = false }), desc = "Word (cwd)" },
{ "<leader>sw", LazyVim.pick("grep_visual"), mode = "v", desc = "Selection (Root Dir)" }, { "<leader>sw", LazyVim.pick("grep_visual"), mode = "x", desc = "Selection (Root Dir)" },
{ "<leader>sW", LazyVim.pick("grep_visual", { root = false }), mode = "v", desc = "Selection (cwd)" }, { "<leader>sW", LazyVim.pick("grep_visual", { root = false }), mode = "x", desc = "Selection (cwd)" },
{ "<leader>uC", LazyVim.pick("colorschemes"), desc = "Colorscheme with Preview" }, { "<leader>uC", LazyVim.pick("colorschemes"), desc = "Colorscheme with Preview" },
{ {
"<leader>ss", "<leader>ss",
@ -284,15 +289,18 @@ return {
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
opts = function() opts = {
local Keys = require("lazyvim.plugins.lsp.keymaps").get() servers = {
-- stylua: ignore -- stylua: ignore
vim.list_extend(Keys, { ["*"] = {
{ "gd", "<cmd>FzfLua lsp_definitions jump1=true ignore_current_line=true<cr>", desc = "Goto Definition", has = "definition" }, keys = {
{ "gr", "<cmd>FzfLua lsp_references jump1=true ignore_current_line=true<cr>", desc = "References", nowait = true }, { "gd", "<cmd>FzfLua lsp_definitions jump1=true ignore_current_line=true<cr>", desc = "Goto Definition", has = "definition" },
{ "gI", "<cmd>FzfLua lsp_implementations jump1=true ignore_current_line=true<cr>", desc = "Goto Implementation" }, { "gr", "<cmd>FzfLua lsp_references jump1=true ignore_current_line=true<cr>", desc = "References", nowait = true },
{ "gy", "<cmd>FzfLua lsp_typedefs jump1=true ignore_current_line=true<cr>", desc = "Goto T[y]pe Definition" }, { "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

@ -12,19 +12,24 @@ return {
-- LSP Keymaps -- LSP Keymaps
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
opts = function() opts = {
local keys = require("lazyvim.plugins.lsp.keymaps").get() servers = {
keys[#keys + 1] = { ["*"] = {
"<leader>cr", keys = {
function() {
local inc_rename = require("inc_rename") "<leader>cr",
return ":" .. inc_rename.config.cmd_name .. " " .. vim.fn.expand("<cword>") function()
end, local inc_rename = require("inc_rename")
expr = true, return ":" .. inc_rename.config.cmd_name .. " " .. vim.fn.expand("<cword>")
desc = "Rename (inc-rename.nvim)", end,
has = "rename", expr = true,
} desc = "Rename (inc-rename.nvim)",
end, has = "rename",
},
},
},
},
},
}, },
--- Noice integration --- Noice integration

View file

@ -4,7 +4,7 @@ return {
-- easily jump to any location and enhanced f/t motions for Leap -- easily jump to any location and enhanced f/t motions for Leap
{ {
"ggandor/flit.nvim", url = "https://codeberg.org/andyg/leap.nvim.git",
enabled = true, enabled = true,
keys = function() keys = function()
---@type LazyKeysSpec[] ---@type LazyKeysSpec[]
@ -17,7 +17,7 @@ return {
opts = { labeled_modes = "nx" }, opts = { labeled_modes = "nx" },
}, },
{ {
"ggandor/leap.nvim", url = "https://codeberg.org/andyg/leap.nvim.git",
enabled = true, enabled = true,
keys = { keys = {
{ "s", mode = { "n", "x", "o" }, desc = "Leap Forward to" }, { "s", mode = { "n", "x", "o" }, desc = "Leap Forward to" },

View file

@ -7,13 +7,11 @@ return {
lazy = true, lazy = true,
init = function() init = function()
vim.g.navic_silence = true vim.g.navic_silence = true
LazyVim.lsp.on_attach(function(client, buffer)
if client:supports_method("textDocument/documentSymbol") then
require("nvim-navic").attach(client, buffer)
end
end)
end, end,
opts = function() opts = function()
Snacks.util.lsp.on({ method = "textDocument/documentSymbol" }, function(buffer, client)
require("nvim-navic").attach(client, buffer)
end)
return { return {
separator = " ", separator = " ",
highlight = true, highlight = true,

View file

@ -8,29 +8,20 @@ return {
}, },
{ {
"stevearc/overseer.nvim", "stevearc/overseer.nvim",
lazy = false, -- plugin is self-lazy-loading
cmd = { cmd = {
"OverseerOpen", "OverseerOpen",
"OverseerClose", "OverseerClose",
"OverseerToggle", "OverseerToggle",
"OverseerSaveBundle",
"OverseerLoadBundle",
"OverseerDeleteBundle",
"OverseerRunCmd",
"OverseerRun", "OverseerRun",
"OverseerInfo",
"OverseerBuild",
"OverseerQuickAction",
"OverseerTaskAction", "OverseerTaskAction",
"OverseerClearCache",
}, },
opts = { opts = {
dap = false, dap = false,
task_list = { task_list = {
bindings = { keymaps = {
["<C-h>"] = false,
["<C-j>"] = false, ["<C-j>"] = false,
["<C-k>"] = false, ["<C-k>"] = false,
["<C-l>"] = false,
}, },
}, },
form = { form = {
@ -38,11 +29,6 @@ return {
winblend = 0, winblend = 0,
}, },
}, },
confirm = {
win_opts = {
winblend = 0,
},
},
task_win = { task_win = {
win_opts = { win_opts = {
winblend = 0, winblend = 0,
@ -51,13 +37,9 @@ return {
}, },
-- stylua: ignore -- stylua: ignore
keys = { keys = {
{ "<leader>ow", "<cmd>OverseerToggle<cr>", desc = "Task list" }, { "<leader>ow", "<cmd>OverseerToggle!<cr>", desc = "Task list" },
{ "<leader>oo", "<cmd>OverseerRun<cr>", desc = "Run task" }, { "<leader>oo", "<cmd>OverseerRun<cr>", desc = "Run task" },
{ "<leader>oq", "<cmd>OverseerQuickAction<cr>", desc = "Action recent task" }, { "<leader>ot", "<cmd>OverseerTaskAction<cr>", desc = "Task action" },
{ "<leader>oi", "<cmd>OverseerInfo<cr>", desc = "Overseer Info" },
{ "<leader>ob", "<cmd>OverseerBuild<cr>", desc = "Task builder" },
{ "<leader>ot", "<cmd>OverseerTaskAction<cr>", desc = "Task action" },
{ "<leader>oc", "<cmd>OverseerClearCache<cr>", desc = "Clear cache" },
}, },
}, },
{ {

View file

@ -1,95 +1,64 @@
local pick = function() if LazyVim.has_extra("editor.refactoring") then
local refactoring = require("refactoring") if vim.fn.has("nvim-0.12") == 0 then
if LazyVim.pick.picker.name == "telescope" then LazyVim.error("refactoring.nvim requires Neovim 0.12 or higher", { title = "refactoring.nvim" })
return require("telescope").extensions.refactoring.refactors() return {}
elseif LazyVim.pick.picker.name == "fzf" then
local fzf_lua = require("fzf-lua")
local results = refactoring.get_refactors()
local opts = {
fzf_opts = {},
fzf_colors = true,
actions = {
["default"] = function(selected)
refactoring.refactor(selected[1])
end,
},
}
fzf_lua.fzf_exec(results, opts)
else
refactoring.select_refactor()
end end
end end
return { return {
{ "lewis6991/async.nvim", lazy = true },
{ {
"ThePrimeagen/refactoring.nvim", "ThePrimeagen/refactoring.nvim",
event = { "BufReadPre", "BufNewFile" }, event = { "BufReadPre", "BufNewFile" },
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
},
keys = { keys = {
{ "<leader>r", "", desc = "+refactor", mode = { "n", "x" } }, { "<leader>r", "", desc = "+refactor", mode = { "n", "x" } },
{ {
"<leader>rs", "<leader>rs",
pick, function()
return require("refactoring").select_refactor()
end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Refactor", desc = "Select Refactor",
}, },
{ {
"<leader>ri", "<leader>ri",
function() function()
return require("refactoring").refactor("Inline Variable") return require("refactoring").inline_var()
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Inline Variable", desc = "Inline Variable",
expr = true, expr = true,
}, },
{
"<leader>rb",
function()
return require("refactoring").refactor("Extract Block")
end,
mode = { "n", "x" },
desc = "Extract Block",
expr = true,
},
{
"<leader>rf",
function()
return require("refactoring").refactor("Extract Block To File")
end,
mode = { "n", "x" },
desc = "Extract Block To File",
expr = true,
},
{ {
"<leader>rP", "<leader>rP",
function() function()
require("refactoring").debug.printf({ below = false }) return require("refactoring.debug").print_loc({ output_location = "below" })
end, end,
desc = "Debug Print", desc = "Debug Print Location",
expr = true,
}, },
{ {
"<leader>rp", "<leader>rp",
function() function()
require("refactoring").debug.print_var({ normal = true }) return require("refactoring.debug").print_var({ output_location = "below" }) .. "iw"
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Debug Print Variable", desc = "Debug Print Variable",
expr = true,
}, },
{ {
"<leader>rc", "<leader>rc",
function() function()
require("refactoring").debug.cleanup({}) return require("refactoring.debug").cleanup({ restore_view = true }) .. "ag"
end, end,
desc = "Debug Cleanup", desc = "Debug Cleanup",
expr = true,
}, },
{ {
"<leader>rf", "<leader>rf",
function() function()
return require("refactoring").refactor("Extract Function") return require("refactoring").extract_func()
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Extract Function", desc = "Extract Function",
@ -98,7 +67,7 @@ return {
{ {
"<leader>rF", "<leader>rF",
function() function()
return require("refactoring").refactor("Extract Function To File") return require("refactoring").extract_func_to_file()
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Extract Function To File", desc = "Extract Function To File",
@ -107,52 +76,13 @@ return {
{ {
"<leader>rx", "<leader>rx",
function() function()
return require("refactoring").refactor("Extract Variable") return require("refactoring").extract_var()
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Extract Variable", desc = "Extract Variable",
expr = true, expr = true,
}, },
{
"<leader>rp",
function()
require("refactoring").debug.print_var()
end,
mode = { "n", "x" },
desc = "Debug Print Variable",
},
}, },
opts = { opts = {},
prompt_func_return_type = {
go = false,
java = false,
cpp = false,
c = false,
h = false,
hpp = false,
cxx = false,
},
prompt_func_param_type = {
go = false,
java = false,
cpp = false,
c = false,
h = false,
hpp = false,
cxx = false,
},
printf_statements = {},
print_var_statements = {},
show_success_message = true, -- shows a message with information about the refactor on success
-- i.e. [Refactor] Inlined 3 variable occurrences
},
config = function(_, opts)
require("refactoring").setup(opts)
if LazyVim.has("telescope.nvim") then
LazyVim.on_load("telescope.nvim", function()
require("telescope").load_extension("refactoring")
end)
end
end,
}, },
} }

View file

@ -73,8 +73,13 @@ return {
{ "<leader>fp", function() Snacks.picker.projects() end, desc = "Projects" }, { "<leader>fp", function() Snacks.picker.projects() end, desc = "Projects" },
-- git -- git
{ "<leader>gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (hunks)" }, { "<leader>gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (hunks)" },
{ "<leader>gD", function() Snacks.picker.git_diff({ base = "origin", group = true }) end, desc = "Git Diff (origin)" },
{ "<leader>gs", function() Snacks.picker.git_status() end, desc = "Git Status" }, { "<leader>gs", function() Snacks.picker.git_status() end, desc = "Git Status" },
{ "<leader>gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" }, { "<leader>gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" },
{ "<leader>gi", function() Snacks.picker.gh_issue() end, desc = "GitHub Issues (open)" },
{ "<leader>gI", function() Snacks.picker.gh_issue({ state = "all" }) end, desc = "GitHub Issues (all)" },
{ "<leader>gp", function() Snacks.picker.gh_pr() end, desc = "GitHub Pull Requests (open)" },
{ "<leader>gP", function() Snacks.picker.gh_pr({ state = "all" }) end, desc = "GitHub Pull Requests (all)" },
-- Grep -- Grep
{ "<leader>sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" }, { "<leader>sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" },
{ "<leader>sB", function() Snacks.picker.grep_buffers() end, desc = "Grep Open Buffers" }, { "<leader>sB", function() Snacks.picker.grep_buffers() end, desc = "Grep Open Buffers" },
@ -134,18 +139,23 @@ return {
}, },
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
opts = function() opts = {
local Keys = require("lazyvim.plugins.lsp.keymaps").get() servers = {
-- stylua: ignore ["*"] = {
vim.list_extend(Keys, { -- stylua: ignore
{ "gd", function() Snacks.picker.lsp_definitions() end, desc = "Goto Definition", has = "definition" }, keys = {
{ "gr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" }, { "gd", function() Snacks.picker.lsp_definitions() end, desc = "Goto Definition", has = "definition" },
{ "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" }, { "gr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" },
{ "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" }, { "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" },
{ "<leader>ss", function() Snacks.picker.lsp_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Symbols", has = "documentSymbol" }, { "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" },
{ "<leader>sS", function() Snacks.picker.lsp_workspace_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Workspace Symbols", has = "workspace/symbols" }, { "<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, { "gai", function() Snacks.picker.lsp_incoming_calls() end, desc = "C[a]lls Incoming", has = "callHierarchy/incomingCalls" },
{ "gao", function() Snacks.picker.lsp_outgoing_calls() end, desc = "C[a]lls Outgoing", has = "callHierarchy/outgoingCalls" },
},
},
},
},
}, },
{ {
"folke/todo-comments.nvim", "folke/todo-comments.nvim",

View file

@ -101,6 +101,7 @@ return {
"<cmd>Telescope buffers sort_mru=true sort_lastused=true ignore_current_buffer=true<cr>", "<cmd>Telescope buffers sort_mru=true sort_lastused=true ignore_current_buffer=true<cr>",
desc = "Buffers", desc = "Buffers",
}, },
{ "<leader>fB", "<cmd>Telescope buffers<cr>", desc = "Buffers (all)" },
{ "<leader>fc", LazyVim.pick.config_files(), desc = "Find Config File" }, { "<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"), desc = "Find Files (Root Dir)" },
{ "<leader>fF", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" }, { "<leader>fF", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" },
@ -109,15 +110,18 @@ return {
{ "<leader>fR", LazyVim.pick("oldfiles", { cwd = vim.uv.cwd() }), desc = "Recent (cwd)" }, { "<leader>fR", LazyVim.pick("oldfiles", { cwd = vim.uv.cwd() }), desc = "Recent (cwd)" },
-- git -- git
{ "<leader>gc", "<cmd>Telescope git_commits<CR>", desc = "Commits" }, { "<leader>gc", "<cmd>Telescope git_commits<CR>", desc = "Commits" },
{ "<leader>gl", "<cmd>Telescope git_commits<CR>", desc = "Commits" },
{ "<leader>gs", "<cmd>Telescope git_status<CR>", desc = "Status" }, { "<leader>gs", "<cmd>Telescope git_status<CR>", desc = "Status" },
{ "<leader>gS", "<cmd>Telescope git_stash<cr>", desc = "Git Stash" },
-- search -- search
{ '<leader>s"', "<cmd>Telescope registers<cr>", desc = "Registers" }, { '<leader>s"', "<cmd>Telescope registers<cr>", desc = "Registers" },
{ "<leader>s/", "<cmd>Telescope search_history<cr>", desc = "Search History" },
{ "<leader>sa", "<cmd>Telescope autocommands<cr>", desc = "Auto Commands" }, { "<leader>sa", "<cmd>Telescope autocommands<cr>", desc = "Auto Commands" },
{ "<leader>sb", "<cmd>Telescope current_buffer_fuzzy_find<cr>", desc = "Buffer" }, { "<leader>sb", "<cmd>Telescope current_buffer_fuzzy_find<cr>", desc = "Buffer Lines" },
{ "<leader>sc", "<cmd>Telescope command_history<cr>", desc = "Command History" }, { "<leader>sc", "<cmd>Telescope command_history<cr>", desc = "Command History" },
{ "<leader>sC", "<cmd>Telescope commands<cr>", desc = "Commands" }, { "<leader>sC", "<cmd>Telescope commands<cr>", desc = "Commands" },
{ "<leader>sd", "<cmd>Telescope diagnostics bufnr=0<cr>", desc = "Document Diagnostics" }, { "<leader>sd", "<cmd>Telescope diagnostics<cr>", desc = "Diagnostics" },
{ "<leader>sD", "<cmd>Telescope diagnostics<cr>", desc = "Workspace Diagnostics" }, { "<leader>sD", "<cmd>Telescope diagnostics bufnr=0<cr>", desc = "Buffer Diagnostics" },
{ "<leader>sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" }, { "<leader>sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" },
{ "<leader>sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" }, { "<leader>sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" },
{ "<leader>sh", "<cmd>Telescope help_tags<cr>", desc = "Help Pages" }, { "<leader>sh", "<cmd>Telescope help_tags<cr>", desc = "Help Pages" },
@ -132,8 +136,8 @@ return {
{ "<leader>sq", "<cmd>Telescope quickfix<cr>", desc = "Quickfix List" }, { "<leader>sq", "<cmd>Telescope quickfix<cr>", desc = "Quickfix List" },
{ "<leader>sw", LazyVim.pick("grep_string", { word_match = "-w" }), desc = "Word (Root Dir)" }, { "<leader>sw", LazyVim.pick("grep_string", { word_match = "-w" }), desc = "Word (Root Dir)" },
{ "<leader>sW", LazyVim.pick("grep_string", { root = false, word_match = "-w" }), desc = "Word (cwd)" }, { "<leader>sW", LazyVim.pick("grep_string", { root = false, word_match = "-w" }), desc = "Word (cwd)" },
{ "<leader>sw", LazyVim.pick("grep_string"), mode = "v", desc = "Selection (Root Dir)" }, { "<leader>sw", LazyVim.pick("grep_string"), mode = "x", desc = "Selection (Root Dir)" },
{ "<leader>sW", LazyVim.pick("grep_string", { root = false }), mode = "v", desc = "Selection (cwd)" }, { "<leader>sW", LazyVim.pick("grep_string", { root = false }), mode = "x", desc = "Selection (cwd)" },
{ "<leader>uC", LazyVim.pick("colorscheme", { enable_preview = true }), desc = "Colorscheme with Preview" }, { "<leader>uC", LazyVim.pick("colorscheme", { enable_preview = true }), desc = "Colorscheme with Preview" },
{ {
"<leader>ss", "<leader>ss",
@ -280,15 +284,18 @@ return {
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
opts = function() opts = {
local Keys = require("lazyvim.plugins.lsp.keymaps").get() servers = {
-- stylua: ignore ["*"] = {
vim.list_extend(Keys, { -- stylua: ignore
{ "gd", function() require("telescope.builtin").lsp_definitions({ reuse_win = true }) end, desc = "Goto Definition", has = "definition" }, keys = {
{ "gr", "<cmd>Telescope lsp_references<cr>", desc = "References", nowait = true }, { "gd", function() require("telescope.builtin").lsp_definitions({ reuse_win = true }) end, desc = "Goto Definition", has = "definition" },
{ "gI", function() require("telescope.builtin").lsp_implementations({ reuse_win = true }) end, desc = "Goto Implementation" }, { "gr", "<cmd>Telescope lsp_references<cr>", desc = "References", nowait = true },
{ "gy", function() require("telescope.builtin").lsp_type_definitions({ reuse_win = true }) end, desc = "Goto T[y]pe Definition" }, { "gI", function() require("telescope.builtin").lsp_implementations({ reuse_win = true }) end, desc = "Goto Implementation" },
}) { "gy", function() require("telescope.builtin").lsp_type_definitions({ reuse_win = true }) end, desc = "Goto T[y]pe Definition" },
end, },
},
},
},
}, },
} }

View file

@ -35,10 +35,10 @@ return {
}, },
setup = { setup = {
angularls = function() angularls = function()
LazyVim.lsp.on_attach(function(client) Snacks.util.lsp.on({ name = "angularls" }, function(_, client)
--HACK: disable angular renaming capability due to duplicate rename popping up --HACK: disable angular renaming capability due to duplicate rename popping up
client.server_capabilities.renameProvider = false client.server_capabilities.renameProvider = false
end, "angularls") end)
end, end,
}, },
}, },

View file

@ -19,13 +19,14 @@ return {
}, },
{ {
"mfussenegger/nvim-ansible", "mfussenegger/nvim-ansible",
ft = {}, ft = { "yaml" },
keys = { keys = {
{ {
"<leader>ta", "<leader>ta",
function() function()
require("ansible").run() require("ansible").run()
end, end,
ft = "yaml.ansible",
desc = "Ansible Run Playbook/Role", desc = "Ansible Run Playbook/Role",
silent = true, silent = true,
}, },

View file

@ -23,8 +23,7 @@ return {
{ {
"p00f/clangd_extensions.nvim", "p00f/clangd_extensions.nvim",
lazy = true, ft = { "c", "cpp", "objc", "objcpp" },
config = function() end,
opts = { opts = {
inlay_hints = { inlay_hints = {
inline = false, inline = false,
@ -60,7 +59,7 @@ return {
-- Ensure mason installs the server -- Ensure mason installs the server
clangd = { clangd = {
keys = { keys = {
{ "<leader>ch", "<cmd>ClangdSwitchSourceHeader<cr>", desc = "Switch Source/Header (C/C++)" }, { "<leader>ch", "<cmd>LspClangdSwitchSourceHeader<cr>", desc = "Switch Source/Header (C/C++)" },
}, },
root_markers = { root_markers = {
"compile_commands.json", "compile_commands.json",
@ -94,13 +93,6 @@ return {
}, },
}, },
}, },
setup = {
clangd = function(_, opts)
local clangd_ext_opts = LazyVim.opts("clangd_extensions.nvim")
require("clangd_extensions").setup(vim.tbl_deep_extend("force", clangd_ext_opts or {}, { server = opts }))
return false
end,
},
}, },
}, },

View file

@ -52,7 +52,6 @@ return {
event = "LazyFile", event = "LazyFile",
config = function(_, _) config = function(_, _)
require("conjure.main").main() require("conjure.main").main()
require("conjure.mapping")["on-filetype"]()
end, end,
init = function() init = function()
-- print color codes if baleia.nvim is available -- print color codes if baleia.nvim is available
@ -76,13 +75,13 @@ return {
end end
vim.keymap.set( vim.keymap.set(
{ "n", "v" }, { "n", "x" },
"[c", "[c",
"<CMD>call search('^; -\\+$', 'bw')<CR>", "<CMD>call search('^; -\\+$', 'bw')<CR>",
{ silent = true, buffer = true, desc = "Jumps to the begining of previous evaluation output." } { silent = true, buffer = true, desc = "Jumps to the begining of previous evaluation output." }
) )
vim.keymap.set( vim.keymap.set(
{ "n", "v" }, { "n", "x" },
"]c", "]c",
"<CMD>call search('^; -\\+$', 'w')<CR>", "<CMD>call search('^; -\\+$', 'w')<CR>",
{ silent = true, buffer = true, desc = "Jumps to the begining of next evaluation output." } { silent = true, buffer = true, desc = "Jumps to the begining of next evaluation output." }

View file

@ -0,0 +1,40 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = "dart",
root = { "pubspec.yaml" },
})
end,
{
"neovim/nvim-lspconfig",
opts = {
servers = {
dartls = {},
},
},
},
{
"nvim-treesitter/nvim-treesitter",
opts = { ensure_installed = { "dart" } },
},
{
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
dart = { "dart_format" },
},
},
},
{
"nvim-neotest/neotest",
optional = true,
dependencies = {
"sidlatau/neotest-dart",
},
opts = {
adapters = {
["neotest-dart"] = {},
},
},
},
}

View file

@ -2,7 +2,14 @@ return {
recommended = function() recommended = function()
return LazyVim.extras.wants({ return LazyVim.extras.wants({
ft = "dockerfile", ft = "dockerfile",
root = { "Dockerfile", "docker-compose.yml", "compose.yml", "docker-compose.yaml", "compose.yaml" }, root = {
"Dockerfile",
"Containerfile",
"docker-compose.yml",
"compose.yml",
"docker-compose.yaml",
"compose.yaml",
},
}) })
end, end,
{ {

View file

@ -1,15 +1,15 @@
return { return {
recommended = function() recommended = function()
return LazyVim.extras.wants({ return LazyVim.extras.wants({
ft = { "cs", "vb" }, ft = { "cs", "vb", "fsharp" },
root = { "*.sln", "*.csproj", "omnisharp.json", "function.json" }, root = { "*.sln", "*.csproj", "*.fsproj", "omnisharp.json", "function.json", "paket.dependencies", "paket.lock" },
}) })
end, end,
{ "Hoffs/omnisharp-extended-lsp.nvim", lazy = true }, { "Hoffs/omnisharp-extended-lsp.nvim", lazy = true },
{ {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
opts = { ensure_installed = { "c_sharp" } }, opts = { ensure_installed = { "c_sharp", "fsharp" } },
}, },
{ {
"nvimtools/none-ls.nvim", "nvimtools/none-ls.nvim",
@ -18,6 +18,7 @@ return {
local nls = require("null-ls") local nls = require("null-ls")
opts.sources = opts.sources or {} opts.sources = opts.sources or {}
table.insert(opts.sources, nls.builtins.formatting.csharpier) table.insert(opts.sources, nls.builtins.formatting.csharpier)
table.insert(opts.sources, nls.builtins.formatting.fantomas)
end, end,
}, },
{ {
@ -26,23 +27,19 @@ return {
opts = { opts = {
formatters_by_ft = { formatters_by_ft = {
cs = { "csharpier" }, cs = { "csharpier" },
}, fsharp = { "fantomas" },
formatters = {
csharpier = {
command = "dotnet-csharpier",
args = { "--write-stdout" },
},
}, },
}, },
}, },
{ {
"mason-org/mason.nvim", "mason-org/mason.nvim",
opts = { ensure_installed = { "csharpier", "netcoredbg" } }, opts = { ensure_installed = { "csharpier", "netcoredbg", "fantomas" } },
}, },
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
opts = { opts = {
servers = { servers = {
fsautocomplete = {},
omnisharp = { omnisharp = {
handlers = { handlers = {
["textDocument/definition"] = function(...) ["textDocument/definition"] = function(...)
@ -104,12 +101,12 @@ return {
"nvim-neotest/neotest", "nvim-neotest/neotest",
optional = true, optional = true,
dependencies = { dependencies = {
"Issafalcon/neotest-dotnet", "Nsidorenco/neotest-vstest",
}, },
opts = { opts = {
adapters = { adapters = {
["neotest-dotnet"] = { ["neotest-vstest"] = {
-- Here we can set options for neotest-dotnet -- Here we can set options for neotest-vstest
}, },
}, },
}, },

View file

@ -16,6 +16,8 @@ return {
function() function()
local params = vim.lsp.util.make_position_params() local params = vim.lsp.util.make_position_params()
LazyVim.lsp.execute({ LazyVim.lsp.execute({
title = "toPipe",
filter = "elixirls",
command = "manipulatePipes:serverid", command = "manipulatePipes:serverid",
arguments = { "toPipe", params.textDocument.uri, params.position.line, params.position.character }, arguments = { "toPipe", params.textDocument.uri, params.position.line, params.position.character },
}) })
@ -27,6 +29,8 @@ return {
function() function()
local params = vim.lsp.util.make_position_params() local params = vim.lsp.util.make_position_params()
LazyVim.lsp.execute({ LazyVim.lsp.execute({
title = "fromPipe",
filter = "elixirls",
command = "manipulatePipes:serverid", command = "manipulatePipes:serverid",
arguments = { "fromPipe", params.textDocument.uri, params.position.line, params.position.character }, arguments = { "fromPipe", params.textDocument.uri, params.position.line, params.position.character },
}) })

View file

@ -0,0 +1,29 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = { "handlebars", "typescript", "javascript", "typescript.glimmer", "javascript.glimmer" },
root = { "ember-cli-build.js" },
})
end,
{
"nvim-treesitter/nvim-treesitter",
opts = { ensure_installed = { "css", "glimmer", "glimmer_javascript", "glimmer_typescript" } },
},
{
"neovim/nvim-lspconfig",
opts = {
servers = {
ember = {},
},
},
},
{
"conform.nvim",
opts = function(_, opts)
if LazyVim.has_extra("formatting.prettier") then
opts.formatters_by_ft = opts.formatters_by_ft or {}
opts.formatters_by_ft.glimmer = { "prettier" }
end
end,
},
}

View file

@ -17,4 +17,13 @@ return {
}, },
}, },
}, },
{
"conform.nvim",
optional = true,
opts = {
formatters_by_ft = {
gleam = { "gleam" },
},
},
},
} }

View file

@ -14,6 +14,9 @@ return {
opts = { opts = {
servers = { servers = {
gopls = { gopls = {
init_options = {
semanticTokens = true,
},
settings = { settings = {
gopls = { gopls = {
gofumpt = true, gofumpt = true,
@ -46,7 +49,6 @@ return {
completeUnimported = true, completeUnimported = true,
staticcheck = true, staticcheck = true,
directoryFilters = { "-.git", "-.vscode", "-.idea", "-.vscode-test", "-node_modules" }, directoryFilters = { "-.git", "-.vscode", "-.idea", "-.vscode-test", "-node_modules" },
semanticTokens = true,
}, },
}, },
}, },
@ -55,8 +57,13 @@ return {
gopls = function(_, opts) gopls = function(_, opts)
-- workaround for gopls not supporting semanticTokensProvider -- workaround for gopls not supporting semanticTokensProvider
-- https://github.com/golang/go/issues/54531#issuecomment-1464982242 -- https://github.com/golang/go/issues/54531#issuecomment-1464982242
LazyVim.lsp.on_attach(function(client, _) Snacks.util.lsp.on({ name = "gopls" }, function(_, client)
if not client.server_capabilities.semanticTokensProvider then if
client.config
and client.config.init_options
and client.config.init_options.semanticTokens
and not client.server_capabilities.semanticTokensProvider
then
local semantic = client.config.capabilities.textDocument.semanticTokens local semantic = client.config.capabilities.textDocument.semanticTokens
client.server_capabilities.semanticTokensProvider = { client.server_capabilities.semanticTokensProvider = {
full = true, full = true,
@ -67,7 +74,7 @@ return {
range = true, range = true,
} }
end end
end, "gopls") end)
-- end workaround -- end workaround
end, end,
}, },
@ -97,6 +104,22 @@ return {
}) })
end, end,
}, },
-- Add linting
{
"mfussenegger/nvim-lint",
optional = true,
dependencies = {
{
"mason-org/mason.nvim",
opts = { ensure_installed = { "golangci-lint" } },
},
},
opts = {
linters_by_ft = {
go = { "golangcilint" },
},
},
},
{ {
"stevearc/conform.nvim", "stevearc/conform.nvim",
optional = true, optional = true,

View file

@ -14,17 +14,40 @@ return {
{ {
"mrcjkb/haskell-tools.nvim", "mrcjkb/haskell-tools.nvim",
version = "^3", version = false,
ft = { "haskell", "lhaskell", "cabal", "cabalproject" }, ft = { "haskell", "lhaskell", "cabal", "cabalproject" },
dependencies = { keys = {
{ "nvim-telescope/telescope.nvim", optional = true }, {
"<localleader>e",
"<cmd>HlsEvalAll<cr>",
ft = "haskell",
desc = "Evaluate All",
},
{
"<localleader>h",
function()
require("haskell-tools").hoogle.hoogle_signature()
end,
ft = "haskell",
desc = "Hoogle Signature",
},
{
"<localleader>r",
function()
require("haskell-tools").repl.toggle()
end,
ft = "haskell",
desc = "REPL (Package)",
},
{
"<localleader>R",
function()
require("haskell-tools").repl.toggle(vim.api.nvim_buf_get_name(0))
end,
ft = "haskell",
desc = "REPL (Buffer)",
},
}, },
config = function()
local ok, telescope = pcall(require, "telescope")
if ok then
telescope.load_extension("ht")
end
end,
}, },
{ {
@ -67,17 +90,48 @@ return {
}, },
{ {
"luc-tielen/telescope_hoogle", "nvim-telescope/telescope.nvim",
ft = { "haskell", "lhaskell", "cabal", "cabalproject" }, optional = true,
dependencies = { specs = {
{ "nvim-telescope/telescope.nvim", optional = true }, {
"luc-tielen/telescope_hoogle",
ft = { "haskell", "lhaskell", "cabal", "cabalproject" },
opts = function()
LazyVim.on_load("telescope.nvim", function()
require("telescope").load_extension("ht")
end)
end,
keys = {
{
"<localleader>H",
"<cmd>Telescope hoogle<cr>",
ft = "haskell",
desc = "Hoogle",
},
},
},
},
},
{
"stevearc/conform.nvim",
optional = true,
opts = {
formatters_by_ft = {
haskell = { "fourmolu" },
cabal = { "cabal_fmt" },
},
},
},
{
"mfussenegger/nvim-lint",
optional = true,
opts = {
linters_by_ft = {
haskell = { "hlint" },
},
}, },
config = function()
local ok, telescope = pcall(require, "telescope")
if ok then
telescope.load_extension("hoogle")
end
end,
}, },
-- Make sure lspconfig doesn't start hls, -- Make sure lspconfig doesn't start hls,

View file

@ -6,7 +6,8 @@ return {
}) })
end, end,
{ "towolf/vim-helm", ft = "helm" }, { "qvalentin/helm-ls.nvim", ft = "helm" },
{ {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
opts = { ensure_installed = { "helm" } }, opts = { ensure_installed = { "helm" } },
@ -18,17 +19,6 @@ return {
servers = { servers = {
helm_ls = {}, helm_ls = {},
}, },
setup = {
yamlls = function()
LazyVim.lsp.on_attach(function(client, buffer)
if vim.bo[buffer].filetype == "helm" then
vim.schedule(function()
vim.cmd("LspStop ++force yamlls")
end)
end
end, "yamlls")
end,
},
}, },
}, },
} }

View file

@ -169,7 +169,9 @@ return {
}, },
settings = opts.settings, settings = opts.settings,
-- enable CMP capabilities -- enable CMP capabilities
capabilities = LazyVim.has("cmp-nvim-lsp") and require("cmp_nvim_lsp").default_capabilities() or nil, capabilities = LazyVim.has("blink.cmp") and require("blink.cmp").get_lsp_capabilities() or LazyVim.has(
"cmp-nvim-lsp"
) and require("cmp_nvim_lsp").default_capabilities() or nil,
}, opts.jdtls) }, opts.jdtls)
-- Existing server will be reused if the root_dir matches. -- Existing server will be reused if the root_dir matches.
@ -207,7 +209,7 @@ return {
}) })
wk.add({ wk.add({
{ {
mode = "v", mode = "x",
buffer = args.buf, buffer = args.buf,
{ "<leader>cx", group = "extract" }, { "<leader>cx", group = "extract" },
{ {

View file

@ -0,0 +1,66 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = { "julia" },
root = { "Project.toml" },
})
end,
{
"nvim-treesitter/nvim-treesitter",
opts = { ensure_installed = { "julia" } },
},
{
"neovim/nvim-lspconfig",
opts = {
servers = {
julials = {
settings = {
-- use the same default settings as the Julia VS Code extension
julia = {
completionmode = "qualify",
lint = { missingrefs = "none" },
},
},
},
},
},
},
-- cmp integration
{
"hrsh7th/nvim-cmp",
optional = true,
dependencies = { "kdheepak/cmp-latex-symbols" },
opts = function(_, opts)
table.insert(opts.sources, {
name = "latex_symbols",
option = {
strategy = 0, -- mixed
},
})
end,
},
-- blink.cmp integration
{
"saghen/blink.cmp",
optional = true,
dependencies = { "kdheepak/cmp-latex-symbols", "saghen/blink.compat" },
opts = {
sources = {
compat = { "latex_symbols" },
providers = {
latex_symbols = {
kind = "LatexSymbols",
async = true,
opts = {
strategy = 0, -- mixed
},
},
},
},
},
},
}

View file

@ -108,7 +108,7 @@ return {
priority = 10, priority = 10,
}, },
-- Redirect Lean's stderr messages somehwere (to a buffer by default) -- Redirect Lean's stderr messages somewhere (to a buffer by default)
stderr = { stderr = {
enable = true, enable = true,
-- height of the window -- height of the window

View file

@ -113,17 +113,8 @@ return {
require("render-markdown").setup(opts) require("render-markdown").setup(opts)
Snacks.toggle({ Snacks.toggle({
name = "Render Markdown", name = "Render Markdown",
get = function() get = require("render-markdown").get,
return require("render-markdown.state").enabled set = require("render-markdown").set,
end,
set = function(enabled)
local m = require("render-markdown")
if enabled then
m.enable()
else
m.disable()
end
end,
}):map("<leader>um") }):map("<leader>um")
end, end,
}, },

View file

@ -24,4 +24,13 @@ return {
}, },
}, },
}, },
{
"mfussenegger/nvim-lint",
optional = true,
opts = {
linters_by_ft = {
nix = { "statix" },
},
},
},
} }

View file

@ -83,4 +83,21 @@ return {
}, },
}, },
}, },
{
"nvim-neotest/neotest",
optional = true,
dependencies = {
"V13Axel/neotest-pest",
"olimorris/neotest-phpunit",
},
opts = {
adapters = {
"neotest-pest",
["neotest-phpunit"] = {
root_ignore_files = { "tests/Pest.php" },
},
},
},
},
} }

View file

@ -38,30 +38,15 @@ return {
logLevel = "error", logLevel = "error",
}, },
}, },
keys = {
{
"<leader>co",
LazyVim.lsp.action["source.organizeImports"],
desc = "Organize Imports",
},
},
},
ruff_lsp = {
keys = {
{
"<leader>co",
LazyVim.lsp.action["source.organizeImports"],
desc = "Organize Imports",
},
},
}, },
ruff_lsp = {},
}, },
setup = { setup = {
[ruff] = function() [ruff] = function()
LazyVim.lsp.on_attach(function(client, _) Snacks.util.lsp.on({ name = ruff }, function(_, client)
-- Disable hover in favor of Pyright -- Disable hover in favor of Pyright
client.server_capabilities.hoverProvider = false client.server_capabilities.hoverProvider = false
end, ruff) end)
end, end,
}, },
}, },
@ -103,11 +88,7 @@ return {
{ "<leader>dPc", function() require('dap-python').test_class() end, desc = "Debug Class", ft = "python" }, { "<leader>dPc", function() require('dap-python').test_class() end, desc = "Debug Class", ft = "python" },
}, },
config = function() config = function()
if vim.fn.has("win32") == 1 then require("dap-python").setup("debugpy-adapter")
require("dap-python").setup(LazyVim.get_pkg_path("debugpy", "/venv/Scripts/pythonw.exe"))
else
require("dap-python").setup(LazyVim.get_pkg_path("debugpy", "/venv/bin/python"))
end
end, end,
}, },
}, },
@ -118,6 +99,7 @@ return {
opts = { opts = {
options = { options = {
notify_user_on_venv_activation = true, notify_user_on_venv_activation = true,
override_notify = false,
}, },
}, },
-- Call config for Python files and load the cached venv automatically -- Call config for Python files and load the cached venv automatically

View file

@ -2,7 +2,7 @@ return {
recommended = function() recommended = function()
return LazyVim.extras.wants({ return LazyVim.extras.wants({
ft = "r", ft = "r",
root = { "*.R", "*.Rmd", "*qmd" }, root = { "*.R", "*.Rmd", "*.qmd" },
}) })
end, end,
{ {
@ -17,12 +17,12 @@ return {
-- of files supported by R.nvim. This is an -- of files supported by R.nvim. This is an
-- opportunity to create mappings local to buffers. -- opportunity to create mappings local to buffers.
vim.keymap.set("n", "<Enter>", "<Plug>RDSendLine", { buffer = true }) vim.keymap.set("n", "<Enter>", "<Plug>RDSendLine", { buffer = true })
vim.keymap.set("v", "<Enter>", "<Plug>RSendSelection", { buffer = true }) vim.keymap.set("x", "<Enter>", "<Plug>RSendSelection", { buffer = true })
local wk = require("which-key") local wk = require("which-key")
wk.add({ wk.add({
buffer = true, buffer = true,
mode = { "n", "v" }, mode = { "n", "x" },
{ "<localleader>a", group = "all" }, { "<localleader>a", group = "all" },
{ "<localleader>b", group = "between marks" }, { "<localleader>b", group = "between marks" },
{ "<localleader>c", group = "chunks" }, { "<localleader>c", group = "chunks" },

View file

@ -85,16 +85,12 @@ return {
}, },
procMacro = { procMacro = {
enable = true, enable = true,
ignored = {
["async-trait"] = { "async_trait" },
["napi-derive"] = { "napi" },
["async-recursion"] = { "async_recursion" },
},
}, },
files = { files = {
excludeDirs = { exclude = {
".direnv", ".direnv",
".git", ".git",
".jj",
".github", ".github",
".gitlab", ".gitlab",
"bin", "bin",
@ -103,6 +99,8 @@ return {
"venv", "venv",
".venv", ".venv",
}, },
-- Avoid Roots Scanned hanging, see https://github.com/rust-lang/rust-analyzer/issues/12613#issuecomment-2096386344
watcher = "client",
}, },
}, },
}, },

View file

@ -11,66 +11,70 @@ return {
}, },
{ {
"scalameta/nvim-metals", "scalameta/nvim-metals",
ft = { "scala", "sbt" }, dependencies = {
config = function() end, "nvim-lua/plenary.nvim",
}, },
{ keys = {
"neovim/nvim-lspconfig", {
opts = { "<leader>me",
servers = { function()
metals = { require("telescope").extensions.metals.commands()
keys = {
{
"<leader>me",
function()
require("telescope").extensions.metals.commands()
end,
desc = "Metals commands",
},
{
"<leader>mc",
function()
require("metals").compile_cascade()
end,
desc = "Metals compile cascade",
},
{
"<leader>mh",
function()
require("metals").hover_worksheet()
end,
desc = "Metals hover worksheet",
},
},
init_options = {
statusBarProvider = "off",
},
settings = {
showImplicitArguments = true,
excludedPackages = { "akka.actor.typed.javadsl", "com.github.swagger.akka.javadsl" },
},
},
},
setup = {
metals = function(_, opts)
local metals = require("metals")
local metals_config = vim.tbl_deep_extend("force", metals.bare_config(), opts)
metals_config.on_attach = LazyVim.has("nvim-dap") and metals.setup_dap or nil
local nvim_metals_group = vim.api.nvim_create_augroup("nvim-metals", { clear = true })
vim.api.nvim_create_autocmd("FileType", {
pattern = { "scala", "sbt" },
callback = function()
metals.initialize_or_attach(metals_config)
end,
group = nvim_metals_group,
})
return true
end, end,
desc = "Metals commands",
},
{
"<leader>mc",
function()
require("metals").compile_cascade()
end,
desc = "Metals compile cascade",
},
{
"<leader>mh",
function()
require("metals").hover_worksheet()
end,
desc = "Metals hover worksheet",
}, },
}, },
}, ft = { "scala", "sbt", "java" },
opts = function()
local metals_config = require("metals").bare_config()
metals_config.init_options.statusBarProvider = "off"
metals_config.settings = {
verboseCompilation = true,
showImplicitArguments = true,
showImplicitConversionsAndClasses = true,
showInferredType = true,
superMethodLensesEnabled = true,
excludedPackages = {
"akka.actor.typed.javadsl",
"org.apache.pekko.actor.typed.javadsl",
"com.github.swagger.akka.javadsl",
},
testUserInterface = "Test Explorer",
}
metals_config.on_attach = function(client, bufnr)
-- your on_attach function
require("metals").setup_dap()
end
return metals_config
end,
config = function(self, metals_config)
local nvim_metals_group = vim.api.nvim_create_augroup("nvim-metals", { clear = true })
vim.api.nvim_create_autocmd("FileType", {
pattern = self.ft,
callback = function()
require("metals").initialize_or_attach(metals_config)
end,
group = nvim_metals_group,
})
end,
},
{ {
"mfussenegger/nvim-dap", "mfussenegger/nvim-dap",
optional = true, optional = true,

View file

@ -0,0 +1,37 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = "solidity",
root = {
"foundry.toml",
"hardhat.config.js",
"hardhat.config.ts",
},
})
end,
-- Add Solidity & related to treesitter
{
"nvim-treesitter/nvim-treesitter",
opts = { ensure_installed = { "solidity" } },
},
-- Correctly setup lspconfig for Solidity
{
"neovim/nvim-lspconfig",
opts = {
servers = {
solidity_ls = {},
},
},
},
-- Formatter for Solidity
{
"stevearc/conform.nvim",
optional = true,
opts = {
formatters_by_ft = {
solidity = { "forge_fmt" },
},
},
},
}

View file

@ -28,6 +28,11 @@ end
local sql_ft = { "sql", "mysql", "plsql" } local sql_ft = { "sql", "mysql", "plsql" }
-- disable nvim default `sql_completion` plugin to be compatible with blink.cmp's omni
-- while still showing some keywords from the syntax autocomplete sources
vim.g.omni_sql_default_compl_type = "syntax"
vim.g.loaded_sql_completion = true
return { return {
recommended = function() recommended = function()
return LazyVim.extras.wants({ return LazyVim.extras.wants({

View file

@ -23,15 +23,7 @@ return {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
opts = { opts = {
servers = { servers = {
svelte = { svelte = {},
keys = {
{
"<leader>co",
LazyVim.lsp.action["source.organizeImports"],
desc = "Organize Imports",
},
},
},
}, },
}, },
}, },

View file

@ -24,6 +24,20 @@ return {
filetypes_include = {}, filetypes_include = {},
-- to fully override the default_config, change the below -- to fully override the default_config, change the below
-- filetypes = {} -- filetypes = {}
-- additional settings for the server, e.g:
-- tailwindCSS = { includeLanguages = { someLang = "html" } }
-- can be addeded to the settings table and will be merged with
-- this defaults for Phoenix projects
settings = {
tailwindCSS = {
includeLanguages = {
elixir = "html-eex",
eelixir = "html-eex",
heex = "html-eex",
},
},
},
}, },
}, },
setup = { setup = {
@ -39,17 +53,6 @@ return {
return not vim.tbl_contains(opts.filetypes_exclude or {}, ft) return not vim.tbl_contains(opts.filetypes_exclude or {}, ft)
end, opts.filetypes) end, opts.filetypes)
-- Additional settings for Phoenix projects
opts.settings = {
tailwindCSS = {
includeLanguages = {
elixir = "html-eex",
eelixir = "html-eex",
heex = "html-eex",
},
},
}
-- Add additional filetypes -- Add additional filetypes
vim.list_extend(opts.filetypes, opts.filetypes_include or {}) vim.list_extend(opts.filetypes, opts.filetypes_include or {})
end, end,

View file

@ -12,7 +12,7 @@ return {
opts = function(_, opts) opts = function(_, opts)
opts.highlight = opts.highlight or {} opts.highlight = opts.highlight or {}
if type(opts.ensure_installed) == "table" then if type(opts.ensure_installed) == "table" then
vim.list_extend(opts.ensure_installed, { "bibtex" }) vim.list_extend(opts.ensure_installed, { "bibtex", "latex" })
end end
if type(opts.highlight.disable) == "table" then if type(opts.highlight.disable) == "table" then
vim.list_extend(opts.highlight.disable, { "latex" }) vim.list_extend(opts.highlight.disable, { "latex" })

View file

@ -0,0 +1,58 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = "twig",
})
end,
{
"nvim-treesitter/nvim-treesitter",
opts = { ensure_installed = { "twig" } },
},
{
"mason-org/mason.nvim",
opts = {
ensure_installed = {
"twigcs",
"twig-cs-fixer",
},
},
},
{
"neovim/nvim-lspconfig",
opts = {
servers = {
twiggy_language_server = {
enabled = true,
},
},
},
},
{
"nvimtools/none-ls.nvim",
optional = true,
opts = function(_, opts)
local nls = require("null-ls")
opts.sources = opts.sources or {}
table.insert(opts.sources, nls.builtins.diagnostics.twigcs)
-- Twig-CS-Fixer builtin not available in none-ls
end,
},
{
"mfussenegger/nvim-lint",
optional = true,
opts = {
linters_by_ft = {
twig = { "twigcs" },
},
},
},
{
"stevearc/conform.nvim",
optional = true,
opts = {
formatters_by_ft = {
twig = { "twig-cs-fixer" },
},
},
},
}

View file

@ -1,3 +1,5 @@
---@module "conform"
---@diagnostic disable: inject-field ---@diagnostic disable: inject-field
if lazyvim_docs then if lazyvim_docs then
-- Enable this option to avoid conflicts with Prettier. -- Enable this option to avoid conflicts with Prettier.
@ -8,6 +10,7 @@ end
local supported = { local supported = {
"astro", "astro",
"css", "css",
"scss",
"graphql", "graphql",
-- "html", -- "html",
"javascript", "javascript",
@ -23,24 +26,35 @@ local supported = {
} }
return { return {
recommended = function()
return LazyVim.extras.wants({
root = { "biome.json", "biome.jsonc" },
})
end,
{ {
"mason-org/mason.nvim", "neovim/nvim-lspconfig",
opts = { ensure_installed = { "biome" } }, opts = {
servers = {
---@type lspconfig.settings.biome
biome = {},
},
},
}, },
{ {
"stevearc/conform.nvim", "stevearc/conform.nvim",
optional = true, optional = true,
---@param opts ConformOpts ---@param opts conform.setupOpts
opts = function(_, opts) opts = function(_, opts)
opts.formatters_by_ft = opts.formatters_by_ft or {} opts.formatters_by_ft = opts.formatters_by_ft or {}
for _, ft in ipairs(supported) do for _, ft in ipairs(supported) do
opts.formatters_by_ft[ft] = opts.formatters_by_ft[ft] or {} opts.formatters_by_ft[ft] = opts.formatters_by_ft[ft] or {}
table.insert(opts.formatters_by_ft[ft], "biome") table.insert(opts.formatters_by_ft[ft], "biome-check")
end end
opts.formatters = opts.formatters or {} opts.formatters = opts.formatters or {}
opts.formatters.biome = { opts.formatters["biome-check"] = {
require_cwd = true, require_cwd = true,
} }
end, end,

View file

@ -0,0 +1,171 @@
if lazyvim_docs then
-- LSP Server to use for TypeScript.
---@type "vtsls" | "tsgo"
vim.g.lazyvim_ts_lsp = "vtsls" -- currently the default
-- To use the newer, much faster `tsgo` LSP server, either:
-- * enable the `tsgo` extra, or
-- * set `vim.g.lazyvim_ts_lsp = "tsgo"` in your `options.lua`
end
local extra = LazyVim.config.register_defaults("ts_lsp", {
{ name = "vtsls", extra = "lang.typescript.vtsls" },
{ name = "tsgo", extra = "lang.typescript.tsgo" },
})
return {
recommended = function()
return LazyVim.extras.wants({
ft = {
"javascript",
"javascriptreact",
"javascript.jsx",
"typescript",
"typescriptreact",
"typescript.tsx",
},
root = { "tsconfig.json", "package.json", "jsconfig.json" },
})
end,
{ import = extra.import },
-- correctly setup lspconfig
{
"neovim/nvim-lspconfig",
opts = function(_, opts)
local lsp = extra.name or "vtsls"
local servers = { "tsserver", "ts_ls", "vtsls", "tsgo", lsp }
for _, server in ipairs(servers) do
opts.servers[server] = opts.servers[server] or {}
opts.servers[server].enabled = server == lsp
end
end,
},
{
"mfussenegger/nvim-dap",
optional = true,
dependencies = {
{
"mason-org/mason.nvim",
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
table.insert(opts.ensure_installed, "js-debug-adapter")
end,
},
},
opts = function()
local dap = require("dap")
for _, adapterType in ipairs({ "node", "chrome", "msedge" }) do
local pwaType = "pwa-" .. adapterType
if not dap.adapters[pwaType] then
dap.adapters[pwaType] = {
type = "server",
host = "localhost",
port = "${port}",
executable = {
command = "js-debug-adapter",
args = { "${port}" },
},
}
end
-- Define adapters without the "pwa-" prefix for VSCode compatibility
if not dap.adapters[adapterType] then
dap.adapters[adapterType] = function(cb, config)
local nativeAdapter = dap.adapters[pwaType]
config.type = pwaType
if type(nativeAdapter) == "function" then
nativeAdapter(cb, config)
else
cb(nativeAdapter)
end
end
end
end
local js_filetypes = { "typescript", "javascript", "typescriptreact", "javascriptreact" }
local vscode = require("dap.ext.vscode")
vscode.type_to_filetypes["node"] = js_filetypes
vscode.type_to_filetypes["pwa-node"] = js_filetypes
for _, language in ipairs(js_filetypes) do
if not dap.configurations[language] then
local runtimeExecutable = nil
if language:find("typescript") then
runtimeExecutable = vim.fn.executable("tsx") == 1 and "tsx" or "ts-node"
end
dap.configurations[language] = {
{
type = "pwa-node",
request = "launch",
name = "Launch file",
program = "${file}",
cwd = "${workspaceFolder}",
sourceMaps = true,
runtimeExecutable = runtimeExecutable,
skipFiles = {
"<node_internals>/**",
"node_modules/**",
},
resolveSourceMapLocations = {
"${workspaceFolder}/**",
"!**/node_modules/**",
},
},
{
type = "pwa-node",
request = "attach",
name = "Attach",
processId = require("dap.utils").pick_process,
cwd = "${workspaceFolder}",
sourceMaps = true,
runtimeExecutable = runtimeExecutable,
skipFiles = {
"<node_internals>/**",
"node_modules/**",
},
resolveSourceMapLocations = {
"${workspaceFolder}/**",
"!**/node_modules/**",
},
},
}
end
end
end,
},
{
"jay-babu/mason-nvim-dap.nvim",
optional = true,
opts = {
-- chrome adapter is deprecated, use js-debug-adapter instead
automatic_installation = { exclude = { "chrome" } },
},
},
-- Filetype icons
{
"nvim-mini/mini.icons",
opts = {
file = {
[".eslintrc.js"] = { glyph = "󰱺", hl = "MiniIconsYellow" },
[".node-version"] = { glyph = "", hl = "MiniIconsGreen" },
[".prettierrc"] = { glyph = "", hl = "MiniIconsPurple" },
[".yarnrc.yml"] = { glyph = "", hl = "MiniIconsBlue" },
["eslint.config.js"] = { glyph = "󰱺", hl = "MiniIconsYellow" },
["package.json"] = { glyph = "", hl = "MiniIconsGreen" },
["tsconfig.json"] = { glyph = "", hl = "MiniIconsAzure" },
["tsconfig.build.json"] = { glyph = "", hl = "MiniIconsAzure" },
["yarn.lock"] = { glyph = "", hl = "MiniIconsBlue" },
},
},
},
}

View file

@ -0,0 +1,68 @@
local supported = {
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"json",
"jsonc",
"vue",
"svelte",
"astro",
}
return {
recommended = function()
return LazyVim.extras.wants({
root = {
".oxlintrc.json",
".oxlintrc.jsonc",
"oxlint.config.ts",
".oxfmtrc.json",
".oxfmtrc.jsonc",
"oxfmt.config.ts",
},
})
end,
{
"neovim/nvim-lspconfig",
opts = {
servers = {
---@type lspconfig.settings.oxlint
oxlint = {
root_dir = function(bufnr, on_dir)
-- prefer the top-level oxlint config if it exists (monorepo support)
local git = vim.fs.root(bufnr, ".git")
local markers = { ".oxlintrc.json", ".oxlintrc.jsonc", "oxlint.config.ts" }
local root = git and vim.fs.root(git, markers) or vim.fs.root(bufnr, markers)
if root then
on_dir(root)
end
end,
settings = {
fixKind = "all",
},
},
--- disable the oxfmt lsp server since we use conform for formatting
oxfmt = { enabled = false },
},
},
},
{
"mason-org/mason.nvim",
opts = { ensure_installed = { "oxfmt" } },
},
{
"stevearc/conform.nvim",
optional = true,
opts = function(_, opts)
opts.formatters_by_ft = opts.formatters_by_ft or {}
for _, ft in ipairs(supported) do
opts.formatters_by_ft[ft] = opts.formatters_by_ft[ft] or {}
table.insert(opts.formatters_by_ft[ft], "oxfmt")
end
end,
},
}

View file

@ -0,0 +1,58 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = {
"javascript",
"javascriptreact",
"javascript.jsx",
"typescript",
"typescriptreact",
"typescript.tsx",
},
root = { "tsconfig.json", "package.json", "jsconfig.json" },
})
end,
-- correctly setup lspconfig
{
"neovim/nvim-lspconfig",
opts = {
-- make sure mason installs the server
servers = {
---@type lspconfig.settings.tsgo
tsgo = {
-- explicitly add default filetypes, so that we can extend
-- them in related extras
filetypes = {
"javascript",
"javascriptreact",
"javascript.jsx",
"typescript",
"typescriptreact",
"typescript.tsx",
},
settings = {
typescript = {
inlayHints = {
enumMemberValues = { enabled = true },
functionLikeReturnTypes = { enabled = false },
parameterNames = {
enabled = "literals",
suppressWhenArgumentMatchesName = true,
},
parameterTypes = { enabled = true },
propertyDeclarationTypes = { enabled = true },
variableTypes = { enabled = false },
},
},
},
},
},
},
},
-- correctly setup lspconfig
{
"neovim/nvim-lspconfig",
opts = {},
},
}

View file

@ -19,14 +19,6 @@ return {
opts = { opts = {
-- make sure mason installs the server -- make sure mason installs the server
servers = { servers = {
--- @deprecated -- tsserver renamed to ts_ls but not yet released, so keep this for now
--- the proper approach is to check the nvim-lspconfig release version when it's released to determine the server name dynamically
tsserver = {
enabled = false,
},
ts_ls = {
enabled = false,
},
vtsls = { vtsls = {
-- explicitly add default filetypes, so that we can extend -- explicitly add default filetypes, so that we can extend
-- them in related extras -- them in related extras
@ -69,7 +61,8 @@ return {
{ {
"gD", "gD",
function() function()
local params = vim.lsp.util.make_position_params() local win = vim.api.nvim_get_current_win()
local params = vim.lsp.util.make_position_params(win, "utf-16")
LazyVim.lsp.execute({ LazyVim.lsp.execute({
command = "typescript.goToSourceDefinition", command = "typescript.goToSourceDefinition",
arguments = { params.textDocument.uri, params.position }, arguments = { params.textDocument.uri, params.position },
@ -89,21 +82,11 @@ return {
end, end,
desc = "File References", desc = "File References",
}, },
{
"<leader>co",
LazyVim.lsp.action["source.organizeImports"],
desc = "Organize Imports",
},
{ {
"<leader>cM", "<leader>cM",
LazyVim.lsp.action["source.addMissingImports.ts"], LazyVim.lsp.action["source.addMissingImports.ts"],
desc = "Add missing imports", desc = "Add missing imports",
}, },
{
"<leader>cu",
LazyVim.lsp.action["source.removeUnused.ts"],
desc = "Remove unused imports",
},
{ {
"<leader>cD", "<leader>cD",
LazyVim.lsp.action["source.fixAll.ts"], LazyVim.lsp.action["source.fixAll.ts"],
@ -112,7 +95,11 @@ return {
{ {
"<leader>cV", "<leader>cV",
function() function()
LazyVim.lsp.execute({ command = "typescript.selectTypeScriptVersion" }) LazyVim.lsp.execute({
title = "Select TypeScript Version",
filter = "vtsls",
command = "typescript.selectTypeScriptVersion",
})
end, end,
desc = "Select TS workspace version", desc = "Select TS workspace version",
}, },
@ -120,40 +107,8 @@ return {
}, },
}, },
setup = { setup = {
--- @deprecated -- tsserver renamed to ts_ls but not yet released, so keep this for now
--- the proper approach is to check the nvim-lspconfig release version when it's released to determine the server name dynamically
tsserver = function()
-- disable tsserver
return true
end,
ts_ls = function()
-- disable tsserver
return true
end,
vtsls = function(_, opts) vtsls = function(_, opts)
if vim.lsp.config.denols and vim.lsp.config.vtsls then Snacks.util.lsp.on({ name = "vtsls" }, function(buffer, client)
---@param server string
local resolve = function(server)
local markers, root_dir = vim.lsp.config[server].root_markers, vim.lsp.config[server].root_dir
vim.lsp.config(server, {
root_dir = function(bufnr, on_dir)
local is_deno = vim.fs.root(bufnr, { "deno.json", "deno.jsonc" }) ~= nil
if is_deno == (server == "denols") then
if root_dir then
return root_dir(bufnr, on_dir)
elseif type(markers) == "table" then
local root = vim.fs.root(bufnr, markers)
return root and on_dir(root)
end
end
end,
})
end
resolve("denols")
resolve("vtsls")
end
LazyVim.lsp.on_attach(function(client, buffer)
client.commands["_typescript.moveToFileRefactoring"] = function(command, ctx) client.commands["_typescript.moveToFileRefactoring"] = function(command, ctx)
---@type string, string, lsp.Range ---@type string, string, lsp.Range
local action, uri, range = unpack(command.arguments) local action, uri, range = unpack(command.arguments)
@ -202,7 +157,7 @@ return {
end) end)
end) end)
end end
end, "vtsls") end)
-- copy typescript settings to javascript -- copy typescript settings to javascript
opts.settings.javascript = opts.settings.javascript =
vim.tbl_deep_extend("force", {}, opts.settings.typescript, opts.settings.javascript or {}) vim.tbl_deep_extend("force", {}, opts.settings.typescript, opts.settings.javascript or {})
@ -211,93 +166,9 @@ return {
}, },
}, },
-- correctly setup lspconfig
{ {
"mfussenegger/nvim-dap", "neovim/nvim-lspconfig",
optional = true, opts = {},
dependencies = {
{
"mason-org/mason.nvim",
opts = function(_, opts)
opts.ensure_installed = opts.ensure_installed or {}
table.insert(opts.ensure_installed, "js-debug-adapter")
end,
},
},
opts = function()
local dap = require("dap")
if not dap.adapters["pwa-node"] then
require("dap").adapters["pwa-node"] = {
type = "server",
host = "localhost",
port = "${port}",
executable = {
command = "node",
-- 💀 Make sure to update this path to point to your installation
args = {
LazyVim.get_pkg_path("js-debug-adapter", "/js-debug/src/dapDebugServer.js"),
"${port}",
},
},
}
end
if not dap.adapters["node"] then
dap.adapters["node"] = function(cb, config)
if config.type == "node" then
config.type = "pwa-node"
end
local nativeAdapter = dap.adapters["pwa-node"]
if type(nativeAdapter) == "function" then
nativeAdapter(cb, config)
else
cb(nativeAdapter)
end
end
end
local js_filetypes = { "typescript", "javascript", "typescriptreact", "javascriptreact" }
local vscode = require("dap.ext.vscode")
vscode.type_to_filetypes["node"] = js_filetypes
vscode.type_to_filetypes["pwa-node"] = js_filetypes
for _, language in ipairs(js_filetypes) do
if not dap.configurations[language] then
dap.configurations[language] = {
{
type = "pwa-node",
request = "launch",
name = "Launch file",
program = "${file}",
cwd = "${workspaceFolder}",
},
{
type = "pwa-node",
request = "attach",
name = "Attach",
processId = require("dap.utils").pick_process,
cwd = "${workspaceFolder}",
},
}
end
end
end,
},
-- Filetype icons
{
"nvim-mini/mini.icons",
opts = {
file = {
[".eslintrc.js"] = { glyph = "󰱺", hl = "MiniIconsYellow" },
[".node-version"] = { glyph = "", hl = "MiniIconsGreen" },
[".prettierrc"] = { glyph = "", hl = "MiniIconsPurple" },
[".yarnrc.yml"] = { glyph = "", hl = "MiniIconsBlue" },
["eslint.config.js"] = { glyph = "󰱺", hl = "MiniIconsYellow" },
["package.json"] = { glyph = "", hl = "MiniIconsGreen" },
["tsconfig.json"] = { glyph = "", hl = "MiniIconsAzure" },
["tsconfig.build.json"] = { glyph = "", hl = "MiniIconsAzure" },
["yarn.lock"] = { glyph = "", hl = "MiniIconsBlue" },
},
},
}, },
} }

View file

@ -0,0 +1,82 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = { "typst" },
})
end,
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = { "typst" },
},
},
{
"neovim/nvim-lspconfig",
opts = {
servers = {
tinymist = {
keys = {
{
"<leader>cP",
function()
local buf_name = vim.api.nvim_buf_get_name(0)
local file_name = vim.fn.fnamemodify(buf_name, ":t")
LazyVim.lsp.execute({
title = "Pin Main",
filter = "tinymist",
command = "tinymist.pinMain",
arguments = { buf_name },
})
LazyVim.info("Tinymist: Pinned " .. file_name)
end,
desc = "Pin main file",
},
},
single_file_support = true, -- Fixes LSP attachment in non-Git directories
settings = {
formatterMode = "typstyle",
},
},
},
},
},
{
"stevearc/conform.nvim",
optional = true,
opts = {
formatters_by_ft = {
typst = { "typstyle", lsp_format = "prefer" },
},
},
},
{
"chomosuke/typst-preview.nvim",
cmd = { "TypstPreview", "TypstPreviewToggle", "TypstPreviewUpdate" },
keys = {
{
"<leader>cp",
ft = "typst",
"<cmd>TypstPreviewToggle<cr>",
desc = "Toggle Typst Preview",
},
},
opts = {
dependencies_bin = {
tinymist = "tinymist",
},
},
},
{
"folke/ts-comments.nvim",
opts = {
lang = {
typst = { "// %s", "/* %s */" },
},
},
},
}

View file

@ -106,6 +106,7 @@ return {
-- stylua: ignore -- stylua: ignore
keys = { keys = {
{"<leader>t", "", desc = "+test"}, {"<leader>t", "", desc = "+test"},
{ "<leader>ta", function() require("neotest").run.attach() end, desc = "Attach to Test (Neotest)" },
{ "<leader>tt", function() require("neotest").run.run(vim.fn.expand("%")) end, desc = "Run File (Neotest)" }, { "<leader>tt", function() require("neotest").run.run(vim.fn.expand("%")) end, desc = "Run File (Neotest)" },
{ "<leader>tT", function() require("neotest").run.run(vim.uv.cwd()) end, desc = "Run All Test Files (Neotest)" }, { "<leader>tT", function() require("neotest").run.run(vim.uv.cwd()) end, desc = "Run All Test Files (Neotest)" },
{ "<leader>tr", function() require("neotest").run.run() end, desc = "Run Nearest (Neotest)" }, { "<leader>tr", function() require("neotest").run.run() end, desc = "Run Nearest (Neotest)" },

View file

@ -32,15 +32,19 @@ return {
end, end,
}) })
Snacks.toggle({ -- schedule setting the mapping to override the default mapping from `keymaps.lua`
name = "Mini Animate", -- seems `keymaps.lua` is the last event to execute on `VeryLazy` and it overwrites it
get = function() vim.schedule(function()
return not vim.g.minianimate_disable Snacks.toggle({
end, name = "Mini Animate",
set = function(state) get = function()
vim.g.minianimate_disable = not state return not vim.g.minianimate_disable
end, end,
}):map("<leader>ua") set = function(state)
vim.g.minianimate_disable = not state
end,
}):map("<leader>ua")
end)
local animate = require("mini.animate") local animate = require("mini.animate")
return vim.tbl_deep_extend("force", opts, { return vim.tbl_deep_extend("force", opts, {

View file

@ -23,6 +23,7 @@ return {
"mason", "mason",
"neo-tree", "neo-tree",
"notify", "notify",
"sidekick_terminal",
"snacks_dashboard", "snacks_dashboard",
"snacks_notif", "snacks_notif",
"snacks_terminal", "snacks_terminal",
@ -44,7 +45,7 @@ return {
end, end,
}, },
-- disable inent-blankline scope when mini-indentscope is enabled -- disable indent-blankline scope when mini-indentscope is enabled
{ {
"lukas-reineke/indent-blankline.nvim", "lukas-reineke/indent-blankline.nvim",
optional = true, optional = true,
@ -54,7 +55,7 @@ return {
}, },
}, },
-- disable snacks scroll when mini-indentscope is enabled -- disable snacks scope when mini-indentscope is enabled
{ {
"snacks.nvim", "snacks.nvim",
opts = { opts = {

View file

@ -5,10 +5,15 @@ local pick_chezmoi = function()
local fzf_lua = require("fzf-lua") local fzf_lua = require("fzf-lua")
local actions = { local actions = {
["enter"] = function(selected) ["enter"] = function(selected)
fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = os.getenv("HOME") }) fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = vim.env.HOME })
end, end,
} }
fzf_lua.files({ cmd = "chezmoi managed --include=files,symlinks", actions = actions }) fzf_lua.files({
cmd = "chezmoi managed --include=files,symlinks",
actions = actions,
cwd = vim.env.HOME,
hidden = false,
})
elseif LazyVim.pick.picker.name == "snacks" then elseif LazyVim.pick.picker.name == "snacks" then
local results = require("chezmoi.commands").list({ local results = require("chezmoi.commands").list({
args = { args = {
@ -50,7 +55,7 @@ return {
"alker0/chezmoi.vim", "alker0/chezmoi.vim",
init = function() init = function()
vim.g["chezmoi#use_tmp_buffer"] = 1 vim.g["chezmoi#use_tmp_buffer"] = 1
vim.g["chezmoi#source_dir_path"] = os.getenv("HOME") .. "/.local/share/chezmoi" vim.g["chezmoi#source_dir_path"] = vim.env.HOME .. "/.local/share/chezmoi"
end, end,
}, },
{ {
@ -80,7 +85,7 @@ return {
init = function() init = function()
-- run chezmoi edit on file enter -- run chezmoi edit on file enter
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, { vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" }, pattern = { vim.env.HOME .. "/.local/share/chezmoi/*" },
callback = function() callback = function()
vim.schedule(require("chezmoi.commands.__edit").watch) vim.schedule(require("chezmoi.commands.__edit").watch)
end, end,

View file

@ -0,0 +1,51 @@
return {
-- depends on the git extra for highlighting and auto-completion of github issues/prs
{ import = "lazyvim.plugins.extras.lang.git" },
{ "ldelossa/litee.nvim", lazy = true },
-- gh.nvim
{
"ldelossa/gh.nvim",
opts = {},
config = function(_, opts)
require("litee.lib").setup()
require("litee.gh").setup(opts)
end,
keys = {
{ "<leader>G", "", desc = "+Github" },
{ "<leader>Gc", "", desc = "+Commits" },
{ "<leader>Gcc", "<cmd>GHCloseCommit<cr>", desc = "Close" },
{ "<leader>Gce", "<cmd>GHExpandCommit<cr>", desc = "Expand" },
{ "<leader>Gco", "<cmd>GHOpenToCommit<cr>", desc = "Open To" },
{ "<leader>Gcp", "<cmd>GHPopOutCommit<cr>", desc = "Pop Out" },
{ "<leader>Gcz", "<cmd>GHCollapseCommit<cr>", desc = "Collapse" },
{ "<leader>Gi", "", desc = "+Issues" },
{ "<leader>Gip", "<cmd>GHPreviewIssue<cr>", desc = "Preview" },
{ "<leader>Gio", "<cmd>GHOpenIssue<cr>", desc = "Open" },
{ "<leader>Gl", "", desc = "+Litee" },
{ "<leader>Glt", "<cmd>LTPanel<cr>", desc = "Toggle Panel" },
{ "<leader>Gp", "", desc = "+Pull Request" },
{ "<leader>Gpc", "<cmd>GHClosePR<cr>", desc = "Close" },
{ "<leader>Gpd", "<cmd>GHPRDetails<cr>", desc = "Details" },
{ "<leader>Gpe", "<cmd>GHExpandPR<cr>", desc = "Expand" },
{ "<leader>Gpo", "<cmd>GHOpenPR<cr>", desc = "Open" },
{ "<leader>Gpp", "<cmd>GHPopOutPR<cr>", desc = "PopOut" },
{ "<leader>Gpr", "<cmd>GHRefreshPR<cr>", desc = "Refresh" },
{ "<leader>Gpt", "<cmd>GHOpenToPR<cr>", desc = "Open To" },
{ "<leader>Gpz", "<cmd>GHCollapsePR<cr>", desc = "Collapse" },
{ "<leader>Gr", "", desc = "+Review" },
{ "<leader>Grb", "<cmd>GHStartReview<cr>", desc = "Begin" },
{ "<leader>Grc", "<cmd>GHCloseReview<cr>", desc = "Close" },
{ "<leader>Grd", "<cmd>GHDeleteReview<cr>", desc = "Delete" },
{ "<leader>Gre", "<cmd>GHExpandReview<cr>", desc = "Expand" },
{ "<leader>Grs", "<cmd>GHSubmitReview<cr>", desc = "Submit" },
{ "<leader>Grz", "<cmd>GHCollapseReview<cr>", desc = "Collapse" },
{ "<leader>Gt", "", desc = "+Threads" },
{ "<leader>Gtc", "<cmd>GHCreateThread<cr>", desc = "Create" },
{ "<leader>Gtn", "<cmd>GHNextThread<cr>", desc = "Next" },
{ "<leader>Gtt", "<cmd>GHToggleThread<cr>", desc = "Toggle" },
},
},
}

View file

@ -39,6 +39,9 @@ M.plugin = {
group = function(_, _, data) group = function(_, _, data)
---@type string ---@type string
local match = data.full_match local match = data.full_match
if match == "#add" then
return
end
local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4) local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4)
local hex_color = "#" .. r .. r .. g .. g .. b .. b local hex_color = "#" .. r .. r .. g .. g .. b .. b

View file

@ -3,6 +3,16 @@ return {
-- depends on the git extra for highlighting and auto-completion of github issues/prs -- depends on the git extra for highlighting and auto-completion of github issues/prs
{ import = "lazyvim.plugins.extras.lang.git" }, { import = "lazyvim.plugins.extras.lang.git" },
{
"folke/snacks.nvim",
keys = { -- disable conflicting keymaps
{ "<leader>gi", false },
{ "<leader>gI", false },
{ "<leader>gp", false },
{ "<leader>gP", false },
},
},
-- Octo -- Octo
{ {
"pwntester/octo.nvim", "pwntester/octo.nvim",

View file

@ -126,7 +126,7 @@ return {
"goolord/alpha-nvim", "goolord/alpha-nvim",
optional = true, optional = true,
opts = function(_, dashboard) opts = function(_, dashboard)
local button = dashboard.button("p", "" .. " Projects", pick) local button = dashboard.button("P", "" .. " Projects (util.project)", pick)
button.opts.hl = "AlphaButtons" button.opts.hl = "AlphaButtons"
button.opts.hl_shortcut = "AlphaShortcut" button.opts.hl_shortcut = "AlphaShortcut"
table.insert(dashboard.section.buttons.val, 4, button) table.insert(dashboard.section.buttons.val, 4, button)
@ -139,7 +139,7 @@ return {
opts = function(_, opts) opts = function(_, opts)
local items = { local items = {
{ {
name = "Projects", name = "Projects (util.project)",
action = pick, action = pick,
section = string.rep(" ", 22) .. "Telescope", section = string.rep(" ", 22) .. "Telescope",
}, },
@ -157,9 +157,9 @@ return {
end end
local projects = { local projects = {
action = pick, action = pick,
desc = " Projects", desc = " Projects (util.project)",
icon = "", icon = "",
key = "p", key = "P",
} }
projects.desc = projects.desc .. string.rep(" ", 43 - #projects.desc) projects.desc = projects.desc .. string.rep(" ", 43 - #projects.desc)
@ -175,9 +175,9 @@ return {
opts = function(_, opts) opts = function(_, opts)
table.insert(opts.dashboard.preset.keys, 3, { table.insert(opts.dashboard.preset.keys, 3, {
action = pick, action = pick,
desc = "Projects", desc = "Projects (util.project)",
icon = "", icon = "",
key = "p", key = "P",
}) })
end, end,
}, },

View file

@ -8,10 +8,11 @@ return {
"mistweaverco/kulala.nvim", "mistweaverco/kulala.nvim",
ft = "http", ft = "http",
keys = { keys = {
{ "<leader>R", "", desc = "+Rest", ft = "http" }, { "<leader>R", "", desc = "+Rest" },
{ "<leader>Rb", "<cmd>lua require('kulala').scratchpad()<cr>", desc = "Open scratchpad", ft = "http" }, { "<leader>Rb", "<cmd>lua require('kulala').scratchpad()<cr>", desc = "Open scratchpad" },
{ "<leader>Rc", "<cmd>lua require('kulala').copy()<cr>", desc = "Copy as cURL", ft = "http" }, { "<leader>Rc", "<cmd>lua require('kulala').copy()<cr>", desc = "Copy as cURL", ft = "http" },
{ "<leader>RC", "<cmd>lua require('kulala').from_curl()<cr>", desc = "Paste from curl", ft = "http" }, { "<leader>RC", "<cmd>lua require('kulala').from_curl()<cr>", desc = "Paste from curl", ft = "http" },
{ "<leader>Re", "<cmd>lua require('kulala').set_selected_env()<cr>", desc = "Set environment", ft = "http" },
{ {
"<leader>Rg", "<leader>Rg",
"<cmd>lua require('kulala').download_graphql_schema()<cr>", "<cmd>lua require('kulala').download_graphql_schema()<cr>",
@ -22,7 +23,7 @@ return {
{ "<leader>Rn", "<cmd>lua require('kulala').jump_next()<cr>", desc = "Jump to next request", ft = "http" }, { "<leader>Rn", "<cmd>lua require('kulala').jump_next()<cr>", desc = "Jump to next request", ft = "http" },
{ "<leader>Rp", "<cmd>lua require('kulala').jump_prev()<cr>", desc = "Jump to previous request", ft = "http" }, { "<leader>Rp", "<cmd>lua require('kulala').jump_prev()<cr>", desc = "Jump to previous request", ft = "http" },
{ "<leader>Rq", "<cmd>lua require('kulala').close()<cr>", desc = "Close window", ft = "http" }, { "<leader>Rq", "<cmd>lua require('kulala').close()<cr>", desc = "Close window", ft = "http" },
{ "<leader>Rr", "<cmd>lua require('kulala').replay()<cr>", desc = "Replay the last request", ft = "http" }, { "<leader>Rr", "<cmd>lua require('kulala').replay()<cr>", desc = "Replay the last request" },
{ "<leader>Rs", "<cmd>lua require('kulala').run()<cr>", desc = "Send the request", ft = "http" }, { "<leader>Rs", "<cmd>lua require('kulala').run()<cr>", desc = "Send the request", ft = "http" },
{ "<leader>RS", "<cmd>lua require('kulala').show_stats()<cr>", desc = "Show stats", ft = "http" }, { "<leader>RS", "<cmd>lua require('kulala').show_stats()<cr>", desc = "Show stats", ft = "http" },
{ "<leader>Rt", "<cmd>lua require('kulala').toggle_view()<cr>", desc = "Toggle headers/body", ft = "http" }, { "<leader>Rt", "<cmd>lua require('kulala').toggle_view()<cr>", desc = "Toggle headers/body", ft = "http" },

View file

@ -23,6 +23,7 @@ local enabled = {
} }
local Config = require("lazy.core.config") local Config = require("lazy.core.config")
local vscode = require("vscode")
Config.options.checker.enabled = false Config.options.checker.enabled = false
Config.options.change_detection.enabled = false Config.options.change_detection.enabled = false
Config.options.defaults.cond = function(plugin) Config.options.defaults.cond = function(plugin)
@ -36,23 +37,30 @@ vim.api.nvim_create_autocmd("User", {
callback = function() callback = function()
-- VSCode-specific keymaps for search and navigation -- VSCode-specific keymaps for search and navigation
vim.keymap.set("n", "<leader><space>", "<cmd>Find<cr>") vim.keymap.set("n", "<leader><space>", "<cmd>Find<cr>")
vim.keymap.set("n", "<leader>/", [[<cmd>lua require('vscode').action('workbench.action.findInFiles')<cr>]]) vim.keymap.set("n", "<leader>/", function()
vim.keymap.set("n", "<leader>ss", [[<cmd>lua require('vscode').action('workbench.action.gotoSymbol')<cr>]]) vscode.call("workbench.action.findInFiles")
end)
vim.keymap.set("n", "<leader>ss", function()
vscode.call("workbench.action.gotoSymbol")
end)
-- Keep undo/redo lists in sync with VsCode -- Toggle VS Code integrated terminal
vim.keymap.set("n", "u", "<Cmd>call VSCodeNotify('undo')<CR>") for _, lhs in ipairs({ "<leader>ft", "<leader>fT", "<c-/>" }) do
vim.keymap.set("n", "<C-r>", "<Cmd>call VSCodeNotify('redo')<CR>") vim.keymap.set("n", lhs, function()
vscode.call("workbench.action.terminal.toggleTerminal")
end)
end
-- Navigate VSCode tabs like lazyvim buffers -- Navigate VSCode tabs like lazyvim buffers
vim.keymap.set("n", "<S-h>", "<Cmd>call VSCodeNotify('workbench.action.previousEditor')<CR>") vim.keymap.set("n", "<S-h>", function()
vim.keymap.set("n", "<S-l>", "<Cmd>call VSCodeNotify('workbench.action.nextEditor')<CR>") vscode.call("workbench.action.previousEditor")
end)
vim.keymap.set("n", "<S-l>", function()
vscode.call("workbench.action.nextEditor")
end)
end, end,
}) })
function LazyVim.terminal()
require("vscode").action("workbench.action.terminal.toggleTerminal")
end
return { return {
{ {
"snacks.nvim", "snacks.nvim",

View file

@ -29,7 +29,7 @@ return {
function() function()
require("conform").format({ formatters = { "injected" }, timeout_ms = 3000 }) require("conform").format({ formatters = { "injected" }, timeout_ms = 3000 })
end, end,
mode = { "n", "v" }, mode = { "n", "x" },
desc = "Format Injected Langs", desc = "Format Injected Langs",
}, },
}, },

View file

@ -7,14 +7,6 @@ if vim.fn.has("nvim-0.11.2") == 0 then
vim.fn.getchar() vim.fn.getchar()
vim.cmd([[quit]]) vim.cmd([[quit]])
return {} return {}
elseif not vim.lsp.is_enabled then
vim.schedule(function()
LazyVim.warn({
"You're using an **old** `nightly` version of **Neovim**",
"Please update to a recent `nightly`,",
"or a stable version (`>= 0.11.2`).",
})
end)
end end
require("lazyvim.config").init() require("lazyvim.config").init()

View file

@ -2,11 +2,12 @@ return {
-- lspconfig -- lspconfig
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
event = "LazyFile", event = { "BufReadPre", "BufNewFile" },
dependencies = { dependencies = {
"mason.nvim", "mason.nvim",
{ "mason-org/mason-lspconfig.nvim", config = function() end }, { "mason-org/mason-lspconfig.nvim", config = function() end },
}, },
opts_extend = { "servers.*.keys" },
opts = function() opts = function()
---@class PluginLspOpts ---@class PluginLspOpts
local ret = { local ret = {
@ -51,15 +52,6 @@ return {
folds = { folds = {
enabled = true, enabled = true,
}, },
-- add any global capabilities here
capabilities = {
workspace = {
fileOperations = {
didRename = true,
willRename = true,
},
},
},
-- options for vim.lsp.buf.format -- options for vim.lsp.buf.format
-- `bufnr` and `filter` is handled by the LazyVim formatter, -- `bufnr` and `filter` is handled by the LazyVim formatter,
-- but can be also overridden when specified -- but can be also overridden when specified
@ -68,9 +60,60 @@ return {
timeout_ms = nil, timeout_ms = nil,
}, },
-- LSP Server Settings -- LSP Server Settings
---@alias lazyvim.lsp.Config vim.lsp.Config|{mason?:boolean, enabled?:boolean} -- Sets the default configuration for an LSP client (or all clients if the special name "*" is used).
---@alias lazyvim.lsp.Config vim.lsp.Config|{mason?:boolean, enabled?:boolean, keys?:LazyKeysLspSpec[]}
---@type table<string, lazyvim.lsp.Config|boolean> ---@type table<string, lazyvim.lsp.Config|boolean>
servers = { servers = {
-- configuration for all lsp servers
["*"] = {
capabilities = {
workspace = {
fileOperations = {
didRename = true,
willRename = true,
},
},
},
-- stylua: ignore
keys = {
{ "<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" },
{ "gy", vim.lsp.buf.type_definition, desc = "Goto T[y]pe Definition" },
{ "gD", vim.lsp.buf.declaration, desc = "Goto Declaration" },
{ "K", function() return vim.lsp.buf.hover() end, desc = "Hover" },
{ "gK", function() return vim.lsp.buf.signature_help() end, desc = "Signature Help", has = "signatureHelp" },
{ "<c-k>", function() return vim.lsp.buf.signature_help() end, mode = "i", desc = "Signature Help", has = "signatureHelp" },
{ "<leader>ca", vim.lsp.buf.code_action, desc = "Code Action", mode = { "n", "x" }, has = "codeAction" },
{ "<leader>cc", vim.lsp.codelens.run, desc = "Run Codelens", mode = { "n", "x" }, has = "codeLens" },
{ "<leader>cC", vim.lsp.codelens.refresh, desc = "Refresh & Display Codelens", mode = { "n" }, has = "codeLens" },
{ "<leader>cR", function() Snacks.rename.rename_file() end, desc = "Rename File", mode ={"n"}, has = { "workspace/didRenameFiles", "workspace/willRenameFiles" } },
{ "<leader>cr", vim.lsp.buf.rename, desc = "Rename", has = "rename" },
{ "<leader>cA", LazyVim.lsp.action.source, desc = "Source Action", has = "codeAction" },
{ "]]", function() Snacks.words.jump(vim.v.count1) end, has = "documentHighlight",
desc = "Next Reference", enabled = function() return Snacks.words.is_enabled() end },
{ "[[", function() Snacks.words.jump(-vim.v.count1) end, has = "documentHighlight",
desc = "Prev Reference", enabled = function() return Snacks.words.is_enabled() end },
{ "<a-n>", function() Snacks.words.jump(vim.v.count1, true) end, has = "documentHighlight",
desc = "Next Reference", enabled = function() return Snacks.words.is_enabled() end },
{ "<a-p>", function() Snacks.words.jump(-vim.v.count1, true) end, has = "documentHighlight",
desc = "Prev Reference", enabled = function() return Snacks.words.is_enabled() end },
{
"<leader>co",
LazyVim.lsp.action["source.organizeImports"],
desc = "Organize Imports",
has = "codeAction",
enabled = function(buf)
local code_actions = vim.tbl_filter(function(action)
return action:find("^source%.organizeImports%.?$")
end, LazyVim.lsp.code_actions({ bufnr = buf }))
return #code_actions > 0
end
},
},
},
stylua = { enabled = false },
lua_ls = { lua_ls = {
-- mason = false, -- set to false if you don't want this server to be installed with mason -- mason = false, -- set to false if you don't want this server to be installed with mason
-- Use this to add any additional keymaps -- Use this to add any additional keymaps
@ -119,21 +162,23 @@ return {
return ret return ret
end, end,
---@param opts PluginLspOpts ---@param opts PluginLspOpts
config = vim.schedule_wrap(function(_, opts) config = function(_, opts)
-- setup autoformat -- setup autoformat
LazyVim.format.register(LazyVim.lsp.formatter()) LazyVim.format.register(LazyVim.lsp.formatter())
-- setup keymaps -- setup keymaps
LazyVim.lsp.on_attach(function(client, buffer) local names = vim.tbl_keys(opts.servers) ---@type string[]
require("lazyvim.plugins.lsp.keymaps").on_attach(client, buffer) table.sort(names)
end) for _, server in ipairs(names) do
local server_opts = opts.servers[server]
LazyVim.lsp.setup() if type(server_opts) == "table" and server_opts.keys then
LazyVim.lsp.on_dynamic_capability(require("lazyvim.plugins.lsp.keymaps").on_attach) require("lazyvim.plugins.lsp.keymaps").set({ name = server ~= "*" and server or nil }, server_opts.keys)
end
end
-- inlay hints -- inlay hints
if opts.inlay_hints.enabled then if opts.inlay_hints.enabled then
LazyVim.lsp.on_supports_method("textDocument/inlayHint", function(client, buffer) Snacks.util.lsp.on({ method = "textDocument/inlayHint" }, function(buffer)
if if
vim.api.nvim_buf_is_valid(buffer) vim.api.nvim_buf_is_valid(buffer)
and vim.bo[buffer].buftype == "" and vim.bo[buffer].buftype == ""
@ -146,7 +191,7 @@ return {
-- folds -- folds
if opts.folds.enabled then if opts.folds.enabled then
LazyVim.lsp.on_supports_method("textDocument/foldingRange", function(client, buffer) Snacks.util.lsp.on({ method = "textDocument/foldingRange" }, function()
if LazyVim.set_default("foldmethod", "expr") then if LazyVim.set_default("foldmethod", "expr") then
LazyVim.set_default("foldexpr", "v:lua.vim.lsp.foldexpr()") LazyVim.set_default("foldexpr", "v:lua.vim.lsp.foldexpr()")
end end
@ -155,7 +200,7 @@ return {
-- code lens -- code lens
if opts.codelens.enabled and vim.lsp.codelens then if opts.codelens.enabled and vim.lsp.codelens then
LazyVim.lsp.on_supports_method("textDocument/codeLens", function(client, buffer) Snacks.util.lsp.on({ method = "textDocument/codeLens" }, function(buffer)
vim.lsp.codelens.refresh() vim.lsp.codelens.refresh()
vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "InsertLeave" }, { vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "InsertLeave" }, {
buffer = buffer, buffer = buffer,
@ -179,7 +224,14 @@ return {
vim.diagnostic.config(vim.deepcopy(opts.diagnostics)) vim.diagnostic.config(vim.deepcopy(opts.diagnostics))
if opts.capabilities then if opts.capabilities then
vim.lsp.config("*", { capabilities = opts.capabilities }) LazyVim.deprecate("lsp-config.opts.capabilities", "Use lsp-config.opts.servers['*'].capabilities instead")
opts.servers["*"] = vim.tbl_deep_extend("force", opts.servers["*"] or {}, {
capabilities = opts.capabilities,
})
end
if opts.servers["*"] then
vim.lsp.config("*", opts.servers["*"])
end end
-- get all the servers that are available through mason-lspconfig -- get all the servers that are available through mason-lspconfig
@ -187,10 +239,13 @@ return {
local mason_all = have_mason local mason_all = have_mason
and vim.tbl_keys(require("mason-lspconfig.mappings").get_mason_map().lspconfig_to_package) and vim.tbl_keys(require("mason-lspconfig.mappings").get_mason_map().lspconfig_to_package)
or {} --[[ @as string[] ]] or {} --[[ @as string[] ]]
local mason_exclude = {}, {} ---@type string[] local mason_exclude = {} ---@type string[]
---@return boolean? exclude automatic setup ---@return boolean? exclude automatic setup
local function configure(server) local function configure(server)
if server == "*" then
return false
end
local sopts = opts.servers[server] local sopts = opts.servers[server]
sopts = sopts == true and {} or (not sopts) and { enabled = false } or sopts --[[@as lazyvim.lsp.Config]] sopts = sopts == true and {} or (not sopts) and { enabled = false } or sopts --[[@as lazyvim.lsp.Config]]
@ -219,7 +274,7 @@ return {
automatic_enable = { exclude = mason_exclude }, automatic_enable = { exclude = mason_exclude },
}) })
end end
end), end,
}, },
-- cmdline tools and lsp servers -- cmdline tools and lsp servers

View file

@ -1,97 +1,65 @@
local M = {} local M = {}
---@type LazyKeysLspSpec[]|nil ---@type LazyKeysLspSpec[]|nil
M._keys = nil M._keys = {}
---@alias LazyKeysLspSpec LazyKeysSpec|{has?:string|string[], cond?:fun():boolean} ---@alias LazyKeysLspSpec LazyKeysSpec|{has?:string|string[], enabled?:(fun(buf:number):boolean)}
---@alias LazyKeysLsp LazyKeys|{has?:string|string[], cond?:fun():boolean} ---@alias LazyKeysLsp LazyKeys|{has?:string|string[], enabled?:fun(buf:number):boolean}
---@deprecated
---@return LazyKeysLspSpec[] ---@return LazyKeysLspSpec[]
function M.get() function M.get()
if M._keys then LazyVim.warn({
return M._keys 'Adding LSP keymaps via `require("lazyvim.plugins.lsp.keymaps").get()` is deprecated.',
end "Please set keymaps via the `keys` field in the LSP server config.",
-- stylua: ignore [[
M._keys = { ```lua
{ "<leader>cl", function() Snacks.picker.lsp_config() end, desc = "Lsp Info" }, {
{ "gd", vim.lsp.buf.definition, desc = "Goto Definition", has = "definition" }, "neovim/nvim-lspconfig",
{ "gr", vim.lsp.buf.references, desc = "References", nowait = true }, opts = {
{ "gI", vim.lsp.buf.implementation, desc = "Goto Implementation" }, servers = {
{ "gy", vim.lsp.buf.type_definition, desc = "Goto T[y]pe Definition" }, ['*'] = {
{ "gD", vim.lsp.buf.declaration, desc = "Goto Declaration" }, keys = {
{ "K", function() return vim.lsp.buf.hover() end, desc = "Hover" }, { "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", has = "definition"},
{ "gK", function() return vim.lsp.buf.signature_help() end, desc = "Signature Help", has = "signatureHelp" }, },
{ "<c-k>", function() return vim.lsp.buf.signature_help() end, mode = "i", desc = "Signature Help", has = "signatureHelp" }, },
{ "<leader>ca", vim.lsp.buf.code_action, desc = "Code Action", mode = { "n", "v" }, has = "codeAction" }, },
{ "<leader>cc", vim.lsp.codelens.run, desc = "Run Codelens", mode = { "n", "v" }, has = "codeLens" }, },
{ "<leader>cC", vim.lsp.codelens.refresh, desc = "Refresh & Display Codelens", mode = { "n" }, has = "codeLens" }, }
{ "<leader>cR", function() Snacks.rename.rename_file() end, desc = "Rename File", mode ={"n"}, has = { "workspace/didRenameFiles", "workspace/willRenameFiles" } }, ```]],
{ "<leader>cr", vim.lsp.buf.rename, desc = "Rename", has = "rename" }, }, { stacktrace = true })
{ "<leader>cA", LazyVim.lsp.action.source, desc = "Source Action", has = "codeAction" }, vim.schedule(function()
{ "]]", function() Snacks.words.jump(vim.v.count1) end, has = "documentHighlight", if #M._keys > 0 then
desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end }, M.set({}, M._keys)
{ "[[", function() Snacks.words.jump(-vim.v.count1) end, has = "documentHighlight", M._keys = {}
desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end }, end
{ "<a-n>", function() Snacks.words.jump(vim.v.count1, true) end, has = "documentHighlight", end)
desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end },
{ "<a-p>", function() Snacks.words.jump(-vim.v.count1, true) end, has = "documentHighlight",
desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end },
}
return M._keys return M._keys
end end
---@param method string|string[] ---@param filter vim.lsp.get_clients.Filter
function M.has(buffer, method) ---@param spec LazyKeysLspSpec[]
if type(method) == "table" then function M.set(filter, spec)
for _, m in ipairs(method) do local Keys = require("lazy.core.handler.keys")
if M.has(buffer, m) then for _, keys in pairs(Keys.resolve(spec)) do
return true ---@cast keys LazyKeysLsp
local filters = {} ---@type vim.lsp.get_clients.Filter[]
if keys.has then
local methods = type(keys.has) == "string" and { keys.has } or keys.has --[[@as string[] ]]
for _, method in ipairs(methods) do
method = method:find("/") and method or ("textDocument/" .. method)
filters[#filters + 1] = vim.tbl_extend("force", vim.deepcopy(filter), { method = method })
end end
else
filters[#filters + 1] = filter
end end
return false
end
method = method:find("/") and method or "textDocument/" .. method
local clients = vim.lsp.get_clients({ bufnr = buffer })
for _, client in ipairs(clients) do
if client:supports_method(method) then
return true
end
end
return false
end
---@return LazyKeysLsp[] for _, f in ipairs(filters) do
function M.resolve(buffer)
local Keys = require("lazy.core.handler.keys")
if not Keys.resolve then
return {}
end
local spec = vim.tbl_extend("force", {}, M.get())
local opts = LazyVim.opts("nvim-lspconfig")
local clients = vim.lsp.get_clients({ bufnr = buffer })
for _, client in ipairs(clients) do
local maps = opts.servers[client.name] and opts.servers[client.name].keys or {}
vim.list_extend(spec, maps)
end
return Keys.resolve(spec)
end
function M.on_attach(_, buffer)
local Keys = require("lazy.core.handler.keys")
local keymaps = M.resolve(buffer)
for _, keys in pairs(keymaps) do
local has = not keys.has or M.has(buffer, keys.has)
local cond = not (keys.cond == false or ((type(keys.cond) == "function") and not keys.cond()))
if has and cond then
local opts = Keys.opts(keys) local opts = Keys.opts(keys)
opts.cond = nil ---@cast opts snacks.keymap.set.Opts
opts.has = nil opts.lsp = f
opts.silent = opts.silent ~= false opts.enabled = keys.enabled
opts.buffer = buffer Snacks.keymap.set(keys.mode or "n", keys.lhs, keys.rhs, opts)
vim.keymap.set(keys.mode or "n", keys.lhs, keys.rhs, opts)
end end
end end
end end

View file

@ -6,6 +6,7 @@ return {
{ {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
branch = "main", branch = "main",
commit = vim.fn.has("nvim-0.12") == 0 and "7caec274fd19c12b55902a5b795100d21531391f" or nil,
version = false, -- last release is way too old and doesn't work on Windows version = false, -- last release is way too old and doesn't work on Windows
build = function() build = function()
local TS = require("nvim-treesitter") local TS = require("nvim-treesitter")
@ -13,20 +14,22 @@ return {
LazyVim.error("Please restart Neovim and run `:TSUpdate` to use the `nvim-treesitter` **main** branch.") LazyVim.error("Please restart Neovim and run `:TSUpdate` to use the `nvim-treesitter` **main** branch.")
return return
end end
LazyVim.treesitter.ensure_treesitter_cli(function() -- make sure we're using the latest treesitter util
package.loaded["lazyvim.util.treesitter"] = nil
LazyVim.treesitter.build(function()
TS.update(nil, { summary = true }) TS.update(nil, { summary = true })
end) end)
end, end,
lazy = vim.fn.argc(-1) == 0, -- load treesitter early when opening a file from the cmdline
event = { "LazyFile", "VeryLazy" }, event = { "LazyFile", "VeryLazy" },
cmd = { "TSUpdate", "TSInstall", "TSLog", "TSUninstall" }, cmd = { "TSUpdate", "TSInstall", "TSLog", "TSUninstall" },
opts_extend = { "ensure_installed" }, opts_extend = { "ensure_installed" },
---@alias lazyvim.TSFeat { enable?: boolean, disable?: string[] }
---@class lazyvim.TSConfig: TSConfig ---@class lazyvim.TSConfig: TSConfig
opts = { opts = {
-- LazyVim config for treesitter -- LazyVim config for treesitter
indent = { enable = true }, indent = { enable = true }, ---@type lazyvim.TSFeat
highlight = { enable = true }, highlight = { enable = true }, ---@type lazyvim.TSFeat
folds = { enable = true }, folds = { enable = true }, ---@type lazyvim.TSFeat
ensure_installed = { ensure_installed = {
"bash", "bash",
"c", "c",
@ -35,7 +38,6 @@ return {
"javascript", "javascript",
"jsdoc", "jsdoc",
"json", "json",
"jsonc",
"lua", "lua",
"luadoc", "luadoc",
"luap", "luap",
@ -89,7 +91,7 @@ return {
return not LazyVim.treesitter.have(lang) return not LazyVim.treesitter.have(lang)
end, opts.ensure_installed or {}) end, opts.ensure_installed or {})
if #install > 0 then if #install > 0 then
LazyVim.treesitter.ensure_treesitter_cli(function() LazyVim.treesitter.build(function()
TS.install(install, { summary = true }):await(function() TS.install(install, { summary = true }):await(function()
LazyVim.treesitter.get_installed(true) -- refresh the installed langs LazyVim.treesitter.get_installed(true) -- refresh the installed langs
end) end)
@ -99,22 +101,32 @@ return {
vim.api.nvim_create_autocmd("FileType", { vim.api.nvim_create_autocmd("FileType", {
group = vim.api.nvim_create_augroup("lazyvim_treesitter", { clear = true }), group = vim.api.nvim_create_augroup("lazyvim_treesitter", { clear = true }),
callback = function(ev) callback = function(ev)
if not LazyVim.treesitter.have(ev.match) then local ft, lang = ev.match, vim.treesitter.language.get_lang(ev.match)
if not LazyVim.treesitter.have(ft) then
return return
end end
---@param feat string
---@param query string
local function enabled(feat, query)
local f = opts[feat] or {} ---@type lazyvim.TSFeat
return f.enable ~= false
and not (type(f.disable) == "table" and vim.tbl_contains(f.disable, lang))
and LazyVim.treesitter.have(ft, query)
end
-- highlighting -- highlighting
if vim.tbl_get(opts, "highlight", "enable") ~= false then if enabled("highlight", "highlights") then
pcall(vim.treesitter.start) pcall(vim.treesitter.start, ev.buf)
end end
-- indents -- indents
if vim.tbl_get(opts, "indent", "enable") ~= false and LazyVim.treesitter.have(ev.match, "indents") then if enabled("indent", "indents") then
LazyVim.set_default("indentexpr", "v:lua.LazyVim.treesitter.indentexpr()") LazyVim.set_default("indentexpr", "v:lua.LazyVim.treesitter.indentexpr()")
end end
-- folds -- folds
if vim.tbl_get(opts, "folds", "enable") ~= false and LazyVim.treesitter.have(ev.match, "folds") then if enabled("folds", "folds") then
if LazyVim.set_default("foldmethod", "expr") then if LazyVim.set_default("foldmethod", "expr") then
LazyVim.set_default("foldexpr", "v:lua.LazyVim.treesitter.foldexpr()") LazyVim.set_default("foldexpr", "v:lua.LazyVim.treesitter.foldexpr()")
end end
@ -128,38 +140,19 @@ return {
"nvim-treesitter/nvim-treesitter-textobjects", "nvim-treesitter/nvim-treesitter-textobjects",
branch = "main", branch = "main",
event = "VeryLazy", event = "VeryLazy",
opts = {}, opts = {
keys = function() move = {
local moves = { enable = true,
goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer", ["]a"] = "@parameter.inner" }, set_jumps = true, -- whether to set jumps in the jumplist
goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer", ["]A"] = "@parameter.inner" }, -- LazyVim extention to create buffer-local keymaps
goto_previous_start = { ["[f"] = "@function.outer", ["[c"] = "@class.outer", ["[a"] = "@parameter.inner" }, keys = {
goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer", ["[A"] = "@parameter.inner" }, goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer", ["]a"] = "@parameter.inner" },
} goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer", ["]A"] = "@parameter.inner" },
local ret = {} ---@type LazyKeysSpec[] goto_previous_start = { ["[f"] = "@function.outer", ["[c"] = "@class.outer", ["[a"] = "@parameter.inner" },
for method, keymaps in pairs(moves) do goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer", ["[A"] = "@parameter.inner" },
for key, query in pairs(keymaps) do },
local desc = query:gsub("@", ""):gsub("%..*", "") },
desc = desc:sub(1, 1):upper() .. desc:sub(2) },
desc = (key:sub(1, 1) == "[" and "Prev " or "Next ") .. desc
desc = desc .. (key:sub(2, 2) == key:sub(2, 2):upper() and " End" or " Start")
ret[#ret + 1] = {
key,
function()
-- don't use treesitter if in diff mode and the key is one of the c/C keys
if vim.wo.diff and key:find("[cC]") then
return vim.cmd("normal! " .. key)
end
require("nvim-treesitter-textobjects.move")[method](query, "textobjects")
end,
desc = desc,
mode = { "n", "x", "o" },
silent = true,
}
end
end
return ret
end,
config = function(_, opts) config = function(_, opts)
local TS = require("nvim-treesitter-textobjects") local TS = require("nvim-treesitter-textobjects")
if not TS.setup then if not TS.setup then
@ -167,6 +160,48 @@ return {
return return
end end
TS.setup(opts) TS.setup(opts)
local function attach(buf)
local ft = vim.bo[buf].filetype
if not (vim.tbl_get(opts, "move", "enable") and LazyVim.treesitter.have(ft, "textobjects")) then
return
end
---@type table<string, table<string, string>>
local moves = vim.tbl_get(opts, "move", "keys") or {}
for method, keymaps in pairs(moves) do
for key, query in pairs(keymaps) do
local queries = type(query) == "table" and query or { query }
local parts = {}
for _, q in ipairs(queries) do
local part = q:gsub("@", ""):gsub("%..*", "")
part = part:sub(1, 1):upper() .. part:sub(2)
table.insert(parts, part)
end
local desc = table.concat(parts, " or ")
desc = (key:sub(1, 1) == "[" and "Prev " or "Next ") .. desc
desc = desc .. (key:sub(2, 2) == key:sub(2, 2):upper() and " End" or " Start")
vim.keymap.set({ "n", "x", "o" }, key, function()
if vim.wo.diff and key:find("[cC]") then
return vim.cmd("normal! " .. key)
end
require("nvim-treesitter-textobjects.move")[method](query, "textobjects")
end, {
buffer = buf,
desc = desc,
silent = true,
})
end
end
end
vim.api.nvim_create_autocmd("FileType", {
group = vim.api.nvim_create_augroup("lazyvim_treesitter_textobjects", { clear = true }),
callback = function(ev)
attach(ev.buf)
end,
})
vim.tbl_map(attach, vim.api.nvim_list_bufs())
end, end,
}, },

View file

@ -15,6 +15,7 @@ return {
{ "]b", "<cmd>BufferLineCycleNext<cr>", desc = "Next Buffer" }, { "]b", "<cmd>BufferLineCycleNext<cr>", desc = "Next Buffer" },
{ "[B", "<cmd>BufferLineMovePrev<cr>", desc = "Move buffer prev" }, { "[B", "<cmd>BufferLineMovePrev<cr>", desc = "Move buffer prev" },
{ "]B", "<cmd>BufferLineMoveNext<cr>", desc = "Move buffer next" }, { "]B", "<cmd>BufferLineMoveNext<cr>", desc = "Move buffer next" },
{ "<leader>bj", "<cmd>BufferLinePick<cr>", desc = "Pick Buffer" },
}, },
opts = { opts = {
options = { options = {

View file

@ -23,6 +23,8 @@ return {
nav_j = { "<C-j>", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" }, nav_j = { "<C-j>", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" },
nav_k = { "<C-k>", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" }, nav_k = { "<C-k>", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" },
nav_l = { "<C-l>", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" }, nav_l = { "<C-l>", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" },
hide_slash = { "<C-/>", "hide", desc = "Hide Terminal", mode = "t" },
hide_underscore = { "<c-_>", "hide", desc = "which_key_ignore", mode = "t" },
}, },
}, },
}, },

View file

@ -5,8 +5,9 @@ local prios = {
["lazyvim.plugins.extras.coding.nvim-cmp"] = 2, ["lazyvim.plugins.extras.coding.nvim-cmp"] = 2,
["lazyvim.plugins.extras.editor.neo-tree"] = 2, ["lazyvim.plugins.extras.editor.neo-tree"] = 2,
["lazyvim.plugins.extras.ui.edgy"] = 3, ["lazyvim.plugins.extras.ui.edgy"] = 3,
["lazyvim.plugins.extras.lang.typescript"] = 5, ["lazyvim.plugins.extras.ai.copilot-native"] = 4,
["lazyvim.plugins.extras.coding.blink"] = 5, ["lazyvim.plugins.extras.coding.blink"] = 5,
["lazyvim.plugins.extras.lang.typescript"] = 5,
["lazyvim.plugins.extras.formatting.prettier"] = 10, ["lazyvim.plugins.extras.formatting.prettier"] = 10,
-- default core extra priority is 20 -- default core extra priority is 20
-- default priority is 50 -- default priority is 50
@ -24,12 +25,29 @@ end
local extras = {} ---@type string[] local extras = {} ---@type string[]
local defaults = LazyVim.config.get_defaults() local defaults = LazyVim.config.get_defaults()
local changed = false
local updated = {} ---@type string[]
-- Add extras from LazyExtras that are not disabled -- Add extras from LazyExtras that are not disabled
for _, extra in ipairs(LazyVim.config.json.data.extras) do for _, extra in ipairs(LazyVim.config.json.data.extras) do
local def = defaults[extra] if LazyVim.plugin.renamed_extras[extra] then
if not (def and def.enabled == false) then extra = LazyVim.plugin.renamed_extras[extra]
extras[#extras + 1] = extra changed = true
end end
if LazyVim.plugin.deprecated_extras[extra] then
changed = true
else
updated[#updated + 1] = extra
local def = defaults[extra]
if not (def and def.enabled == false) then
extras[#extras + 1] = extra
end
end
end
if changed then
LazyVim.config.json.data.extras = updated
LazyVim.json.save()
end end
-- Add default extras -- Add default extras

View file

@ -6,6 +6,22 @@ M.moved = {
rename_file = { "Snacks.rename.rename_file" }, rename_file = { "Snacks.rename.rename_file" },
on_rename = { "Snacks.rename.on_rename_file" }, on_rename = { "Snacks.rename.on_rename_file" },
words = { "Snacks.words" }, words = { "Snacks.words" },
on_supports_method = {
"Snacks.util.lsp.on",
fn = function(method, cb)
return Snacks.util.lsp.on({ method = method }, function(buffer, client)
cb(client, buffer)
end)
end,
},
on_attach = {
"Snacks.util.lsp.on",
fn = function(cb, name)
return Snacks.util.lsp.on({ name = name }, function(buffer, client)
cb(client, buffer)
end)
end,
},
}, },
terminal = { terminal = {
open = { "Snacks.terminal" }, open = { "Snacks.terminal" },

View file

@ -65,7 +65,7 @@ function M.get()
if root then if root then
LazyVim.walk(root, function(path, name, type) LazyVim.walk(root, function(path, name, type)
if (type == "file" or type == "link") and name:match("%.lua$") then if (type == "file" or type == "link") and name:match("%.lua$") then
name = path:sub(#root + 2, -5):gsub("/", ".") name = path:sub(#root + 2, -5):gsub("/", "."):gsub("%.init$", "")
local ok, extra = pcall(M.get_extra, source, source.module .. "." .. name) local ok, extra = pcall(M.get_extra, source, source.module .. "." .. name)
if ok then if ok then
extras[#extras + 1] = extra extras[#extras + 1] = extra
@ -115,6 +115,13 @@ function M.get_extra(source, modname)
recommended = M.wants(recommended) recommended = M.wants(recommended)
end end
-- language extras that are disabled because a conflict with another extra is enabled are not recommended
local defaults = LazyVim.config.get_defaults()
local def = defaults[modname]
if def and def.enabled == false and vim.startswith(modname, "lazyvim.plugins.extras.lang.") then
recommended = false
end
---@type LazyExtra ---@type LazyExtra
return { return {
source = source, source = source,

View file

@ -221,7 +221,7 @@ function M.safe_keymap_set(mode, lhs, rhs, opts)
---@diagnostic disable-next-line: no-unknown ---@diagnostic disable-next-line: no-unknown
opts.remap = nil opts.remap = nil
end end
vim.keymap.set(modes, lhs, rhs, opts) Snacks.keymap.set(modes, lhs, rhs, opts)
end end
end end

Some files were not shown because too many files have changed in this diff Show more