# List of language servers & how to get them

* [C/C++](#cc)
* [Clojure](#clojure)
* [Crystal](#crystal)
* [Go](#go)
* [Haskell](#haskell)
* [JavaScript/TypeScript](#javascripttypescript)
* [JSON](#json)
* [Lua](#lua)
* [Markdown](#markdown)
* [Python](#python)
* [Ruby](#ruby)
* [Rust](#rust)
* [Zig](#zig)

## C/C++

- [Clangd](https://clangd.llvm.org/)
  - Installation: [instructions](https://clangd.llvm.org/installation.html)
  - Command: `clangd`

## Clojure

- [clojure-lsp](https://github.com/clojure-lsp/clojure-lsp)
  - Installation: [instructions](https://clojure-lsp.io/installation/)
  - Command: `clojure-lsp`

## Crystal

- [Crystalline](https://github.com/elbywan/crystalline)
  - Installation:
    [instructions](https://github.com/elbywan/crystalline#global-install)
  - Command: `crystalline`

## Go

- [gopls](https://pkg.go.dev/golang.org/x/tools/gopls)
  - Installation:
    [instructions](https://pkg.go.dev/golang.org/x/tools/gopls#readme-installation)
  - Command: `gopls`

## Haskell

- [HLS](https://github.com/haskell/haskell-language-server)
  - Installation: use [ghcup](https://www.haskell.org/ghcup/)
  - Command: `haskell-language-server-wrapper --lsp`

## JavaScript/TypeScript

- [deno](https://github.com/denoland/deno)
  - Installation:
    [instructions](https://github.com/denoland/deno_install/blob/master/README.md#deno_install)
  - Command: `deno lsp`

- [quick-lint-js](https://github.com/quick-lint/quick-lint-js)
  - Only diagnostics (no formatting, hover information or code navigation)
  - Installation: `npm install -g quick-lint-js`
  - Command: `quick-lint-js --lsp`

## JSON

- [deno](https://github.com/denoland/deno)
  - Installation:
    [instructions](https://github.com/denoland/deno_install/blob/master/README.md#deno_install)
  - Command: `deno lsp`

## Lua

- [luals](https://github.com/luals/lua-language-server)
  - Installation: [instructions](https://luals.github.io/#other-install)
  - Command: `lua-language-server` (make sure the executable was installed in your $PATH)
- [lua-lsp](https://github.com/Alloyed/lua-lsp)
  - Unmaintained. You are in for trouble if you want to get it to work with Lua
    5.4.
  - Installation: `luarocks install lua-lsp`
    ([luarocks](https://github.com/luarocks/luarocks))
  - Command: `lua-lsp`

## Markdown

- [deno](https://github.com/denoland/deno)
  - Installation:
    [instructions](https://github.com/denoland/deno_install/blob/master/README.md#deno_install)
  - Command: `deno lsp`

## Python

- [pylsp](https://github.com/python-lsp/python-lsp-server)
  - Installation: `pip install python-lsp-server[all]`
  - Command: `pylsp`

- [Pyright](https://github.com/microsoft/pyright)
  - Installation: `npm install -g pyright`
  - Command: `pyright-langserver --stdio`

- [ruff](https://github.com/astral-sh/ruff)
  - Only diagnostics, formatting and code actions (no hover information or code navigation)
  - Installation: `pip install ruff`
  - Command: `ruff server`

## Ruby

- [ruby-lsp](https://github.com/Shopify/ruby-lsp)
  - Installation: `gem install ruby-lsp`
  - Command: `ruby-lsp`

- [solargraph](https://github.com/castwide/solargraph)
  - Installation: `gem install solargraph`
  - Command: `solargraph stdio`

## Rust

- [rust-analyzer](https://github.com/rust-lang/rust-analyzer)
  - Installation: `rustup component add rust-analyzer`
  - Command: `rust-analyzer`

## Zig

- [zls](https://github.com/zigtools/zls)
  - Installation: [instructions](https://github.com/zigtools/zls#installation)
  - Command: `zls`
