Commit Graph

179 Commits

Author SHA1 Message Date
Folke Lemaitre
1a40162714 fix(lsp.keymaps): make cond -> enabled work again. Closes #6697 2025-10-26 12:21:22 +01: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
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
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
Folke Lemaitre
8a76098461 style(lsp): typo 2025-09-23 13:06:34 +02:00
Folke Lemaitre
37b1ec41ae fix(lsp): fix mason install/exclude. Closes #6504 2025-09-23 12:58:45 +02:00
Folke Lemaitre
a90b56518f fix(lsp): fixup for when not using mason 2025-09-21 12:35:17 +02:00
Folke Lemaitre
16637dd655 refactor(lsp): cleanup lsp/mason-lspconfig code 2025-09-21 12:34:27 +02:00
Folke Lemaitre
775621ac0a fix(vtsls): fix and move denols/vtsls disambigutaion to typescript extra. Fixes #6476 2025-09-21 11:58:59 +02:00
Folke Lemaitre
3ca7b47365 feat(core): relax hard requirement for vim.lsp.is_enabled. Show warning instead 2025-09-19 08:11:38 +02:00
Folke Lemaitre
ccbaf55c2f feat(options): don't overwrite indentexpr/foldexpr/foldmethod when set by plugins. Fixes #6464 2025-09-18 22:19:03 +02:00
Folke Lemaitre
75a3809e15 fix(lsp): schedule_wrap setting up LSPs to work around root cause of #6456. Fixes #6456 2025-09-18 13:52:07 +02:00
Folke Lemaitre
b93303d233 feat(treesitter): refactored setting up treesitter indent/highlight/folds 2025-09-18 09:49:54 +02:00
Folke Lemaitre
5e2c4e62f2 feat(lsp): enable LSP folds when available 2025-09-17 08:11:33 +02:00
Folke Lemaitre
64ee23f38f style: remove references to Neovim 0.10 2025-09-17 07:14:37 +02:00
Folke Lemaitre
f4e64eea45 refactor(lsp): remove LazyVim.lsp.get_clients 2025-09-16 17:34:17 +02:00
Folke Lemaitre
9fa832dc95 fix(lsp): properly register capabilities with new vim.lsp.config. Not needed for blink 2025-09-16 15:41:21 +02:00
Folke Lemaitre
2f75d9a90f fix(lsp): properly ambiguate denols vs vtsls 2025-09-15 21:00:19 +02:00
Folke Lemaitre
23b9cdeb34 fix(lspconfig): remove all references to lspconfig. Closes #6426 2025-09-15 20:42:10 +02:00
Folke Lemaitre
0d27e89a36 refactor(lsp): cleanup lsp config 2025-09-15 16:28:46 +02:00
Iordanis Petkakis
773f28b491 fix(mason): migrate to mason v2 (#6053)
## Description
`mason-lspconfig` v2 made changes to conform with latest Neovim
`vim.lsp.config`/`vim.lsp.enable` API.

- Lock `mason` and `mason-lspconfig` to v1 versions for Neovim <0.11 and
latest HEAD for Neovim >=0.11.
- Change `:get_install_path()` method in LazyVim to use
`LazyVim.get_pkg_path()` and also update name references to new ones.
- Change `nvim-lspconfig` from `LazyFile` to `{ "BufReadPre",
"BufNewFile", "BufWritePre" }` for Neovim >=0.11, since on `BufReadPost`
the LSP would not attach on the first buffer. Previously the
`setup.handlers()` function from `mason-lspconfig` would take care of
that, but that has been removed on v2. I fail to think if there's a
better way to handle this.

Most of the changes in `/lsp/init.lua` are thanks to @williamboman
comment
[here](https://github.com/LazyVim/LazyVim/pull/6041#issuecomment-2857266471).

I've also seen that both `mason-lspconfig` and `rustaceanvim` now have
as minimum requirements Neovim >=0.11.
As such I would suggest, instead of all the conditional checks for
Neovim versions to create a stable release where we pin `mason` and
`mason-lspconfig` to v1 versions and then only incorporate William's
suggestions in a new release and mention in the README that users who
are on Neovim <0.11 should use the stable release where the plugin
versions are pinned to v1. Not sure how you want to tackle this, so this
is merely just a suggestion from my part.

Both #6041 and #6045 tackle only with the new name references and the
offending line that was causing the error, but don't take into
consideration the LSP servers configurations. `opts.setup` would not
execute on both, since that was handled by `setup_handlers()` function
in the past. I checked with Typescript lang and with those PRs there are
no Javascript settings in `vtsls` (by checking with
`:=LazyVim.opts("nvim-lspconfig").servers.vtsls`).
#6045 also tried to change the method `:get_install_pkg()` by using
`vim.fn.exepath`, but to my understanding that only returns the binary
path not the package installation path and that is later concatenated to
find other paths, which I believe is not correct.

PS: There are 2 commits, because my LazyVim fork was not up to date and
updated it and then merged the branch I had into a new branch. Sorry if
that causes any inconvenience.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #6039
<!--
  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: Folke Lemaitre <folke.lemaitre@gmail.com>
Co-authored-by: William Boman <william@redwill.se>
Co-authored-by: Luis Durão <kpvrzlzzx@mozmail.com>
2025-09-15 12:08:19 +02:00
Folke Lemaitre
a7a94c50ac refactor: remove all <0.11 compat code 2025-09-15 11:16:53 +02:00
Folke Lemaitre
bed725a054 fix(lsp): fixed deprecated warnings 2025-09-15 07:44:02 +02:00
Folke Lemaitre
c20c402295 fix(mason): rename and pin to v1 2025-05-12 10:39:04 +02:00
Folke Lemaitre
7529773371 feat(lsp): use lsp_config picker instead of LspInfo 2025-02-11 14:00:03 +01:00
Folke Lemaitre
0b6d1c0050 style(lsp): remove refs to document_highlight, which is no longer used 2024-12-16 17:47:07 +01:00
Tim Macfarlane
85e4118065 fix(lsp): don't leak keymaps from LSP server configs (#4849)
## Description

I found an issue where if I'm editing files of different types, say for
example `.cs` and `.py` files, they will naturally load the
corresponding LSPs for each language. However, if one of those LSPs has
keys defined in their `server` config section, then those key maps will
leak into the other, so in this case, the `gd` (go to definition)
mapping intended for `.cs` buffers is now present in `.py` buffers,
causing it not to work. This is currently the case with the `omnisharp`
LSP, as it defines a `gd` key map, see:
63150fa4c5/lua/lazyvim/plugins/extras/lang/omnisharp.lua (L53-L61)

The fix here is to shallow clone the "global" LSP keymaps before adding
the LSP server-specific keymaps so the LSP keymaps aren't added to the
global ones.

## Related Issue(s)

## Screenshots

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-11-25 14:59:55 +01:00
Matthew Sia
deb9fd85b1 fix(lsp): wrap signature_help (#4791)
## Description

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

Related to 7616816.
Without wrap `lsp_doc_border` does not work

## 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.
2024-11-14 20:32:52 +01:00
Folke Lemaitre
76168166e5 fix(lsp): wrap hover and signature_help 2024-11-08 16:55:40 +01:00
Folke Lemaitre
2f4697443c feat(core)!: move a bunch of LazyVim features to snacks.nvim (#4706)
## Description

LazyVim comes with a bunch of smaller QoL plugin like features, but it's
not easy for non LazyVim users to use them.

That's why I started working on
[snacks.nvim](https://github.com/folke/snacks.nvim), a collection of
small QoL plugins for Neovim.

Snacks also includes a bunch of new improvements to these features.

This PR fully integrates with snacks.

## Todo

- [ ] add proper deprecations where needed
- [ ] create snacks docs
- [ ] document all the new improvements relevant to LazyVim users

## Closes

- [ ] #4492 
- [ ] #4333
- [ ] #4687

## Screenshots

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

## Checklist

- [ ] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-11-07 15:54:47 +01:00
Folke Lemaitre
ad52bf91bc feat(extras): blink (#4680)
## Description

Extra to use [blink.cmp](https://github.com/Saghen/blink.cmp) instead of
**nvim-cmp**.

## Todo

- [x] tokyonight suport
- [x] basic integration
- [ ] check / update all cmp sources
- [ ] copilot and others integration 
- [x] native lazydev source

## Limitations

There's no copilot source, so instead when enabling both blink and
copilot:
- blink ghost text is disabled
- copilot suggestions are enabled
- use `<tab>` to navigate snippets and accept copilot completions 

## Related Issue(s)

- https://github.com/LazyVim/LazyVim/discussions/4679
2024-11-02 09:54:55 +01:00
dotfrag
61ce1cfaaf feat(python): default to new ruff instead of ruff_lsp (#4126)
## Description

Change default python ruff lsp from `ruff_lsp` to `ruff`. It is now
marked as stable. I have been using it for a few days without any
problems. I use python for relatively small to medium projects. Maybe
someone who is using python more rigorously has better feedback.

References:

https://github.com/astral-sh/ruff-lsp (see note)
https://github.com/astral-sh/ruff/releases/tag/0.5.3
https://docs.astral.sh/ruff/editors/setup/#neovim

Also the issue in https://github.com/LazyVim/LazyVim/pull/3057 has been
resolved. I tested it and I only get 1 `ruff server` process per nvim
instance. The processes close correctly when nvim is closed.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-07-21 12:24:28 +02:00
Folke Lemaitre
78cf0320bf feat(keymaps): dynamic which-key icons/descriptions for toggles (#4050)
## Description

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

## Related Issue(s)

- [ ] Closes #4025

## Screenshots


![image](https://github.com/user-attachments/assets/8453c23c-d560-490c-9f96-a22ea88f45fd)

## Checklist

- [ ] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2024-07-15 15:47:44 +02:00
Folke Lemaitre
706ec4b6b6 fix(lsp): lsp keymaps. Fixes #4051 2024-07-15 14:05:49 +02:00
Folke Lemaitre
8c900f92e7 fix(lsp): prevent setting up mason-lspconfig more than once when setting mslp opts 2024-06-29 21:01:42 +02:00
Folke Lemaitre
05e45e0d35 refactor: LazyVim.config 2024-06-16 15:35:38 +02:00
Folke Lemaitre
8346fa7ddc refactor(lsp): remove lsp keymap dependency on telescope 2024-06-13 06:33:10 +02:00
Folke Lemaitre
3233385ddb fix(vue): disable inlay hints for vue, since they seem broken 2024-06-11 23:21:56 +02:00
Folke Lemaitre
ab41ff551b refactor: use lazy's new opts_extend functionality for treesitter and mason 2024-06-07 09:03:59 +02:00
Folke Lemaitre
1bd4d2fc72 feat(lsp): simpler API to deal with code actions 2024-06-05 22:18:14 +02:00
Erik Lindebratt
9a635ef8d6 fix(lsp): Enable using deno.enablePaths in denols settings (#3446) 2024-06-04 11:31:29 +02:00
Brian Di Palma
c50018b791 feat(editor): added extra for inc-rename.nvim (#3432)
* feat(editor-extra): Add inc-rename

* fix: refactor and moved noice integration

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2024-06-04 09:51:36 +02:00
Folke Lemaitre
5e76948d58 feat(coding): use lazydev.nvim instead of neodev.nvim 2024-06-02 09:33:52 +02:00
Folke Lemaitre
c14d21ce75 feat: moved neoconf.nvim to extras 2024-06-02 09:05:16 +02:00
Folke Lemaitre
8024201e75 refactor: move 0.9 stuff to a compat layer. Cleaner this way 2024-06-01 20:46:58 +02:00
Folke Lemaitre
9d999fa210 refactor: refactored mason/typescript/vue support 2024-06-01 08:31:10 +02:00
Folke Lemaitre
804756209e fix(lsp): remove duplicate keymap 2024-05-29 16:39:02 +02:00
Folke Lemaitre
01e6718e03 fix(lsp): added support for has as array for lsp keymaps 2024-05-29 16:31:16 +02:00
Folke Lemaitre
4dfd5c2596 fix(lsp): create gr with nowait=true 2024-05-29 16:02:13 +02:00