Skip to content

Commit 77029ec

Browse files
authored
docs: readme #3327
- improve overview for newcomers - call out plan for upstreaming "framework" parts to Nvim core - guide bug reports to neovim core - remove most mentions of wiki fix #3202
1 parent 76e7c8b commit 77029ec

File tree

1 file changed

+33
-37
lines changed

1 file changed

+33
-37
lines changed

README.md

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,30 @@
11
# nvim-lspconfig
22

3-
[Configs](doc/server_configurations.md) for the [Nvim LSP client](https://neovim.io/doc/user/lsp.html) (`:help lsp`).
3+
nvim-lspconfig is a "data only" repo, providing basic, default [Nvim LSP client](https://neovim.io/doc/user/lsp.html)
4+
configurations for various LSP servers.
45

5-
* **Do not file Nvim LSP client issues here.** The Nvim LSP client does not live here. This is only a collection of LSP configs.
6-
* If you found a bug in the Nvim LSP client, [report it at the Nvim core repo](https://github.com/neovim/neovim/issues/new?assignees=&labels=bug%2Clsp&template=lsp_bug_report.yml).
7-
* These configs are **best-effort and supported by the community.** See [contributions](#contributions).
6+
View the [documentation for all configs](doc/server_configurations.md) or `:help lspconfig-all` from Nvim.
7+
8+
## Important ⚠️
89

9-
See also `:help lspconfig`.
10+
* If you found a bug in the Nvim LSP functionality (`:help lsp`), [report it to Neovim core](https://github.com/neovim/neovim/issues/new?assignees=&labels=bug%2Clsp&template=lsp_bug_report.yml).
11+
* **Do not** report it here. Only configuration data lives here.
12+
* These configs are **best-effort and supported by the community.** See [contributions](#contributions).
13+
* **Note:** This repo only provides *configurations*. Its programmatic API is deprecated and should not be used externally.
14+
* [Work is planned](https://github.com/neovim/neovim/issues/28479) to selectively upstream the
15+
"framework" parts (*not* the configs) of nvim-lspconfig, to Nvim core, and deprecate them in
16+
nvim-lspconfig.
1017

1118
## Install
1219

1320
[![LuaRocks](https://img.shields.io/luarocks/v/neovim/nvim-lspconfig?logo=lua&color=purple)](https://luarocks.org/modules/neovim/nvim-lspconfig)
1421

15-
* Requires neovim version 0.8 above. Update Nvim and nvim-lspconfig before reporting an issue.
16-
17-
* Install nvim-lspconfig using builtin packages:
18-
19-
git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/nvim/start/nvim-lspconfig
20-
21-
* Alternatively, nvim-lspconfig can be installed using a 3rd party plugin manager (consult the documentation for your plugin manager for details).
22+
* Requires Nvim 0.10 above. Update Nvim and nvim-lspconfig before reporting an issue.
23+
* Install nvim-lspconfig using Vim's "packages" feature:
24+
```
25+
git clone https://github.com/neovim/nvim-lspconfig ~/.config/nvim/pack/nvim/start/nvim-lspconfig
26+
```
27+
* Or use a 3rd-party plugin manager (consult the documentation for your plugin manager).
2228

2329
## Quickstart
2430

@@ -36,25 +42,22 @@ See also `:help lspconfig`.
3642
```
3743
4. Run `:checkhealth lsp` to see the status or to troubleshoot.
3844

39-
See [server_configurations.md](doc/server_configurations.md) (`:help lspconfig-all` from Nvim) for the full list of configs, including installation instructions and additional, optional, customization suggestions for each language server. For servers that are not on your system path (e.g., `jdtls`, `elixirls`), you must manually add `cmd` to the `setup` parameter. Most language servers can be installed in less than a minute.
45+
Read `:help lspconfig` for details. Read `:help lspconfig-all` for the full list of server-specific details.
46+
For servers not on your `$PATH` (e.g., `jdtls`, `elixirls`), you must manually set the `cmd` parameter when calling `setup()`.
4047

4148
## Configuration
4249

43-
Nvim sets some default options whenever a buffer attaches to an LSP client. See [`:h lsp-config`][lsp-config] for more details. In particular, the following options are set:
50+
Nvim sets some default options and mappings when a buffer attaches to LSP (see [`:help lsp-config`][lsp-config]). In particular:
4451

4552
* [`'tagfunc'`][tagfunc]
46-
- Enables "go to definition" capabilities using [`<C-]>`][tagjump] and other [tag commands][tag-commands].
53+
- Enables "go to definition" capabilities using [`<C-]>`][tagjump] and other [tag commands][tag-commands].
4754
* [`'omnifunc'`][omnifunc]
48-
- Enables (manual) omni mode completion with `<C-X><C-O>` in Insert mode. For *auto*completion, an [autocompletion plugin](https://github.com/neovim/nvim-lspconfig/wiki/Autocompletion) is required.
55+
- Enables (manual) omni mode completion with `<C-X><C-O>` in Insert mode. For *auto*completion, an [autocompletion plugin](https://github.com/neovim/nvim-lspconfig/wiki/Autocompletion) is required.
4956
* [`'formatexpr'`][formatexpr]
50-
- Enables LSP formatting with [`gq`][gq].
51-
52-
Nvim also maps `K` to [`vim.lsp.buf.hover()`][vim.lsp.buf.hover] in Normal mode.
53-
54-
Nvim 0.10 and newer creates the following default maps unconditionally:
55-
56-
* `[d` and `]d` map to `vim.diagnostic.goto_prev()` and `vim.diagnostic.goto_next()` (respectively)
57-
* `<C-W>d` maps to `vim.diagnostic.open_float()`
57+
- Enables LSP formatting with [`gq`][gq].
58+
* `K` maps to [`vim.lsp.buf.hover()`][vim.lsp.buf.hover] in Normal mode.
59+
* `[d` and `]d` map to `vim.diagnostic.goto_prev()` and `vim.diagnostic.goto_next()`, respectively.
60+
* `<C-W>d` maps to `vim.diagnostic.open_float()`.
5861

5962
[lsp-config]: https://neovim.io/doc/user/lsp.html#lsp-config
6063
[tagfunc]: https://neovim.io/doc/user/tagsrch.html#tag-function
@@ -88,16 +91,18 @@ lspconfig.rust_analyzer.setup {
8891

8992
## Troubleshooting
9093

91-
If you have an issue, the first step is to reproduce with a [minimal configuration](https://github.com/neovim/nvim-lspconfig/blob/master/test/minimal_init.lua).
92-
9394
The most common reasons a language server does not start or attach are:
9495

95-
1. The language server is not installed. nvim-lspconfig does not install language servers for you. You should be able to run the `cmd` defined in each server's Lua module from the command line and see that the language server starts. If the `cmd` is an executable name instead of an absolute path to the executable, ensure it is on your path.
96+
1. Language server is not installed. nvim-lspconfig does not install language servers for you. You should be able to run the `cmd` defined in each server's Lua module from the command line and see that the language server starts. If the `cmd` is an executable name instead of an absolute path to the executable, ensure it is on your path.
9697
2. Missing filetype plugins. Certain languages are not detecting by vim/neovim because they have not yet been added to the filetype detection system. Ensure `:set ft?` shows the filetype and not an empty value.
9798
3. Not triggering root detection. **Some** language servers will only start if it is opened in a directory, or child directory, containing a file which signals the *root* of the project. Most of the time, this is a `.git` folder, but each server defines the root config in the lua file. See [server_configurations.md](doc/server_configurations.md) or the source for the list of root directories.
9899
4. You must pass `capabilities` for **each** `setup {}` if you want these to take effect.
99100
5. **Do not call `setup {}` twice for the same server**. The second call to `setup {}` will overwrite the first.
100101

102+
## Bug reports
103+
104+
If you found a bug with LSP functionality, [report it to Neovim core](https://github.com/neovim/neovim/issues/new?assignees=&labels=bug%2Clsp&template=lsp_bug_report.yml).
105+
101106
Before reporting a bug, check your logs and the output of `:LspInfo`. Add the following to your init.vim to enable logging:
102107

103108
```lua
@@ -118,18 +123,9 @@ Most of the time, the reason for failure is present in the logs.
118123
* `:LspStop <client_id>` Defaults to stopping all buffer clients.
119124
* `:LspRestart <client_id>` Defaults to restarting all buffer clients.
120125

121-
## Wiki
122-
123-
See the [wiki](https://github.com/neovim/nvim-lspconfig/wiki) for additional topics, including:
124-
125-
* [Automatic server installation](https://github.com/neovim/nvim-lspconfig/wiki/Installing-language-servers#automatically)
126-
* [Snippets support](https://github.com/neovim/nvim-lspconfig/wiki/Snippets)
127-
* [Project local settings](https://github.com/neovim/nvim-lspconfig/wiki/Project-local-settings)
128-
* [Recommended plugins for enhanced language server features](https://github.com/neovim/nvim-lspconfig/wiki/Language-specific-plugins)
129-
130126
## Contributions
131127

132-
If you are missing a language server on the list in [server_configurations.md](doc/server_configurations.md), contributing
128+
If a language server is missing from [server_configurations.md](doc/server_configurations.md), contributing
133129
a new configuration for it helps others, especially if the server requires special setup. Follow these steps:
134130

135131
1. Read [CONTRIBUTING.md](CONTRIBUTING.md).

0 commit comments

Comments
 (0)