Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nvim-lspconfig for openSUSE:Factory checked in at 2026-03-17 19:05:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nvim-lspconfig (Old) and /work/SRC/openSUSE:Factory/.nvim-lspconfig.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nvim-lspconfig" Tue Mar 17 19:05:21 2026 rev:14 rq:1339535 version:2.7.0 Changes: -------- --- /work/SRC/openSUSE:Factory/nvim-lspconfig/nvim-lspconfig.changes 2026-02-23 17:23:27.918492632 +0100 +++ /work/SRC/openSUSE:Factory/.nvim-lspconfig.new.8177/nvim-lspconfig.changes 2026-03-17 19:07:20.899760184 +0100 @@ -1,0 +2,22 @@ +Tue Mar 17 09:11:56 UTC 2026 - Richard Rahl <[email protected]> + +- Update to version 2.7.0: + * feat(fsautocomplete): support slnx + * fix(clangd): send correct languageIds for filetypes objc, objcpp and cuda + * feat(kakehashi): add kakehashi lsp config + * feat(oxlint, oxfmt): check for local binaries in node_modules + * fix(oxfmt): Remove unknown filetypes + * fix: drop invalid filetypes javascript.jsx, typescript.tsx + * fix: drop invalid filetypes from legacy configs + * feat(oxlint): add oxlint.config.ts root marker + * fix(eslint): don't implicitly enable experimental.useFlatConfig + * fix(pony_lsp)!: rename pony_language_server to pony_lsp + * docs: add short description to doc title + * fix(pyrefly): schedule vim.notify in on_exit + * fix(rust_analyzer): pass environment in rust-analyzer.runSingle + * feat(roslyn_ls): use official roslyn binary name as fallback + * fix(slangd): add slangd specific root markers + * fix(rust_analyzer): recognize std lib sources in sysroot + * fix(julials): correctly read path to environment + +------------------------------------------------------------------- Old: ---- nvim-lspconfig-2.6.0.tar.gz New: ---- nvim-lspconfig-2.7.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nvim-lspconfig.spec ++++++ --- /var/tmp/diff_new_pack.52P9zT/_old 2026-03-17 19:07:21.379780077 +0100 +++ /var/tmp/diff_new_pack.52P9zT/_new 2026-03-17 19:07:21.383780243 +0100 @@ -17,7 +17,7 @@ Name: nvim-lspconfig -Version: 2.6.0 +Version: 2.7.0 Release: 0 Summary: Quickstart configs for Nvim LSP License: Apache-2.0 ++++++ nvim-lspconfig-2.6.0.tar.gz -> nvim-lspconfig-2.7.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/doc/configs.md new/nvim-lspconfig-2.7.0/doc/configs.md --- old/nvim-lspconfig-2.6.0/doc/configs.md 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/doc/configs.md 2026-03-11 12:28:28.000000000 +0100 @@ -165,6 +165,7 @@ - [jsonnet_ls](#jsonnet_ls) - [julials](#julials) - [just](#just) +- [kakehashi](#kakehashi) - [kcl](#kcl) - [koka](#koka) - [kotlin_language_server](#kotlin_language_server) @@ -197,6 +198,7 @@ - [mojo](#mojo) - [motoko_lsp](#motoko_lsp) - [move_analyzer](#move_analyzer) +- [mpls](#mpls) - [msbuild_project_tools_server](#msbuild_project_tools_server) - [muon](#muon) - [mutt_ls](#mutt_ls) @@ -237,6 +239,7 @@ - [please](#please) - [pli](#pli) - [pony_language_server](#pony_language_server) +- [pony_lsp](#pony_lsp) - [poryscript_pls](#poryscript_pls) - [postgres_lsp](#postgres_lsp) - [powershell_es](#powershell_es) @@ -618,7 +621,7 @@ - `cmd`: [../lsp/angularls.lua:93](../lsp/angularls.lua#L93) - `filetypes` : ```lua - { "typescript", "html", "typescriptreact", "typescript.tsx", "htmlangular" } + { "typescript", "html", "typescriptreact", "htmlangular" } ``` - `root_markers` : ```lua @@ -2205,6 +2208,7 @@ ```lua { "c", "cpp", "objc", "objcpp", "cuda" } ``` +- `get_language_id`: [../lsp/clangd.lua:65](../lsp/clangd.lua#L65) - `on_attach`: [../lsp/clangd.lua:65](../lsp/clangd.lua#L65) - `on_init`: [../lsp/clangd.lua:65](../lsp/clangd.lua#L65) - `root_markers` : @@ -2475,11 +2479,11 @@ { editorInfo = { name = "Neovim", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" }, editorPluginInfo = { name = "Neovim", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" } } ``` @@ -3136,7 +3140,7 @@ ``` - `filetypes` : ```lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx" } + { "javascript", "javascriptreact", "typescript", "typescriptreact" } ``` - `handlers` : ```lua @@ -4090,20 +4094,38 @@ /!\ When using flat config files, you need to use them across all your packages in your monorepo, as it's a global setting for the server. +### Flat config in ESLint versions prior to 10.0 + +If you're using a ESLint version that supports both flat config and eslintrc (>= 8.21, < 10.0) and want to change +the [default behavior](https://eslint.org/blog/2023/10/flat-config-rollout-plans/), you'll need to set +`experimental.useFlatConfig` accordingly: +```lua +vim.lsp.config("eslint", { + settings = { + experimental = { + -- If you want to use flat config on >= 8.21, < 9.0 + useFlatConfig = true, + -- Or if you want to use eslintrc on 9.* + -- useFlatConfig = false, + } + } +}) +``` + Snippet to enable the language server: ```lua vim.lsp.enable('eslint') ``` Default config: -- `before_init`: [../lsp/eslint.lua:61](../lsp/eslint.lua#L61) +- `before_init`: [../lsp/eslint.lua:79](../lsp/eslint.lua#L79) - `cmd` : ```lua { "vscode-eslint-language-server", "--stdio" } ``` - `filetypes` : ```lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", "vue", "svelte", "astro", "htmlangular" } + { "javascript", "javascriptreact", "typescript", "typescriptreact", "vue", "svelte", "astro", "htmlangular" } ``` - `handlers` : ```lua @@ -4114,8 +4136,8 @@ ["eslint/probeFailed"] = <function 4> } ``` -- `on_attach`: [../lsp/eslint.lua:61](../lsp/eslint.lua#L61) -- `root_dir`: [../lsp/eslint.lua:61](../lsp/eslint.lua#L61) +- `on_attach`: [../lsp/eslint.lua:79](../lsp/eslint.lua#L79) +- `root_dir`: [../lsp/eslint.lua:79](../lsp/eslint.lua#L79) - `settings` : ```lua { @@ -4132,9 +4154,7 @@ enable = false, mode = "all" }, - experimental = { - useFlatConfig = false - }, + experimental = {}, format = true, nodePath = "", onIgnoredFiles = "off", @@ -4334,7 +4354,7 @@ - `cmd`: [../lsp/flow.lua:16](../lsp/flow.lua#L16) - `filetypes` : ```lua - { "javascript", "javascriptreact", "javascript.jsx" } + { "javascript", "javascriptreact" } ``` - `root_markers` : ```lua @@ -4951,20 +4971,20 @@ { editorInfo = { name = "Neovim", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" }, editorPluginInfo = { name = "Neovim LSP", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" }, extension = { name = "Neovim LSP Client", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" }, ide = { name = "Neovim", vendor = "Neovim", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" } } ``` @@ -6478,6 +6498,11 @@ julia --project=/path/to/my/project -e 'using Pkg; Pkg.instantiate()' ``` +To activate a Julia environment, use the `:LspJuliaActivateEnv` command. A prompt will ask you to select a Julia +environment from the list of environments found in the current working directory and the `environments/` folder of +`$JULIA_DEPOT_PATH` entries. You can also provide a path to a Julia environment directly. +Example: `:LspJuliaActivateEnv /path/to/my/project`. + Note: The julia programming language searches for global environments within the `environments/` folder of `$JULIA_DEPOT_PATH` entries. By default this simply `~/.julia/environments` @@ -6495,7 +6520,7 @@ ```lua { "julia" } ``` -- `on_attach`: [../lsp/julials.lua:121](../lsp/julials.lua#L121) +- `on_attach`: [../lsp/julials.lua:127](../lsp/julials.lua#L127) - `root_markers` : ```lua { "Project.toml", "JuliaProject.toml" } @@ -6530,6 +6555,59 @@ --- +## kakehashi + +https://github.com/atusy/kakehashi + +Tree-sitter-based language server that provides semantic tokens, selection ranges, +and LSP bridging for embedded languages (e.g., code blocks in Markdown). + +kakehashi works with any language that has a Tree-sitter grammar. +Parsers and queries are automatically installed on first use +when `autoInstall` is enabled (the default). This requires the +`tree-sitter` CLI, a C compiler, and Git. + +**You must specify `filetypes` in your call to `vim.lsp.config`** to +restrict which files activate the server: + +```lua +vim.lsp.config('kakehashi', { + filetypes = { 'markdown', 'lua', 'rust', 'python' }, + init_options = { + autoInstall = true, + -- Optional: bridge LSP requests in injection regions + languageServers = { + ['lua_ls'] = { + cmd = { 'lua-language-server' }, + languages = { 'lua' }, + }, + }, + languages = { + markdown = { + bridge = { lua_ls = { enabled = true } }, + }, + }, + }, +}) +``` + +Snippet to enable the language server: +```lua +vim.lsp.enable('kakehashi') +``` + +Default config: +- `cmd` : + ```lua + { "kakehashi" } + ``` +- `root_markers` : + ```lua + { "kakehashi.toml", ".git" } + ``` + +--- + ## kcl https://github.com/kcl-lang/kcl.nvim @@ -7712,6 +7790,34 @@ --- +## mpls + +https://github.com/mhersson/mpls + +Markdown Preview Language Server + +Snippet to enable the language server: +```lua +vim.lsp.enable('mpls') +``` + +Default config: +- `cmd` : + ```lua + { "mpls", "--theme", "dark", "--enable-emoji", "--enable-footnotes", "--no-auto" } + ``` +- `filetypes` : + ```lua + { "markdown" } + ``` +- `on_attach`: [../lsp/mpls.lua:8](../lsp/mpls.lua#L8) +- `root_markers` : + ```lua + { ".marksman.toml", ".git" } + ``` + +--- + ## msbuild_project_tools_server https://github.com/tintoy/msbuild-project-tools-server/ @@ -8594,13 +8700,10 @@ ``` Default config: -- `cmd` : - ```lua - { "oxfmt", "--lsp" } - ``` +- `cmd`: [../lsp/oxfmt.lua:17](../lsp/oxfmt.lua#L17) - `filetypes` : ```lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", "toml", "json", "jsonc", "json5", "yaml", "html", "vue", "handlebars", "hbs", "css", "scss", "less", "graphql", "markdown", "mdx" } + { "javascript", "javascriptreact", "typescript", "typescriptreact", "toml", "json", "jsonc", "json5", "yaml", "html", "vue", "handlebars", "css", "scss", "less", "graphql", "markdown" } ``` - `root_dir`: [../lsp/oxfmt.lua:17](../lsp/oxfmt.lua#L17) - `workspace_required` : `true` @@ -8634,10 +8737,7 @@ Default config: - `before_init`: [../lsp/oxlint.lua:32](../lsp/oxlint.lua#L32) -- `cmd` : - ```lua - { "oxlint", "--lsp" } - ``` +- `cmd`: [../lsp/oxlint.lua:32](../lsp/oxlint.lua#L32) - `filetypes` : ```lua { "javascript", "javascriptreact", "typescript", "typescriptreact", "vue", "svelte", "astro" } @@ -8645,7 +8745,7 @@ - `on_attach`: [../lsp/oxlint.lua:32](../lsp/oxlint.lua#L32) - `root_markers` : ```lua - { ".oxlintrc.json" } + { ".oxlintrc.json", "oxlint.config.ts" } ``` - `settings` : ```lua @@ -9086,13 +9186,52 @@ ## pony_language_server -https://github.com/ponylang/pony-language-server +Renamed to [pony_lsp](#pony_lsp) + +Snippet to enable the language server: +```lua +vim.lsp.enable('pony_language_server') +``` + +Default config: +- `cmd` : + ```lua + { "pony-lsp" } + ``` +- `filetypes` : + ```lua + { "pony" } + ``` +- `name` : + ```lua + "pony_lsp" + ``` +- `on_init`: [../lsp/pony_language_server.lua:6](../lsp/pony_language_server.lua#L6) +- `root_markers` : + ```lua + { "corral.json", ".git" } + ``` +- `settings` : + ```lua + { + ["pony-lsp"] = { + defines = {}, + ponypath = {} + } + } + ``` + +--- + +## pony_lsp + +https://github.com/ponylang/ponyc/tree/main/tools/pony-lsp Language server for the Pony programming language Snippet to enable the language server: ```lua -vim.lsp.enable('pony_language_server') +vim.lsp.enable('pony_lsp') ``` Default config: @@ -9108,6 +9247,15 @@ ```lua { "corral.json", ".git" } ``` +- `settings` : + ```lua + { + ["pony-lsp"] = { + defines = {}, + ponypath = {} + } + } + ``` --- @@ -10251,7 +10399,7 @@ ``` - `filetypes` : ```lua - { "javascript", "javascriptreact", "json", "typescript", "typescript.tsx", "typescriptreact" } + { "javascript", "javascriptreact", "json", "typescript", "typescriptreact" } ``` - `root_markers` : ```lua @@ -10304,7 +10452,7 @@ ``` - `cmd` : ```lua - { "Microsoft.CodeAnalysis.LanguageServer", "--logLevel", "Information", "--extensionLogDirectory", "/tmp/roslyn_ls/logs", "--stdio" } + { "roslyn-language-server", "--logLevel", "Information", "--extensionLogDirectory", "/tmp/roslyn_ls/logs", "--stdio" } ``` - `commands` : ```lua @@ -10661,7 +10809,7 @@ ``` Default config: -- `before_init`: [../lsp/rust_analyzer.lua:56](../lsp/rust_analyzer.lua#L56) +- `before_init`: [../lsp/rust_analyzer.lua:85](../lsp/rust_analyzer.lua#L85) - `capabilities` : ```lua { @@ -10681,8 +10829,8 @@ ```lua { "rust" } ``` -- `on_attach`: [../lsp/rust_analyzer.lua:56](../lsp/rust_analyzer.lua#L56) -- `root_dir`: [../lsp/rust_analyzer.lua:56](../lsp/rust_analyzer.lua#L56) +- `on_attach`: [../lsp/rust_analyzer.lua:85](../lsp/rust_analyzer.lua#L85) +- `root_dir`: [../lsp/rust_analyzer.lua:85](../lsp/rust_analyzer.lua#L85) - `settings` : ```lua { @@ -10975,7 +11123,7 @@ ``` - `root_markers` : ```lua - { ".git" } + { "slangdconfig.json", ".clang-format", ".git" } ``` --- @@ -11225,7 +11373,7 @@ activateSnykIac = "true", activateSnykOpenSource = "true", integrationName = "Neovim", - integrationVersion = "0.12.0-dev+g6b4ec2264e", + integrationVersion = "0.12.0-dev+gb897e81b30", token = vim.NIL, trustedFolders = {} } @@ -13134,7 +13282,7 @@ ``` - `filetypes` : ```lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx" } + { "javascript", "javascriptreact", "typescript", "typescriptreact" } ``` - `handlers` : ```lua @@ -14369,7 +14517,7 @@ ``` - `filetypes` : ```lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx" } + { "javascript", "javascriptreact", "typescript", "typescriptreact" } ``` - `init_options` : ```lua diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/doc/configs.txt new/nvim-lspconfig-2.7.0/doc/configs.txt --- old/nvim-lspconfig-2.6.0/doc/configs.txt 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/doc/configs.txt 2026-03-11 12:28:28.000000000 +0100 @@ -1,4 +1,4 @@ -*lspconfig-all* +*lspconfig-all* All configurations provided by |lspconfig| LSP configurations provided by nvim-lspconfig are listed below. @@ -187,7 +187,7 @@ Default config: - cmd (use "gF" to view): ../lsp/angularls.lua:93 - filetypes: >lua - { "typescript", "html", "typescriptreact", "typescript.tsx", "htmlangular" } + { "typescript", "html", "typescriptreact", "htmlangular" } - root_markers: >lua { "angular.json", "nx.json" } < @@ -1414,6 +1414,7 @@ { "clangd" } - filetypes: >lua { "c", "cpp", "objc", "objcpp", "cuda" } +- get_language_id (use "gF" to view): ../lsp/clangd.lua:65 - on_attach (use "gF" to view): ../lsp/clangd.lua:65 - on_init (use "gF" to view): ../lsp/clangd.lua:65 - root_markers: >lua @@ -1625,11 +1626,11 @@ { editorInfo = { name = "Neovim", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" }, editorPluginInfo = { name = "Neovim", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" } } - on_attach (use "gF" to view): ../lsp/copilot.lua:106 @@ -2130,7 +2131,7 @@ NO_COLOR = true } - filetypes: >lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx" } + { "javascript", "javascriptreact", "typescript", "typescriptreact" } - handlers: >lua { ["textDocument/definition"] = <function 1>, @@ -2854,16 +2855,32 @@ /!\ When using flat config files, you need to use them across all your packages in your monorepo, as it's a global setting for the server. +### Flat config in ESLint versions prior to 10.0 + +If you're using a ESLint version that supports both flat config and eslintrc (>= 8.21, < 10.0) and want to change +the [default behavior](https://eslint.org/blog/2023/10/flat-config-rollout-plans/), you'll need to set +`experimental.useFlatConfig` accordingly >lua + vim.lsp.config("eslint", { + settings = { + experimental = { + -- If you want to use flat config on >= 8.21, < 9.0 + useFlatConfig = true, + -- Or if you want to use eslintrc on 9.* + -- useFlatConfig = false, + } + } + }) + Snippet to enable the language server: >lua vim.lsp.enable('eslint') Default config: -- before_init (use "gF" to view): ../lsp/eslint.lua:61 +- before_init (use "gF" to view): ../lsp/eslint.lua:79 - cmd: >lua { "vscode-eslint-language-server", "--stdio" } - filetypes: >lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", "vue", "svelte", "astro", "htmlangular" } + { "javascript", "javascriptreact", "typescript", "typescriptreact", "vue", "svelte", "astro", "htmlangular" } - handlers: >lua { ["eslint/confirmESLintExecution"] = <function 1>, @@ -2871,8 +2888,8 @@ ["eslint/openDoc"] = <function 3>, ["eslint/probeFailed"] = <function 4> } -- on_attach (use "gF" to view): ../lsp/eslint.lua:61 -- root_dir (use "gF" to view): ../lsp/eslint.lua:61 +- on_attach (use "gF" to view): ../lsp/eslint.lua:79 +- root_dir (use "gF" to view): ../lsp/eslint.lua:79 - settings: >lua { codeAction = { @@ -2888,9 +2905,7 @@ enable = false, mode = "all" }, - experimental = { - useFlatConfig = false - }, + experimental = {}, format = true, nodePath = "", onIgnoredFiles = "off", @@ -3048,7 +3063,7 @@ Default config: - cmd (use "gF" to view): ../lsp/flow.lua:16 - filetypes: >lua - { "javascript", "javascriptreact", "javascript.jsx" } + { "javascript", "javascriptreact" } - root_markers: >lua { ".flowconfig" } < @@ -3527,20 +3542,20 @@ { editorInfo = { name = "Neovim", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" }, editorPluginInfo = { name = "Neovim LSP", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" }, extension = { name = "Neovim LSP Client", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" }, ide = { name = "Neovim", vendor = "Neovim", - version = "0.12.0-dev+g6b4ec2264e" + version = "0.12.0-dev+gb897e81b30" } } - on_attach (use "gF" to view): ../lsp/gitlab_duo.lua:317 @@ -4694,6 +4709,11 @@ Julia project, you must make sure that the project is instantiated >sh julia --project=/path/to/my/project -e 'using Pkg; Pkg.instantiate()' +To activate a Julia environment, use the `:LspJuliaActivateEnv` command. A prompt will ask you to select a Julia +environment from the list of environments found in the current working directory and the `environments/` folder of +`$JULIA_DEPOT_PATH` entries. You can also provide a path to a Julia environment directly. +Example: `:LspJuliaActivateEnv /path/to/my/project`. + Note: The julia programming language searches for global environments within the `environments/` folder of `$JULIA_DEPOT_PATH` entries. By default this simply `~/.julia/environments` @@ -4706,7 +4726,7 @@ { "julia", "--startup-file=no", "--history-file=no", "-e", ' # Load LanguageServer.jl: attempt to load from ~/.julia/environments/nvim-lspconfig\n # with the regular load path as a fallback\n ls_install_path = joinpath(\n get(DEPOT_PATH, 1, joinpath(homedir(), ".julia")),\n "environments", "nvim-lspconfig"\n )\n pushfirst!(LOAD_PATH, ls_install_path)\n using LanguageServer, SymbolServer, StaticLint\n popfirst!(LOAD_PATH)\n depot_path = get(ENV, "JULIA_DEPOT_PATH", "")\n project_path = let\n dirname(something(\n ## 1. Finds an explicitly set project (JULIA_PROJECT)\n Base.load_path_expand((\n p = get(ENV, "JULIA_PROJECT", nothing);\n p === nothing ? nothing : isempty(p) ? nothing : p\n )),\n ## 2. Look for a Project.toml file in the current working directory,\n ## or parent directories, with $HOME as an upper boundary\n Base.current_proj ect(),\n ## 3. First entry in the load path\n get(Base.load_path(), 1, nothing),\n ## 4. Fallback to default global environment,\n ## this is more or less unreachable\n Base.load_path_expand("@v#.#"),\n ))\n end\n @info "Running language server" VERSION pwd() project_path depot_path\n server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path)\n server.runlinter = true\n run(server)\n ' } - filetypes: >lua { "julia" } -- on_attach (use "gF" to view): ../lsp/julials.lua:121 +- on_attach (use "gF" to view): ../lsp/julials.lua:127 - root_markers: >lua { "Project.toml", "JuliaProject.toml" } < @@ -4732,6 +4752,52 @@ < ------------------------------------------------------------------------------ +kakehashi + +https://github.com/atusy/kakehashi + +Tree-sitter-based language server that provides semantic tokens, selection ranges, +and LSP bridging for embedded languages (e.g., code blocks in Markdown). + +kakehashi works with any language that has a Tree-sitter grammar. +Parsers and queries are automatically installed on first use +when `autoInstall` is enabled (the default). This requires the +`tree-sitter` CLI, a C compiler, and Git. + +**You must specify `filetypes` in your call to `vim.lsp.config`** to +restrict which files activate the server: +>lua + vim.lsp.config('kakehashi', { + filetypes = { 'markdown', 'lua', 'rust', 'python' }, + init_options = { + autoInstall = true, + -- Optional: bridge LSP requests in injection regions + languageServers = { + ['lua_ls'] = { + cmd = { 'lua-language-server' }, + languages = { 'lua' }, + }, + }, + languages = { + markdown = { + bridge = { lua_ls = { enabled = true } }, + }, + }, + }, + }) + +Snippet to enable the language server: >lua + vim.lsp.enable('kakehashi') + + +Default config: +- cmd: >lua + { "kakehashi" } +- root_markers: >lua + { "kakehashi.toml", ".git" } +< + +------------------------------------------------------------------------------ kcl https://github.com/kcl-lang/kcl.nvim @@ -5644,6 +5710,27 @@ < ------------------------------------------------------------------------------ +mpls + +https://github.com/mhersson/mpls + +Markdown Preview Language Server + +Snippet to enable the language server: >lua + vim.lsp.enable('mpls') + + +Default config: +- cmd: >lua + { "mpls", "--theme", "dark", "--enable-emoji", "--enable-footnotes", "--no-auto" } +- filetypes: >lua + { "markdown" } +- on_attach (use "gF" to view): ../lsp/mpls.lua:8 +- root_markers: >lua + { ".marksman.toml", ".git" } +< + +------------------------------------------------------------------------------ msbuild_project_tools_server https://github.com/tintoy/msbuild-project-tools-server/ @@ -6317,10 +6404,9 @@ Default config: -- cmd: >lua - { "oxfmt", "--lsp" } +- cmd (use "gF" to view): ../lsp/oxfmt.lua:17 - filetypes: >lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx", "toml", "json", "jsonc", "json5", "yaml", "html", "vue", "handlebars", "hbs", "css", "scss", "less", "graphql", "markdown", "mdx" } + { "javascript", "javascriptreact", "typescript", "typescriptreact", "toml", "json", "jsonc", "json5", "yaml", "html", "vue", "handlebars", "css", "scss", "less", "graphql", "markdown" } - root_dir (use "gF" to view): ../lsp/oxfmt.lua:17 - `workspace_required` : `true` < @@ -6350,13 +6436,12 @@ Default config: - before_init (use "gF" to view): ../lsp/oxlint.lua:32 -- cmd: >lua - { "oxlint", "--lsp" } +- cmd (use "gF" to view): ../lsp/oxlint.lua:32 - filetypes: >lua { "javascript", "javascriptreact", "typescript", "typescriptreact", "vue", "svelte", "astro" } - on_attach (use "gF" to view): ../lsp/oxlint.lua:32 - root_markers: >lua - { ".oxlintrc.json" } + { ".oxlintrc.json", "oxlint.config.ts" } - settings: >lua {} - `workspace_required` : `true` @@ -6691,12 +6776,40 @@ ------------------------------------------------------------------------------ pony_language_server -https://github.com/ponylang/pony-language-server +Renamed to [pony_lsp](#pony_lsp) + +Snippet to enable the language server: >lua + vim.lsp.enable('pony_language_server') + + +Default config: +- cmd: >lua + { "pony-lsp" } +- filetypes: >lua + { "pony" } +- name: >lua + "pony_lsp" +- on_init (use "gF" to view): ../lsp/pony_language_server.lua:6 +- root_markers: >lua + { "corral.json", ".git" } +- settings: >lua + { + ["pony-lsp"] = { + defines = {}, + ponypath = {} + } + } +< + +------------------------------------------------------------------------------ +pony_lsp + +https://github.com/ponylang/ponyc/tree/main/tools/pony-lsp Language server for the Pony programming language Snippet to enable the language server: >lua - vim.lsp.enable('pony_language_server') + vim.lsp.enable('pony_lsp') Default config: @@ -6706,6 +6819,13 @@ { "pony" } - root_markers: >lua { "corral.json", ".git" } +- settings: >lua + { + ["pony-lsp"] = { + defines = {}, + ponypath = {} + } + } < ------------------------------------------------------------------------------ @@ -7580,7 +7700,7 @@ - cmd: >lua { "rome", "lsp-proxy" } - filetypes: >lua - { "javascript", "javascriptreact", "json", "typescript", "typescript.tsx", "typescriptreact" } + { "javascript", "javascriptreact", "json", "typescript", "typescriptreact" } - root_markers: >lua { "package.json", "node_modules", ".git" } < @@ -7626,7 +7746,7 @@ } } - cmd: >lua - { "Microsoft.CodeAnalysis.LanguageServer", "--logLevel", "Information", "--extensionLogDirectory", "/tmp/roslyn_ls/logs", "--stdio" } + { "roslyn-language-server", "--logLevel", "Information", "--extensionLogDirectory", "/tmp/roslyn_ls/logs", "--stdio" } - commands: >lua { ["roslyn.client.completionComplexEdit"] = <function 1> @@ -7898,7 +8018,7 @@ Default config: -- before_init (use "gF" to view): ../lsp/rust_analyzer.lua:56 +- before_init (use "gF" to view): ../lsp/rust_analyzer.lua:85 - capabilities: >lua { experimental = { @@ -7912,8 +8032,8 @@ { "rust-analyzer" } - filetypes: >lua { "rust" } -- on_attach (use "gF" to view): ../lsp/rust_analyzer.lua:56 -- root_dir (use "gF" to view): ../lsp/rust_analyzer.lua:56 +- on_attach (use "gF" to view): ../lsp/rust_analyzer.lua:85 +- root_dir (use "gF" to view): ../lsp/rust_analyzer.lua:85 - settings: >lua { ["rust-analyzer"] = { @@ -8141,7 +8261,7 @@ - filetypes: >lua { "hlsl", "shaderslang" } - root_markers: >lua - { ".git" } + { "slangdconfig.json", ".clang-format", ".git" } < ------------------------------------------------------------------------------ @@ -8340,7 +8460,7 @@ activateSnykIac = "true", activateSnykOpenSource = "true", integrationName = "Neovim", - integrationVersion = "0.12.0-dev+g6b4ec2264e", + integrationVersion = "0.12.0-dev+gb897e81b30", token = vim.NIL, trustedFolders = {} } @@ -9810,7 +9930,7 @@ ["editor.action.showReferences"] = <function 1> } - filetypes: >lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx" } + { "javascript", "javascriptreact", "typescript", "typescriptreact" } - handlers: >lua { ["_typescript.rename"] = <function 1> @@ -10765,7 +10885,7 @@ - cmd: >lua { "vtsls", "--stdio" } - filetypes: >lua - { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx" } + { "javascript", "javascriptreact", "typescript", "typescriptreact" } - init_options: >lua { hostInfo = "neovim" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/doc/lspconfig.txt new/nvim-lspconfig-2.7.0/doc/lspconfig.txt --- old/nvim-lspconfig-2.6.0/doc/lspconfig.txt 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/doc/lspconfig.txt 2026-03-11 12:28:28.000000000 +0100 @@ -1,6 +1,5 @@ -*lspconfig.txt* For Nvim version 0.10+ - -nvim-lspconfig provides user-contributed configs for the Nvim |lsp| client. +*lspconfig.txt* User-contributed configs for the Nvim |lsp| client + For Nvim version 0.10+ Type |gO| to see the table of contents. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/angularls.lua new/nvim-lspconfig-2.7.0/lsp/angularls.lua --- old/nvim-lspconfig-2.6.0/lsp/angularls.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/angularls.lua 2026-03-11 12:28:28.000000000 +0100 @@ -118,6 +118,6 @@ return vim.lsp.rpc.start(cmd, dispatchers) end, - filetypes = { 'typescript', 'html', 'typescriptreact', 'typescript.tsx', 'htmlangular' }, + filetypes = { 'typescript', 'html', 'typescriptreact', 'htmlangular' }, root_markers = { 'angular.json', 'nx.json' }, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/clangd.lua new/nvim-lspconfig-2.7.0/lsp/clangd.lua --- old/nvim-lspconfig-2.6.0/lsp/clangd.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/clangd.lua 2026-03-11 12:28:28.000000000 +0100 @@ -74,6 +74,10 @@ 'configure.ac', -- AutoTools '.git', }, + get_language_id = function(_, ftype) + local t = { objc = 'objective-c', objcpp = 'objective-cpp', cuda = 'cuda-cpp' } + return t[ftype] or ftype + end, capabilities = { textDocument = { completion = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/denols.lua new/nvim-lspconfig-2.7.0/lsp/denols.lua --- old/nvim-lspconfig-2.6.0/lsp/denols.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/denols.lua 2026-03-11 12:28:28.000000000 +0100 @@ -101,10 +101,8 @@ filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', }, root_dir = function(bufnr, on_dir) -- The project root is where the LSP can be started from diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/eslint.lua new/nvim-lspconfig-2.7.0/lsp/eslint.lua --- old/nvim-lspconfig-2.6.0/lsp/eslint.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/eslint.lua 2026-03-11 12:28:28.000000000 +0100 @@ -38,6 +38,24 @@ --- You can use a different version of ESLint in each package, but it is recommended to use the same version of ESLint in all packages. The location of the ESLint binary will be determined automatically. --- --- /!\ When using flat config files, you need to use them across all your packages in your monorepo, as it's a global setting for the server. +--- +--- ### Flat config in ESLint versions prior to 10.0 +--- +--- If you're using a ESLint version that supports both flat config and eslintrc (>= 8.21, < 10.0) and want to change +--- the [default behavior](https://eslint.org/blog/2023/10/flat-config-rollout-plans/), you'll need to set +--- `experimental.useFlatConfig` accordingly: +--- ```lua +--- vim.lsp.config("eslint", { +--- settings = { +--- experimental = { +--- -- If you want to use flat config on >= 8.21, < 9.0 +--- useFlatConfig = true, +--- -- Or if you want to use eslintrc on 9.* +--- -- useFlatConfig = false, +--- } +--- } +--- }) +--- ``` local util = require 'lspconfig.util' local lsp = vim.lsp @@ -63,10 +81,8 @@ filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', 'vue', 'svelte', 'astro', @@ -131,9 +147,7 @@ ---@diagnostic disable-next-line: assign-type-mismatch packageManager = nil, useESLintClass = false, - experimental = { - useFlatConfig = false, - }, + experimental = {}, codeActionOnSave = { enable = false, mode = 'all', @@ -174,30 +188,6 @@ name = vim.fn.fnamemodify(root_dir, ':t'), } - -- Support flat config files - -- They contain 'config' in the file name - local flat_config_files = vim.tbl_filter(function(file) - return file:match('config') - end, eslint_config_files) - - for _, file in ipairs(flat_config_files) do - local found_files = vim.fn.globpath(root_dir, file, true, true) - - -- Filter out files inside node_modules - local filtered_files = {} - for _, found_file in ipairs(found_files) do - if string.find(found_file, '[/\\]node_modules[/\\]') == nil then - table.insert(filtered_files, found_file) - end - end - - if #filtered_files > 0 then - config.settings.experimental = config.settings.experimental or {} - config.settings.experimental.useFlatConfig = true - break - end - end - -- Support Yarn2 (PnP) projects local pnp_cjs = root_dir .. '/.pnp.cjs' local pnp_js = root_dir .. '/.pnp.js' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/flow.lua new/nvim-lspconfig-2.7.0/lsp/flow.lua --- old/nvim-lspconfig-2.6.0/lsp/flow.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/flow.lua 2026-03-11 12:28:28.000000000 +0100 @@ -24,6 +24,6 @@ return vim.lsp.rpc.start(cmd, dispatchers) end, - filetypes = { 'javascript', 'javascriptreact', 'javascript.jsx' }, + filetypes = { 'javascript', 'javascriptreact' }, root_markers = { '.flowconfig' }, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/fsautocomplete.lua new/nvim-lspconfig-2.7.0/lsp/fsautocomplete.lua --- old/nvim-lspconfig-2.6.0/lsp/fsautocomplete.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/fsautocomplete.lua 2026-03-11 12:28:28.000000000 +0100 @@ -24,7 +24,7 @@ cmd = { 'fsautocomplete', '--adaptive-lsp-server-enabled' }, root_dir = function(bufnr, on_dir) local fname = vim.api.nvim_buf_get_name(bufnr) - on_dir(util.root_pattern('*.sln', '*.fsproj', '.git')(fname)) + on_dir(util.root_pattern('*.sln', '*.slnx', '*.fsproj', '.git')(fname)) end, filetypes = { 'fsharp' }, init_options = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/julials.lua new/nvim-lspconfig-2.7.0/lsp/julials.lua --- old/nvim-lspconfig-2.6.0/lsp/julials.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/julials.lua 2026-03-11 12:28:28.000000000 +0100 @@ -20,12 +20,17 @@ --- julia --project=/path/to/my/project -e 'using Pkg; Pkg.instantiate()' --- ``` --- +--- To activate a Julia environment, use the `:LspJuliaActivateEnv` command. A prompt will ask you to select a Julia +--- environment from the list of environments found in the current working directory and the `environments/` folder of +--- `$JULIA_DEPOT_PATH` entries. You can also provide a path to a Julia environment directly. +--- Example: `:LspJuliaActivateEnv /path/to/my/project`. +--- --- Note: The julia programming language searches for global environments within the `environments/` --- folder of `$JULIA_DEPOT_PATH` entries. By default this simply `~/.julia/environments` local root_files = { 'Project.toml', 'JuliaProject.toml' } -local function activate_env(path) +local function activate_env(args) assert(vim.fn.has 'nvim-0.10' == 1, 'requires Nvim 0.10 or newer') local bufnr = vim.api.nvim_get_current_buf() local julials_clients = vim.lsp.get_clients { bufnr = bufnr, name = 'julials' } @@ -42,7 +47,8 @@ vim.notify('Julia environment activated: \n`' .. environment .. '`', vim.log.levels.INFO) end end - if path then + local path = args.args + if path ~= nil and #path > 0 then path = vim.fs.normalize(vim.fn.fnamemodify(vim.fn.expand(path), ':p')) local found_env = false for _, project_file in ipairs(root_files) do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/kakehashi.lua new/nvim-lspconfig-2.7.0/lsp/kakehashi.lua --- old/nvim-lspconfig-2.6.0/lsp/kakehashi.lua 1970-01-01 01:00:00.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/kakehashi.lua 2026-03-11 12:28:28.000000000 +0100 @@ -0,0 +1,41 @@ +--- @brief +--- +--- https://github.com/atusy/kakehashi +--- +--- Tree-sitter-based language server that provides semantic tokens, selection ranges, +--- and LSP bridging for embedded languages (e.g., code blocks in Markdown). +--- +--- kakehashi works with any language that has a Tree-sitter grammar. +--- Parsers and queries are automatically installed on first use +--- when `autoInstall` is enabled (the default). This requires the +--- `tree-sitter` CLI, a C compiler, and Git. +--- +--- **You must specify `filetypes` in your call to `vim.lsp.config`** to +--- restrict which files activate the server: +--- +--- ```lua +--- vim.lsp.config('kakehashi', { +--- filetypes = { 'markdown', 'lua', 'rust', 'python' }, +--- init_options = { +--- autoInstall = true, +--- -- Optional: bridge LSP requests in injection regions +--- languageServers = { +--- ['lua_ls'] = { +--- cmd = { 'lua-language-server' }, +--- languages = { 'lua' }, +--- }, +--- }, +--- languages = { +--- markdown = { +--- bridge = { lua_ls = { enabled = true } }, +--- }, +--- }, +--- }, +--- }) +--- ``` + +---@type vim.lsp.Config +return { + cmd = { 'kakehashi' }, + root_markers = { 'kakehashi.toml', '.git' }, +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/mpls.lua new/nvim-lspconfig-2.7.0/lsp/mpls.lua --- old/nvim-lspconfig-2.6.0/lsp/mpls.lua 1970-01-01 01:00:00.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/mpls.lua 2026-03-11 12:28:28.000000000 +0100 @@ -0,0 +1,36 @@ +---@brief +--- +--- https://github.com/mhersson/mpls +--- +--- Markdown Preview Language Server + +---@type vim.lsp.Config +return { + cmd = { + 'mpls', + '--theme', + 'dark', + '--enable-emoji', + '--enable-footnotes', + '--no-auto', + }, + root_markers = { '.marksman.toml', '.git' }, + filetypes = { 'markdown' }, + on_attach = function(client, bufnr) + vim.api.nvim_create_autocmd('BufEnter', { + pattern = { '*.md' }, + group = vim.api.nvim_create_augroup('lspconfig.mpls.focus', { clear = true }), + callback = function(ctx) + ---@diagnostic disable-next-line:param-type-mismatch + client:notify('mpls/editorDidChangeFocus', { uri = ctx.match }) + end, + desc = 'mpls: notify buffer focus changed', + }) + vim.api.nvim_buf_create_user_command(bufnr, 'LspMplsOpenPreview', function() + client:exec_cmd({ + title = 'Preview markdown with mpls', + command = 'open-preview', + }) + end, { desc = 'Preview markdown with mpls' }) + end, +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/oxfmt.lua new/nvim-lspconfig-2.7.0/lsp/oxfmt.lua --- old/nvim-lspconfig-2.6.0/lsp/oxfmt.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/oxfmt.lua 2026-03-11 12:28:28.000000000 +0100 @@ -15,14 +15,19 @@ ---@type vim.lsp.Config return { - cmd = { 'oxfmt', '--lsp' }, + cmd = function(dispatchers, config) + local cmd = 'oxfmt' + local local_cmd = (config or {}).root_dir and config.root_dir .. '/node_modules/.bin/oxfmt' + if local_cmd and vim.fn.executable(local_cmd) == 1 then + cmd = local_cmd + end + return vim.lsp.rpc.start({ cmd, '--lsp' }, dispatchers) + end, filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', 'toml', 'json', 'jsonc', @@ -31,13 +36,11 @@ 'html', 'vue', 'handlebars', - 'hbs', 'css', 'scss', 'less', 'graphql', 'markdown', - 'mdx', }, workspace_required = true, root_dir = function(bufnr, on_dir) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/oxlint.lua new/nvim-lspconfig-2.7.0/lsp/oxlint.lua --- old/nvim-lspconfig-2.6.0/lsp/oxlint.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/oxlint.lua 2026-03-11 12:28:28.000000000 +0100 @@ -30,7 +30,14 @@ ---@type vim.lsp.Config return { - cmd = { 'oxlint', '--lsp' }, + cmd = function(dispatchers, config) + local cmd = 'oxlint' + local local_cmd = (config or {}).root_dir and config.root_dir .. '/node_modules/.bin/oxlint' + if local_cmd and vim.fn.executable(local_cmd) == 1 then + cmd = local_cmd + end + return vim.lsp.rpc.start({ cmd, '--lsp' }, dispatchers) + end, filetypes = { 'javascript', 'javascriptreact', @@ -40,7 +47,7 @@ 'svelte', 'astro', }, - root_markers = { '.oxlintrc.json' }, + root_markers = { '.oxlintrc.json', 'oxlint.config.ts' }, workspace_required = true, on_attach = function(client, bufnr) vim.api.nvim_buf_create_user_command(bufnr, 'LspOxlintFixAll', function() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/pony_language_server.lua new/nvim-lspconfig-2.7.0/lsp/pony_language_server.lua --- old/nvim-lspconfig-2.6.0/lsp/pony_language_server.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/pony_language_server.lua 2026-03-11 12:28:28.000000000 +0100 @@ -1,12 +1,13 @@ ---@brief --- ---- https://github.com/ponylang/pony-language-server ---- ---- Language server for the Pony programming language +--- Renamed to [pony_lsp](#pony_lsp) ---@type vim.lsp.Config -return { - cmd = { 'pony-lsp' }, - filetypes = { 'pony' }, - root_markers = { 'corral.json', '.git' }, -} +return vim.tbl_extend('force', vim.lsp.config.pony_lsp, { + on_init = function(...) + vim.deprecate('pony_language_server', 'pony_lsp', '3.0.0', 'nvim-lspconfig', false) + if vim.lsp.config.pony_lsp.on_init then + vim.lsp.config.pony_lsp.on_init(...) + end + end, +}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/pony_lsp.lua new/nvim-lspconfig-2.7.0/lsp/pony_lsp.lua --- old/nvim-lspconfig-2.6.0/lsp/pony_lsp.lua 1970-01-01 01:00:00.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/pony_lsp.lua 2026-03-11 12:28:28.000000000 +0100 @@ -0,0 +1,24 @@ +---@brief +--- +--- https://github.com/ponylang/ponyc/tree/main/tools/pony-lsp +--- +--- Language server for the Pony programming language + +--- default settings for pony-lsp +local function default_settings() + ---@type table{ defines: string[], ponypath: string[] } + return { + defines = {}, + ponypath = {}, + } +end + +---@type vim.lsp.Config +return { + cmd = { 'pony-lsp' }, + filetypes = { 'pony' }, + root_markers = { 'corral.json', '.git' }, + settings = { + ['pony-lsp'] = default_settings(), + }, +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/pyrefly.lua new/nvim-lspconfig-2.7.0/lsp/pyrefly.lua --- old/nvim-lspconfig-2.6.0/lsp/pyrefly.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/pyrefly.lua 2026-03-11 12:28:28.000000000 +0100 @@ -21,6 +21,8 @@ '.git', }, on_exit = function(code, _, _) - vim.notify('Closing Pyrefly LSP exited with code: ' .. code, vim.log.levels.INFO) + vim.schedule(function() + vim.notify('Closing Pyrefly LSP exited with code: ' .. code, vim.log.levels.INFO) + end) end, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/rome.lua new/nvim-lspconfig-2.7.0/lsp/rome.lua --- old/nvim-lspconfig-2.6.0/lsp/rome.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/rome.lua 2026-03-11 12:28:28.000000000 +0100 @@ -18,7 +18,6 @@ 'javascriptreact', 'json', 'typescript', - 'typescript.tsx', 'typescriptreact', }, root_markers = { 'package.json', 'node_modules', '.git' }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/roslyn_ls.lua new/nvim-lspconfig-2.7.0/lsp/roslyn_ls.lua --- old/nvim-lspconfig-2.6.0/lsp/roslyn_ls.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/roslyn_ls.lua 2026-03-11 12:28:28.000000000 +0100 @@ -113,7 +113,8 @@ name = 'roslyn_ls', offset_encoding = 'utf-8', cmd = { - 'Microsoft.CodeAnalysis.LanguageServer', + vim.fn.executable('Microsoft.CodeAnalysis.LanguageServer') == 1 and 'Microsoft.CodeAnalysis.LanguageServer' + or 'roslyn-language-server', '--logLevel', 'Information', '--extensionLogDirectory', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/rust_analyzer.lua new/nvim-lspconfig-2.7.0/lsp/rust_analyzer.lua --- old/nvim-lspconfig-2.6.0/lsp/rust_analyzer.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/rust_analyzer.lua 2026-03-11 12:28:28.000000000 +0100 @@ -35,6 +35,33 @@ end end +local function user_sysroot_src() + return vim.tbl_get(vim.lsp.config['rust_analyzer'], 'settings', 'rust-analyzer', 'cargo', 'sysrootSrc') +end + +local function default_sysroot_src() + local sysroot = vim.tbl_get(vim.lsp.config['rust_analyzer'], 'settings', 'rust-analyzer', 'cargo', 'sysroot') + if not sysroot then + local rustc = os.getenv 'RUSTC' or 'rustc' + local result = vim.system({ rustc, '--print', 'sysroot' }, { text = true }):wait() + + local stdout = result.stdout + if result.code == 0 and stdout then + if string.sub(stdout, #stdout) == '\n' then + if #stdout > 1 then + sysroot = string.sub(stdout, 1, #stdout - 1) + else + sysroot = '' + end + else + sysroot = stdout + end + end + end + + return sysroot and vim.fs.joinpath(sysroot, 'lib/rustlib/src/rust/library') or nil +end + local function is_library(fname) local user_home = vim.fs.normalize(vim.env.HOME) local cargo_home = os.getenv 'CARGO_HOME' or user_home .. '/.cargo' @@ -44,8 +71,10 @@ local rustup_home = os.getenv 'RUSTUP_HOME' or user_home .. '/.rustup' local toolchains = rustup_home .. '/toolchains' - for _, item in ipairs { toolchains, registry, git_registry } do - if vim.fs.relpath(item, fname) then + local sysroot_src = user_sysroot_src() or default_sysroot_src() + + for _, item in ipairs { toolchains, registry, git_registry, sysroot_src } do + if item and vim.fs.relpath(item, fname) then local clients = vim.lsp.get_clients { name = 'rust_analyzer' } return #clients > 0 and clients[#clients].config.root_dir or nil end @@ -144,7 +173,7 @@ vim.list_extend(cmd, { '--', unpack(r.args.executableArgs) }) end - local proc = vim.system(cmd, { cwd = r.args.cwd }) + local proc = vim.system(cmd, { cwd = r.args.cwd, env = r.args.environment }) local result = proc:wait() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/slangd.lua new/nvim-lspconfig-2.7.0/lsp/slangd.lua --- old/nvim-lspconfig-2.6.0/lsp/slangd.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/slangd.lua 2026-03-11 12:28:28.000000000 +0100 @@ -27,5 +27,5 @@ return { cmd = { 'slangd' }, filetypes = { 'hlsl', 'shaderslang' }, - root_markers = { '.git' }, + root_markers = { 'slangdconfig.json', '.clang-format', '.git' }, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/ts_ls.lua new/nvim-lspconfig-2.7.0/lsp/ts_ls.lua --- old/nvim-lspconfig-2.6.0/lsp/ts_ls.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/ts_ls.lua 2026-03-11 12:28:28.000000000 +0100 @@ -80,10 +80,8 @@ filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', }, root_dir = function(bufnr, on_dir) -- The project root is where the LSP can be started from diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lsp/vtsls.lua new/nvim-lspconfig-2.7.0/lsp/vtsls.lua --- old/nvim-lspconfig-2.6.0/lsp/vtsls.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lsp/vtsls.lua 2026-03-11 12:28:28.000000000 +0100 @@ -76,10 +76,8 @@ filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', }, root_dir = function(bufnr, on_dir) -- The project root is where the LSP can be started from diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/angularls.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/angularls.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/angularls.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/angularls.lua 2026-03-11 12:28:28.000000000 +0100 @@ -56,7 +56,7 @@ '--angularCoreVersion', default_angular_core_version, }, - filetypes = { 'typescript', 'html', 'typescriptreact', 'typescript.tsx', 'htmlangular' }, + filetypes = { 'typescript', 'html', 'typescriptreact', 'htmlangular' }, -- Check for angular.json since that is the root of the project. -- Don't check for tsconfig.json or package.json since there are multiple of these -- in an angular monorepo setup. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/biome.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/biome.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/biome.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/biome.lua 2026-03-11 12:28:28.000000000 +0100 @@ -20,7 +20,6 @@ 'jsonc', 'svelte', 'typescript', - 'typescript.tsx', 'typescriptreact', 'vue', }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/denols.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/denols.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/denols.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/denols.lua 2026-03-11 12:28:28.000000000 +0100 @@ -76,10 +76,8 @@ filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', }, root_dir = util.root_pattern('deno.json', 'deno.jsonc', '.git'), settings = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/eslint.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/eslint.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/eslint.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/eslint.lua 2026-03-11 12:28:28.000000000 +0100 @@ -60,10 +60,8 @@ filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', 'vue', 'svelte', 'astro', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/flow.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/flow.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/flow.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/flow.lua 2026-03-11 12:28:28.000000000 +0100 @@ -10,7 +10,7 @@ return { default_config = { cmd = { 'npx', '--no-install', 'flow', 'lsp' }, - filetypes = { 'javascript', 'javascriptreact', 'javascript.jsx' }, + filetypes = { 'javascript', 'javascriptreact' }, root_dir = util.root_pattern '.flowconfig', }, docs = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/oxlint.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/oxlint.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/oxlint.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/oxlint.lua 2026-03-11 12:28:28.000000000 +0100 @@ -16,7 +16,6 @@ 'javascriptreact', 'svelte', 'typescript', - 'typescript.tsx', 'typescriptreact', 'vue', }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/relay_lsp.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/relay_lsp.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/relay_lsp.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/relay_lsp.lua 2026-03-11 12:28:28.000000000 +0100 @@ -23,10 +23,8 @@ filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', }, root_dir = util.root_pattern('relay.config.*', 'package.json'), on_new_config = function(config, root_dir) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/rome.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/rome.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/rome.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/rome.lua 2026-03-11 12:28:28.000000000 +0100 @@ -13,7 +13,6 @@ 'javascriptreact', 'json', 'typescript', - 'typescript.tsx', 'typescriptreact', }, root_dir = function(fname) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/ts_ls.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/ts_ls.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/ts_ls.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/ts_ls.lua 2026-03-11 12:28:28.000000000 +0100 @@ -14,10 +14,8 @@ filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', }, root_dir = util.root_pattern('tsconfig.json', 'jsconfig.json', 'package.json', '.git'), single_file_support = true, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/vtsls.lua new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/vtsls.lua --- old/nvim-lspconfig-2.6.0/lua/lspconfig/configs/vtsls.lua 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/lua/lspconfig/configs/vtsls.lua 2026-03-11 12:28:28.000000000 +0100 @@ -13,10 +13,8 @@ filetypes = { 'javascript', 'javascriptreact', - 'javascript.jsx', 'typescript', 'typescriptreact', - 'typescript.tsx', }, root_dir = util.root_pattern('tsconfig.json', 'package.json', 'jsconfig.json', '.git'), single_file_support = true, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nvim-lspconfig-2.6.0/scripts/docs_template.txt new/nvim-lspconfig-2.7.0/scripts/docs_template.txt --- old/nvim-lspconfig-2.6.0/scripts/docs_template.txt 2026-02-12 22:19:25.000000000 +0100 +++ new/nvim-lspconfig-2.7.0/scripts/docs_template.txt 2026-03-11 12:28:28.000000000 +0100 @@ -1,4 +1,4 @@ -*lspconfig-all* +*lspconfig-all* All configurations provided by |lspconfig| LSP configurations provided by nvim-lspconfig are listed below.
