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.
moduletype language servers are run by node.js and use node IPC for connection.executabletype language servers are spawned from an executable command and use stdio for connection.socketlanguage 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:
| 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:
| 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:
| 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.