Skip to main content
Docs / LANGUAGE SERVERS

Language Servers Guide

Configure language servers for coc.nvim, compare supported connection modes and features, and browse practical server setup examples by language.

Supported features

Check out the official LSP specification.

Note: different servers can have different capabilities.

Register custom language servers

User defined language servers are configured in the languageserver field of the configuration file. See :h coc-config-languageserver for common language server configuration settings.

There are three types of language servers: module, executable, and socket.

  • module type language servers are run by node.js and use node IPC for connection.
  • executable type language servers are spawned from an executable command and use stdio for connection.
  • socket language servers are started in a separate process, normally used for debugging purposes.

Different language server types have different configuration schema.

An example of module language server:

jsonc snippet
1"languageserver": {
2 "foo": {
3 "module": "/usr/local/lib/node_modules/foo/index.js",
4 "args": ["--node-ipc"],
5 "filetypes": ["foo"],
6 "trace.server": "verbose",
7 "rootPatterns": ["root.yml"],
8 // Used for debugging Node.js
9 // "execArgv": ["--nolazy", "--inspect-brk=6045"],
10 "initializationOptions": {
11 },
12 "settings": {
13 "validate": true
14 }
15 }
16}

module and filetypes are required for a module language server.

An example of executable language server:

jsonc snippet
1"languageserver": {
2 "bar": {
3 "command": "bar",
4 "args": ["--stdio"],
5 "filetypes": ["bar"],
6 "cwd": "./src",
7 "initializationOptions": {
8 },
9 "settings": {
10 }
11 }
12}

command and filetypes are required for an executable language server.

An example of socket language server:

jsonc snippet
1"languageserver": {
2 "socketserver": {
3 "host": "127.0.0.1",
4 "port": 9527
5 }
6 }

port is required for a socket service, and the user should start the socket server before coc starts.

Install coc-json for completion and validation support.

Browse the language server catalog

The catalog contains practical configuration examples for more than 50 language servers. Use the language server catalog to search by language or server name, then return here for connection modes, feature support, and configuration rules.