Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Svelte Vue

Programming Languages and Tools with Language Server Protocol (LSP) Support

1 min read .
Programming Languages and Tools with Language Server Protocol (LSP) Support

Modern editors such as VS Code, Neovim, Emacs, and Sublime Text can share language intelligence through the Language Server Protocol (LSP). A language server runs separately from the editor and provides features such as completion, diagnostics, symbol navigation, hover information, and refactoring support.

How LSP Works

A typical setup has three parts:

  1. a language server installed on the system or inside the project;
  2. an editor or editor plugin that speaks LSP;
  3. project configuration the server can understand.

For example, Neovim can connect to gopls for Go, while VS Code normally installs the appropriate extension that manages the server integration.

Common Language Servers

Programming Languages

  • Go — gopls
  • Python — Pyright, python-lsp-server
  • JavaScript / TypeScript — typescript-language-server
  • Java — Eclipse JDT Language Server (jdtls)
  • C / C++ — clangd
  • C# — C# language-server tooling in the .NET ecosystem
  • Rust — rust-analyzer
  • PHP — Intelephense, Phpactor
  • Ruby — Ruby LSP, Solargraph
  • Kotlin — Kotlin language-server tooling
  • Scala — Metals
  • Swift — SourceKit-LSP
  • Dart / Flutter — Dart Analysis Server
  • Elixir — ElixirLS
  • Haskell — Haskell Language Server
  • Lua — Lua Language Server
  • Zig — ZLS

Web and Configuration Formats

  • HTML / CSS / JSON — VS Code language-server packages
  • YAML — yaml-language-server
  • GraphQL — GraphQL language-service tooling
  • Markdown — Marksman and other Markdown servers
  • Terraform / HCL — terraform-ls
  • Dockerfile — Docker language-server tooling
  • Ansible — Ansible Language Server

The exact server names and recommended implementations can change over time, so check the language or editor project’s current documentation before standardizing a new setup.

Installation Examples

Go:

go install golang.org/x/tools/gopls@latest

Python with Pyright:

npm install -g pyright

Python LSP Server:

python -m pip install 'python-lsp-server[all]'

JavaScript / TypeScript:

npm install -g typescript typescript-language-server

C / C++ on Debian/Ubuntu:

sudo apt install clangd

Rust:

rustup component add rust-analyzer

PHP with Intelephense:

npm install -g intelephense

HTML, CSS, JSON, and YAML servers:

npm install -g vscode-langservers-extracted yaml-language-server

Project-Local vs. Global Installation

Global installs are convenient for personal editor setups, but project-local tool versions can improve reproducibility across teams and CI environments. The best approach depends on the language ecosystem and how your editor locates servers.

Conclusion

LSP separates editor UI from language intelligence, allowing one language server to work with many editors. Install the server appropriate for your language, connect it through your editor’s LSP client, and keep project-specific configuration under version control when possible.

Related Posts

chevron-up