aboutsummaryrefslogtreecommitdiffstats
path: root/lsp
Commit message (Collapse)AuthorAgeFilesLines
...
* fix(pyright): command :LspPyrightSetPythonPath fails #4045Stanislav Asunkin2025-08-302-2/+4
| | | | | `vim.api.nvim_buf_create_user_command` callback is called with a table argument that contains a parsed command. Need to use `args` or `fargs` key to get command arguments.
* fix(pyright): command :LspPyrightOrganizeImports fails #3971Michele Sorcinelli2025-08-302-4/+14
| | | | | | | | | | Problem: The `pyright.organizeimports` is private, so client:exec_cmd() fails because it refuses to run commands that are not advertised as capabilities. Solution: Call client.request() to side-step the check in client:exec_cmd(). YOLO
* feat(expert): elixir expert ls #4041Andy LeClair2025-08-281-0/+12
|
* fix(herb): remove ruby filetype #4040Hans Schnedlitz2025-08-281-1/+1
|
* fix(copilot): device flow authentication #4038Robert Muir2025-08-251-2/+2
| | | | Current code will always trigger error (unless you are already authd), because result.code is invalid. result.userCode must be used instead.
* fix(atopile): rename file, move to correct location #4039MrNavaStar2025-08-251-0/+14
|
* feat: php language server 'phptools' from devsense #3966Jakub Míšek2025-08-251-0/+36
|
* ci(lint): require type annotation #4034Justin M. Keyes2025-08-242-0/+2
|
* feat(copilot): initial support for copilot-language-server #4029Yi Ming2025-08-241-0/+107
|
* feat(vue_ls): preliminary typescript-tools support #4030GR3YH4TT3R932025-08-241-1/+5
| | | | | This commit adds preliminary `typescript-tools` support for `vue_ls`. This is to allow for a smooth transition if support for `typescript.tsserverRequest` is added.
* feat: llvm clangir lsp server #4032Amr Hesham2025-08-241-0/+14
|
* fix(vue_ls): make tsserver handler more resilientJ.c2025-08-221-2/+17
| | | | | | | | | | Problem: The current `on_init` of `vue_ls` requiers `vtsls` or `ts_ls` to already be attached, which is not always guaranteed. Solution: Add a retry mechanism that reruns the logic for some time to give the other ls a chance to catch up.
* refactor(vue_ls): simplify ts_client logicJ.c2025-08-221-8/+3
| | | | | | | | | Problem: The current logic used unnecessary table merging even though there is only one element expected anyway. Solution: Just use index accessing and `or`
* fix(gitlab_ls): root dir ordering #4025Aleš Brelih2025-08-211-1/+1
| | | | | | | | | Problem: If project had a nested child gitlab file named: .gitlab-ci.yml it would take it as root. Solution: If inside GIT repository just use git repository root as root and still keep the option for .gitlab* as fallback if there is no git repo yet.
* fix(ts/js): support older Nvim 0.11.xJustin M. Keyes2025-08-215-10/+15
| | | | fix #4023
* refactor(roslyn_ls): reduce notification noise #4024sharpchen2025-08-211-2/+2
|
* feat(yamlls): force documentFormattingProvider=true #4016Christopher Johnstone2025-08-201-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | Problem: The current version of the config will let you do formatting manually `:lua vim.lsp.buf.format()` but the lsp doesn't have capabilities registered correctly so if you use auto formatting like outlined in [help pages](https://neovim.io/doc/user/lsp.html#lsp-attach) if not client:supports_method('textDocument/willSaveWaitUntil') and client:supports_method('textDocument/formatting') then vim.api.nvim_create_autocmd('BufWritePre', { group = vim.api.nvim_create_augroup('my.lsp', {clear=false}), buffer = args.buf, callback = function() vim.lsp.buf.format({ bufnr = args.buf, id = client.id, timeout_ms = 1000 }) end, }) end , it won't enable for the yaml lsp because `client:supports_method('textDocument/formatting')` returns false. Solution: The `on_init` hook, while hacky, will mark the capability as true.
* fix(ts/js): give lockfiles equal priority when finding root #4013Oskar Haarklou Veileborg2025-08-205-7/+12
|
* fix: separate type annotation from `@brief` docstring #4017Igor Lacerda2025-08-19265-0/+265
|
* fix(ts_ls): server not starting if there is no typescript #4011Vinícius Weigert2025-08-193-42/+0
|
* refactor(yamlls): non-hacky way to enable formatting #4012Tomáš Janoušek2025-08-191-4/+2
| | | | | | | | | | | Faking capabilities isn't necessary to enable formatting support. It's a dynamically registered capability that yamlls announces whenever yaml formatting is enabled in settings, which it isn't by default. See https://github.com/redhat-developer/yaml-language-server/blob/3821411ee8c92e5b7e5ca88f84ab443ae3b2791a/src/yamlServerInit.ts#L128 https://github.com/redhat-developer/yaml-language-server/blob/3821411ee8c92e5b7e5ca88f84ab443ae3b2791a/src/languageserver/handlers/settingsHandlers.ts#L159-L174 Fixes: 63a016437e44 ("feat(yamlls): document formatting support #4003")
* chore: miscellaneous type fixesIgor2025-08-1817-35/+20
|
* chore: add type annotation for configsIgor2025-08-18363-1/+363
|
* fix(ts/js): servers do not start when `bun.lock` exists #4008Methapon20012025-08-185-5/+5
|
* fix(nixd): use '.git' root marker #4009Bjørn Forsman2025-08-181-1/+1
| | | | 'nixd' is the only place I saw 'git' in root_markers, without the dot, so I think it's a mistake. Change it to '.git'.
* fix: vtsls does not start in monorepo with `bun.lock` #4007Methapon20012025-08-171-1/+1
|
* fix(eslint): performance regression on configuration lookup #4004Alexis Tacnet2025-08-171-4/+10
|
* feat(ts/js): improve monorepo support for Typescript, ESLint #3955Alexis Tacnet2025-08-176-41/+200
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PROBLEM: Monorepos (or "workspaces") in Typescript are more and more popular and the associated tooling is evolving to improve the developer experience in such setup. Especially, the `typescript-language-server` and the `vscode-eslint-language-server` now supports monorepos, **removing the need to spawn a different server for each package of a workspace**. Example: with a few packages as the servers need to load every other package to work (the `typescript-language-server`, even if spawned multiple times with different `root_dir`, will load in memory other packages to resolve the types), the amount of memory used grows exponentially. But in fact, those servers support monorepos: they support multiple configurations in subpackages and will load the correct one to process a buffer. The ESLint server even supports loading multiple ESLint binaries (and therefore versions), while keeping one instance of the server. SOLUTION: Instead of only relying on the configuration files as `root_markers`, discover the root of the package / monorepo by finding the Lock files created by node package managers: * `package-lock.json`: Npm * `yarn.lock`: Yarn * `pnpm-lock.yaml`: Pnpm * `bun.lockb`: Bun We still need to look at configuration files to enable the conditionnaly attachment of the LSP for a buffer (for ESLint, we want to attach the LSP only if there are ESLint configuration files) in case of LSP that operates on files that are "generic" (like `typescript` or `javascript`). To do that, I replace the `root_markers` that were the configuration files by a `root_dir` function that superseds them. It will both: * look for a configuration file upward to check if the LSP needs to be attached * look for the root of the "project" via the lock files to specify the `root_dir` of the LSP PRIOR EXPERIMENTATIONS: I've tried to play with the `reuse_client` quite a lot, trying to understand if we need to spawn a new server or not looking at the Typescript / ESLint binary that was loaded, but in fact it's way easier to just have a better `root_dir` that is the true root of the project for the LSP server: in case of those two servers, the root of the package / monorepo. I also tried to use the current directory opened as the `root_dir`, but it's less powerful on nvim compared to VSCode as we navigate more inside folders using terminal commands and then open vim. I think this method also removes the need from a project-local config (which could be quite useful anyway for ESLint flat config setting which auto-detection is a bit unreliable / compute heavy) as this should work normally accross all different setups. Fixes #3910
* feat(yamlls): document formatting support #4003Christopher Johnstone2025-08-171-0/+4
|
* docs(hyprls): install from hyprland-community org (#4002)Kafva2025-08-171-1/+1
|
* feat(roslyn_ls): support .slnx extension #3999Plevi13372025-08-151-2/+2
|
* feat(codebook): add gitcommit filetype #3995Daniel M. Capella2025-08-141-0/+1
|
* Merge #3993 fix: update configs to 0.11+Justin M. Keyes2025-08-119-81/+89
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix(zk): update config to 0.11+ - Remove buf.execute_command in favor of :exec_cmd - Set title on :exec_cmd * fix(clangd): update config to 0.11+ - Use client and bufnr as arguments of on_attach - Silence wrong diagnostics about unknown method - Call request as method - Align the style of the two functions - Drop border setup in favor of winborder option * fix(denols): update config to 0.11+ - Call request_sync as method - Use vim.notify instead of nvim_err_writeln * fix(elmls): update config to 0.11+ - Use vim.bo[bufnr] instead of nvim_buf_get_option * fix(markdown_oxide): update config to 0.11+ - Use drop buf.execute command and use :exec_cmd * fix(rust_analyzer): update config to 0.11+ - Call request as method - Silence wrong diagnostic * fix(svlangserver): update config to 0.11+ - Drop .buf.execute_command and use :exec_cmd * fix(texlab): update config to 0.11+ - Use bufnr and client as arguments of on_attach - Update documentation to indicate implemented commands * fix(tinymist): update config to 0.11+ - Drop check for neovim version - Make sure the name starts with Lsp to remove the exemption from the CI check
| * fix(tinymist): update config to 0.11+Dimitris Dimitropoulos2025-08-111-13/+11
| | | | | | | | | | | | - Drop check for neovim version - Make sure the name starts with Lsp to remove the exemption from the CI check
| * fix(texlab): update config to 0.11+Dimitris Dimitropoulos2025-08-111-13/+12
| | | | | | | | | | - Use bufnr and client as arguments of on_attach - Update documentation to indicate implemented commands
| * fix(svlangserver): update config to 0.11+Dimitris Dimitropoulos2025-08-111-18/+16
| | | | | | | | - Drop .buf.execute_command and use :exec_cmd
| * fix(rust_analyzer): update config to 0.11+Dimitris Dimitropoulos2025-08-111-1/+2
| | | | | | | | | | - Call request as method - Silence wrong diagnostic
| * fix(markdown_oxide): update config to 0.11+Dimitris Dimitropoulos2025-08-111-16/+20
| | | | | | | | - Use drop buf.execute command and use :exec_cmd
| * fix(elmls): update config to 0.11+Dimitris Dimitropoulos2025-08-111-1/+1
| | | | | | | | - Use vim.bo[bufnr] instead of nvim_buf_get_option
| * fix(denols): update config to 0.11+Dimitris Dimitropoulos2025-08-111-2/+2
| | | | | | | | | | - Call request_sync as method - Use vim.notify instead of nvim_err_writeln
| * fix(clangd): update config to 0.11+Dimitris Dimitropoulos2025-08-111-15/+18
| | | | | | | | | | | | | | | | - Use client and bufnr as arguments of on_attach - Silence wrong diagnostics about unknown method - Call request as method - Align the style of the two functions - Drop border setup in favor of winborder option
| * fix(zk): update config to 0.11+Dimitris Dimitropoulos2025-08-111-2/+7
| | | | | | | | | | - Remove buf.execute_command in favor of :exec_cmd - Set title on :exec_cmd
* | feat(codebook): add Java and Lua filetypes #3992Daniel M. Capella2025-08-111-1/+3
|/ | | | https://github.com/blopker/codebook/commit/5b451a39dfaed33dc365f77d5c5938a0b9ca41e8 https://github.com/blopker/codebook/commit/e4564a231de77e59e111050d5ae854f674ff13b2
* fix(texlab): adapt commands to fit 0.11+ #3991Dimitris Dimitropoulos2025-08-091-70/+34
| | | | | | | - Drop support for <0.11 in vim.lsp.config version - Use vim.ui.input instead of vim.fn.input - Replace explicit border setting in favor to winborder option - Call request as method to avoid deprecation warning - Simplify command setup via for loop
* fix(docker_language_server): set language id for compose files #3990Michael Martin2025-08-081-0/+7
| | | | | | | | | | This adds a `get_language_id()` handler to the docker language server config to correctly set the language ID to `dockercompose` as expected by the server. Before this change, the nvim filetype of `yaml.docker-compose` was passed to the server as the language ID, resulting in in a docker compose file being misinterpreted as a Dockerfile. See also: e3d837b938bd1d7e84c3eb0362b6761e4d5dc15d / #3982
* feat: tsgo #3989skewb1k2025-08-081-0/+19
|
* fix(golangci_lint_ls): support v2 wrapper script #3984Alex Efros2025-08-051-2/+4
|
* fix(vue_ls): correctly check if ts_clients exist #3987GR3YH4TT3R932025-08-051-2/+7
| | | | | | | Currently, `on_init` tries to use `or` to combine two function calls that return tables and returns truthy on the first value but an empty table is considered truthy in lua causing an error when using `vtsls`. This properly checks if either `ts_ls` or `vtsls` exists and extends the `clients` list for proper error handling.
* feat(vue_ls): support ts_ls #3986Daniel M. Capella2025-08-051-2/+3
| | | | typescript-language-server now supports tsserver/request: https://github.com/typescript-language-server/typescript-language-server/releases/tag/v4.4.0
* docs(matlab_ls): mention installPath requirement #3983CorpsSansOrganes2025-08-031-1/+12
| | | | | | | Problem: No clear documentation about requirement to set `installPath`. Solution: Add documentation in `matlab_ls.lua`.