├── .codespellignorewords ├── .editorconfig ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ └── config.yml ├── PULL_REQUEST_TEMPLATE │ └── pull_request_template.md ├── ci │ └── lint.sh ├── dependabot.yml └── workflows │ ├── docgen.yml │ ├── lint.yml │ ├── problem_matchers │ └── selene.json │ ├── release.yml │ └── test.yml ├── .gitignore ├── .luacheckrc ├── .luarc.json ├── .stylua.toml ├── CONTRIBUTING.md ├── LICENSE.md ├── Makefile ├── README.md ├── doc ├── configs.md ├── configs.txt ├── lspconfig.txt ├── server_configurations.md └── server_configurations.txt ├── flake.lock ├── flake.nix ├── lsp ├── ada_ls.lua ├── agda_ls.lua ├── aiken.lua ├── air.lua ├── alloy_ls.lua ├── anakin_language_server.lua ├── angularls.lua ├── ansiblels.lua ├── antlersls.lua ├── arduino_language_server.lua ├── asm_lsp.lua ├── ast_grep.lua ├── astro.lua ├── atlas.lua ├── autohotkey_lsp.lua ├── autotools_ls.lua ├── awk_ls.lua ├── azure_pipelines_ls.lua ├── bacon_ls.lua ├── ballerina.lua ├── basedpyright.lua ├── bashls.lua ├── basics_ls.lua ├── bazelrc_lsp.lua ├── beancount.lua ├── bicep.lua ├── biome.lua ├── bitbake_language_server.lua ├── blueprint_ls.lua ├── bqls.lua ├── bright_script.lua ├── bsl_ls.lua ├── buck2.lua ├── buddy_ls.lua ├── buf_ls.lua ├── bufls.lua ├── bzl.lua ├── c3_lsp.lua ├── cairo_ls.lua ├── ccls.lua ├── cds_lsp.lua ├── circom-lsp.lua ├── clangd.lua ├── clarity_lsp.lua ├── clojure_lsp.lua ├── cmake.lua ├── cobol_ls.lua ├── coffeesense.lua ├── contextive.lua ├── coq_lsp.lua ├── crystalline.lua ├── csharp_ls.lua ├── cspell_ls.lua ├── css_variables.lua ├── cssls.lua ├── cssmodules_ls.lua ├── cucumber_language_server.lua ├── cue.lua ├── custom_elements_ls.lua ├── cypher_ls.lua ├── daedalus_ls.lua ├── dafny.lua ├── dagger.lua ├── dartls.lua ├── dcmls.lua ├── debputy.lua ├── denols.lua ├── dhall_lsp_server.lua ├── diagnosticls.lua ├── digestif.lua ├── djlsp.lua ├── docker_compose_language_service.lua ├── dockerls.lua ├── dolmenls.lua ├── dotls.lua ├── dprint.lua ├── ds_pinyin_lsp.lua ├── dts_lsp.lua ├── earthlyls.lua ├── ecsact.lua ├── efm.lua ├── elixirls.lua ├── elmls.lua ├── elp.lua ├── ember.lua ├── emmet_language_server.lua ├── emmet_ls.lua ├── emmylua_ls.lua ├── erg_language_server.lua ├── erlangls.lua ├── esbonio.lua ├── eslint.lua ├── facility_language_server.lua ├── fennel_language_server.lua ├── fennel_ls.lua ├── fish_lsp.lua ├── flow.lua ├── flux_lsp.lua ├── foam_ls.lua ├── fortls.lua ├── fsautocomplete.lua ├── fsharp_language_server.lua ├── fstar.lua ├── futhark_lsp.lua ├── gdscript.lua ├── gdshader_lsp.lua ├── gh_actions_ls.lua ├── ghcide.lua ├── ghdl_ls.lua ├── ginko_ls.lua ├── gitlab_ci_ls.lua ├── glasgow.lua ├── gleam.lua ├── glsl_analyzer.lua ├── glslls.lua ├── gnls.lua ├── golangci_lint_ls.lua ├── gopls.lua ├── gradle_ls.lua ├── grammarly.lua ├── graphql.lua ├── groovyls.lua ├── guile_ls.lua ├── harper_ls.lua ├── hdl_checker.lua ├── helm_ls.lua ├── hhvm.lua ├── hie.lua ├── hlasm.lua ├── hls.lua ├── hoon_ls.lua ├── html.lua ├── htmx.lua ├── hydra_lsp.lua ├── hyprls.lua ├── idris2_lsp.lua ├── intelephense.lua ├── janet_lsp.lua ├── java_language_server.lua ├── jdtls.lua ├── jedi_language_server.lua ├── jinja_lsp.lua ├── jqls.lua ├── jsonls.lua ├── jsonnet_ls.lua ├── julials.lua ├── just.lua ├── kcl.lua ├── koka.lua ├── kotlin_language_server.lua ├── kotlin_lsp.lua ├── kulala_ls.lua ├── laravel_ls.lua ├── lean3ls.lua ├── lelwel_ls.lua ├── lemminx.lua ├── lexical.lua ├── lsp_ai.lua ├── ltex.lua ├── ltex_plus.lua ├── lua_ls.lua ├── luau_lsp.lua ├── lwc_ls.lua ├── m68k.lua ├── markdown_oxide.lua ├── marko-js.lua ├── marksman.lua ├── matlab_ls.lua ├── mdx_analyzer.lua ├── mesonlsp.lua ├── metals.lua ├── millet.lua ├── mint.lua ├── mlir_lsp_server.lua ├── mlir_pdll_lsp_server.lua ├── mm0_ls.lua ├── mojo.lua ├── motoko_lsp.lua ├── move_analyzer.lua ├── msbuild_project_tools_server.lua ├── muon.lua ├── mutt_ls.lua ├── nelua_lsp.lua ├── neocmake.lua ├── nextflow_ls.lua ├── nextls.lua ├── nginx_language_server.lua ├── nickel_ls.lua ├── nil_ls.lua ├── nim_langserver.lua ├── nimls.lua ├── nixd.lua ├── nomad_lsp.lua ├── ntt.lua ├── nushell.lua ├── nxls.lua ├── ocamlls.lua ├── ocamllsp.lua ├── ols.lua ├── omnisharp.lua ├── opencl_ls.lua ├── openscad_ls.lua ├── openscad_lsp.lua ├── oxlint.lua ├── pact_ls.lua ├── pasls.lua ├── pbls.lua ├── perlls.lua ├── perlnavigator.lua ├── perlpls.lua ├── pest_ls.lua ├── phan.lua ├── phpactor.lua ├── pico8_ls.lua ├── pkgbuild_language_server.lua ├── please.lua ├── pli.lua ├── poryscript_pls.lua ├── postgres_lsp.lua ├── powershell_es.lua ├── prismals.lua ├── prolog_ls.lua ├── prosemd_lsp.lua ├── protols.lua ├── psalm.lua ├── pug.lua ├── puppet.lua ├── purescriptls.lua ├── pylsp.lua ├── pylyzer.lua ├── pyre.lua ├── pyrefly.lua ├── pyright.lua ├── qmlls.lua ├── quick_lint_js.lua ├── r_language_server.lua ├── racket_langserver.lua ├── raku_navigator.lua ├── reason_ls.lua ├── regal.lua ├── regols.lua ├── remark_ls.lua ├── rescriptls.lua ├── rls.lua ├── rnix.lua ├── robotcode.lua ├── robotframework_ls.lua ├── roc_ls.lua ├── rome.lua ├── roslyn_ls.lua ├── rpmspec.lua ├── rubocop.lua ├── ruby_lsp.lua ├── ruff.lua ├── ruff_lsp.lua ├── rune_languageserver.lua ├── rust_analyzer.lua ├── salt_ls.lua ├── scheme_langserver.lua ├── scry.lua ├── selene3p_ls.lua ├── serve_d.lua ├── shopify_theme_ls.lua ├── sixtyfps.lua ├── slangd.lua ├── slint_lsp.lua ├── smarty_ls.lua ├── smithy_ls.lua ├── snakeskin_ls.lua ├── snyk_ls.lua ├── solang.lua ├── solargraph.lua ├── solc.lua ├── solidity.lua ├── solidity_ls.lua ├── solidity_ls_nomicfoundation.lua ├── somesass_ls.lua ├── sorbet.lua ├── sourcekit.lua ├── spectral.lua ├── spyglassmc_language_server.lua ├── sqlls.lua ├── sqls.lua ├── sqruff.lua ├── standardrb.lua ├── starlark_rust.lua ├── starpls.lua ├── statix.lua ├── steep.lua ├── stimulus_ls.lua ├── stylelint_lsp.lua ├── stylua3p_ls.lua ├── superhtml.lua ├── svelte.lua ├── svlangserver.lua ├── svls.lua ├── swift_mesonls.lua ├── syntax_tree.lua ├── systemd_ls.lua ├── tabby_ml.lua ├── tailwindcss.lua ├── taplo.lua ├── tblgen_lsp_server.lua ├── teal_ls.lua ├── templ.lua ├── terraform_lsp.lua ├── terraformls.lua ├── texlab.lua ├── textlsp.lua ├── tflint.lua ├── theme_check.lua ├── thriftls.lua ├── tilt_ls.lua ├── tinymist.lua ├── tofu_ls.lua ├── tombi.lua ├── ts_ls.lua ├── ts_query_ls.lua ├── tsp_server.lua ├── ttags.lua ├── turbo_ls.lua ├── turtle_ls.lua ├── tvm_ffi_navigator.lua ├── twiggy_language_server.lua ├── ty.lua ├── typeprof.lua ├── typos_lsp.lua ├── typst_lsp.lua ├── uiua.lua ├── ungrammar_languageserver.lua ├── unison.lua ├── unocss.lua ├── uvls.lua ├── v_analyzer.lua ├── vacuum.lua ├── vala_ls.lua ├── vale_ls.lua ├── vectorcode_server.lua ├── verible.lua ├── veridian.lua ├── veryl_ls.lua ├── vespa_ls.lua ├── vhdl_ls.lua ├── vimls.lua ├── visualforce_ls.lua ├── vls.lua ├── volar.lua ├── vscoqtop.lua ├── vtsls.lua ├── vue_ls.lua ├── wasm_language_tools.lua ├── wgsl_analyzer.lua ├── yamlls.lua ├── yang_lsp.lua ├── yls.lua ├── ziggy.lua ├── ziggy_schema.lua ├── zk.lua └── zls.lua ├── lua ├── lspconfig.lua └── lspconfig │ ├── async.lua │ ├── configs.lua │ ├── configs │ ├── ada_ls.lua │ ├── agda_ls.lua │ ├── aiken.lua │ ├── air.lua │ ├── alloy_ls.lua │ ├── anakin_language_server.lua │ ├── angularls.lua │ ├── ansiblels.lua │ ├── antlersls.lua │ ├── apex_ls.lua │ ├── arduino_language_server.lua │ ├── asm_lsp.lua │ ├── ast_grep.lua │ ├── astro.lua │ ├── atlas.lua │ ├── autohotkey_lsp.lua │ ├── autotools_ls.lua │ ├── awk_ls.lua │ ├── azure_pipelines_ls.lua │ ├── bacon_ls.lua │ ├── ballerina.lua │ ├── basedpyright.lua │ ├── bashls.lua │ ├── basics_ls.lua │ ├── bazelrc_lsp.lua │ ├── beancount.lua │ ├── bicep.lua │ ├── biome.lua │ ├── bitbake_language_server.lua │ ├── bitbake_ls.lua │ ├── blueprint_ls.lua │ ├── bqls.lua │ ├── bqnlsp.lua │ ├── bright_script.lua │ ├── bsl_ls.lua │ ├── buck2.lua │ ├── buddy_ls.lua │ ├── buf_ls.lua │ ├── bufls.lua │ ├── bzl.lua │ ├── c3_lsp.lua │ ├── cadence.lua │ ├── cairo_ls.lua │ ├── ccls.lua │ ├── cds_lsp.lua │ ├── circom-lsp.lua │ ├── clangd.lua │ ├── clarity_lsp.lua │ ├── clojure_lsp.lua │ ├── cmake.lua │ ├── cobol_ls.lua │ ├── codeqlls.lua │ ├── coffeesense.lua │ ├── contextive.lua │ ├── coq_lsp.lua │ ├── crystalline.lua │ ├── csharp_ls.lua │ ├── css_variables.lua │ ├── cssls.lua │ ├── cssmodules_ls.lua │ ├── cucumber_language_server.lua │ ├── cue.lua │ ├── custom_elements_ls.lua │ ├── cypher_ls.lua │ ├── daedalus_ls.lua │ ├── dafny.lua │ ├── dagger.lua │ ├── dartls.lua │ ├── dcmls.lua │ ├── debputy.lua │ ├── delphi_ls.lua │ ├── denols.lua │ ├── dhall_lsp_server.lua │ ├── diagnosticls.lua │ ├── digestif.lua │ ├── djlsp.lua │ ├── docker_compose_language_service.lua │ ├── dockerls.lua │ ├── dolmenls.lua │ ├── dotls.lua │ ├── dprint.lua │ ├── drools_lsp.lua │ ├── ds_pinyin_lsp.lua │ ├── dts_lsp.lua │ ├── earthlyls.lua │ ├── ecsact.lua │ ├── efm.lua │ ├── elixirls.lua │ ├── elmls.lua │ ├── elp.lua │ ├── ember.lua │ ├── emmet_language_server.lua │ ├── emmet_ls.lua │ ├── erg_language_server.lua │ ├── erlangls.lua │ ├── esbonio.lua │ ├── eslint.lua │ ├── facility_language_server.lua │ ├── fennel_language_server.lua │ ├── fennel_ls.lua │ ├── fish_lsp.lua │ ├── flow.lua │ ├── flux_lsp.lua │ ├── foam_ls.lua │ ├── fortls.lua │ ├── fsautocomplete.lua │ ├── fsharp_language_server.lua │ ├── fstar.lua │ ├── futhark_lsp.lua │ ├── gdscript.lua │ ├── gdshader_lsp.lua │ ├── gh_actions_ls.lua │ ├── ghcide.lua │ ├── ghdl_ls.lua │ ├── ginko_ls.lua │ ├── gitlab_ci_ls.lua │ ├── glasgow.lua │ ├── gleam.lua │ ├── glint.lua │ ├── glsl_analyzer.lua │ ├── glslls.lua │ ├── golangci_lint_ls.lua │ ├── gopls.lua │ ├── gradle_ls.lua │ ├── grammarly.lua │ ├── graphql.lua │ ├── groovyls.lua │ ├── guile_ls.lua │ ├── harper_ls.lua │ ├── haxe_language_server.lua │ ├── hdl_checker.lua │ ├── helm_ls.lua │ ├── hhvm.lua │ ├── hie.lua │ ├── hlasm.lua │ ├── hls.lua │ ├── hoon_ls.lua │ ├── html.lua │ ├── htmx.lua │ ├── hydra_lsp.lua │ ├── hyprls.lua │ ├── idris2_lsp.lua │ ├── intelephense.lua │ ├── janet_lsp.lua │ ├── java_language_server.lua │ ├── jdtls.lua │ ├── jedi_language_server.lua │ ├── jinja_lsp.lua │ ├── jqls.lua │ ├── jsonls.lua │ ├── jsonnet_ls.lua │ ├── julials.lua │ ├── just.lua │ ├── kcl.lua │ ├── koka.lua │ ├── kotlin_language_server.lua │ ├── kulala_ls.lua │ ├── laravel_ls.lua │ ├── lean3ls.lua │ ├── leanls.lua │ ├── lelwel_ls.lua │ ├── lemminx.lua │ ├── lexical.lua │ ├── lsp_ai.lua │ ├── ltex.lua │ ├── ltex_plus.lua │ ├── lua_ls.lua │ ├── luau_lsp.lua │ ├── lwc_ls.lua │ ├── m68k.lua │ ├── markdown_oxide.lua │ ├── marko-js.lua │ ├── marksman.lua │ ├── matlab_ls.lua │ ├── mdx_analyzer.lua │ ├── mesonlsp.lua │ ├── metals.lua │ ├── millet.lua │ ├── mint.lua │ ├── mlir_lsp_server.lua │ ├── mlir_pdll_lsp_server.lua │ ├── mm0_ls.lua │ ├── mojo.lua │ ├── motoko_lsp.lua │ ├── move_analyzer.lua │ ├── msbuild_project_tools_server.lua │ ├── muon.lua │ ├── mutt_ls.lua │ ├── nelua_lsp.lua │ ├── neocmake.lua │ ├── nextflow_ls.lua │ ├── nextls.lua │ ├── nginx_language_server.lua │ ├── nickel_ls.lua │ ├── nil_ls.lua │ ├── nim_langserver.lua │ ├── nimls.lua │ ├── nixd.lua │ ├── nomad_lsp.lua │ ├── ntt.lua │ ├── nushell.lua │ ├── nxls.lua │ ├── ocamlls.lua │ ├── ocamllsp.lua │ ├── ols.lua │ ├── omnisharp.lua │ ├── opencl_ls.lua │ ├── openedge_ls.lua │ ├── openscad_ls.lua │ ├── openscad_lsp.lua │ ├── oxlint.lua │ ├── pact_ls.lua │ ├── pasls.lua │ ├── pbls.lua │ ├── perlls.lua │ ├── perlnavigator.lua │ ├── perlpls.lua │ ├── pest_ls.lua │ ├── phan.lua │ ├── phpactor.lua │ ├── pico8_ls.lua │ ├── pkgbuild_language_server.lua │ ├── please.lua │ ├── poryscript_pls.lua │ ├── postgres_lsp.lua │ ├── powershell_es.lua │ ├── prismals.lua │ ├── prolog_ls.lua │ ├── prosemd_lsp.lua │ ├── protols.lua │ ├── psalm.lua │ ├── pug.lua │ ├── puppet.lua │ ├── purescriptls.lua │ ├── pylsp.lua │ ├── pylyzer.lua │ ├── pyre.lua │ ├── pyright.lua │ ├── qmlls.lua │ ├── quick_lint_js.lua │ ├── r_language_server.lua │ ├── racket_langserver.lua │ ├── raku_navigator.lua │ ├── reason_ls.lua │ ├── regal.lua │ ├── regols.lua │ ├── relay_lsp.lua │ ├── remark_ls.lua │ ├── rescriptls.lua │ ├── rls.lua │ ├── rnix.lua │ ├── robotcode.lua │ ├── robotframework_ls.lua │ ├── roc_ls.lua │ ├── rome.lua │ ├── rpmspec.lua │ ├── rubocop.lua │ ├── ruby_lsp.lua │ ├── ruff.lua │ ├── ruff_lsp.lua │ ├── rune_languageserver.lua │ ├── rust_analyzer.lua │ ├── salt_ls.lua │ ├── scheme_langserver.lua │ ├── scry.lua │ ├── selene3p_ls.lua │ ├── serve_d.lua │ ├── shopify_theme_ls.lua │ ├── sixtyfps.lua │ ├── slangd.lua │ ├── slint_lsp.lua │ ├── smarty_ls.lua │ ├── smithy_ls.lua │ ├── snakeskin_ls.lua │ ├── snyk_ls.lua │ ├── solang.lua │ ├── solargraph.lua │ ├── solc.lua │ ├── solidity.lua │ ├── solidity_ls.lua │ ├── solidity_ls_nomicfoundation.lua │ ├── somesass_ls.lua │ ├── sorbet.lua │ ├── sourcekit.lua │ ├── sourcery.lua │ ├── spectral.lua │ ├── spyglassmc_language_server.lua │ ├── sqlls.lua │ ├── sqls.lua │ ├── standardrb.lua │ ├── starlark_rust.lua │ ├── starpls.lua │ ├── statix.lua │ ├── steep.lua │ ├── stimulus_ls.lua │ ├── stylelint_lsp.lua │ ├── stylua3p_ls.lua │ ├── superhtml.lua │ ├── svelte.lua │ ├── svlangserver.lua │ ├── svls.lua │ ├── swift_mesonls.lua │ ├── syntax_tree.lua │ ├── systemd_ls.lua │ ├── tabby_ml.lua │ ├── tailwindcss.lua │ ├── taplo.lua │ ├── tblgen_lsp_server.lua │ ├── teal_ls.lua │ ├── templ.lua │ ├── terraform_lsp.lua │ ├── terraformls.lua │ ├── texlab.lua │ ├── textlsp.lua │ ├── tflint.lua │ ├── theme_check.lua │ ├── thriftls.lua │ ├── tilt_ls.lua │ ├── tinymist.lua │ ├── ts_ls.lua │ ├── ts_query_ls.lua │ ├── tsp_server.lua │ ├── ttags.lua │ ├── turbo_ls.lua │ ├── turtle_ls.lua │ ├── tvm_ffi_navigator.lua │ ├── twiggy_language_server.lua │ ├── typeprof.lua │ ├── typos_lsp.lua │ ├── typst_lsp.lua │ ├── uiua.lua │ ├── ungrammar_languageserver.lua │ ├── unison.lua │ ├── unocss.lua │ ├── uvls.lua │ ├── v_analyzer.lua │ ├── vacuum.lua │ ├── vala_ls.lua │ ├── vale_ls.lua │ ├── vdmj.lua │ ├── vectorcode_server.lua │ ├── verible.lua │ ├── veridian.lua │ ├── veryl_ls.lua │ ├── vhdl_ls.lua │ ├── vimls.lua │ ├── visualforce_ls.lua │ ├── vls.lua │ ├── volar.lua │ ├── vscoqtop.lua │ ├── vtsls.lua │ ├── vuels.lua │ ├── wasm_language_tools.lua │ ├── wgsl_analyzer.lua │ ├── yamlls.lua │ ├── yang_lsp.lua │ ├── yls.lua │ ├── ziggy.lua │ ├── ziggy_schema.lua │ ├── zk.lua │ └── zls.lua │ ├── health.lua │ ├── manager.lua │ ├── ui │ └── windows.lua │ └── util.lua ├── neovim.yml ├── nvim-lspconfig-scm-1.rockspec ├── plugin └── lspconfig.lua ├── scripts ├── docgen.lua ├── docs_template.md └── docs_template.txt ├── selene.toml └── test ├── lspconfig_spec.lua └── test_dir ├── a └── a_marker.txt └── root_marker.txt /.codespellignorewords: -------------------------------------------------------------------------------- 1 | abl 2 | als 3 | edn 4 | esy 5 | protols 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | tab_width = 8 7 | end_of_line = lf 8 | insert_final_newline = true 9 | 10 | [*.lua] 11 | max_line_length = 120 12 | 13 | [{Makefile,**/Makefile,runtime/doc/*.txt}] 14 | indent_style = tab 15 | indent_size = 8 16 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @glepnir 2 | 3 | /.github/ @dundargoc 4 | 5 | /flake.lock @teto 6 | /flake.nix @teto 7 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Question 4 | url: https://vi.stackexchange.com/ 5 | about: Usage questions and support requests 6 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE/pull_request_template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Pull Request 3 | about: Submit a pull request 4 | title: '' 5 | --- 6 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | commit-message: 8 | prefix: "ci" 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .luacheckcache 2 | neovim 3 | doc/tags 4 | -------------------------------------------------------------------------------- /.luacheckrc: -------------------------------------------------------------------------------- 1 | -- vim: ft=lua tw=80 2 | 3 | -- Rerun tests only if their modification time changed. 4 | cache = true 5 | 6 | ignore = { 7 | "122", -- Setting a read-only field of a global variable. 8 | "212", -- Unused argument, In the case of callback function, _arg_name is easier to understand than _, so this option is set to off. 9 | "631", -- max_line_length, vscode pkg URL is too long 10 | } 11 | 12 | -- Global objects defined by the C code 13 | read_globals = { 14 | "vim", 15 | } 16 | -------------------------------------------------------------------------------- /.luarc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json", 3 | "runtime": { 4 | "version": "LuaJIT" 5 | }, 6 | "workspace": { 7 | "library": [ 8 | "lua", 9 | "$VIMRUNTIME", 10 | "${3rd}/luv/library" 11 | ], 12 | "checkThirdParty": false 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.stylua.toml: -------------------------------------------------------------------------------- 1 | column_width = 120 2 | line_endings = "Unix" 3 | indent_type = "Spaces" 4 | indent_width = 2 5 | quote_style = "AutoPreferSingle" 6 | call_parentheses = "Input" 7 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | test: 2 | vusted ./test 3 | 4 | lint: 5 | @printf "\nRunning luacheck\n" 6 | luacheck -q lua/* test/* 7 | @printf "\nRunning selene\n" 8 | selene --display-style=quiet . 9 | @printf "\nRunning stylua\n" 10 | stylua --check . 11 | 12 | .PHONY: test lint 13 | -------------------------------------------------------------------------------- /doc/server_configurations.md: -------------------------------------------------------------------------------- 1 | # This file was renamed to [configs.md](./configs.md). 2 | -------------------------------------------------------------------------------- /doc/server_configurations.txt: -------------------------------------------------------------------------------- 1 | This file was renamed to "configs.txt". 2 | -------------------------------------------------------------------------------- /lsp/agda_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/agda/agda-language-server 4 | --- 5 | --- Language Server for Agda. 6 | 7 | local util = require 'lspconfig.util' 8 | 9 | return { 10 | cmd = { 'als' }, 11 | filetypes = { 'agda' }, 12 | root_dir = function(bufnr, on_dir) 13 | local fname = vim.api.nvim_buf_get_name(bufnr) 14 | on_dir(util.root_pattern('.git', '*.agda-lib')(fname)) 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /lsp/aiken.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/aiken-lang/aiken 4 | --- 5 | --- A language server for Aiken Programming Language. 6 | --- [Installation](https://aiken-lang.org/installation-instructions) 7 | --- 8 | --- It can be i 9 | return { 10 | cmd = { 'aiken', 'lsp' }, 11 | filetypes = { 'aiken' }, 12 | root_markers = { 'aiken.toml', '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/air.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/posit-dev/air 4 | --- 5 | --- Air is an R formatter and language server, written in Rust. 6 | --- 7 | --- Refer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details. 8 | return { 9 | cmd = { 'air', 'language-server' }, 10 | filetypes = { 'r' }, 11 | root_markers = { 'air.toml', '.air.toml', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/antlersls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://www.npmjs.com/package/antlers-language-server 4 | --- 5 | --- `antlersls` can be installed via `npm`: 6 | --- ```sh 7 | --- npm install -g antlers-language-server 8 | --- ``` 9 | return { 10 | cmd = { 'antlersls', '--stdio' }, 11 | filetypes = { 'html', 'antlers' }, 12 | root_markers = { 'composer.json' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/asm_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/bergercookie/asm-lsp 4 | --- 5 | --- Language Server for NASM/GAS/GO Assembly 6 | --- 7 | --- `asm-lsp` can be installed via cargo: 8 | --- cargo install asm-lsp 9 | return { 10 | cmd = { 'asm-lsp' }, 11 | filetypes = { 'asm', 'vmasm' }, 12 | root_markers = { '.asm-lsp.toml', '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/awk_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/Beaglefoot/awk-language-server/ 4 | --- 5 | --- `awk-language-server` can be installed via `npm`: 6 | --- ```sh 7 | --- npm install -g awk-language-server 8 | --- ``` 9 | 10 | return { 11 | cmd = { 'awk-language-server' }, 12 | filetypes = { 'awk' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/ballerina.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- Ballerina language server 4 | --- 5 | --- The Ballerina language's CLI tool comes with its own language server implementation. 6 | --- The `bal` command line tool must be installed and available in your system's PATH. 7 | return { 8 | cmd = { 'bal', 'start-language-server' }, 9 | filetypes = { 'ballerina' }, 10 | root_markers = { 'Ballerina.toml' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/basics_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/antonk52/basics-language-server/ 4 | --- 5 | --- Buffer, path, and snippet completion 6 | --- 7 | --- ```sh 8 | --- npm install -g basics-language-server 9 | --- ``` 10 | return { 11 | cmd = { 'basics-language-server' }, 12 | settings = { 13 | buffer = { 14 | enable = true, 15 | minCompletionLength = 4, 16 | }, 17 | path = { 18 | enable = true, 19 | }, 20 | snippet = { 21 | enable = false, 22 | sources = {}, 23 | }, 24 | }, 25 | } 26 | -------------------------------------------------------------------------------- /lsp/bazelrc_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/salesforce-misc/bazelrc-lsp 4 | --- 5 | --- `bazelrc-lsp` is a LSP for `.bazelrc` configuration files. 6 | --- 7 | --- The `.bazelrc` file type is not detected automatically, you can register it manually (see below) or override the filetypes: 8 | --- 9 | --- ```lua 10 | --- vim.filetype.add { 11 | --- pattern = { 12 | --- ['.*.bazelrc'] = 'bazelrc', 13 | --- }, 14 | --- } 15 | --- ``` 16 | return { 17 | cmd = { 'bazelrc-lsp', 'lsp' }, 18 | filetypes = { 'bazelrc' }, 19 | root_markers = { 'WORKSPACE', 'WORKSPACE.bazel', 'MODULE.bazel' }, 20 | } 21 | -------------------------------------------------------------------------------- /lsp/beancount.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/polarmutex/beancount-language-server#installation 4 | --- 5 | --- See https://github.com/polarmutex/beancount-language-server#configuration for configuration options 6 | return { 7 | cmd = { 'beancount-language-server', '--stdio' }, 8 | filetypes = { 'beancount', 'bean' }, 9 | root_markers = { '.git' }, 10 | init_options = {}, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/bitbake_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- 🛠️ bitbake language server 4 | return { 5 | cmd = { 'bitbake-language-server' }, 6 | filetypes = { 'bitbake' }, 7 | root_markers = { '.git' }, 8 | } 9 | -------------------------------------------------------------------------------- /lsp/bqls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/kitagry/bqls 4 | --- 5 | --- The `bqls` BigQuery language server can be installed by running: 6 | --- 7 | --- ```sh 8 | --- $ go install github.com/kitagry/bqls@latest 9 | --- ``` 10 | return { 11 | cmd = { 'bqls' }, 12 | filetypes = { 'sql' }, 13 | root_markers = { '.git' }, 14 | settings = {}, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/bright_script.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/RokuCommunity/brighterscript 4 | --- 5 | --- `brightscript` can be installed via `npm`: 6 | --- ```sh 7 | --- npm install -g brighterscript 8 | --- ``` 9 | return { 10 | cmd = { 'bsc', '--lsp', '--stdio' }, 11 | filetypes = { 'brs' }, 12 | root_markers = { 'makefile', 'Makefile', '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/bsl_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/1c-syntax/bsl-language-server 4 | --- 5 | --- Language Server Protocol implementation for 1C (BSL) - 1C:Enterprise 8 and OneScript languages. 6 | 7 | return { 8 | filetypes = { 'bsl', 'os' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/buck2.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/facebook/buck2 4 | --- 5 | --- Build system, successor to Buck 6 | --- 7 | --- To better detect Buck2 project files, the following can be added: 8 | --- 9 | --- ``` 10 | --- vim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]] 11 | --- ``` 12 | return { 13 | cmd = { 'buck2', 'lsp' }, 14 | filetypes = { 'bzl' }, 15 | root_markers = { '.buckconfig' }, 16 | } 17 | -------------------------------------------------------------------------------- /lsp/buddy_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/buddy-compiler/buddy-mlir#buddy-lsp-server 4 | --- The Language Server for the buddy-mlir, a drop-in replacement for mlir-lsp-server, 5 | --- supporting new dialects defined in buddy-mlir. 6 | --- `buddy-lsp-server` can be installed at the buddy-mlir repository (buddy-compiler/buddy-mlir) 7 | return { 8 | cmd = { 'buddy-lsp-server' }, 9 | filetypes = { 'mlir' }, 10 | root_markers = { '.git' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/buf_ls.lua: -------------------------------------------------------------------------------- 1 | --- @brief 2 | --- https://github.com/bufbuild/buf 3 | --- 4 | --- buf beta lsp included in the cli itself 5 | --- 6 | --- buf beta lsp is a Protobuf language server compatible with Buf modules and workspaces 7 | 8 | return { 9 | cmd = { 'buf', 'beta', 'lsp', '--timeout=0', '--log-format=text' }, 10 | filetypes = { 'proto' }, 11 | root_markers = { 'buf.yaml', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/bufls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/bufbuild/buf-language-server 4 | --- 5 | --- `buf-language-server` can be installed via `go install`: 6 | --- ```sh 7 | --- go install github.com/bufbuild/buf-language-server/cmd/bufls@latest 8 | --- ``` 9 | --- 10 | --- bufls is a Protobuf language server compatible with Buf modules and workspaces 11 | return { 12 | cmd = { 'bufls', 'serve' }, 13 | filetypes = { 'proto' }, 14 | root_markers = { 'buf.work.yaml', '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/bzl.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://bzl.io/ 4 | --- 5 | --- https://docs.stack.build/docs/cli/installation 6 | --- 7 | --- https://docs.stack.build/docs/vscode/starlark-language-server 8 | return { 9 | cmd = { 'bzl', 'lsp', 'serve' }, 10 | filetypes = { 'bzl' }, 11 | -- https://docs.bazel.build/versions/5.4.1/build-ref.html#workspace 12 | root_markers = { 'WORKSPACE', 'WORKSPACE.bazel' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/c3_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/pherrymason/c3-lsp 4 | --- 5 | --- Language Server for c3. 6 | return { 7 | cmd = { 'c3lsp' }, 8 | root_markers = { 'project.json', 'manifest.json', '.git' }, 9 | filetypes = { 'c3', 'c3i' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/cds_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://cap.cloud.sap/docs/ 4 | --- 5 | --- `cds-lsp` can be installed via `npm`: 6 | --- 7 | --- ```sh 8 | --- npm i -g @sap/cds-lsp 9 | --- ``` 10 | return { 11 | cmd = { 'cds-lsp', '--stdio' }, 12 | filetypes = { 'cds' }, 13 | -- init_options = { provideFormatter = true }, -- needed to enable formatting capabilities 14 | root_markers = { 'package.json', 'db', 'srv' }, 15 | settings = { 16 | cds = { validate = true }, 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/circom-lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- [Circom Language Server](https://github.com/rubydusa/circom-lsp) 4 | --- 5 | --- `circom-lsp`, the language server for the Circom language. 6 | return { 7 | cmd = { 'circom-lsp' }, 8 | filetypes = { 'circom' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/clarity_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | ---`clarity-lsp` is a language server for the Clarity language. Clarity is a decidable smart contract language that optimizes for predictability and security. Smart contracts allow developers to encode essential business logic on a blockchain. 4 | --- 5 | --- To learn how to configure the clarity language server, see the [clarity-lsp documentation](https://github.com/hirosystems/clarity-lsp). 6 | return { 7 | cmd = { 'clarity-lsp' }, 8 | filetypes = { 'clar', 'clarity' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/clojure_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/clojure-lsp/clojure-lsp 4 | --- 5 | --- Clojure Language Server 6 | return { 7 | cmd = { 'clojure-lsp' }, 8 | filetypes = { 'clojure', 'edn' }, 9 | root_markers = { 'project.clj', 'deps.edn', 'build.boot', 'shadow-cljs.edn', '.git', 'bb.edn' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/cmake.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/regen100/cmake-language-server 4 | --- 5 | --- CMake LSP Implementation 6 | return { 7 | cmd = { 'cmake-language-server' }, 8 | filetypes = { 'cmake' }, 9 | root_markers = { 'CMakePresets.json', 'CTestConfig.cmake', '.git', 'build', 'cmake' }, 10 | init_options = { 11 | buildDirectory = 'build', 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/cobol_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- Cobol language support 4 | return { 5 | cmd = { 'cobol-language-support' }, 6 | filetypes = { 'cobol' }, 7 | root_markers = { '.git' }, 8 | } 9 | -------------------------------------------------------------------------------- /lsp/coffeesense.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/phil294/coffeesense 4 | --- 5 | --- CoffeeSense Language Server 6 | --- `coffeesense-language-server` can be installed via `npm`: 7 | --- ```sh 8 | --- npm install -g coffeesense-language-server 9 | --- ``` 10 | return { 11 | cmd = { 'coffeesense-language-server', '--stdio' }, 12 | filetypes = { 'coffee' }, 13 | root_markers = { 'package.json' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/coq_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/ejgallego/coq-lsp/ 4 | return { 5 | cmd = { 'coq-lsp' }, 6 | filetypes = { 'coq' }, 7 | root_markers = { '_CoqProject', '.git' }, 8 | } 9 | -------------------------------------------------------------------------------- /lsp/crystalline.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/elbywan/crystalline 4 | --- 5 | --- Crystal language server. 6 | return { 7 | cmd = { 'crystalline' }, 8 | filetypes = { 'crystal' }, 9 | root_markers = { 'shard.yml', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/cspell_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- [cspell language server](https://github.com/vlabo/cspell-lsp) 4 | --- 5 | return { 6 | cmd = { 'cspell-lsp', '--stdio' }, 7 | root_markers = { 8 | '.git', 9 | 'cspell.json', 10 | '.cspell.json', 11 | 'cspell.json', 12 | '.cSpell.json', 13 | 'cSpell.json', 14 | 'cspell.config.js', 15 | 'cspell.config.cjs', 16 | 'cspell.config.json', 17 | 'cspell.config.yaml', 18 | 'cspell.config.yml', 19 | 'cspell.yaml', 20 | 'cspell.yml', 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lsp/cssmodules_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/antonk52/cssmodules-language-server 4 | --- 5 | --- Language server for autocompletion and go-to-definition functionality for CSS modules. 6 | --- 7 | --- You can install cssmodules-language-server via npm: 8 | --- ```sh 9 | --- npm install -g cssmodules-language-server 10 | --- ``` 11 | return { 12 | cmd = { 'cssmodules-language-server' }, 13 | filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' }, 14 | root_markers = { 'package.json' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/cucumber_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://cucumber.io 4 | --- https://github.com/cucumber/common 5 | --- https://www.npmjs.com/package/@cucumber/language-server 6 | --- 7 | --- Language server for Cucumber. 8 | --- 9 | --- `cucumber-language-server` can be installed via `npm`: 10 | --- ```sh 11 | --- npm install -g @cucumber/language-server 12 | --- ``` 13 | return { 14 | cmd = { 'cucumber-language-server', '--stdio' }, 15 | filetypes = { 'cucumber' }, 16 | root_markers = { '.git' }, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/cue.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/cue-lang/cue 4 | --- 5 | --- CUE makes it easy to validate data, write schemas, and ensure configurations align with policies. 6 | return { 7 | cmd = { 'cue', 'lsp' }, 8 | filetypes = { 'cue' }, 9 | root_markers = { 'cue.mod', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/cypher_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/neo4j/cypher-language-support/tree/main/packages/language-server 4 | --- 5 | --- `cypher-language-server`, language server for Cypher query language. 6 | --- Part of the umbrella project cypher-language-support: https://github.com/neo4j/cypher-language-support 7 | --- 8 | --- `cypher-language-server` can be installed via `npm`: 9 | --- ```sh 10 | --- npm i -g @neo4j-cypher/language-server 11 | --- ``` 12 | return { 13 | cmd = { 'cypher-language-server', '--stdio' }, 14 | filetypes = { 'cypher' }, 15 | root_markers = { '.git' }, 16 | } 17 | -------------------------------------------------------------------------------- /lsp/daedalus_ls.lua: -------------------------------------------------------------------------------- 1 | --- @brief 2 | --- 3 | --- DaedalusLanguageServer 4 | 5 | return { 6 | cmd = { 'DaedalusLanguageServer' }, 7 | filetypes = { 'd' }, 8 | root_markers = { 9 | 'Gothic.src', 10 | 'Camera.src', 11 | 'Menu.src', 12 | 'Music.src', 13 | 'ParticleFX.src', 14 | 'SFX.src', 15 | 'VisualFX.src', 16 | }, 17 | settings = { 18 | DaedalusLanguageServer = { 19 | loglevel = 'debug', 20 | inlayHints = { constants = true }, 21 | numParserThreads = 16, 22 | fileEncoding = 'Windows-1252', 23 | srcFileEncoding = 'Windows-1252', 24 | }, 25 | }, 26 | } 27 | -------------------------------------------------------------------------------- /lsp/dafny.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- Support for the Dafny language server. 4 | 5 | -- The default `cmd` uses "dafny server", which works on Dafny 4.0.0+. For 6 | -- older versions of Dafny, you can compile the language server from source at 7 | -- [dafny-lang/language-server-csharp](https://github.com/dafny-lang/language-server-csharp) 8 | -- and set `cmd = {"dotnet", ""}`. 9 | return { 10 | cmd = { 'dafny', 'server' }, 11 | filetypes = { 'dfy', 'dafny' }, 12 | root_markers = { '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/dagger.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/dagger/cuelsp 4 | --- 5 | --- Dagger's lsp server for cuelang. 6 | return { 7 | cmd = { 'cuelsp' }, 8 | filetypes = { 'cue' }, 9 | root_markers = { 'cue.mod', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/dartls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/dart-lang/sdk/tree/master/pkg/analysis_server/tool/lsp_spec 4 | --- 5 | --- Language server for dart. 6 | return { 7 | cmd = { 'dart', 'language-server', '--protocol=lsp' }, 8 | filetypes = { 'dart' }, 9 | root_markers = { 'pubspec.yaml' }, 10 | init_options = { 11 | onlyAnalyzeProjectsWithOpenFiles = true, 12 | suggestFromUnimportedLibraries = true, 13 | closingLabels = true, 14 | outline = true, 15 | flutterOutline = true, 16 | }, 17 | settings = { 18 | dart = { 19 | completeFunctionCalls = true, 20 | showTodos = true, 21 | }, 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /lsp/dcmls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://dcm.dev/ 4 | --- 5 | --- Language server for DCM analyzer. 6 | return { 7 | cmd = { 'dcm', 'start-server', '--client=neovim' }, 8 | filetypes = { 'dart' }, 9 | root_markers = { 'pubspec.yaml' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/debputy.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://salsa.debian.org/debian/debputy 4 | --- 5 | --- Language Server for Debian packages. 6 | return { 7 | cmd = { 'debputy', 'lsp', 'server' }, 8 | filetypes = { 'debcontrol', 'debcopyright', 'debchangelog', 'make', 'yaml' }, 9 | root_markers = { 'debian' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/dhall_lsp_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-lsp-server 4 | --- 5 | --- language server for dhall 6 | --- 7 | --- `dhall-lsp-server` can be installed via cabal: 8 | --- ```sh 9 | --- cabal install dhall-lsp-server 10 | --- ``` 11 | --- prebuilt binaries can be found [here](https://github.com/dhall-lang/dhall-haskell/releases). 12 | 13 | return { 14 | cmd = { 'dhall-lsp-server' }, 15 | filetypes = { 'dhall' }, 16 | root_markers = { '.git' }, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/diagnosticls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/iamcco/diagnostic-languageserver 4 | --- 5 | --- Diagnostic language server integrate with linters. 6 | return { 7 | -- Configuration from https://github.com/iamcco/diagnostic-languageserver#config--document 8 | cmd = { 'diagnostic-languageserver', '--stdio' }, 9 | root_markers = { '.git' }, 10 | -- Empty by default, override to add filetypes. 11 | filetypes = {}, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/digestif.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/astoff/digestif 4 | --- 5 | --- Digestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides 6 | --- 7 | --- context-sensitive completion, documentation, code navigation, and related functionality to any 8 | --- 9 | --- text editor that speaks the LSP protocol. 10 | return { 11 | cmd = { 'digestif' }, 12 | filetypes = { 'tex', 'plaintex', 'context' }, 13 | root_markers = { '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/djlsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/fourdigits/django-template-lsp 4 | --- 5 | --- `djlsp`, a language server for Django templates. 6 | 7 | return { 8 | cmd = { 'djlsp' }, 9 | filetypes = { 'html', 'htmldjango' }, 10 | root_markers = { '.git' }, 11 | settings = {}, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/dolmenls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/Gbury/dolmen/blob/master/doc/lsp.md 4 | --- 5 | --- `dolmenls` can be installed via `opam` 6 | --- ```sh 7 | --- opam install dolmen_lsp 8 | --- ``` 9 | return { 10 | cmd = { 'dolmenls' }, 11 | filetypes = { 'smt2', 'tptp', 'p', 'cnf', 'icnf', 'zf' }, 12 | root_markers = { '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/dotls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nikeee/dot-language-server 4 | --- 5 | --- `dot-language-server` can be installed via `npm`: 6 | --- ```sh 7 | --- npm install -g dot-language-server 8 | --- ``` 9 | return { 10 | cmd = { 'dot-language-server', '--stdio' }, 11 | filetypes = { 'dot' }, 12 | root_markers = { '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/dprint.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/dprint/dprint 4 | --- 5 | --- Pluggable and configurable code formatting platform written in Rust. 6 | return { 7 | cmd = { 'dprint', 'lsp' }, 8 | filetypes = { 9 | 'javascript', 10 | 'javascriptreact', 11 | 'typescript', 12 | 'typescriptreact', 13 | 'json', 14 | 'jsonc', 15 | 'markdown', 16 | 'python', 17 | 'toml', 18 | 'rust', 19 | 'roslyn', 20 | 'graphql', 21 | }, 22 | root_markers = { 'dprint.json', '.dprint.json', 'dprint.jsonc', '.dprint.jsonc' }, 23 | settings = {}, 24 | } 25 | -------------------------------------------------------------------------------- /lsp/earthlyls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/glehmann/earthlyls 4 | --- 5 | --- A fast language server for earthly. 6 | 7 | return { 8 | cmd = { 'earthlyls' }, 9 | filetypes = { 'earthfile' }, 10 | root_markers = { 'Earthfile' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/ecsact.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/ecsact-dev/ecsact_lsp_server 4 | --- 5 | --- Language server for Ecsact. 6 | --- 7 | --- The default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the 8 | --- Ecsact SDK: https://ecsact.dev/start 9 | return { 10 | cmd = { 'ecsact_lsp_server', '--stdio' }, 11 | filetypes = { 'ecsact' }, 12 | root_markers = { '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/elp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://whatsapp.github.io/erlang-language-platform 4 | --- 5 | --- ELP integrates Erlang into modern IDEs via the language server protocol and was 6 | --- inspired by rust-analyzer. 7 | return { 8 | cmd = { 'elp', 'server' }, 9 | filetypes = { 'erlang' }, 10 | root_markers = { 'rebar.config', 'erlang.mk', '.git' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/ember.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/ember-tooling/ember-language-server 4 | --- 5 | --- `ember-language-server` can be installed via `npm`: 6 | --- 7 | --- ```sh 8 | --- npm install -g @ember-tooling/ember-language-server 9 | --- ``` 10 | return { 11 | cmd = { 'ember-language-server', '--stdio' }, 12 | filetypes = { 'handlebars', 'typescript', 'javascript', 'typescript.glimmer', 'javascript.glimmer' }, 13 | root_markers = { 'ember-cli-build.js', '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/emmet_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/olrtg/emmet-language-server 4 | --- 5 | --- Package can be installed via `npm`: 6 | --- ```sh 7 | --- npm install -g @olrtg/emmet-language-server 8 | --- ``` 9 | return { 10 | cmd = { 'emmet-language-server', '--stdio' }, 11 | filetypes = { 12 | 'astro', 13 | 'css', 14 | 'eruby', 15 | 'html', 16 | 'htmlangular', 17 | 'htmldjango', 18 | 'javascriptreact', 19 | 'less', 20 | 'pug', 21 | 'sass', 22 | 'scss', 23 | 'svelte', 24 | 'templ', 25 | 'typescriptreact', 26 | 'vue', 27 | }, 28 | root_markers = { '.git' }, 29 | } 30 | -------------------------------------------------------------------------------- /lsp/emmet_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/aca/emmet-ls 4 | --- 5 | --- Package can be installed via `npm`: 6 | --- ```sh 7 | --- npm install -g emmet-ls 8 | --- ``` 9 | return { 10 | cmd = { 'emmet-ls', '--stdio' }, 11 | filetypes = { 12 | 'astro', 13 | 'css', 14 | 'eruby', 15 | 'html', 16 | 'htmlangular', 17 | 'htmldjango', 18 | 'javascriptreact', 19 | 'less', 20 | 'pug', 21 | 'sass', 22 | 'scss', 23 | 'svelte', 24 | 'templ', 25 | 'typescriptreact', 26 | 'vue', 27 | }, 28 | root_markers = { '.git' }, 29 | } 30 | -------------------------------------------------------------------------------- /lsp/erg_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/erg-lang/erg#flags ELS 4 | --- 5 | --- ELS (erg-language-server) is a language server for the Erg programming language. 6 | --- 7 | --- erg-language-server can be installed via `cargo` and used as follows: 8 | --- 9 | --- ```sh 10 | --- cargo install erg --features els 11 | --- erg --language-server 12 | --- ``` 13 | 14 | return { 15 | cmd = { 'erg', '--language-server' }, 16 | filetypes = { 'erg' }, 17 | root_markers = { 'package.er', '.git' }, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/facility_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/FacilityApi/FacilityLanguageServer 4 | --- 5 | --- Facility language server protocol (LSP) support. 6 | return { 7 | cmd = { 'facility-language-server' }, 8 | filetypes = { 'fsd' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/fennel_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/rydesun/fennel-language-server 4 | --- 5 | --- Fennel language server protocol (LSP) support. 6 | return { 7 | cmd = { 'fennel-language-server' }, 8 | filetypes = { 'fennel' }, 9 | root_markers = { '.git' }, 10 | settings = {}, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/fish_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/ndonfris/fish-lsp 4 | --- 5 | --- A Language Server Protocol (LSP) tailored for the fish shell. 6 | --- This project aims to enhance the coding experience for fish, 7 | --- by introducing a suite of intelligent features like auto-completion, 8 | --- scope aware symbol analysis, per-token hover generation, and many others. 9 | --- 10 | --- [homepage](https://www.fish-lsp.dev/) 11 | return { 12 | cmd = { 'fish-lsp', 'start' }, 13 | filetypes = { 'fish' }, 14 | root_markers = { 'config.fish', '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/flow.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://flow.org/ 4 | --- https://github.com/facebook/flow 5 | --- 6 | --- See below for how to setup Flow itself. 7 | --- https://flow.org/en/docs/install/ 8 | --- 9 | --- See below for lsp command options. 10 | --- 11 | --- ```sh 12 | --- npx flow lsp --help 13 | --- ``` 14 | return { 15 | cmd = { 'npx', '--no-install', 'flow', 'lsp' }, 16 | filetypes = { 'javascript', 'javascriptreact', 'javascript.jsx' }, 17 | root_markers = { '.flowconfig' }, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/flux_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/influxdata/flux-lsp 4 | --- `flux-lsp` can be installed via `cargo`: 5 | --- ```sh 6 | --- cargo install --git https://github.com/influxdata/flux-lsp 7 | --- ``` 8 | return { 9 | cmd = { 'flux-lsp' }, 10 | filetypes = { 'flux' }, 11 | root_markers = { '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/foam_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/FoamScience/foam-language-server 4 | --- 5 | --- `foam-language-server` can be installed via `npm` 6 | --- ```sh 7 | --- npm install -g foam-language-server 8 | --- ``` 9 | 10 | return { 11 | cmd = { 'foam-ls', '--stdio' }, 12 | filetypes = { 'foam', 'OpenFOAM' }, 13 | root_dir = function(bufnr, on_dir) 14 | local fname = vim.api.nvim_buf_get_name(bufnr) 15 | on_dir(vim.iter(vim.fs.parents(fname)):find(function(path) 16 | if vim.uv.fs_stat(path .. '/system/controlDict') then 17 | return path 18 | end 19 | end)) 20 | end, 21 | } 22 | -------------------------------------------------------------------------------- /lsp/fstar.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/FStarLang/FStar 4 | --- 5 | --- LSP support is included in FStar. Make sure `fstar.exe` is in your PATH. 6 | return { 7 | cmd = { 'fstar.exe', '--lsp' }, 8 | filetypes = { 'fstar' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/futhark_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/diku-dk/futhark 4 | --- 5 | --- Futhark Language Server 6 | --- 7 | --- This language server comes with the futhark compiler and is run with the command 8 | --- ``` 9 | --- futhark lsp 10 | --- ``` 11 | return { 12 | cmd = { 'futhark', 'lsp' }, 13 | filetypes = { 'futhark', 'fut' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/gdscript.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/godotengine/godot 4 | --- 5 | --- Language server for GDScript, used by Godot Engine. 6 | 7 | local port = os.getenv 'GDScript_Port' or '6005' 8 | local cmd = vim.lsp.rpc.connect('127.0.0.1', tonumber(port)) 9 | 10 | return { 11 | cmd = cmd, 12 | filetypes = { 'gd', 'gdscript', 'gdscript3' }, 13 | root_markers = { 'project.godot', '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/gdshader_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/godofavacyn/gdshader-lsp 4 | --- 5 | --- A language server for the Godot Shading language. 6 | return { 7 | cmd = { 'gdshader-lsp', '--stdio' }, 8 | filetypes = { 'gdshader', 'gdshaderinc' }, 9 | root_markers = { 'project.godot' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/ghcide.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/digital-asset/ghcide 4 | --- 5 | --- A library for building Haskell IDE tooling. 6 | --- "ghcide" isn't for end users now. Use "haskell-language-server" instead of "ghcide". 7 | return { 8 | cmd = { 'ghcide', '--lsp' }, 9 | filetypes = { 'haskell', 'lhaskell' }, 10 | root_markers = { 'stack.yaml', 'hie-bios', 'BUILD.bazel', 'cabal.config', 'package.yaml' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/ghdl_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/ghdl/ghdl-language-server 4 | --- 5 | --- A language server for VHDL, using ghdl as its backend. 6 | --- 7 | --- `ghdl-ls` is part of pyghdl, for installation instructions see 8 | --- [the upstream README](https://github.com/ghdl/ghdl/tree/master/pyGHDL/lsp). 9 | return { 10 | cmd = { 'ghdl-ls' }, 11 | filetypes = { 'vhdl' }, 12 | root_markers = { 'hdl-prj.json', '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/ginko_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | ---`ginko_ls` is meant to be a feature-complete language server for device-trees. 4 | --- Language servers can be used in many editors, such as Visual Studio Code, Emacs 5 | --- or Vim 6 | --- 7 | --- Install `ginko_ls` from https://github.com/Schottkyc137/ginko and add it to path 8 | --- 9 | --- `ginko_ls` doesn't require any configuration. 10 | return { 11 | cmd = { 'ginko_ls' }, 12 | filetypes = { 'dts' }, 13 | root_markers = { '.git' }, 14 | settings = {}, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/gleam.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/gleam-lang/gleam 4 | --- 5 | --- A language server for Gleam Programming Language. 6 | --- 7 | --- It comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/) 8 | return { 9 | cmd = { 'gleam', 'lsp' }, 10 | filetypes = { 'gleam' }, 11 | root_markers = { 'gleam.toml', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/glsl_analyzer.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nolanderc/glsl_analyzer 4 | --- 5 | --- Language server for GLSL 6 | return { 7 | cmd = { 'glsl_analyzer' }, 8 | filetypes = { 'glsl', 'vert', 'tesc', 'tese', 'frag', 'geom', 'comp' }, 9 | root_markers = { '.git' }, 10 | capabilities = {}, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/glslls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/svenstaro/glsl-language-server 4 | --- 5 | --- Language server implementation for GLSL 6 | --- 7 | --- `glslls` can be compiled and installed manually, or, if your distribution has access to the AUR, 8 | --- via the `glsl-language-server` AUR package 9 | return { 10 | cmd = { 'glslls', '--stdin' }, 11 | filetypes = { 'glsl', 'vert', 'tesc', 'tese', 'frag', 'geom', 'comp' }, 12 | root_markers = { '.git' }, 13 | capabilities = { 14 | textDocument = { 15 | completion = { 16 | editsNearCursor = true, 17 | }, 18 | }, 19 | offsetEncoding = { 'utf-8', 'utf-16' }, 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lsp/gnls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/microsoft/gnls 4 | --- 5 | --- Microsoft's language server for GN build files. 6 | --- 7 | --- Assuming there is a `gnls` script somewhere in your `$PATH`, containing 8 | --- for example: 9 | --- 10 | --- ```shell 11 | --- GNLS_SRC_DIR= 12 | --- 13 | --- exec node ${GNLS_SRC_DIR}/build/server.js $@ 14 | --- ``` 15 | return { 16 | cmd = { 'gnls', '--stdio' }, 17 | filetypes = { 'gn' }, 18 | root_markers = { '.gn', '.git' }, 19 | } 20 | -------------------------------------------------------------------------------- /lsp/hdl_checker.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/suoto/hdl_checker 4 | --- Language server for hdl-checker. 5 | --- Install using: `pip install hdl-checker --upgrade` 6 | return { 7 | cmd = { 'hdl_checker', '--lsp' }, 8 | filetypes = { 'vhdl', 'verilog', 'systemverilog' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/hhvm.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- Language server for programs written in Hack 4 | --- https://hhvm.com/ 5 | --- https://github.com/facebook/hhvm 6 | --- See below for how to setup HHVM & typechecker: 7 | --- https://docs.hhvm.com/hhvm/getting-started/getting-started 8 | return { 9 | cmd = { 'hh_client', 'lsp' }, 10 | filetypes = { 'php', 'hack' }, 11 | root_markers = { '.hhconfig' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/hlasm.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- `hlasm_language_server` is a language server for the High Level Assembler language used on IBM SystemZ mainframes. 4 | --- 5 | --- To learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm). 6 | return { 7 | cmd = { 'hlasm_language_server' }, 8 | filetypes = { 'hlasm' }, 9 | root_markers = { '.hlasmplugin' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/hoon_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/urbit/hoon-language-server 4 | --- 5 | --- A language server for Hoon. 6 | --- 7 | --- The language server can be installed via `npm install -g @hoon-language-server` 8 | --- 9 | --- Start a fake ~zod with `urbit -F zod`. 10 | --- Start the language server at the Urbit Dojo prompt with: `|start %language-server` 11 | return { 12 | cmd = { 'hoon-language-server' }, 13 | filetypes = { 'hoon' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/hydra_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/Retsediv/hydra-lsp 4 | --- 5 | --- LSP for Hydra Python package config files. 6 | return { 7 | cmd = { 'hydra-lsp' }, 8 | filetypes = { 'yaml' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/hyprls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/hyprland-community/hyprls 4 | --- 5 | --- `hyprls` can be installed via `go`: 6 | --- ```sh 7 | --- go install github.com/ewen-lbh/hyprls/cmd/hyprls@latest 8 | --- ``` 9 | return { 10 | cmd = { 'hyprls', '--stdio' }, 11 | filetypes = { 'hyprlang' }, 12 | root_markers = { '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/janet_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/CFiggers/janet-lsp 4 | --- 5 | --- A Language Server Protocol implementation for Janet. 6 | return { 7 | cmd = { 8 | 'janet-lsp', 9 | '--stdio', 10 | }, 11 | filetypes = { 'janet' }, 12 | root_markers = { 'project.janet', '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/java_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/georgewfraser/java-language-server 4 | --- 5 | --- Java language server 6 | --- 7 | --- Point `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server 8 | return { 9 | filetypes = { 'java' }, 10 | root_markers = { 'build.gradle', 'build.gradle.kts', 'pom.xml', '.git' }, 11 | settings = {}, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/jedi_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/pappasam/jedi-language-server 4 | --- 5 | --- `jedi-language-server`, a language server for Python, built on top of jedi 6 | return { 7 | cmd = { 'jedi-language-server' }, 8 | filetypes = { 'python' }, 9 | root_markers = { 10 | 'pyproject.toml', 11 | 'setup.py', 12 | 'setup.cfg', 13 | 'requirements.txt', 14 | 'Pipfile', 15 | '.git', 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/jqls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/wader/jq-lsp 4 | --- Language server for jq, written using Go. 5 | --- You can install the server easily using go install: 6 | --- ```sh 7 | --- # install directly 8 | --- go install github.com/wader/jq-lsp@master 9 | --- # copy binary to $PATH 10 | --- cp $(go env GOPATH)/bin/jq-lsp /usr/local/bin 11 | --- 12 | --- ``` 13 | --- Note: To activate properly nvim needs to know the jq filetype. 14 | --- You can add it via: 15 | --- ```lua 16 | --- vim.cmd([[au BufRead,BufNewFile *.jq setfiletype jq]]) 17 | --- ``` 18 | return { 19 | cmd = { 'jq-lsp' }, 20 | filetypes = { 'jq' }, 21 | root_markers = { '.git' }, 22 | } 23 | -------------------------------------------------------------------------------- /lsp/jsonnet_ls.lua: -------------------------------------------------------------------------------- 1 | --- @brief 2 | --- 3 | --- https://github.com/grafana/jsonnet-language-server 4 | --- 5 | --- A Language Server Protocol (LSP) server for Jsonnet. 6 | --- 7 | --- The language server can be installed with `go`: 8 | --- ```sh 9 | --- go install github.com/grafana/jsonnet-language-server@latest 10 | --- ``` 11 | return { 12 | cmd = { 'jsonnet-language-server' }, 13 | filetypes = { 14 | 'jsonnet', 15 | 'libsonnet', 16 | }, 17 | root_markers = { 'jsonnetfile.json', '.git' }, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/just.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/terror/just-lsp 4 | --- 5 | --- `just-lsp` is an LSP for just built on top of the tree-sitter-just parser. 6 | return { 7 | cmd = { 'just-lsp' }, 8 | filetypes = { 'just' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/kcl.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/kcl-lang/kcl.nvim 4 | --- 5 | --- Language server for the KCL configuration and policy language. 6 | --- 7 | return { 8 | cmd = { 'kcl-language-server' }, 9 | filetypes = { 'kcl' }, 10 | root_markers = { '.git' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/koka.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://koka-lang.github.io/koka/doc/index.html 4 | --- Koka is a functional programming language with effect types and handlers. 5 | return { 6 | cmd = { 'koka', '--language-server', '--lsstdio' }, 7 | filetypes = { 'koka' }, 8 | root_markers = { '.git' }, 9 | } 10 | -------------------------------------------------------------------------------- /lsp/kulala_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/mistweaverco/kulala-ls 4 | --- 5 | --- A minimal language server for HTTP syntax. 6 | return { 7 | cmd = { 'kulala-ls', '--stdio' }, 8 | filetypes = { 'http' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/laravel_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/laravel-ls/laravel-ls 4 | --- 5 | --- `laravel-ls`, language server for laravel 6 | --- 7 | --- The default `cmd` assumes that the `laravel-ls` binary can be found in `$PATH`. 8 | 9 | return { 10 | cmd = { 'laravel-ls' }, 11 | filetypes = { 'php', 'blade' }, 12 | root_markers = { 'artisan' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/lelwel_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/0x2a-42/lelwel 4 | --- 5 | --- Language server for lelwel grammars. 6 | --- 7 | --- You can install `lelwel-ls` via cargo: 8 | --- ```sh 9 | --- cargo install --features="lsp" lelwel 10 | --- ``` 11 | return { 12 | cmd = { 'lelwel-ls' }, 13 | filetypes = { 'llw' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/lemminx.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/eclipse/lemminx 4 | --- 5 | --- The easiest way to install the server is to get a binary from https://github.com/redhat-developer/vscode-xml/releases and place it on your PATH. 6 | --- 7 | --- NOTE to macOS users: Binaries from unidentified developers are blocked by default. If you trust the downloaded binary, run it once, cancel the prompt, then remove the binary from Gatekeeper quarantine with `xattr -d com.apple.quarantine lemminx`. It should now run without being blocked. 8 | return { 9 | cmd = { 'lemminx' }, 10 | filetypes = { 'xml', 'xsd', 'xsl', 'xslt', 'svg' }, 11 | root_markers = { '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/lexical.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/lexical-lsp/lexical 4 | --- 5 | --- Lexical is a next-generation language server for the Elixir programming language. 6 | --- 7 | --- Follow the [Detailed Installation Instructions](https://github.com/lexical-lsp/lexical/blob/main/pages/installation.md) 8 | --- 9 | --- **By default, `lexical` doesn't have a `cmd` set.** 10 | --- This is because nvim-lspconfig does not make assumptions about your path. 11 | return { 12 | filetypes = { 'elixir', 'eelixir', 'heex', 'surface' }, 13 | root_markers = { 'mix.exs', '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/luau_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/JohnnyMorganz/luau-lsp 4 | --- 5 | --- Language server for the [Luau](https://luau-lang.org/) language. 6 | --- 7 | --- `luau-lsp` can be installed by downloading one of the release assets available at https://github.com/JohnnyMorganz/luau-lsp. 8 | --- 9 | --- You might also have to set up automatic filetype detection for Luau files, for example like so: 10 | --- 11 | --- ```vim 12 | --- autocmd BufRead,BufNewFile *.luau setf luau 13 | --- ``` 14 | return { 15 | cmd = { 'luau-lsp', 'lsp' }, 16 | filetypes = { 'luau' }, 17 | root_markers = { '.git' }, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/m68k.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/grahambates/m68k-lsp 4 | --- 5 | --- Language server for Motorola 68000 family assembly 6 | --- 7 | --- `m68k-lsp-server` can be installed via `npm`: 8 | --- 9 | --- ```sh 10 | --- npm install -g m68k-lsp-server 11 | --- ``` 12 | --- 13 | --- Ensure you are using the 68k asm syntax variant in Neovim. 14 | --- 15 | --- ```lua 16 | --- vim.g.asmsyntax = 'asm68k' 17 | --- ``` 18 | return { 19 | cmd = { 'm68k-lsp-server', '--stdio' }, 20 | filetypes = { 'asm68k' }, 21 | root_markers = { 'Makefile', '.git' }, 22 | } 23 | -------------------------------------------------------------------------------- /lsp/marko-js.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/marko-js/language-server 4 | --- 5 | --- Using the Language Server Protocol to improve Marko's developer experience. 6 | --- 7 | --- Can be installed via npm: 8 | --- ``` 9 | --- npm i -g @marko/language-server 10 | --- ``` 11 | return { 12 | cmd = { 'marko-language-server', '--stdio' }, 13 | filetypes = { 'marko' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/marksman.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/artempyanykh/marksman 4 | --- 5 | --- Marksman is a Markdown LSP server providing completion, cross-references, diagnostics, and more. 6 | --- 7 | --- Marksman works on MacOS, Linux, and Windows and is distributed as a self-contained binary for each OS. 8 | --- 9 | --- Pre-built binaries can be downloaded from https://github.com/artempyanykh/marksman/releases 10 | 11 | local bin_name = 'marksman' 12 | local cmd = { bin_name, 'server' } 13 | 14 | return { 15 | cmd = cmd, 16 | filetypes = { 'markdown', 'markdown.mdx' }, 17 | root_markers = { '.marksman.toml', '.git' }, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/matlab_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/mathworks/MATLAB-language-server 4 | --- 5 | --- MATLAB® language server implements the Microsoft® Language Server Protocol for the MATLAB language. 6 | return { 7 | cmd = { 'matlab-language-server', '--stdio' }, 8 | filetypes = { 'matlab' }, 9 | root_dir = function(bufnr, on_dir) 10 | local root_dir = vim.fs.root(bufnr, '.git') 11 | on_dir(root_dir or vim.fn.getcwd()) 12 | end, 13 | settings = { 14 | MATLAB = { 15 | indexWorkspace = true, 16 | installPath = '', 17 | matlabConnectionTiming = 'onStart', 18 | telemetry = true, 19 | }, 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lsp/millet.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/azdavis/millet 4 | --- 5 | --- Millet, a language server for Standard ML 6 | --- 7 | --- To use with nvim: 8 | --- 9 | --- 1. Install a Rust toolchain: https://rustup.rs 10 | --- 2. Clone the repo 11 | --- 3. Run `cargo build --release --bin lang-srv` 12 | --- 4. Move `target/release/lang-srv` to somewhere on your $PATH as `millet` 13 | return { 14 | cmd = { 'millet' }, 15 | filetypes = { 'sml' }, 16 | root_markers = { 'millet.toml' }, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/mint.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://www.mint-lang.com 4 | --- 5 | --- Install Mint using the [instructions](https://www.mint-lang.com/install). 6 | --- The language server is included since version 0.12.0. 7 | return { 8 | cmd = { 'mint', 'ls' }, 9 | filetypes = { 'mint' }, 10 | root_markers = { 'mint.json', '.git' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/mlir_lsp_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://mlir.llvm.org/docs/Tools/MLIRLSP/#mlir-lsp-language-server--mlir-lsp-server= 4 | --- 5 | --- The Language Server for the LLVM MLIR language 6 | --- 7 | --- `mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) 8 | return { 9 | cmd = { 'mlir-lsp-server' }, 10 | filetypes = { 'mlir' }, 11 | root_markers = { '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/mlir_pdll_lsp_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://mlir.llvm.org/docs/Tools/MLIRLSP/#pdll-lsp-language-server--mlir-pdll-lsp-server 4 | --- 5 | --- The Language Server for the LLVM PDLL language 6 | --- 7 | --- `mlir-pdll-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) 8 | return { 9 | cmd = { 'mlir-pdll-lsp-server' }, 10 | filetypes = { 'pdll' }, 11 | root_markers = { 'pdll_compile_commands.yml', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/mm0_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/digama0/mm0 4 | --- 5 | --- Language Server for the metamath-zero theorem prover. 6 | --- 7 | --- Requires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed 8 | --- and available on the `PATH`. 9 | return { 10 | cmd = { 'mm0-rs', 'server' }, 11 | root_markers = { '.git' }, 12 | filetypes = { 'metamath-zero' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/mojo.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/modularml/mojo 4 | --- 5 | --- `mojo-lsp-server` can be installed [via Modular](https://developer.modular.com/download) 6 | --- 7 | --- Mojo is a new programming language that bridges the gap between research and production by combining Python syntax and ecosystem with systems programming and metaprogramming features. 8 | return { 9 | cmd = { 'mojo-lsp-server' }, 10 | filetypes = { 'mojo' }, 11 | root_markers = { '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/motoko_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/dfinity/vscode-motoko 4 | --- 5 | --- Language server for the Motoko programming language. 6 | return { 7 | cmd = { 'motoko-lsp', '--stdio' }, 8 | filetypes = { 'motoko' }, 9 | root_markers = { 'dfx.json', '.git' }, 10 | init_options = { 11 | formatter = 'auto', 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/move_analyzer.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/move-language/move/tree/main/language/move-analyzer 4 | --- 5 | --- Language server for Move 6 | --- 7 | --- The `move-analyzer` can be installed by running: 8 | --- 9 | --- ``` 10 | --- cargo install --git https://github.com/move-language/move move-analyzer 11 | --- ``` 12 | --- 13 | --- See [`move-analyzer`'s doc](https://github.com/move-language/move/blob/1b258a06e3c7d2bc9174578aac92cca3ac19de71/language/move-analyzer/editors/code/README.md#how-to-install) for details. 14 | return { 15 | cmd = { 'move-analyzer' }, 16 | filetypes = { 'move' }, 17 | root_markers = { 'Move.toml' }, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/mutt_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/neomutt/mutt-language-server 4 | --- 5 | --- A language server for (neo)mutt's muttrc. It can be installed via pip. 6 | --- 7 | --- ```sh 8 | --- pip install mutt-language-server 9 | --- ``` 10 | return { 11 | cmd = { 'mutt-language-server' }, 12 | filetypes = { 'muttrc', 'neomuttrc' }, 13 | root_markers = { '.git' }, 14 | settings = {}, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/nextls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/elixir-tools/next-ls 4 | --- 5 | --- **By default, next-ls does not set its `cmd`. Please see the following [detailed instructions](https://www.elixir-tools.dev/docs/next-ls/installation/) for possible installation methods.** 6 | return { 7 | filetypes = { 'elixir', 'eelixir', 'heex', 'surface' }, 8 | root_markers = { 'mix.exs', '.git' }, 9 | } 10 | -------------------------------------------------------------------------------- /lsp/nginx_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://pypi.org/project/nginx-language-server/ 4 | --- 5 | --- `nginx-language-server` can be installed via pip: 6 | --- 7 | --- ```sh 8 | --- pip install -U nginx-language-server 9 | --- ``` 10 | return { 11 | cmd = { 'nginx-language-server' }, 12 | filetypes = { 'nginx' }, 13 | root_markers = { 'nginx.conf', '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/nil_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/oxalica/nil 4 | --- 5 | --- A new language server for Nix Expression Language. 6 | --- 7 | --- If you are using Nix with Flakes support, run `nix profile install github:oxalica/nil` to install. 8 | --- Check the repository README for more information. 9 | --- 10 | --- _See an example config at https://github.com/oxalica/nil/blob/main/dev/nvim-lsp.nix._ 11 | return { 12 | cmd = { 'nil' }, 13 | filetypes = { 'nix' }, 14 | root_markers = { 'flake.nix', '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/nim_langserver.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nim-lang/langserver 4 | --- 5 | --- 6 | --- `nim-langserver` can be installed via the `nimble` package manager: 7 | --- ```sh 8 | --- nimble install nimlangserver 9 | --- ``` 10 | 11 | local util = require 'lspconfig.util' 12 | 13 | return { 14 | cmd = { 'nimlangserver' }, 15 | filetypes = { 'nim' }, 16 | root_dir = function(bufnr, on_dir) 17 | local fname = vim.api.nvim_buf_get_name(bufnr) 18 | on_dir( 19 | util.root_pattern '*.nimble'(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 20 | ) 21 | end, 22 | } 23 | -------------------------------------------------------------------------------- /lsp/nimls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/PMunch/nimlsp 4 | --- 5 | --- `nimlsp` can be installed via the `nimble` package manager: 6 | --- 7 | --- ```sh 8 | --- nimble install nimlsp 9 | --- ``` 10 | 11 | local util = require 'lspconfig.util' 12 | 13 | return { 14 | cmd = { 'nimlsp' }, 15 | filetypes = { 'nim' }, 16 | root_dir = function(bufnr, on_dir) 17 | local fname = vim.api.nvim_buf_get_name(bufnr) 18 | on_dir( 19 | util.root_pattern '*.nimble'(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 20 | ) 21 | end, 22 | } 23 | -------------------------------------------------------------------------------- /lsp/nixd.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nix-community/nixd 4 | --- 5 | --- Nix language server, based on nix libraries. 6 | --- 7 | --- If you are using Nix with Flakes support, run `nix profile install github:nix-community/nixd` to install. 8 | --- Check the repository README for more information. 9 | return { 10 | cmd = { 'nixd' }, 11 | filetypes = { 'nix' }, 12 | root_markers = { 'flake.nix', 'git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/ntt.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nokia/ntt 4 | --- Installation instructions can be found [here](https://github.com/nokia/ntt#Install). 5 | --- Can be configured by passing a "settings" object to vim.lsp.config('ntt'): 6 | --- ```lua 7 | --- vim.lsp.config('ntt', { 8 | --- settings = { 9 | --- ntt = { 10 | --- } 11 | --- } 12 | --- }) 13 | --- ``` 14 | 15 | return { 16 | cmd = { 'ntt', 'langserver' }, 17 | filetypes = { 'ttcn' }, 18 | root_markers = { '.git' }, 19 | } 20 | -------------------------------------------------------------------------------- /lsp/nushell.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nushell/nushell 4 | --- 5 | --- Nushell built-in language server. 6 | return { 7 | cmd = { 'nu', '--lsp' }, 8 | filetypes = { 'nu' }, 9 | root_dir = function(bufnr, on_dir) 10 | on_dir(vim.fs.root(bufnr, { '.git' }) or vim.fs.dirname(vim.api.nvim_buf_get_name(bufnr))) 11 | end, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/nxls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nrwl/nx-console/tree/master/apps/nxls 4 | --- 5 | --- nxls, a language server for Nx Workspaces 6 | --- 7 | --- `nxls` can be installed via `npm`: 8 | --- ```sh 9 | --- npm i -g nxls 10 | --- ``` 11 | return { 12 | cmd = { 'nxls', '--stdio' }, 13 | filetypes = { 'json', 'jsonc' }, 14 | root_markers = { 'nx.json', '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/ocamlls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/ocaml-lsp/ocaml-language-server 4 | --- 5 | --- `ocaml-language-server` can be installed via `npm` 6 | --- ```sh 7 | --- npm install -g ocaml-language-server 8 | --- ``` 9 | 10 | local util = require 'lspconfig.util' 11 | 12 | return { 13 | cmd = { 'ocaml-language-server', '--stdio' }, 14 | filetypes = { 'ocaml', 'reason' }, 15 | root_dir = function(bufnr, on_dir) 16 | local fname = vim.api.nvim_buf_get_name(bufnr) 17 | on_dir(util.root_pattern('*.opam', 'esy.json', 'package.json')(fname)) 18 | end, 19 | } 20 | -------------------------------------------------------------------------------- /lsp/ols.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/DanielGavin/ols 4 | --- 5 | --- `Odin Language Server`. 6 | 7 | local util = require 'lspconfig.util' 8 | 9 | return { 10 | cmd = { 'ols' }, 11 | filetypes = { 'odin' }, 12 | root_dir = function(bufnr, on_dir) 13 | local fname = vim.api.nvim_buf_get_name(bufnr) 14 | on_dir(util.root_pattern('ols.json', '.git', '*.odin')(fname)) 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /lsp/opencl_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/Galarius/opencl-language-server 4 | --- 5 | --- Build instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md). 6 | --- 7 | --- Prebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases). 8 | return { 9 | cmd = { 'opencl-language-server' }, 10 | filetypes = { 'opencl' }, 11 | root_markers = { '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/openscad_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/Leathong/openscad-LSP 4 | --- 5 | --- A Language Server Protocol server for OpenSCAD 6 | --- 7 | --- You can build and install `openscad-lsp` binary with `cargo`: 8 | --- ```sh 9 | --- cargo install openscad-lsp 10 | --- ``` 11 | return { 12 | cmd = { 'openscad-lsp', '--stdio' }, 13 | filetypes = { 'openscad' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/pact_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/kadena-io/pact-lsp 4 | --- 5 | --- The Pact language server 6 | return { 7 | cmd = { 'pact-lsp' }, 8 | filetypes = { 'pact' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/pbls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://git.sr.ht/~rrc/pbls 4 | --- 5 | --- Prerequisites: Ensure protoc is on your $PATH. 6 | --- 7 | --- `pbls` can be installed via `cargo install`: 8 | --- ```sh 9 | --- cargo install --git https://git.sr.ht/~rrc/pbls 10 | --- ``` 11 | --- 12 | --- pbls is a Language Server for protobuf 13 | return { 14 | cmd = { 'pbls' }, 15 | filetypes = { 'proto' }, 16 | root_markers = { '.pbls.toml', '.git' }, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/perlpls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/FractalBoy/perl-language-server 4 | --- https://metacpan.org/pod/PLS 5 | --- 6 | --- `PLS`, another language server for Perl. 7 | --- 8 | --- To use the language server, ensure that you have PLS installed and that it is in your path 9 | return { 10 | cmd = { 'pls' }, 11 | settings = { 12 | perl = { 13 | perlcritic = { enabled = false }, 14 | syntax = { enabled = true }, 15 | }, 16 | }, 17 | filetypes = { 'perl' }, 18 | root_markers = { '.git' }, 19 | } 20 | -------------------------------------------------------------------------------- /lsp/pest_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/pest-parser/pest-ide-tools 4 | --- 5 | --- Language server for pest grammars. 6 | return { 7 | cmd = { 'pest-language-server' }, 8 | filetypes = { 'pest' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/phpactor.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/phpactor/phpactor 4 | --- 5 | --- Installation: https://phpactor.readthedocs.io/en/master/usage/standalone.html#global-installation 6 | 7 | return { 8 | cmd = { 'phpactor', 'language-server' }, 9 | filetypes = { 'php' }, 10 | root_dir = function(bufnr, on_dir) 11 | local fname = vim.api.nvim_buf_get_name(bufnr) 12 | local cwd = assert(vim.uv.cwd()) 13 | local root = vim.fs.root(fname, { 'composer.json', '.git', '.phpactor.json', '.phpactor.yml' }) 14 | 15 | -- prefer cwd if root is a descendant 16 | on_dir(root and vim.fs.relpath(cwd, root) and cwd) 17 | end, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/pico8_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/japhib/pico8-ls 4 | --- 5 | --- Full language support for the PICO-8 dialect of Lua. 6 | 7 | local util = require 'lspconfig.util' 8 | 9 | return { 10 | cmd = { 'pico8-ls', '--stdio' }, 11 | filetypes = { 'p8' }, 12 | root_dir = function(bufnr, on_dir) 13 | local fname = vim.api.nvim_buf_get_name(bufnr) 14 | on_dir(util.root_pattern('*.p8')(fname)) 15 | end, 16 | settings = {}, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/pkgbuild_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/Freed-Wu/pkgbuild-language-server 4 | --- 5 | --- Language server for ArchLinux/Windows Msys2's PKGBUILD. 6 | return { 7 | cmd = { 'pkgbuild-language-server' }, 8 | filetypes = { 'PKGBUILD' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/please.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/thought-machine/please 4 | --- 5 | --- High-performance extensible build system for reproducible multi-language builds. 6 | --- 7 | --- The `plz` binary will automatically install the LSP for you on first run 8 | return { 9 | cmd = { 'plz', 'tool', 'lps' }, 10 | filetypes = { 'bzl' }, 11 | root_markers = { '.plzconfig' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/pli.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- `pli_language_server` is a language server for the PL/I language used on IBM SystemZ mainframes. 4 | --- 5 | --- To learn how to configure the PL/I language server, see the [PL/I Language Support documentation](https://github.com/zowe/zowe-pli-language-support). 6 | return { 7 | cmd = { 'pli_language_server' }, 8 | filetypes = { 'pli' }, 9 | root_markers = { '.pliplugin' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/poryscript_pls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/huderlem/poryscript-pls 4 | --- 5 | --- Language server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects) 6 | return { 7 | cmd = { 'poryscript-pls' }, 8 | filetypes = { 'pory' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/postgres_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://pgtools.dev 4 | --- 5 | --- A collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling. 6 | return { 7 | cmd = { 'postgrestools', 'lsp-proxy' }, 8 | filetypes = { 9 | 'sql', 10 | }, 11 | root_markers = { 'postgrestools.jsonc' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/prismals.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- Language Server for the Prisma JavaScript and TypeScript ORM 4 | --- 5 | --- `@prisma/language-server` can be installed via npm 6 | --- ```sh 7 | --- npm install -g @prisma/language-server 8 | --- ``` 9 | return { 10 | cmd = { 'prisma-language-server', '--stdio' }, 11 | filetypes = { 'prisma' }, 12 | settings = { 13 | prisma = { 14 | prismaFmtBinPath = '', 15 | }, 16 | }, 17 | root_markers = { '.git', 'package.json' }, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/prolog_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/jamesnvc/lsp_server 4 | --- 5 | --- Language Server Protocol server for SWI-Prolog 6 | return { 7 | cmd = { 8 | 'swipl', 9 | '-g', 10 | 'use_module(library(lsp_server)).', 11 | '-g', 12 | 'lsp_server:main', 13 | '-t', 14 | 'halt', 15 | '--', 16 | 'stdio', 17 | }, 18 | filetypes = { 'prolog' }, 19 | root_markers = { 'pack.pl' }, 20 | } 21 | -------------------------------------------------------------------------------- /lsp/prosemd_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/kitten/prosemd-lsp 4 | --- 5 | --- An experimental LSP for Markdown. 6 | --- 7 | --- Please see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation 8 | return { 9 | cmd = { 'prosemd-lsp', '--stdio' }, 10 | filetypes = { 'markdown' }, 11 | root_markers = { '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/protols.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/coder3101/protols 4 | --- 5 | --- `protols` can be installed via `cargo`: 6 | --- ```sh 7 | --- cargo install protols 8 | --- ``` 9 | --- 10 | --- A Language Server for proto3 files. It uses tree-sitter and runs in single file mode. 11 | return { 12 | cmd = { 'protols' }, 13 | filetypes = { 'proto' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/psalm.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/vimeo/psalm 4 | --- 5 | --- Can be installed with composer. 6 | --- ```sh 7 | --- composer global require vimeo/psalm 8 | --- ``` 9 | return { 10 | cmd = { 'psalm', '--language-server' }, 11 | filetypes = { 'php' }, 12 | root_markers = { 'psalm.xml', 'psalm.xml.dist' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/pug.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/opa-oz/pug-lsp 4 | --- 5 | --- An implementation of the Language Protocol Server for [Pug.js](http://pugjs.org) 6 | --- 7 | --- PugLSP can be installed via `go get github.com/opa-oz/pug-lsp`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases) 8 | return { 9 | cmd = { 'pug-lsp' }, 10 | filetypes = { 'pug' }, 11 | root_markers = { 'package.json' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/purescriptls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nwolverson/purescript-language-server 4 | --- 5 | --- The `purescript-language-server` can be added to your project and `$PATH` via 6 | --- 7 | --- * JavaScript package manager such as npm, pnpm, Yarn, et al. 8 | --- * Nix under the `nodePackages` and `nodePackages_latest` package sets 9 | return { 10 | cmd = { 'purescript-language-server', '--stdio' }, 11 | filetypes = { 'purescript' }, 12 | root_markers = { 'bower.json', 'flake.nix', 'psc-package.json', 'shell.nix', 'spago.dhall', 'spago.yaml' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/pyre.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://pyre-check.org/ 4 | --- 5 | --- `pyre` a static type checker for Python 3. 6 | --- 7 | --- `pyre` offers an extremely limited featureset. It currently only supports diagnostics, 8 | --- which are triggered on save. 9 | --- 10 | --- Do not report issues for missing features in `pyre` to `lspconfig`. 11 | return { 12 | cmd = { 'pyre', 'persistent' }, 13 | filetypes = { 'python' }, 14 | root_markers = { '.pyre_configuration' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/qmlls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://doc.qt.io/qt-6/qtqml-tooling-qmlls.html 4 | --- 5 | --- > QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor. 6 | --- 7 | --- Source in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/) 8 | return { 9 | cmd = { 'qmlls' }, 10 | filetypes = { 'qml', 'qmljs' }, 11 | root_markers = { '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/quick_lint_js.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://quick-lint-js.com/ 4 | --- 5 | --- quick-lint-js finds bugs in JavaScript programs. 6 | --- 7 | --- See installation [instructions](https://quick-lint-js.com/install/) 8 | return { 9 | cmd = { 'quick-lint-js', '--lsp-server' }, 10 | filetypes = { 'javascript', 'typescript' }, 11 | root_markers = { 'package.json', 'jsconfig.json', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/r_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- [languageserver](https://github.com/REditorSupport/languageserver) is an 4 | --- implementation of the Microsoft's Language Server Protocol for the R 5 | --- language. 6 | --- 7 | --- It is released on CRAN and can be easily installed by 8 | --- 9 | --- ```r 10 | --- install.packages("languageserver") 11 | --- ``` 12 | return { 13 | cmd = { 'R', '--no-echo', '-e', 'languageserver::run()' }, 14 | filetypes = { 'r', 'rmd', 'quarto' }, 15 | root_dir = function(bufnr, on_dir) 16 | on_dir(vim.fs.root(bufnr, '.git') or vim.uv.os_homedir()) 17 | end, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/racket_langserver.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- [https://github.com/jeapostrophe/racket-langserver](https://github.com/jeapostrophe/racket-langserver) 4 | --- 5 | --- The Racket language server. This project seeks to use 6 | --- [DrRacket](https://github.com/racket/drracket)'s public API to provide 7 | --- functionality that mimics DrRacket's code tools as closely as possible. 8 | --- 9 | --- Install via `raco`: `raco pkg install racket-langserver` 10 | return { 11 | cmd = { 'racket', '--lib', 'racket-langserver' }, 12 | filetypes = { 'racket', 'scheme' }, 13 | root_markers = { '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/reason_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- Reason language server 4 | --- 5 | --- You can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository. 6 | return { 7 | cmd = { 'reason-language-server' }, 8 | filetypes = { 'reason' }, 9 | root_markers = { 'bsconfig.json', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/regal.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/StyraInc/regal 4 | --- 5 | --- A linter for Rego, with support for running as an LSP server. 6 | --- 7 | --- `regal` can be installed by running: 8 | --- ```sh 9 | --- go install github.com/StyraInc/regal@latest 10 | --- ``` 11 | 12 | local util = require 'lspconfig.util' 13 | 14 | return { 15 | cmd = { 'regal', 'language-server' }, 16 | filetypes = { 'rego' }, 17 | root_dir = function(bufnr, on_dir) 18 | local fname = vim.api.nvim_buf_get_name(bufnr) 19 | on_dir(util.root_pattern '*.rego'(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])) 20 | end, 21 | } 22 | -------------------------------------------------------------------------------- /lsp/regols.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/kitagry/regols 4 | --- 5 | --- OPA Rego language server. 6 | --- 7 | --- `regols` can be installed by running: 8 | --- ```sh 9 | --- go install github.com/kitagry/regols@latest 10 | --- ``` 11 | 12 | local util = require 'lspconfig.util' 13 | 14 | return { 15 | cmd = { 'regols' }, 16 | filetypes = { 'rego' }, 17 | root_dir = function(bufnr, on_dir) 18 | local fname = vim.api.nvim_buf_get_name(bufnr) 19 | on_dir(util.root_pattern '*.rego'(fname) or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])) 20 | end, 21 | } 22 | -------------------------------------------------------------------------------- /lsp/rnix.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nix-community/rnix-lsp 4 | --- 5 | --- A language server for Nix providing basic completion and formatting via nixpkgs-fmt. 6 | --- 7 | --- To install manually, run `cargo install rnix-lsp`. If you are using nix, rnix-lsp is in nixpkgs. 8 | --- 9 | --- This server accepts configuration via the `settings` key. 10 | return { 11 | cmd = { 'rnix-lsp' }, 12 | filetypes = { 'nix' }, 13 | root_dir = function(bufnr, on_dir) 14 | on_dir(vim.fs.root(bufnr, '.git') or vim.uv.os_homedir()) 15 | end, 16 | settings = {}, 17 | init_options = {}, 18 | } 19 | -------------------------------------------------------------------------------- /lsp/robotcode.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://robotcode.io 4 | --- 5 | --- RobotCode - Language Server Protocol implementation for Robot Framework. 6 | return { 7 | cmd = { 'robotcode', 'language-server' }, 8 | filetypes = { 'robot', 'resource' }, 9 | root_markers = { 'robot.toml', 'pyproject.toml', 'Pipfile', '.git' }, 10 | get_language_id = function(_, _) 11 | return 'robotframework' 12 | end, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/robotframework_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/robocorp/robotframework-lsp 4 | --- 5 | --- Language Server Protocol implementation for Robot Framework. 6 | return { 7 | cmd = { 'robotframework_ls' }, 8 | filetypes = { 'robot' }, 9 | root_markers = { 'robotidy.toml', 'pyproject.toml', 'conda.yaml', 'robot.yaml', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/roc_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/roc-lang/roc/tree/main/crates/language_server#roc_language_server 4 | --- 5 | --- The built-in language server for the Roc programming language. 6 | --- [Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing) 7 | return { 8 | cmd = { 'roc_language_server' }, 9 | filetypes = { 'roc' }, 10 | root_markers = { '.git' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/rome.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://rome.tools 4 | --- 5 | --- Language server for the Rome Frontend Toolchain. 6 | --- 7 | --- (Unmaintained, use [Biome](https://biomejs.dev/blog/annoucing-biome) instead.) 8 | --- 9 | --- ```sh 10 | --- npm install [-g] rome 11 | --- ``` 12 | return { 13 | cmd = { 'rome', 'lsp-proxy' }, 14 | filetypes = { 15 | 'javascript', 16 | 'javascriptreact', 17 | 'json', 18 | 'typescript', 19 | 'typescript.tsx', 20 | 'typescriptreact', 21 | }, 22 | root_markers = { 'package.json', 'node_modules', '.git' }, 23 | } 24 | -------------------------------------------------------------------------------- /lsp/rpmspec.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/dcermak/rpm-spec-language-server 4 | --- 5 | --- Language server protocol (LSP) support for RPM Spec files. 6 | --- 7 | --- `rpm-spec-language-server` can be installed by running, 8 | --- 9 | --- ```sh 10 | --- pip install rpm-spec-language-server 11 | --- ``` 12 | return { 13 | cmd = { 'rpm_lsp_server', '--stdio' }, 14 | filetypes = { 'spec' }, 15 | root_markers = { '.git' }, 16 | settings = {}, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/rubocop.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/rubocop/rubocop 4 | return { 5 | cmd = { 'rubocop', '--lsp' }, 6 | filetypes = { 'ruby' }, 7 | root_markers = { 'Gemfile', '.git' }, 8 | } 9 | -------------------------------------------------------------------------------- /lsp/ruby_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://shopify.github.io/ruby-lsp/ 4 | --- 5 | --- This gem is an implementation of the language server protocol specification for 6 | --- Ruby, used to improve editor features. 7 | --- 8 | --- Install the gem. There's no need to require it, since the server is used as a 9 | --- standalone executable. 10 | --- 11 | --- ```sh 12 | --- gem install ruby-lsp 13 | --- ``` 14 | return { 15 | cmd = { 'ruby-lsp' }, 16 | filetypes = { 'ruby', 'eruby' }, 17 | root_markers = { 'Gemfile', '.git' }, 18 | init_options = { 19 | formatter = 'auto', 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lsp/rune_languageserver.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://crates.io/crates/rune-languageserver 4 | --- 5 | --- A language server for the [Rune](https://rune-rs.github.io/) Language, 6 | --- an embeddable dynamic programming language for Rust 7 | return { 8 | cmd = { 'rune-languageserver' }, 9 | filetypes = { 'rune' }, 10 | root_markers = { '.git' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/salt_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- Language server for Salt configuration files. 4 | --- https://github.com/dcermak/salt-lsp 5 | --- 6 | --- The language server can be installed with `pip`: 7 | --- ```sh 8 | --- pip install salt-lsp 9 | --- ``` 10 | return { 11 | cmd = { 'salt_lsp_server' }, 12 | filetypes = { 'sls' }, 13 | root_markers = { '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/scheme_langserver.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/ufo5260987423/scheme-langserver 4 | --- `scheme-langserver`, a language server protocol implementation for scheme. 5 | --- And for nvim user, please add .sls to scheme file extension list. 6 | 7 | local cmd = { 'scheme-langserver', '~/.scheme-langserver.log', 'enable', 'disable' } 8 | 9 | return { 10 | cmd = cmd, 11 | filetypes = { 'scheme' }, 12 | root_markers = { 13 | 'Akku.manifest', 14 | '.git', 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lsp/scry.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/crystal-lang-tools/scry 4 | --- 5 | --- Crystal language server. 6 | return { 7 | cmd = { 'scry' }, 8 | filetypes = { 'crystal' }, 9 | root_markers = { 'shard.yml', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/selene3p_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/antonk52/lua-3p-language-servers 4 | --- 5 | --- 3rd party Language Server for Selene lua linter 6 | return { 7 | cmd = { 'selene-3p-language-server' }, 8 | filetypes = { 'lua' }, 9 | root_markers = { 'selene.toml' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/serve_d.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/Pure-D/serve-d 4 | --- 5 | --- Microsoft language server protocol implementation for D using workspace-d. 6 | --- Download a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH. 7 | return { 8 | cmd = { 'serve-d' }, 9 | filetypes = { 'd' }, 10 | root_markers = { 'dub.json', 'dub.sdl', '.git' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/slint_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/slint-ui/slint 4 | --- `Slint`'s language server 5 | --- 6 | --- You can build and install `slint-lsp` binary with `cargo`: 7 | --- ```sh 8 | --- cargo install slint-lsp 9 | --- ``` 10 | --- 11 | --- Vim does not have built-in syntax for the `slint` filetype at this time. 12 | --- 13 | --- This can be added via an autocmd: 14 | --- 15 | --- ```lua 16 | --- vim.cmd [[ autocmd BufRead,BufNewFile *.slint set filetype=slint ]] 17 | --- ``` 18 | return { 19 | cmd = { 'slint-lsp' }, 20 | filetypes = { 'slint' }, 21 | root_markers = { '.git' }, 22 | } 23 | -------------------------------------------------------------------------------- /lsp/smithy_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/awslabs/smithy-language-server 4 | --- 5 | --- `Smithy Language Server`, A Language Server Protocol implementation for the Smithy IDL 6 | 7 | -- pass 0 as the first argument to use STDIN/STDOUT for communication 8 | local cmd = { 'smithy-language-server', '0' } 9 | 10 | return { 11 | cmd = cmd, 12 | filetypes = { 'smithy' }, 13 | root_markers = { 'smithy-build.json', 'build.gradle', 'build.gradle.kts', '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/snakeskin_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://www.npmjs.com/package/@snakeskin/cli 4 | --- 5 | --- `snakeskin cli` can be installed via `npm`: 6 | --- ```sh 7 | --- npm install -g @snakeskin/cli 8 | --- ``` 9 | return { 10 | cmd = { 'snakeskin-cli', 'lsp', '--stdio' }, 11 | filetypes = { 'ss' }, 12 | root_markers = { 'package.json' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/snyk_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/snyk/snyk-ls 4 | --- 5 | --- LSP for Snyk Open Source, Snyk Infrastructure as Code, and Snyk Code. 6 | return { 7 | cmd = { 'snyk-ls' }, 8 | root_markers = { '.git', '.snyk' }, 9 | filetypes = { 10 | 'go', 11 | 'gomod', 12 | 'javascript', 13 | 'typescript', 14 | 'json', 15 | 'python', 16 | 'requirements', 17 | 'helm', 18 | 'yaml', 19 | 'terraform', 20 | 'terraform-vars', 21 | }, 22 | settings = {}, 23 | -- Configuration from https://github.com/snyk/snyk-ls#configuration-1 24 | init_options = { 25 | activateSnykCode = 'true', 26 | }, 27 | } 28 | -------------------------------------------------------------------------------- /lsp/solang.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | ---A language server for Solidity 4 | --- 5 | --- See the [documentation](https://solang.readthedocs.io/en/latest/installing.html) for installation instructions. 6 | --- 7 | --- The language server only provides the following capabilities: 8 | --- * Syntax highlighting 9 | --- * Diagnostics 10 | --- * Hover 11 | --- 12 | --- There is currently no support for completion, goto definition, references, or other functionality. 13 | return { 14 | cmd = { 'solang', 'language-server', '--target', 'evm' }, 15 | filetypes = { 'solidity' }, 16 | root_markers = { '.git' }, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/solargraph.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://solargraph.org/ 4 | --- 5 | --- solargraph, a language server for Ruby 6 | --- 7 | --- You can install solargraph via gem install. 8 | --- 9 | --- ```sh 10 | --- gem install --user-install solargraph 11 | --- ``` 12 | return { 13 | cmd = { 'solargraph', 'stdio' }, 14 | settings = { 15 | solargraph = { 16 | diagnostics = true, 17 | }, 18 | }, 19 | init_options = { formatting = true }, 20 | filetypes = { 'ruby' }, 21 | root_markers = { 'Gemfile', '.git' }, 22 | } 23 | -------------------------------------------------------------------------------- /lsp/solc.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://docs.soliditylang.org/en/latest/installing-solidity.html 4 | --- 5 | --- solc is the native language server for the Solidity language. 6 | 7 | local util = require 'lspconfig.util' 8 | 9 | return { 10 | cmd = { 'solc', '--lsp' }, 11 | filetypes = { 'solidity' }, 12 | root_dir = function(bufnr, on_dir) 13 | local fname = vim.api.nvim_buf_get_name(bufnr) 14 | on_dir(util.root_pattern('hardhat.config.*', '.git')(fname)) 15 | end, 16 | } 17 | -------------------------------------------------------------------------------- /lsp/sorbet.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://sorbet.org 4 | --- 5 | --- Sorbet is a fast, powerful type checker designed for Ruby. 6 | --- 7 | --- You can install Sorbet via gem install. You might also be interested in how to set 8 | --- Sorbet up for new projects: https://sorbet.org/docs/adopting. 9 | --- 10 | --- ```sh 11 | --- gem install sorbet 12 | --- ``` 13 | return { 14 | cmd = { 'srb', 'tc', '--lsp' }, 15 | filetypes = { 'ruby' }, 16 | root_markers = { 'Gemfile', '.git' }, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/sqlls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/joe-re/sql-language-server 4 | --- 5 | --- This LSP can be installed via `npm`. Find further instructions on manual installation of the sql-language-server at [joe-re/sql-language-server](https://github.com/joe-re/sql-language-server). 6 | 7 | return { 8 | cmd = { 'sql-language-server', 'up', '--method', 'stdio' }, 9 | filetypes = { 'sql', 'mysql' }, 10 | root_markers = { '.sqllsrc.json' }, 11 | settings = {}, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/sqls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/sqls-server/sqls 4 | --- 5 | --- ```lua 6 | --- vim.lsp.config('sqls', { 7 | --- cmd = {"path/to/command", "-config", "path/to/config.yml"}; 8 | --- ... 9 | --- }) 10 | --- ``` 11 | --- Sqls can be installed via `go install github.com/sqls-server/sqls@latest`. Instructions for compiling Sqls from the source can be found at [sqls-server/sqls](https://github.com/sqls-server/sqls). 12 | return { 13 | cmd = { 'sqls' }, 14 | filetypes = { 'sql', 'mysql' }, 15 | root_markers = { 'config.yml' }, 16 | settings = {}, 17 | } 18 | -------------------------------------------------------------------------------- /lsp/sqruff.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/quarylabs/sqruff 4 | --- 5 | --- `sqruff` can be installed by following the instructions [here](https://github.com/quarylabs/sqruff?tab=readme-ov-file#installation) 6 | --- 7 | return { 8 | cmd = { 'sqruff', 'lsp' }, 9 | filetypes = { 'sql' }, 10 | root_markers = { '.sqruff', '.git' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/standardrb.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/testdouble/standard 4 | --- 5 | --- Ruby Style Guide, with linter & automatic code fixer. 6 | return { 7 | cmd = { 'standardrb', '--lsp' }, 8 | filetypes = { 'ruby' }, 9 | root_markers = { 'Gemfile', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/starlark_rust.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/facebookexperimental/starlark-rust/ 4 | --- The LSP part of `starlark-rust` is not currently documented, 5 | --- but the implementation works well for linting. 6 | --- This gives valuable warnings for potential issues in the code, 7 | --- but does not support refactorings. 8 | --- 9 | --- It can be installed with cargo: https://crates.io/crates/starlark 10 | return { 11 | cmd = { 'starlark', '--lsp' }, 12 | filetypes = { 'star', 'bzl', 'BUILD.bazel' }, 13 | root_markers = { '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/starpls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/withered-magic/starpls 4 | --- 5 | --- `starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README. 6 | return { 7 | cmd = { 'starpls' }, 8 | filetypes = { 'bzl' }, 9 | root_markers = { 'WORKSPACE', 'WORKSPACE.bazel', 'MODULE.bazel' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/statix.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nerdypepper/statix 4 | --- 5 | --- lints and suggestions for the nix programming language 6 | return { 7 | cmd = { 'statix', 'check', '--stdin' }, 8 | filetypes = { 'nix' }, 9 | root_markers = { 'flake.nix', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/steep.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/soutaro/steep 4 | --- 5 | --- `steep` is a static type checker for Ruby. 6 | --- 7 | --- You need `Steepfile` to make it work. Generate it with `steep init`. 8 | return { 9 | cmd = { 'steep', 'langserver' }, 10 | filetypes = { 'ruby', 'eruby' }, 11 | root_markers = { 'Steepfile', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/stimulus_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://www.npmjs.com/package/stimulus-language-server 4 | --- 5 | --- `stimulus-lsp` can be installed via `npm`: 6 | --- 7 | --- ```sh 8 | --- npm install -g stimulus-language-server 9 | --- ``` 10 | --- 11 | --- or via `yarn`: 12 | --- 13 | --- ```sh 14 | --- yarn global add stimulus-language-server 15 | --- ``` 16 | return { 17 | cmd = { 'stimulus-language-server', '--stdio' }, 18 | filetypes = { 'html', 'ruby', 'eruby', 'blade', 'php' }, 19 | root_markers = { 'Gemfile', '.git' }, 20 | } 21 | -------------------------------------------------------------------------------- /lsp/stylua3p_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/antonk52/lua-3p-language-servers 4 | --- 5 | --- 3rd party Language Server for Stylua lua formatter 6 | return { 7 | cmd = { 'stylua-3p-language-server' }, 8 | filetypes = { 'lua' }, 9 | root_markers = { '.stylua.toml', 'stylua.toml' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/svls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/dalance/svls 4 | --- 5 | --- Language server for verilog and SystemVerilog 6 | --- 7 | --- `svls` can be installed via `cargo`: 8 | --- ```sh 9 | --- cargo install svls 10 | --- ``` 11 | return { 12 | cmd = { 'svls' }, 13 | filetypes = { 'verilog', 'systemverilog' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/swift_mesonls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/JCWasmx86/Swift-MesonLSP 4 | --- 5 | --- Meson language server written in Swift 6 | return { 7 | cmd = { 'Swift-MesonLSP', '--lsp' }, 8 | filetypes = { 'meson' }, 9 | root_markers = { 'meson.build', 'meson_options.txt', 'meson.options', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/syntax_tree.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://ruby-syntax-tree.github.io/syntax_tree/ 4 | --- 5 | --- A fast Ruby parser and formatter. 6 | --- 7 | --- Syntax Tree is a suite of tools built on top of the internal CRuby parser. It 8 | --- provides the ability to generate a syntax tree from source, as well as the 9 | --- tools necessary to inspect and manipulate that syntax tree. It can be used to 10 | --- build formatters, linters, language servers, and more. 11 | --- 12 | --- ```sh 13 | --- gem install syntax_tree 14 | --- ``` 15 | return { 16 | cmd = { 'stree', 'lsp' }, 17 | filetypes = { 'ruby' }, 18 | root_markers = { '.streerc', 'Gemfile', '.git' }, 19 | } 20 | -------------------------------------------------------------------------------- /lsp/systemd_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/psacawa/systemd-language-server 4 | --- 5 | --- `systemd-language-server` can be installed via `pip`: 6 | --- ```sh 7 | --- pip install systemd-language-server 8 | --- ``` 9 | --- 10 | --- Language Server for Systemd unit files 11 | return { 12 | cmd = { 'systemd-language-server' }, 13 | filetypes = { 'systemd' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/tabby_ml.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://tabby.tabbyml.com/blog/running-tabby-as-a-language-server 4 | --- 5 | --- Language server for Tabby, an opensource, self-hosted AI coding assistant. 6 | --- 7 | --- `tabby-agent` can be installed via `npm`: 8 | --- 9 | --- ```sh 10 | --- npm install --global tabby-agent 11 | --- ``` 12 | return { 13 | cmd = { 'tabby-agent', '--lsp', '--stdio' }, 14 | filetypes = {}, 15 | root_markers = { '.git' }, 16 | } 17 | -------------------------------------------------------------------------------- /lsp/taplo.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://taplo.tamasfe.dev/cli/usage/language-server.html 4 | --- 5 | --- Language server for Taplo, a TOML toolkit. 6 | --- 7 | --- `taplo-cli` can be installed via `cargo`: 8 | --- ```sh 9 | --- cargo install --features lsp --locked taplo-cli 10 | --- ``` 11 | return { 12 | cmd = { 'taplo', 'lsp', 'stdio' }, 13 | filetypes = { 'toml' }, 14 | root_markers = { '.taplo.toml', 'taplo.toml', '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/templ.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://templ.guide 4 | --- 5 | --- The official language server for the templ HTML templating language. 6 | return { 7 | cmd = { 'templ', 'lsp' }, 8 | filetypes = { 'templ' }, 9 | root_markers = { 'go.work', 'go.mod', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/tflint.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/terraform-linters/tflint 4 | --- 5 | --- A pluggable Terraform linter that can act as lsp server. 6 | --- Installation instructions can be found in https://github.com/terraform-linters/tflint#installation. 7 | return { 8 | cmd = { 'tflint', '--langserver' }, 9 | filetypes = { 'terraform' }, 10 | root_markers = { '.terraform', '.git', '.tflint.hcl' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/thriftls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/joyme123/thrift-ls 4 | --- 5 | --- you can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases 6 | return { 7 | cmd = { 'thriftls' }, 8 | filetypes = { 'thrift' }, 9 | root_markers = { '.thrift' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/tilt_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/tilt-dev/tilt 4 | --- 5 | --- Tilt language server. 6 | --- 7 | --- You might need to add filetype detection manually: 8 | --- 9 | --- ```vim 10 | --- autocmd BufRead Tiltfile setf=tiltfile 11 | --- ``` 12 | return { 13 | cmd = { 'tilt', 'lsp', 'start' }, 14 | filetypes = { 'tiltfile' }, 15 | root_markers = { '.git' }, 16 | } 17 | -------------------------------------------------------------------------------- /lsp/tofu_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- [OpenTofu Language Server](https://github.com/opentofu/tofu-ls) 4 | --- 5 | return { 6 | cmd = { 'tofu-ls', 'serve' }, 7 | filetypes = { 'opentofu', 'opentofu-vars' }, 8 | root_markers = { '.terraform', '.git' }, 9 | } 10 | -------------------------------------------------------------------------------- /lsp/tombi.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://tombi-toml.github.io/tombi/ 4 | --- 5 | --- Language server for Tombi, a TOML toolkit. 6 | --- 7 | return { 8 | cmd = { 'tombi', 'lsp' }, 9 | filetypes = { 'toml' }, 10 | root_markers = { 'tombi.toml', 'pyproject.toml', '.git' }, 11 | } 12 | -------------------------------------------------------------------------------- /lsp/tsp_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/microsoft/typespec 4 | --- 5 | --- The language server for TypeSpec, a language for defining cloud service APIs and shapes. 6 | --- 7 | --- `tsp-server` can be installed together with the typespec compiler via `npm`: 8 | --- ```sh 9 | --- npm install -g @typespec/compiler 10 | --- ``` 11 | return { 12 | cmd = { 'tsp-server', '--stdio' }, 13 | filetypes = { 'typespec' }, 14 | root_markers = { 'tspconfig.yaml', '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/ttags.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/npezza93/ttags 4 | return { 5 | cmd = { 'ttags', 'lsp' }, 6 | filetypes = { 'ruby', 'rust', 'javascript', 'haskell' }, 7 | root_markers = { '.git' }, 8 | } 9 | -------------------------------------------------------------------------------- /lsp/turbo_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://www.npmjs.com/package/turbo-language-server 4 | --- 5 | --- `turbo-language-server` can be installed via `npm`: 6 | --- 7 | --- ```sh 8 | --- npm install -g turbo-language-server 9 | --- ``` 10 | --- 11 | --- or via `yarn`: 12 | --- 13 | --- ```sh 14 | --- yarn global add turbo-language-server 15 | --- ``` 16 | return { 17 | cmd = { 'turbo-language-server', '--stdio' }, 18 | filetypes = { 'html', 'ruby', 'eruby', 'blade', 'php' }, 19 | root_markers = { 'Gemfile', '.git' }, 20 | } 21 | -------------------------------------------------------------------------------- /lsp/tvm_ffi_navigator.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/tqchen/ffi-navigator 4 | --- 5 | --- The Language Server for FFI calls in TVM to be able jump between python and C++ 6 | --- 7 | --- FFI navigator can be installed with `pip install ffi-navigator`, buf for more details, please see 8 | --- https://github.com/tqchen/ffi-navigator?tab=readme-ov-file#installation 9 | return { 10 | cmd = { 'python', '-m', 'ffi_navigator.langserver' }, 11 | filetypes = { 'python', 'cpp' }, 12 | root_markers = { 'pyproject.toml', '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/twiggy_language_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/moetelo/twiggy 4 | --- 5 | --- `twiggy-language-server` can be installed via `npm`: 6 | --- ```sh 7 | --- npm install -g twiggy-language-server 8 | --- ``` 9 | return { 10 | cmd = { 'twiggy-language-server', '--stdio' }, 11 | filetypes = { 'twig' }, 12 | root_markers = { 'composer.json', '.git' }, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/ty.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/astral-sh/ty 4 | --- 5 | --- A Language Server Protocol implementation for ty, an extremely fast Python type checker and language server, written in Rust. 6 | --- 7 | --- For installation instructions, please refer to the [ty documentation](https://github.com/astral-sh/ty/blob/main/README.md#getting-started). 8 | return { 9 | cmd = { 'ty', 'server' }, 10 | filetypes = { 'python' }, 11 | root_markers = { 'ty.toml', 'pyproject.toml', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/typeprof.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/ruby/typeprof 4 | --- 5 | --- `typeprof` is the built-in analysis and LSP tool for Ruby 3.1+. 6 | return { 7 | cmd = { 'typeprof', '--lsp', '--stdio' }, 8 | filetypes = { 'ruby', 'eruby' }, 9 | root_markers = { 'Gemfile', '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/typos_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/crate-ci/typos 4 | --- https://github.com/tekumara/typos-lsp 5 | --- 6 | --- A Language Server Protocol implementation for Typos, a low false-positive 7 | --- source code spell checker, written in Rust. Download it from the releases page 8 | --- on GitHub: https://github.com/tekumara/typos-lsp/releases 9 | return { 10 | cmd = { 'typos-lsp' }, 11 | root_markers = { 'typos.toml', '_typos.toml', '.typos.toml', 'pyproject.toml', 'Cargo.toml' }, 12 | settings = {}, 13 | } 14 | -------------------------------------------------------------------------------- /lsp/typst_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/nvarner/typst-lsp 4 | --- 5 | --- Language server for Typst. 6 | return { 7 | cmd = { 'typst-lsp' }, 8 | filetypes = { 'typst' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/uiua.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/uiua-lang/uiua/ 4 | --- 5 | --- The builtin language server of the Uiua interpreter. 6 | --- 7 | --- The Uiua interpreter can be installed with `cargo install uiua` 8 | return { 9 | cmd = { 'uiua', 'lsp' }, 10 | filetypes = { 'uiua' }, 11 | root_markers = { 'main.ua', '.fmt.ua', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/ungrammar_languageserver.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/binhtran432k/ungrammar-language-features 4 | --- Language Server for Ungrammar. 5 | --- 6 | --- Ungrammar Language Server can be installed via npm: 7 | --- ```sh 8 | --- npm i ungrammar-languageserver -g 9 | --- ``` 10 | return { 11 | cmd = { 'ungrammar-languageserver', '--stdio' }, 12 | filetypes = { 'ungrammar' }, 13 | root_markers = { '.git' }, 14 | settings = { 15 | ungrammar = { 16 | validate = { 17 | enable = true, 18 | }, 19 | format = { 20 | enable = true, 21 | }, 22 | }, 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /lsp/unison.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/unisonweb/unison/blob/trunk/docs/language-server.markdown 4 | 5 | local util = require 'lspconfig.util' 6 | 7 | return { 8 | cmd = { 'nc', 'localhost', os.getenv 'UNISON_LSP_PORT' or '5757' }, 9 | filetypes = { 'unison' }, 10 | root_dir = function(bufnr, on_dir) 11 | local fname = vim.api.nvim_buf_get_name(bufnr) 12 | on_dir(util.root_pattern('*.u')(fname)) 13 | end, 14 | settings = {}, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/uvls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://codeberg.org/caradhras/uvls 4 | --- Language server for UVL, written using tree sitter and rust. 5 | --- You can install the server easily using cargo: 6 | --- ```sh 7 | --- git clone https://codeberg.org/caradhras/uvls 8 | --- cd uvls 9 | --- cargo install --path . 10 | --- ``` 11 | --- 12 | --- Note: To activate properly nvim needs to know the uvl filetype. 13 | --- You can add it via: 14 | --- ```lua 15 | --- vim.cmd([[au BufRead,BufNewFile *.uvl setfiletype uvl]]) 16 | --- ``` 17 | return { 18 | cmd = { 'uvls' }, 19 | filetypes = { 'uvl' }, 20 | root_markers = { '.git' }, 21 | } 22 | -------------------------------------------------------------------------------- /lsp/v_analyzer.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/vlang/v-analyzer 4 | --- 5 | --- V language server. 6 | --- 7 | --- `v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation). 8 | return { 9 | cmd = { 'v-analyzer' }, 10 | filetypes = { 'v', 'vsh', 'vv' }, 11 | root_markers = { 'v.mod', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/vale_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/errata-ai/vale-ls 4 | --- 5 | --- An implementation of the Language Server Protocol (LSP) for the Vale command-line tool. 6 | return { 7 | cmd = { 'vale-ls' }, 8 | filetypes = { 'markdown', 'text', 'tex', 'rst' }, 9 | root_markers = { '.vale.ini' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/vectorcode_server.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- https://github.com/Davidyz/VectorCode 3 | --- 4 | --- A Language Server Protocol implementation for VectorCode, a code repository indexing tool. 5 | return { 6 | cmd = { 'vectorcode-server' }, 7 | root_dir = vim.fs.root(0, { '.vectorcode', '.git' }), 8 | settings = {}, 9 | } 10 | -------------------------------------------------------------------------------- /lsp/verible.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/chipsalliance/verible 4 | --- 5 | --- A linter and formatter for verilog and SystemVerilog files. 6 | --- 7 | --- Release binaries can be downloaded from [here](https://github.com/chipsalliance/verible/releases) 8 | --- and placed in a directory on PATH. 9 | --- 10 | --- See https://github.com/chipsalliance/verible/tree/master/verilog/tools/ls/README.md for options. 11 | return { 12 | cmd = { 'verible-verilog-ls' }, 13 | filetypes = { 'systemverilog', 'verilog' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/veryl_ls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/veryl-lang/veryl 4 | --- 5 | --- Language server for Veryl 6 | --- 7 | --- `veryl-ls` can be installed via `cargo`: 8 | --- ```sh 9 | --- cargo install veryl-ls 10 | --- ``` 11 | return { 12 | cmd = { 'veryl-ls' }, 13 | filetypes = { 'veryl' }, 14 | root_markers = { '.git' }, 15 | } 16 | -------------------------------------------------------------------------------- /lsp/vls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/vlang/vls 4 | --- 5 | --- V language server. 6 | --- 7 | --- `v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation). 8 | return { 9 | cmd = { 'v', 'ls' }, 10 | filetypes = { 'v', 'vlang' }, 11 | root_markers = { 'v.mod', '.git' }, 12 | } 13 | -------------------------------------------------------------------------------- /lsp/volar.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- Renamed to [vue_ls](#vue_ls) 4 | --- 5 | --- 6 | vim.deprecate('volar', 'vue_ls', '3.0.0', 'lspconfig', false) 7 | 8 | return vim.lsp.config.vue_ls 9 | -------------------------------------------------------------------------------- /lsp/vscoqtop.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/coq-community/vscoq 4 | return { 5 | cmd = { 'vscoqtop' }, 6 | filetypes = { 'coq' }, 7 | root_markers = { '_CoqProject', '.git' }, 8 | } 9 | -------------------------------------------------------------------------------- /lsp/wasm_language_tools.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/g-plane/wasm-language-tools 4 | --- 5 | --- WebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format. 6 | --- It also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format. 7 | return { 8 | cmd = { 'wat_server' }, 9 | filetypes = { 'wat' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/wgsl_analyzer.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/wgsl-analyzer/wgsl-analyzer 4 | --- 5 | --- `wgsl-analyzer` can be installed via `cargo`: 6 | --- ```sh 7 | --- cargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer 8 | --- ``` 9 | return { 10 | cmd = { 'wgsl-analyzer' }, 11 | filetypes = { 'wgsl' }, 12 | root_markers = { '.git' }, 13 | settings = {}, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/yang_lsp.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://github.com/TypeFox/yang-lsp 4 | --- 5 | --- A Language Server for the YANG data modeling language. 6 | return { 7 | cmd = { 'yang-language-server' }, 8 | filetypes = { 'yang' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/yls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://pypi.org/project/yls-yara/ 4 | --- 5 | --- An YLS plugin adding YARA linting capabilities. 6 | --- 7 | --- This plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages. 8 | --- 9 | --- Language Server: https://github.com/avast/yls 10 | return { 11 | cmd = { 'yls', '-vv' }, 12 | filetypes = { 'yar', 'yara' }, 13 | root_markers = { '.git' }, 14 | } 15 | -------------------------------------------------------------------------------- /lsp/ziggy.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://ziggy-lang.io/documentation/ziggy-lsp/ 4 | --- 5 | --- Language server for the Ziggy data serialization format 6 | return { 7 | cmd = { 'ziggy', 'lsp' }, 8 | filetypes = { 'ziggy' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/ziggy_schema.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- 3 | --- https://ziggy-lang.io/documentation/ziggy-lsp/ 4 | --- 5 | --- Language server for schema files of the Ziggy data serialization format 6 | return { 7 | cmd = { 'ziggy', 'lsp', '--schema' }, 8 | filetypes = { 'ziggy_schema' }, 9 | root_markers = { '.git' }, 10 | } 11 | -------------------------------------------------------------------------------- /lsp/zls.lua: -------------------------------------------------------------------------------- 1 | ---@brief 2 | --- https://github.com/zigtools/zls 3 | --- 4 | --- Zig LSP implementation + Zig Language Server 5 | 6 | return { 7 | cmd = { 'zls' }, 8 | filetypes = { 'zig', 'zir' }, 9 | root_markers = { 'zls.json', 'build.zig', '.git' }, 10 | workspace_required = false, 11 | } 12 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/agda_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'als' }, 6 | filetypes = { 'agda' }, 7 | root_dir = util.root_pattern('.git', '*.agda-lib'), 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/agda/agda-language-server 13 | 14 | Language Server for Agda. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/aiken.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'aiken', 'lsp' }, 6 | filetypes = { 'aiken' }, 7 | root_dir = function(fname) 8 | return util.root_pattern('aiken.toml', '.git')(fname) 9 | end, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://github.com/aiken-lang/aiken 14 | 15 | A language server for Aiken Programming Language. 16 | [Installation](https://aiken-lang.org/installation-instructions) 17 | 18 | It can be i 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/air.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'air', 'language-server' }, 4 | filetypes = { 'r' }, 5 | root_dir = vim.fs.root(0, { 'air.toml', '.air.toml', '.git' }), 6 | single_file_support = true, 7 | }, 8 | docs = { 9 | description = [[ 10 | https://github.com/posit-dev/air 11 | 12 | Air is an R formatter and language server, written in Rust. 13 | 14 | Refer to the [documentation](https://posit-dev.github.io/air/editors.html) for more details. 15 | 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/antlersls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'antlersls', '--stdio' }, 6 | filetypes = { 'html', 'antlers' }, 7 | root_dir = util.root_pattern 'composer.json', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://www.npmjs.com/package/antlers-language-server 12 | 13 | `antlersls` can be installed via `npm`: 14 | ```sh 15 | npm install -g antlers-language-server 16 | ``` 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/asm_lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'asm-lsp' }, 4 | filetypes = { 'asm', 'vmasm' }, 5 | single_file_support = true, 6 | root_dir = function(fname) 7 | return vim.fs.dirname(vim.fs.find({ '.asm-lsp.toml', '.git' }, { path = fname, upward = true })[1]) 8 | end, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/bergercookie/asm-lsp 13 | 14 | Language Server for NASM/GAS/GO Assembly 15 | 16 | `asm-lsp` can be installed via cargo: 17 | cargo install asm-lsp 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/awk_ls.lua: -------------------------------------------------------------------------------- 1 | if vim.version().major == 0 and vim.version().minor < 7 then 2 | vim.notify('The AWK language server requires nvim >= 0.7', vim.log.levels.ERROR) 3 | return 4 | end 5 | 6 | return { 7 | default_config = { 8 | cmd = { 'awk-language-server' }, 9 | filetypes = { 'awk' }, 10 | single_file_support = true, 11 | }, 12 | docs = { 13 | description = [[ 14 | https://github.com/Beaglefoot/awk-language-server/ 15 | 16 | `awk-language-server` can be installed via `npm`: 17 | ```sh 18 | npm install -g awk-language-server 19 | ``` 20 | ]], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ballerina.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'bal', 'start-language-server' }, 6 | filetypes = { 'ballerina' }, 7 | root_dir = util.root_pattern 'Ballerina.toml', 8 | }, 9 | docs = { 10 | description = [[ 11 | Ballerina language server 12 | 13 | The Ballerina language's CLI tool comes with its own language server implementation. 14 | The `bal` command line tool must be installed and available in your system's PATH. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/beancount.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'beancount-language-server', '--stdio' }, 4 | filetypes = { 'beancount', 'bean' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | init_options = {}, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://github.com/polarmutex/beancount-language-server#installation 14 | 15 | See https://github.com/polarmutex/beancount-language-server#configuration for configuration options 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/bitbake_language_server.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'bitbake-language-server' }, 4 | filetypes = { 'bitbake' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | 🛠️ bitbake language server 12 | ]], 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/bqls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'bqls' }, 4 | filetypes = { 'sql' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | settings = {}, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://github.com/kitagry/bqls 14 | 15 | The `bqls` BigQuery language server can be installed by running: 16 | 17 | ```sh 18 | $ go install github.com/kitagry/bqls@latest 19 | ``` 20 | ]], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/bright_script.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig/util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'bsc', '--lsp', '--stdio' }, 6 | filetypes = { 'brs' }, 7 | single_file_support = true, 8 | root_dir = util.root_pattern('makefile', 'Makefile', '.git'), 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/RokuCommunity/brighterscript 13 | 14 | `brightscript` can be installed via `npm`: 15 | ```sh 16 | npm install -g brighterscript 17 | ``` 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/bsl_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | filetypes = { 'bsl', 'os' }, 4 | root_dir = function(fname) 5 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 6 | end, 7 | }, 8 | docs = { 9 | description = [[ 10 | https://github.com/1c-syntax/bsl-language-server 11 | 12 | Language Server Protocol implementation for 1C (BSL) - 1C:Enterprise 8 and OneScript languages. 13 | 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/buck2.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'buck2', 'lsp' }, 6 | filetypes = { 'bzl' }, 7 | root_dir = function(fname) 8 | return util.root_pattern '.buckconfig'(fname) 9 | end, 10 | }, 11 | docs = { 12 | description = [=[ 13 | https://github.com/facebook/buck2 14 | 15 | Build system, successor to Buck 16 | 17 | To better detect Buck2 project files, the following can be added: 18 | 19 | ``` 20 | vim.cmd [[ autocmd BufRead,BufNewFile *.bxl,BUCK,TARGETS set filetype=bzl ]] 21 | ``` 22 | ]=], 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/buf_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'buf', 'beta', 'lsp', '--timeout=0', '--log-format=text' }, 4 | filetypes = { 'proto' }, 5 | root_dir = require('lspconfig.util').root_pattern('buf.yaml', '.git'), 6 | }, 7 | docs = { 8 | description = [[ 9 | https://github.com/bufbuild/buf 10 | 11 | buf beta lsp included in the cli itself 12 | 13 | buf beta lsp is a Protobuf language server compatible with Buf modules and workspaces 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/bufls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'bufls', 'serve' }, 6 | filetypes = { 'proto' }, 7 | root_dir = function(fname) 8 | return util.root_pattern('buf.work.yaml', '.git')(fname) 9 | end, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://github.com/bufbuild/buf-language-server 14 | 15 | `buf-language-server` can be installed via `go install`: 16 | ```sh 17 | go install github.com/bufbuild/buf-language-server/cmd/bufls@latest 18 | ``` 19 | 20 | bufls is a Protobuf language server compatible with Buf modules and workspaces 21 | ]], 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/bzl.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'bzl', 'lsp', 'serve' }, 6 | filetypes = { 'bzl' }, 7 | -- https://docs.bazel.build/versions/5.4.1/build-ref.html#workspace 8 | root_dir = util.root_pattern('WORKSPACE', 'WORKSPACE.bazel'), 9 | }, 10 | docs = { 11 | description = [[ 12 | https://bzl.io/ 13 | 14 | https://docs.stack.build/docs/cli/installation 15 | 16 | https://docs.stack.build/docs/vscode/starlark-language-server 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/c3_lsp.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'c3lsp' }, 6 | root_dir = function(fname) 7 | return util.root_pattern { 'project.json', 'manifest.json', '.git' }(fname) 8 | end, 9 | filetypes = { 'c3', 'c3i' }, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://github.com/pherrymason/c3-lsp 14 | 15 | Language Server for c3. 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/cds_lsp.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'cds-lsp', '--stdio' }, 6 | filetypes = { 'cds' }, 7 | -- init_options = { provideFormatter = true }, -- needed to enable formatting capabilities 8 | root_dir = util.root_pattern('package.json', 'db', 'srv'), 9 | single_file_support = true, 10 | settings = { 11 | cds = { validate = true }, 12 | }, 13 | }, 14 | docs = { 15 | description = [[ 16 | 17 | https://cap.cloud.sap/docs/ 18 | 19 | `cds-lsp` can be installed via `npm`: 20 | 21 | ```sh 22 | npm i -g @sap/cds-lsp 23 | ``` 24 | 25 | ]], 26 | }, 27 | } 28 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/circom-lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'circom-lsp' }, 4 | filetypes = { 'circom' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | [Circom Language Server](https://github.com/rubydusa/circom-lsp) 13 | 14 | `circom-lsp`, the language server for the Circom language. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/clojure_lsp.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'clojure-lsp' }, 6 | filetypes = { 'clojure', 'edn' }, 7 | root_dir = util.root_pattern('project.clj', 'deps.edn', 'build.boot', 'shadow-cljs.edn', '.git', 'bb.edn'), 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/clojure-lsp/clojure-lsp 13 | 14 | Clojure Language Server 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/cmake.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'cmake-language-server' }, 6 | filetypes = { 'cmake' }, 7 | root_dir = function(fname) 8 | return util.root_pattern('CMakePresets.json', 'CTestConfig.cmake', '.git', 'build', 'cmake')(fname) 9 | end, 10 | single_file_support = true, 11 | init_options = { 12 | buildDirectory = 'build', 13 | }, 14 | }, 15 | docs = { 16 | description = [[ 17 | https://github.com/regen100/cmake-language-server 18 | 19 | CMake LSP Implementation 20 | ]], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/cobol_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'cobol-language-support' }, 4 | filetypes = { 'cobol' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | Cobol language support 12 | ]], 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/coffeesense.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'coffeesense-language-server', '--stdio' }, 6 | filetypes = { 'coffee' }, 7 | root_dir = util.root_pattern 'package.json', 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/phil294/coffeesense 13 | 14 | CoffeeSense Language Server 15 | `coffeesense-language-server` can be installed via `npm`: 16 | ```sh 17 | npm install -g coffeesense-language-server 18 | ``` 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/coq_lsp.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'coq-lsp' }, 6 | filetypes = { 'coq' }, 7 | root_dir = function(fname) 8 | return util.root_pattern '_CoqProject'(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | single_file_support = true, 12 | }, 13 | docs = { 14 | description = [[ 15 | https://github.com/ejgallego/coq-lsp/ 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/crystalline.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'crystalline' }, 6 | filetypes = { 'crystal' }, 7 | root_dir = function(fname) 8 | return util.root_pattern('shard.yml')(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | single_file_support = true, 12 | }, 13 | docs = { 14 | description = [[ 15 | https://github.com/elbywan/crystalline 16 | 17 | Crystal language server. 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/cue.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'cue', 'lsp' }, 6 | filetypes = { 'cue' }, 7 | root_dir = function(fname) 8 | return util.root_pattern(unpack({ 'cue.mod', '.git' }))(fname) 9 | end, 10 | single_file_support = true, 11 | }, 12 | docs = { 13 | description = [[ 14 | https://github.com/cue-lang/cue 15 | 16 | CUE makes it easy to validate data, write schemas, and ensure configurations align with policies. 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/dagger.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'cuelsp' }, 6 | filetypes = { 'cue' }, 7 | root_dir = function(fname) 8 | return util.root_pattern('cue.mod', '.git')(fname) 9 | end, 10 | single_file_support = true, 11 | }, 12 | docs = { 13 | description = [[ 14 | https://github.com/dagger/cuelsp 15 | 16 | Dagger's lsp server for cuelang. 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/dcmls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'dcm', 'start-server', '--client=neovim' }, 6 | filetypes = { 'dart' }, 7 | root_dir = util.root_pattern 'pubspec.yaml', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://dcm.dev/ 12 | 13 | Language server for DCM analyzer. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/debputy.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'debputy', 'lsp', 'server' }, 6 | filetypes = { 'debcontrol', 'debcopyright', 'debchangelog', 'make', 'yaml' }, 7 | root_dir = util.root_pattern 'debian', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://salsa.debian.org/debian/debputy 12 | 13 | Language Server for Debian packages. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/diagnosticls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- Configuration from https://github.com/iamcco/diagnostic-languageserver#config--document 3 | default_config = { 4 | cmd = { 'diagnostic-languageserver', '--stdio' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | -- Empty by default, override to add filetypes. 10 | filetypes = {}, 11 | }, 12 | docs = { 13 | description = [[ 14 | https://github.com/iamcco/diagnostic-languageserver 15 | 16 | Diagnostic language server integrate with linters. 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/djlsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'djlsp' }, 4 | filetypes = { 'html', 'htmldjango' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | settings = {}, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/fourdigits/django-template-lsp 13 | 14 | `djlsp`, a language server for Django templates. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/dolmenls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'dolmenls' }, 4 | filetypes = { 'smt2', 'tptp', 'p', 'cnf', 'icnf', 'zf' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/Gbury/dolmen/blob/master/doc/lsp.md 13 | 14 | `dolmenls` can be installed via `opam` 15 | ```sh 16 | opam install dolmen_lsp 17 | ``` 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/dotls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'dot-language-server', '--stdio' }, 4 | filetypes = { 'dot' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/nikeee/dot-language-server 13 | 14 | `dot-language-server` can be installed via `npm`: 15 | ```sh 16 | npm install -g dot-language-server 17 | ``` 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/earthlyls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig/util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'earthlyls' }, 6 | filetypes = { 'earthfile' }, 7 | root_dir = util.root_pattern 'Earthfile', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/glehmann/earthlyls 12 | 13 | A fast language server for earthly. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ecsact.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'ecsact_lsp_server', '--stdio' }, 6 | filetypes = { 'ecsact' }, 7 | root_dir = util.root_pattern '.git', 8 | single_file_support = true, 9 | }, 10 | 11 | docs = { 12 | description = [[ 13 | https://github.com/ecsact-dev/ecsact_lsp_server 14 | 15 | Language server for Ecsact. 16 | 17 | The default cmd assumes `ecsact_lsp_server` is in your PATH. Typically from the 18 | Ecsact SDK: https://ecsact.dev/start 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/elp.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'elp', 'server' }, 6 | filetypes = { 'erlang' }, 7 | root_dir = util.root_pattern('rebar.config', 'erlang.mk', '.git'), 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://whatsapp.github.io/erlang-language-platform 13 | 14 | ELP integrates Erlang into modern IDEs via the language server protocol and was 15 | inspired by rust-analyzer. 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ember.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'ember-language-server', '--stdio' }, 6 | filetypes = { 'handlebars', 'typescript', 'javascript', 'typescript.glimmer', 'javascript.glimmer' }, 7 | root_dir = util.root_pattern('ember-cli-build.js', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/ember-tooling/ember-language-server 12 | 13 | `ember-language-server` can be installed via `npm`: 14 | 15 | ```sh 16 | npm install -g @ember-tooling/ember-language-server 17 | ``` 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/facility_language_server.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'facility-language-server' }, 4 | filetypes = { 'fsd' }, 5 | single_file_support = true, 6 | root_dir = function(fname) 7 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 8 | end, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/FacilityApi/FacilityLanguageServer 13 | 14 | Facility language server protocol (LSP) support. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/fennel_language_server.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'fennel-language-server' }, 4 | filetypes = { 'fennel' }, 5 | single_file_support = true, 6 | root_dir = function(fname) 7 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 8 | end, 9 | settings = {}, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://github.com/rydesun/fennel-language-server 14 | 15 | Fennel language server protocol (LSP) support. 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/flow.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'npx', '--no-install', 'flow', 'lsp' }, 6 | filetypes = { 'javascript', 'javascriptreact', 'javascript.jsx' }, 7 | root_dir = util.root_pattern '.flowconfig', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://flow.org/ 12 | https://github.com/facebook/flow 13 | 14 | See below for how to setup Flow itself. 15 | https://flow.org/en/docs/install/ 16 | 17 | See below for lsp command options. 18 | 19 | ```sh 20 | npx flow lsp --help 21 | ``` 22 | ]], 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/flux_lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'flux-lsp' }, 4 | filetypes = { 'flux' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/influxdata/flux-lsp 13 | `flux-lsp` can be installed via `cargo`: 14 | ```sh 15 | cargo install --git https://github.com/influxdata/flux-lsp 16 | ``` 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/fstar.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'fstar.exe', '--lsp' }, 4 | filetypes = { 'fstar' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/FStarLang/FStar 12 | 13 | LSP support is included in FStar. Make sure `fstar.exe` is in your PATH. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/futhark_lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'futhark', 'lsp' }, 4 | filetypes = { 'futhark', 'fut' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/diku-dk/futhark 13 | 14 | Futhark Language Server 15 | 16 | This language server comes with the futhark compiler and is run with the command 17 | ``` 18 | futhark lsp 19 | ``` 20 | ]], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/gdscript.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | local port = os.getenv 'GDScript_Port' or '6005' 4 | local cmd = vim.lsp.rpc.connect('127.0.0.1', tonumber(port)) 5 | 6 | return { 7 | default_config = { 8 | cmd = cmd, 9 | filetypes = { 'gd', 'gdscript', 'gdscript3' }, 10 | root_dir = util.root_pattern('project.godot', '.git'), 11 | }, 12 | docs = { 13 | description = [[ 14 | https://github.com/godotengine/godot 15 | 16 | Language server for GDScript, used by Godot Engine. 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/gdshader_lsp.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'gdshader-lsp', '--stdio' }, 6 | filetypes = { 'gdshader', 'gdshaderinc' }, 7 | root_dir = util.root_pattern 'project.godot', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/godofavacyn/gdshader-lsp 12 | 13 | A language server for the Godot Shading language. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ghcide.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'ghcide', '--lsp' }, 6 | filetypes = { 'haskell', 'lhaskell' }, 7 | root_dir = util.root_pattern('stack.yaml', 'hie-bios', 'BUILD.bazel', 'cabal.config', 'package.yaml'), 8 | }, 9 | 10 | docs = { 11 | description = [[ 12 | https://github.com/digital-asset/ghcide 13 | 14 | A library for building Haskell IDE tooling. 15 | "ghcide" isn't for end users now. Use "haskell-language-server" instead of "ghcide". 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/gleam.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'gleam', 'lsp' }, 6 | filetypes = { 'gleam' }, 7 | root_dir = function(fname) 8 | return util.root_pattern('gleam.toml', '.git')(fname) 9 | end, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://github.com/gleam-lang/gleam 14 | 15 | A language server for Gleam Programming Language. 16 | 17 | It comes with the Gleam compiler, for installation see: [Installing Gleam](https://gleam.run/getting-started/installing/) 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/glsl_analyzer.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'glsl_analyzer' }, 4 | filetypes = { 'glsl', 'vert', 'tesc', 'tese', 'frag', 'geom', 'comp' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | capabilities = {}, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://github.com/nolanderc/glsl_analyzer 14 | 15 | Language server for GLSL 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/hdl_checker.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'hdl_checker', '--lsp' }, 4 | filetypes = { 'vhdl', 'verilog', 'systemverilog' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/suoto/hdl_checker 13 | Language server for hdl-checker. 14 | Install using: `pip install hdl-checker --upgrade` 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/hhvm.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'hh_client', 'lsp' }, 6 | filetypes = { 'php', 'hack' }, 7 | root_dir = util.root_pattern '.hhconfig', 8 | }, 9 | docs = { 10 | description = [[ 11 | Language server for programs written in Hack 12 | https://hhvm.com/ 13 | https://github.com/facebook/hhvm 14 | See below for how to setup HHVM & typechecker: 15 | https://docs.hhvm.com/hhvm/getting-started/getting-started 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/hlasm.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'hlasm_language_server' }, 6 | filetypes = { 'hlasm' }, 7 | root_dir = util.root_pattern '.hlasmplugin', 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | `hlasm_language_server` is a language server for the High Level Assembler language used on IBM SystemZ mainframes. 13 | 14 | To learn how to configure the HLASM language server, see the [HLASM Language Support documentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm). 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/hydra_lsp.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'hydra-lsp' }, 6 | filetypes = { 'yaml' }, 7 | root_dir = util.root_pattern '.git', 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/Retsediv/hydra-lsp 13 | 14 | LSP for Hydra Python package config files. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/hyprls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'hyprls', '--stdio' }, 4 | filetypes = { 'hyprlang' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/hyprland-community/hyprls 13 | 14 | `hyprls` can be installed via `go`: 15 | ```sh 16 | go install github.com/ewen-lbh/hyprls/cmd/hyprls@latest 17 | ``` 18 | 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/java_language_server.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | filetypes = { 'java' }, 6 | root_dir = util.root_pattern('build.gradle', 'build.gradle.kts', 'pom.xml', '.git'), 7 | settings = {}, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/georgewfraser/java-language-server 12 | 13 | Java language server 14 | 15 | Point `cmd` to `lang_server_linux.sh` or the equivalent script for macOS/Windows provided by java-language-server 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/jedi_language_server.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | local root_files = { 4 | 'pyproject.toml', 5 | 'setup.py', 6 | 'setup.cfg', 7 | 'requirements.txt', 8 | 'Pipfile', 9 | '.git', 10 | } 11 | 12 | return { 13 | default_config = { 14 | cmd = { 'jedi-language-server' }, 15 | filetypes = { 'python' }, 16 | root_dir = util.root_pattern(unpack(root_files)), 17 | single_file_support = true, 18 | }, 19 | docs = { 20 | description = [[ 21 | https://github.com/pappasam/jedi-language-server 22 | 23 | `jedi-language-server`, a language server for Python, built on top of jedi 24 | ]], 25 | }, 26 | } 27 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/just.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'just-lsp' }, 4 | filetypes = { 'just' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/terror/just-lsp 13 | 14 | `just-lsp` is an LSP for just built on top of the tree-sitter-just parser. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/kcl.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'kcl-language-server' }, 6 | filetypes = { 'kcl' }, 7 | root_dir = util.root_pattern '.git', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/kcl-lang/kcl.nvim 12 | 13 | Language server for the KCL configuration and policy language. 14 | 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/koka.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'koka', '--language-server', '--lsstdio' }, 4 | filetypes = { 'koka' }, 5 | single_file_support = true, 6 | root_dir = function(fname) 7 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 8 | end, 9 | }, 10 | 11 | docs = { 12 | description = [[ 13 | https://koka-lang.github.io/koka/doc/index.html 14 | Koka is a functional programming language with effect types and handlers. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/kulala_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'kulala-ls', '--stdio' }, 4 | filetypes = { 'http' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/mistweaverco/kulala-ls 13 | 14 | A minimal language server for HTTP syntax. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/laravel_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'laravel-ls' }, 6 | filetypes = { 'php', 'blade' }, 7 | root_dir = util.root_pattern({ 'artisan' }), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/laravel-ls/laravel-ls 12 | 13 | `laravel-ls`, language server for laravel 14 | 15 | The default `cmd` assumes that the `laravel-ls` binary can be found in `$PATH`. 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/lelwel_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'lelwel-ls' }, 4 | filetypes = { 'llw' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/0x2a-42/lelwel 12 | 13 | Language server for lelwel grammars. 14 | 15 | You can install `lelwel-ls` via cargo: 16 | ```sh 17 | cargo install --features="lsp" lelwel 18 | ``` 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/marko-js.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'marko-language-server', '--stdio' }, 4 | filetypes = { 'marko' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/marko-js/language-server 12 | 13 | Using the Language Server Protocol to improve Marko's developer experience. 14 | 15 | Can be installed via npm: 16 | ``` 17 | npm i -g @marko/language-server 18 | ``` 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/mesonlsp.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'mesonlsp', '--lsp' }, 6 | filetypes = { 'meson' }, 7 | root_dir = util.root_pattern('meson.build', 'meson_options.txt', 'meson.options', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/JCWasmx86/mesonlsp 12 | 13 | An unofficial, unendorsed language server for meson written in C++ 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/millet.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'millet' }, 6 | filetypes = { 'sml' }, 7 | root_dir = util.root_pattern 'millet.toml', 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/azdavis/millet 13 | 14 | Millet, a language server for Standard ML 15 | 16 | To use with nvim: 17 | 18 | 1. Install a Rust toolchain: https://rustup.rs 19 | 2. Clone the repo 20 | 3. Run `cargo build --release --bin lang-srv` 21 | 4. Move `target/release/lang-srv` to somewhere on your $PATH as `millet` 22 | ]], 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/mint.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'mint', 'ls' }, 6 | filetypes = { 'mint' }, 7 | root_dir = function(fname) 8 | return util.root_pattern 'mint.json'(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | single_file_support = true, 12 | }, 13 | docs = { 14 | description = [[ 15 | https://www.mint-lang.com 16 | 17 | Install Mint using the [instructions](https://www.mint-lang.com/install). 18 | The language server is included since version 0.12.0. 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/mlir_lsp_server.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'mlir-lsp-server' }, 4 | filetypes = { 'mlir' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://mlir.llvm.org/docs/Tools/MLIRLSP/#mlir-lsp-language-server--mlir-lsp-server= 13 | 14 | The Language Server for the LLVM MLIR language 15 | 16 | `mlir-lsp-server` can be installed at the llvm-project repository (https://github.com/llvm/llvm-project) 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/mm0_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'mm0-rs', 'server' }, 4 | root_dir = function(fname) 5 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 6 | end, 7 | filetypes = { 'metamath-zero' }, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/digama0/mm0 13 | 14 | Language Server for the metamath-zero theorem prover. 15 | 16 | Requires [mm0-rs](https://github.com/digama0/mm0/tree/master/mm0-rs) to be installed 17 | and available on the `PATH`. 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/motoko_lsp.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'motoko-lsp', '--stdio' }, 6 | filetypes = { 'motoko' }, 7 | root_dir = util.root_pattern('dfx.json', '.git'), 8 | init_options = { 9 | formatter = 'auto', 10 | }, 11 | single_file_support = true, 12 | }, 13 | docs = { 14 | description = [[ 15 | https://github.com/dfinity/vscode-motoko 16 | 17 | Language server for the Motoko programming language. 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/muon.lua: -------------------------------------------------------------------------------- 1 | local async = require('lspconfig.async') 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'muon', 'analyze', 'lsp' }, 6 | filetypes = { 'meson' }, 7 | root_dir = function(fname) 8 | local res = async.run_command({ 'muon', 'analyze', 'root-for', fname }) 9 | if res[1] then 10 | return vim.trim(res[1]) 11 | end 12 | end, 13 | }, 14 | docs = { 15 | description = [[ 16 | https://muon.build 17 | ]], 18 | default_config = {}, 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/mutt_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'mutt-language-server' }, 4 | filetypes = { 'muttrc', 'neomuttrc' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | settings = {}, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://github.com/neomutt/mutt-language-server 14 | 15 | A language server for (neo)mutt's muttrc. It can be installed via pip. 16 | 17 | ```sh 18 | pip install mutt-language-server 19 | ``` 20 | ]], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/nim_langserver.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'nimlangserver' }, 6 | filetypes = { 'nim' }, 7 | root_dir = function(fname) 8 | return util.root_pattern '*.nimble'(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | single_file_support = true, 12 | }, 13 | docs = { 14 | description = [[ 15 | https://github.com/nim-lang/langserver 16 | 17 | 18 | `nim-langserver` can be installed via the `nimble` package manager: 19 | ```sh 20 | nimble install nimlangserver 21 | ``` 22 | ]], 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/nimls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'nimlsp' }, 6 | filetypes = { 'nim' }, 7 | root_dir = function(fname) 8 | return util.root_pattern '*.nimble'(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | single_file_support = true, 12 | }, 13 | docs = { 14 | description = [[ 15 | https://github.com/PMunch/nimlsp 16 | 17 | `nimlsp` can be installed via the `nimble` package manager: 18 | 19 | ```sh 20 | nimble install nimlsp 21 | ``` 22 | ]], 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ntt.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | local bin_name = 'ntt' 3 | 4 | return { 5 | default_config = { 6 | cmd = { bin_name, 'langserver' }, 7 | filetypes = { 'ttcn' }, 8 | root_dir = util.root_pattern '.git', 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/nokia/ntt 13 | Installation instructions can be found [here](https://github.com/nokia/ntt#Install). 14 | Can be configured by passing a "settings" object to `ntt.setup{}`: 15 | ```lua 16 | require('lspconfig').ntt.setup{ 17 | settings = { 18 | ntt = { 19 | } 20 | } 21 | } 22 | ``` 23 | ]], 24 | }, 25 | } 26 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/nushell.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'nu', '--lsp' }, 4 | filetypes = { 'nu' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1] or fname) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/nushell/nushell 13 | 14 | Nushell built-in language server. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/nxls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'nxls', '--stdio' }, 6 | filetypes = { 'json', 'jsonc' }, 7 | root_dir = util.root_pattern('nx.json', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/nrwl/nx-console/tree/master/apps/nxls 12 | 13 | nxls, a language server for Nx Workspaces 14 | 15 | `nxls` can be installed via `npm`: 16 | ```sh 17 | npm i -g nxls 18 | ``` 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ocamlls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'ocaml-language-server', '--stdio' }, 6 | filetypes = { 'ocaml', 'reason' }, 7 | root_dir = util.root_pattern('*.opam', 'esy.json', 'package.json'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/ocaml-lsp/ocaml-language-server 12 | 13 | `ocaml-language-server` can be installed via `npm` 14 | ```sh 15 | npm install -g ocaml-language-server 16 | ``` 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ols.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'ols' }, 6 | filetypes = { 'odin' }, 7 | root_dir = util.root_pattern('ols.json', '.git', '*.odin'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/DanielGavin/ols 12 | 13 | `Odin Language Server`. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/opencl_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'opencl-language-server' }, 4 | filetypes = { 'opencl' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/Galarius/opencl-language-server 12 | 13 | Build instructions can be found [here](https://github.com/Galarius/opencl-language-server/blob/main/_dev/build.md). 14 | 15 | Prebuilt binaries are available for Linux, macOS and Windows [here](https://github.com/Galarius/opencl-language-server/releases). 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/openscad_lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'openscad-lsp', '--stdio' }, 4 | filetypes = { 'openscad' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [=[ 12 | https://github.com/Leathong/openscad-LSP 13 | 14 | A Language Server Protocol server for OpenSCAD 15 | 16 | You can build and install `openscad-lsp` binary with `cargo`: 17 | ```sh 18 | cargo install openscad-lsp 19 | ``` 20 | ]=], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/pact_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'pact-lsp' }, 4 | filetypes = { 'pact' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/kadena-io/pact-lsp 13 | 14 | The Pact language server 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/pbls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'pbls' }, 6 | filetypes = { 'proto' }, 7 | root_dir = util.root_pattern('.pbls.toml', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://git.sr.ht/~rrc/pbls 12 | 13 | Prerequisites: Ensure protoc is on your $PATH. 14 | 15 | `pbls` can be installed via `cargo install`: 16 | ```sh 17 | cargo install --git https://git.sr.ht/~rrc/pbls 18 | ``` 19 | 20 | pbls is a Language Server for protobuf 21 | ]], 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/pest_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'pest-language-server' }, 4 | filetypes = { 'pest' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/pest-parser/pest-ide-tools 13 | 14 | Language server for pest grammars. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/pico8_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'pico8-ls', '--stdio' }, 6 | filetypes = { 'p8' }, 7 | root_dir = util.root_pattern '*.p8', 8 | settings = {}, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/japhib/pico8-ls 13 | 14 | Full language support for the PICO-8 dialect of Lua. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/pkgbuild_language_server.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'pkgbuild-language-server' }, 4 | filetypes = { 'PKGBUILD' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/Freed-Wu/pkgbuild-language-server 12 | 13 | Language server for ArchLinux/Windows Msys2's PKGBUILD. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/please.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'plz', 'tool', 'lps' }, 6 | filetypes = { 'bzl' }, 7 | root_dir = util.root_pattern '.plzconfig', 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/thought-machine/please 13 | 14 | High-performance extensible build system for reproducible multi-language builds. 15 | 16 | The `plz` binary will automatically install the LSP for you on first run 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/poryscript_pls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'poryscript-pls' }, 4 | filetypes = { 'pory' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/huderlem/poryscript-pls 13 | 14 | Language server for poryscript (a high level scripting language for GBA-era Pokémon decompilation projects) 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/postgres_lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'postgrestools', 'lsp-proxy' }, 4 | filetypes = { 5 | 'sql', 6 | }, 7 | root_dir = vim.fs.root(0, { 'postgrestools.jsonc' }), 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://pgtools.dev 13 | 14 | A collection of language tools and a Language Server Protocol (LSP) implementation for Postgres, focusing on developer experience and reliable SQL tooling. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/prismals.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'prisma-language-server', '--stdio' }, 6 | filetypes = { 'prisma' }, 7 | settings = { 8 | prisma = { 9 | prismaFmtBinPath = '', 10 | }, 11 | }, 12 | root_dir = util.root_pattern('.git', 'package.json'), 13 | }, 14 | docs = { 15 | description = [[ 16 | Language Server for the Prisma JavaScript and TypeScript ORM 17 | 18 | `@prisma/language-server` can be installed via npm 19 | ```sh 20 | npm install -g @prisma/language-server 21 | ``` 22 | ]], 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/prolog_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 6 | 'swipl', 7 | '-g', 8 | 'use_module(library(lsp_server)).', 9 | '-g', 10 | 'lsp_server:main', 11 | '-t', 12 | 'halt', 13 | '--', 14 | 'stdio', 15 | }, 16 | filetypes = { 'prolog' }, 17 | root_dir = util.root_pattern 'pack.pl', 18 | single_file_support = true, 19 | }, 20 | docs = { 21 | description = [[ 22 | https://github.com/jamesnvc/lsp_server 23 | 24 | Language Server Protocol server for SWI-Prolog 25 | ]], 26 | }, 27 | } 28 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/prosemd_lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'prosemd-lsp', '--stdio' }, 4 | filetypes = { 'markdown' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/kitten/prosemd-lsp 13 | 14 | An experimental LSP for Markdown. 15 | 16 | Please see the manual installation instructions: https://github.com/kitten/prosemd-lsp#manual-installation 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/protols.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'protols' }, 4 | filetypes = { 'proto' }, 5 | single_file_support = true, 6 | root_dir = function(fname) 7 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 8 | end, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/coder3101/protols 13 | 14 | `protols` can be installed via `cargo`: 15 | ```sh 16 | cargo install protols 17 | ``` 18 | 19 | A Language Server for proto3 files. It uses tree-sitter and runs in single file mode. 20 | ]], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/psalm.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'psalm', '--language-server' }, 6 | filetypes = { 'php' }, 7 | root_dir = util.root_pattern('psalm.xml', 'psalm.xml.dist'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/vimeo/psalm 12 | 13 | Can be installed with composer. 14 | ```sh 15 | composer global require vimeo/psalm 16 | ``` 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/pug.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'pug-lsp' }, 4 | filetypes = { 'pug' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('package.json', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/opa-oz/pug-lsp 12 | 13 | An implementation of the Language Protocol Server for [Pug.js](http://pugjs.org) 14 | 15 | PugLSP can be installed via `go get github.com/opa-oz/pug-lsp`, or manually downloaded from [releases page](https://github.com/opa-oz/pug-lsp/releases) 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/pyre.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'pyre', 'persistent' }, 6 | filetypes = { 'python' }, 7 | root_dir = util.root_pattern '.pyre_configuration', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://pyre-check.org/ 12 | 13 | `pyre` a static type checker for Python 3. 14 | 15 | `pyre` offers an extremely limited featureset. It currently only supports diagnostics, 16 | which are triggered on save. 17 | 18 | Do not report issues for missing features in `pyre` to `lspconfig`. 19 | 20 | ]], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/qmlls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'qmlls' }, 4 | filetypes = { 'qml', 'qmljs' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://doc.qt.io/qt-6/qtqml-tooling-qmlls.html 13 | 14 | > QML Language Server is a tool shipped with Qt that helps you write code in your favorite (LSP-supporting) editor. 15 | 16 | Source in the [QtDeclarative repository](https://code.qt.io/cgit/qt/qtdeclarative.git/) 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/quick_lint_js.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'quick-lint-js', '--lsp-server' }, 6 | filetypes = { 'javascript', 'typescript' }, 7 | root_dir = util.root_pattern('package.json', 'jsconfig.json', '.git'), 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://quick-lint-js.com/ 13 | 14 | quick-lint-js finds bugs in JavaScript programs. 15 | 16 | See installation [instructions](https://quick-lint-js.com/install/) 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/reason_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'reason-language-server' }, 6 | filetypes = { 'reason' }, 7 | root_dir = util.root_pattern('bsconfig.json', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | Reason language server 12 | 13 | You can install reason language server from [reason-language-server](https://github.com/jaredly/reason-language-server) repository. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/regols.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'regols' }, 6 | filetypes = { 'rego' }, 7 | root_dir = function(fname) 8 | return util.root_pattern '*.rego'(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | single_file_support = true, 12 | }, 13 | docs = { 14 | description = [[ 15 | https://github.com/kitagry/regols 16 | 17 | OPA Rego language server. 18 | 19 | `regols` can be installed by running: 20 | ```sh 21 | go install github.com/kitagry/regols@latest 22 | ``` 23 | ]], 24 | }, 25 | } 26 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/robotframework_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'robotframework_ls' }, 6 | filetypes = { 'robot' }, 7 | root_dir = function(fname) 8 | return util.root_pattern('robotidy.toml', 'pyproject.toml', 'conda.yaml', 'robot.yaml')(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | }, 12 | docs = { 13 | description = [[ 14 | https://github.com/robocorp/robotframework-lsp 15 | 16 | Language Server Protocol implementation for Robot Framework. 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/roc_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'roc_language_server' }, 4 | filetypes = { 'roc' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/roc-lang/roc/tree/main/crates/language_server#roc_language_server 13 | 14 | The built-in language server for the Roc programming language. 15 | [Installation](https://github.com/roc-lang/roc/tree/main/crates/language_server#installing) 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/rubocop.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'rubocop', '--lsp' }, 6 | filetypes = { 'ruby' }, 7 | root_dir = util.root_pattern('Gemfile', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/rubocop/rubocop 12 | ]], 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/rune_languageserver.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'rune-languageserver' }, 4 | filetypes = { 'rune' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://crates.io/crates/rune-languageserver 13 | 14 | A language server for the [Rune](https://rune-rs.github.io/) Language, 15 | an embeddable dynamic programming language for Rust 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/salt_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'salt_lsp_server' }, 4 | filetypes = { 'sls' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | Language server for Salt configuration files. 13 | https://github.com/dcermak/salt-lsp 14 | 15 | The language server can be installed with `pip`: 16 | ```sh 17 | pip install salt-lsp 18 | ``` 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/scry.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'scry' }, 6 | filetypes = { 'crystal' }, 7 | root_dir = function(fname) 8 | return util.root_pattern 'shard.yml'(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | single_file_support = true, 12 | }, 13 | docs = { 14 | description = [[ 15 | https://github.com/crystal-lang-tools/scry 16 | 17 | Crystal language server. 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/selene3p_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require('lspconfig.util') 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'selene-3p-language-server' }, 6 | filetypes = { 'lua' }, 7 | root_dir = util.root_pattern('selene.toml'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/antonk52/lua-3p-language-servers 12 | 13 | 3rd party Language Server for Selene lua linter 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/serve_d.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'serve-d' }, 6 | filetypes = { 'd' }, 7 | root_dir = util.root_pattern('dub.json', 'dub.sdl', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/Pure-D/serve-d 12 | 13 | `Microsoft language server protocol implementation for D using workspace-d.` 14 | Download a binary from https://github.com/Pure-D/serve-d/releases and put it in your $PATH. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/smithy_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | -- pass 0 as the first argument to use STDIN/STDOUT for communication 4 | local cmd = { 'smithy-language-server', '0' } 5 | 6 | return { 7 | default_config = { 8 | cmd = cmd, 9 | filetypes = { 'smithy' }, 10 | single_file_support = true, 11 | root_dir = util.root_pattern('smithy-build.json', 'build.gradle', 'build.gradle.kts', '.git'), 12 | }, 13 | docs = { 14 | description = [[ 15 | https://github.com/awslabs/smithy-language-server 16 | 17 | `Smithy Language Server`, A Language Server Protocol implementation for the Smithy IDL 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/snakeskin_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'snakeskin-cli', 'lsp', '--stdio' }, 6 | filetypes = { 'ss' }, 7 | root_dir = util.root_pattern 'package.json', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://www.npmjs.com/package/@snakeskin/cli 12 | 13 | `snakeskin cli` can be installed via `npm`: 14 | ```sh 15 | npm install -g @snakeskin/cli 16 | ``` 17 | ]], 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/solc.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'solc', '--lsp' }, 6 | filetypes = { 'solidity' }, 7 | root_dir = util.root_pattern('hardhat.config.*', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://docs.soliditylang.org/en/latest/installing-solidity.html 12 | 13 | solc is the native language server for the Solidity language. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/sorbet.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'srb', 'tc', '--lsp' }, 6 | filetypes = { 'ruby' }, 7 | root_dir = util.root_pattern('Gemfile', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://sorbet.org 12 | 13 | Sorbet is a fast, powerful type checker designed for Ruby. 14 | 15 | You can install Sorbet via gem install. You might also be interested in how to set 16 | Sorbet up for new projects: https://sorbet.org/docs/adopting. 17 | 18 | ```sh 19 | gem install sorbet 20 | ``` 21 | ]], 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/sqlls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'sql-language-server', 'up', '--method', 'stdio' }, 6 | filetypes = { 'sql', 'mysql' }, 7 | root_dir = util.root_pattern '.sqllsrc.json', 8 | settings = {}, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/joe-re/sql-language-server 13 | 14 | This LSP can be installed via `npm`. Find further instructions on manual installation of the sql-language-server at [joe-re/sql-language-server](https://github.com/joe-re/sql-language-server). 15 |
16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/standardrb.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'standardrb', '--lsp' }, 6 | filetypes = { 'ruby' }, 7 | root_dir = util.root_pattern('Gemfile', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/testdouble/standard 12 | 13 | Ruby Style Guide, with linter & automatic code fixer. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/starpls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig/util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'starpls' }, 6 | filetypes = { 'bzl' }, 7 | root_dir = util.root_pattern('WORKSPACE', 'WORKSPACE.bazel', 'MODULE.bazel'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/withered-magic/starpls 12 | 13 | `starpls` is an LSP implementation for Starlark. Installation instructions can be found in the project's README. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/statix.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'statix', 'check', '--stdin' }, 6 | filetypes = { 'nix' }, 7 | single_file_support = true, 8 | root_dir = util.root_pattern('flake.nix', '.git'), 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/nerdypepper/statix 13 | 14 | lints and suggestions for the nix programming language 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/steep.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'steep', 'langserver' }, 6 | filetypes = { 'ruby', 'eruby' }, 7 | root_dir = util.root_pattern('Steepfile', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/soutaro/steep 12 | 13 | `steep` is a static type checker for Ruby. 14 | 15 | You need `Steepfile` to make it work. Generate it with `steep init`. 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/stimulus_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'stimulus-language-server', '--stdio' }, 6 | filetypes = { 'html', 'ruby', 'eruby', 'blade', 'php' }, 7 | root_dir = util.root_pattern('Gemfile', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://www.npmjs.com/package/stimulus-language-server 12 | 13 | `stimulus-lsp` can be installed via `npm`: 14 | 15 | ```sh 16 | npm install -g stimulus-language-server 17 | ``` 18 | 19 | or via `yarn`: 20 | 21 | ```sh 22 | yarn global add stimulus-language-server 23 | ``` 24 | ]], 25 | }, 26 | } 27 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/stylua3p_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require('lspconfig.util') 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'stylua-3p-language-server' }, 6 | filetypes = { 'lua' }, 7 | root_dir = util.root_pattern('.stylua.toml', 'stylua.toml'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/antonk52/lua-3p-language-servers 12 | 13 | 3rd party Language Server for Stylua lua formatter 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/svls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'svls' }, 4 | filetypes = { 'verilog', 'systemverilog' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/dalance/svls 12 | 13 | Language server for verilog and SystemVerilog 14 | 15 | `svls` can be installed via `cargo`: 16 | ```sh 17 | cargo install svls 18 | ``` 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/swift_mesonls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'Swift-MesonLSP', '--lsp' }, 6 | filetypes = { 'meson' }, 7 | root_dir = util.root_pattern('meson.build', 'meson_options.txt', 'meson.options', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/JCWasmx86/Swift-MesonLSP 12 | 13 | Meson language server written in Swift 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/systemd_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'systemd-language-server' }, 4 | filetypes = { 'systemd' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/psacawa/systemd-language-server 13 | 14 | `systemd-language-server` can be installed via `pip`: 15 | ```sh 16 | pip install systemd-language-server 17 | ``` 18 | 19 | Language Server for Systemd unit files 20 | ]], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/tabby_ml.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'tabby-agent', '--lsp', '--stdio' }, 4 | filetypes = {}, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://tabby.tabbyml.com/blog/running-tabby-as-a-language-server 13 | 14 | Language server for Tabby, an opensource, self-hosted AI coding assistant. 15 | 16 | `tabby-agent` can be installed via `npm`: 17 | 18 | ```sh 19 | npm install --global tabby-agent 20 | ``` 21 | ]], 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/taplo.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'taplo', 'lsp', 'stdio' }, 4 | filetypes = { 'toml' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://taplo.tamasfe.dev/cli/usage/language-server.html 13 | 14 | Language server for Taplo, a TOML toolkit. 15 | 16 | `taplo-cli` can be installed via `cargo`: 17 | ```sh 18 | cargo install --features lsp --locked taplo-cli 19 | ``` 20 | ]], 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/templ.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'templ', 'lsp' }, 6 | filetypes = { 'templ' }, 7 | root_dir = function(fname) 8 | return util.root_pattern('go.work', 'go.mod', '.git')(fname) 9 | end, 10 | }, 11 | docs = { 12 | description = [[ 13 | https://templ.guide 14 | 15 | The official language server for the templ HTML templating language. 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/tflint.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'tflint', '--langserver' }, 6 | filetypes = { 'terraform' }, 7 | root_dir = util.root_pattern('.terraform', '.git', '.tflint.hcl'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/terraform-linters/tflint 12 | 13 | A pluggable Terraform linter that can act as lsp server. 14 | Installation instructions can be found in https://github.com/terraform-linters/tflint#installation. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/thriftls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'thriftls' }, 6 | filetypes = { 'thrift' }, 7 | root_dir = util.root_pattern '.thrift', 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/joyme123/thrift-ls 13 | 14 | you can install thriftls by mason or download binary here: https://github.com/joyme123/thrift-ls/releases 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/tilt_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'tilt', 'lsp', 'start' }, 4 | filetypes = { 'tiltfile' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/tilt-dev/tilt 13 | 14 | Tilt language server. 15 | 16 | You might need to add filetype detection manually: 17 | 18 | ```vim 19 | autocmd BufRead Tiltfile setf=tiltfile 20 | ``` 21 | ]], 22 | }, 23 | } 24 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/tsp_server.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'tsp-server', '--stdio' }, 6 | filetypes = { 'typespec' }, 7 | root_dir = util.root_pattern('tspconfig.yaml', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/microsoft/typespec 12 | 13 | The language server for TypeSpec, a language for defining cloud service APIs and shapes. 14 | 15 | `tsp-server` can be installed together with the typespec compiler via `npm`: 16 | ```sh 17 | npm install -g @typespec/compiler 18 | ``` 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ttags.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'ttags', 'lsp' }, 6 | filetypes = { 'ruby', 'rust', 'javascript', 'haskell' }, 7 | root_dir = util.root_pattern '.git', 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/npezza93/ttags 12 | ]], 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/turbo_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'turbo-language-server', '--stdio' }, 4 | filetypes = { 'html', 'ruby', 'eruby', 'blade', 'php' }, 5 | root_dir = vim.fs.root(0, { 'Gemfile', '.git' }), 6 | }, 7 | docs = { 8 | description = [[ 9 | https://www.npmjs.com/package/turbo-language-server 10 | 11 | `turbo-language-server` can be installed via `npm`: 12 | 13 | ```sh 14 | npm install -g turbo-language-server 15 | ``` 16 | 17 | or via `yarn`: 18 | 19 | ```sh 20 | yarn global add turbo-language-server 21 | ``` 22 | ]], 23 | }, 24 | } 25 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/twiggy_language_server.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'twiggy-language-server', '--stdio' }, 6 | filetypes = { 'twig' }, 7 | root_dir = util.root_pattern('composer.json', '.git'), 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/moetelo/twiggy 13 | 14 | `twiggy-language-server` can be installed via `npm`: 15 | ```sh 16 | npm install -g twiggy-language-server 17 | ``` 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/typeprof.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'typeprof', '--lsp', '--stdio' }, 6 | filetypes = { 'ruby', 'eruby' }, 7 | root_dir = util.root_pattern('Gemfile', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/ruby/typeprof 12 | 13 | `typeprof` is the built-in analysis and LSP tool for Ruby 3.1+. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/typst_lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'typst-lsp' }, 4 | filetypes = { 'typst' }, 5 | single_file_support = true, 6 | root_dir = function(fname) 7 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 8 | end, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/nvarner/typst-lsp 13 | 14 | Language server for Typst. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/uiua.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'uiua', 'lsp' }, 6 | filetypes = { 'uiua' }, 7 | root_dir = function(fname) 8 | return util.root_pattern('main.ua', '.fmt.ua')(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | }, 12 | docs = { 13 | description = [[ 14 | https://github.com/uiua-lang/uiua/ 15 | 16 | The builtin language server of the Uiua interpreter. 17 | 18 | The Uiua interpreter can be installed with `cargo install uiua` 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/unison.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'nc', 'localhost', os.getenv 'UNISON_LSP_PORT' or '5757' }, 6 | filetypes = { 'unison' }, 7 | root_dir = util.root_pattern '*.u', 8 | settings = {}, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/unisonweb/unison/blob/trunk/docs/language-server.markdown 13 | 14 | 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/v_analyzer.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'v-analyzer' }, 6 | filetypes = { 'v', 'vsh', 'vv' }, 7 | root_dir = util.root_pattern('v.mod', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/vlang/v-analyzer 12 | 13 | V language server. 14 | 15 | `v-analyzer` can be installed by following the instructions [here](https://github.com/vlang/v-analyzer#installation). 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/vale_ls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'vale-ls' }, 6 | filetypes = { 'markdown', 'text', 'tex', 'rst' }, 7 | root_dir = util.root_pattern '.vale.ini', 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/errata-ai/vale-ls 13 | 14 | An implementation of the Language Server Protocol (LSP) for the Vale command-line tool. 15 | ]], 16 | }, 17 | } 18 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/vectorcode_server.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'vectorcode-server' }, 4 | root_dir = vim.fs.root(0, { '.vectorcode', '.git' }), 5 | single_file_support = false, 6 | settings = {}, 7 | }, 8 | docs = { 9 | description = [[ 10 | https://github.com/Davidyz/VectorCode 11 | 12 | A Language Server Protocol implementation for VectorCode, a code repository indexing tool. 13 | ]], 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/veryl_ls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'veryl-ls' }, 4 | filetypes = { 'veryl' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/veryl-lang/veryl 12 | 13 | Language server for Veryl 14 | 15 | `veryl-ls` can be installed via `cargo`: 16 | ```sh 17 | cargo install veryl-ls 18 | ``` 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/vls.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'v', 'ls' }, 6 | filetypes = { 'v', 'vlang' }, 7 | root_dir = util.root_pattern('v.mod', '.git'), 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/vlang/vls 12 | 13 | V language server. 14 | 15 | `v-language-server` can be installed by following the instructions [here](https://github.com/vlang/vls#installation). 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/vscoqtop.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'vscoqtop' }, 6 | filetypes = { 'coq' }, 7 | root_dir = function(fname) 8 | return util.root_pattern '_CoqProject'(fname) 9 | or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 10 | end, 11 | single_file_support = true, 12 | }, 13 | docs = { 14 | description = [[ 15 | https://github.com/coq-community/vscoq 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/wasm_language_tools.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'wat_server' }, 4 | filetypes = { 'wat' }, 5 | single_file_support = true, 6 | }, 7 | docs = { 8 | description = [[ 9 | https://github.com/g-plane/wasm-language-tools 10 | 11 | WebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format. 12 | It also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format. 13 | ]], 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/wgsl_analyzer.lua: -------------------------------------------------------------------------------- 1 | local util = require 'lspconfig.util' 2 | 3 | return { 4 | default_config = { 5 | cmd = { 'wgsl-analyzer' }, 6 | filetypes = { 'wgsl' }, 7 | root_dir = util.root_pattern '.git', 8 | settings = {}, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://github.com/wgsl-analyzer/wgsl-analyzer 13 | 14 | `wgsl-analyzer` can be installed via `cargo`: 15 | ```sh 16 | cargo install --git https://github.com/wgsl-analyzer/wgsl-analyzer wgsl-analyzer 17 | ``` 18 | ]], 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/yang_lsp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'yang-language-server' }, 4 | filetypes = { 'yang' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | }, 9 | docs = { 10 | description = [[ 11 | https://github.com/TypeFox/yang-lsp 12 | 13 | A Language Server for the YANG data modeling language. 14 | ]], 15 | }, 16 | } 17 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/yls.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'yls', '-vv' }, 4 | filetypes = { 'yar', 'yara' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://pypi.org/project/yls-yara/ 13 | 14 | An YLS plugin adding YARA linting capabilities. 15 | 16 | This plugin runs yara.compile on every save, parses the errors, and returns list of diagnostic messages. 17 | 18 | Language Server: https://github.com/avast/yls 19 | ]], 20 | }, 21 | } 22 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ziggy.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'ziggy', 'lsp' }, 4 | filetypes = { 'ziggy' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://ziggy-lang.io/documentation/ziggy-lsp/ 13 | 14 | Language server for the Ziggy data serialization format 15 | 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/configs/ziggy_schema.lua: -------------------------------------------------------------------------------- 1 | return { 2 | default_config = { 3 | cmd = { 'ziggy', 'lsp', '--schema' }, 4 | filetypes = { 'ziggy_schema' }, 5 | root_dir = function(fname) 6 | return vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1]) 7 | end, 8 | single_file_support = true, 9 | }, 10 | docs = { 11 | description = [[ 12 | https://ziggy-lang.io/documentation/ziggy-lsp/ 13 | 14 | Language server for schema files of the Ziggy data serialization format 15 | 16 | ]], 17 | }, 18 | } 19 | -------------------------------------------------------------------------------- /lua/lspconfig/ui/windows.lua: -------------------------------------------------------------------------------- 1 | local win_float = {} 2 | 3 | win_float.default_options = {} 4 | 5 | function win_float.default_opts() 6 | return {} 7 | end 8 | 9 | function win_float.percentage_range_window() end 10 | 11 | return win_float 12 | -------------------------------------------------------------------------------- /neovim.yml: -------------------------------------------------------------------------------- 1 | --- 2 | base: lua51 3 | 4 | globals: 5 | vim: 6 | any: true 7 | assert: 8 | args: 9 | - type: bool 10 | - type: string 11 | required: false 12 | after_each: 13 | args: 14 | - type: function 15 | before_each: 16 | args: 17 | - type: function 18 | describe: 19 | args: 20 | - type: string 21 | - type: function 22 | it: 23 | args: 24 | - type: string 25 | - type: function 26 | -------------------------------------------------------------------------------- /scripts/docs_template.md: -------------------------------------------------------------------------------- 1 | # LSP configs 2 | 3 | LSP configurations provided by nvim-lspconfig are listed below. This 4 | documentation is autogenerated from the Lua files. You can view this file in 5 | Nvim by running `:help lspconfig-all`. 6 | 7 | {{toc}} 8 | 9 | {{lsp_server_details}} 10 | -------------------------------------------------------------------------------- /scripts/docs_template.txt: -------------------------------------------------------------------------------- 1 | *lspconfig-all* 2 | 3 | LSP configurations provided by nvim-lspconfig are listed below. 4 | 5 | Type |gO| to see the table of contents. 6 | 7 | ============================================================================== 8 | LSP configs 9 | 10 | {{lsp_server_details}} 11 | 12 | ============================================================================== 13 | 14 | vim:tw=78:ft=help:norl:expandtab:sw=4 15 | -------------------------------------------------------------------------------- /selene.toml: -------------------------------------------------------------------------------- 1 | std = "neovim" 2 | 3 | [rules] 4 | global_usage = "allow" 5 | multiple_statements = "allow" 6 | incorrect_standard_library_use = "allow" 7 | mixed_table = "allow" 8 | -------------------------------------------------------------------------------- /test/test_dir/a/a_marker.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neovim/nvim-lspconfig/8adb3b5938f6074a1bcc36d3c3916f497d2e8ec4/test/test_dir/a/a_marker.txt -------------------------------------------------------------------------------- /test/test_dir/root_marker.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neovim/nvim-lspconfig/8adb3b5938f6074a1bcc36d3c3916f497d2e8ec4/test/test_dir/root_marker.txt --------------------------------------------------------------------------------