Language Servers#
Follow the setup steps for a language server to get it up and running.
If you encounter problems, consult the common issues page or search the LSP issues before opening new ones.
If there are no setup steps for a language server on this page, but a language server implementation exist, follow the guide for creating a client configuration. Pull requests for adding a new client configuration are welcome.
We recommend installing LSP-json.
LSP-json provides completions and diagnostics when editing JSON files that adhere to a JSON schema.
For legacy ST3 docs, see lsp.readthedocs.io.
Angular#
Follow installation instructions on LSP-angular.
Assembly#
-
Install
asm-lsp
via Cargo (see github:bergercookie/asm-lsp):cargo install asm-lsp
-
Install the x86 and x86_64 Assembly package from Package Control.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"asm-lsp"
client configuration to the"clients"
:{ "clients": { "asm-lsp": { "enabled": true, "command": ["asm-lsp"], "selector": "source.asm | source.assembly" } } }
Bash#
Follow installation instructions on LSP-bash.
Also see Shell.
Bicep#
Follow installation instructions on LSP-Bicep.
C/C++#
Follow installation instructions on LSP-clangd.
C##
Follow installation instructions on LSP-OmniSharp.
Clojure#
- Download clojure-lsp.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"clojure-lsp"
client configuration to the"clients"
:{ "clients": { "clojure-lsp": { "enabled": true, "command": ["/PATH/TO/clojure-lsp"], // Update the PATH "selector": "source.clojure", "initializationOptions": {} } } }
See available initializationOptions.
CSS#
Follow installation instructions on LSP-css.
D#
- Install the D Language Server.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"serve-d"
client configuration to the"clients"
:{ "clients": { "serve-d": { "enabled": true, "command": ["C:/Users/MY_NAME_HERE/AppData/Roaming/code-d/bin/serve-d.exe"], "selector": "source.d", "settings": { "d.dcdServerPath": "C:/Users/MY_NAME_HERE/AppData/Roaming/code-d/bin/dcd-server.exe", "d.dcdClientPath": "C:/Users/MY_NAME_HERE/AppData/Roaming/code-d/bin/dcd-client.exe", } } } }
Dart#
Follow installation instructions on LSP-Dart.
Dockerfile#
Follow installation instructions on LSP-dockerfile.
Elixir#
Follow installation instructions on LSP-elixir.
Elm#
Follow installation instructions on LSP-elm.
Erlang#
- Install the Erlang Language Server.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"erlang-ls"
client configuration to the"clients"
:{ "clients": { "erlang-ls": { "enabled": true, "command": [ "/PATH/TO/erlang_ls", "--transport", "stdio" ], // Update the PATH "selector": "source.erlang" } } }
F##
- Install the F# package from Package Control for syntax highlighting.
- Make sure you have installed the latest .NET SDK.
-
Install the FsAutoComplete from command prompt using the following command:
dotnet tool install --global fsautocomplete
-
Open
Preferences > Package Settings > LSP > Settings
and add the"fsautocomplete"
client configuration to the"clients"
:{ "clients": { "fsautocomplete": { "enabled": true, "command": ["fsautocomplete"], "selector": "source.fsharp", "initializationOptions": { "AutomaticWorkspaceInit": true } } } }
A note about .NET Tools and $PATH
If the fsautocomplete
executable isn't on your $PATH after installing it globally, ensure the .NET global tools location (by default $HOME/.dotnet/tools
) is on your $PATH.
Fortran#
- Install the ModernFortran or the Fortran package from Package Control for syntax highlighting.
- Install the fortls language server.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"fortls"
client configuration to the"clients"
:{ "clients": { "fortls": { "enabled": true, "command": ["fortls", "--notify_init"], "selector": "source.fortran | source.modern-fortran | source.fixedform-fortran" } } }
See available configuration options.
Go#
Follow installation instructions on LSP-gopls.
Visit gopls repo for more info.
Enable multi-module workspace support by setting the experimentalWorkspaceModule
to true
. Most features will work across modules, but some, such as goimports
, will not work as expected. Please note that this setting is still very experimental.
GDScript (Godot Engine)#
- Install the GDScript (Godot Engine) package from Package Control for syntax highlighting.
- Launch the Godot Editor on the project you are working on and leave it running.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"godot-lsp"
client configuration to the"clients"
:{ "clients": { "godot-lsp": { "enabled": true, "command": ["/PATH/TO/godot-editor.exe"], // Update the PATH "tcp_port": 6005, // Older versions of Godot(3.x) use port 6008 "selector": "source.gdscript", } } }
If you encounter high cpu load or any other issues you can try omitting the [command] line, and ensure the godot editor is running while you work in sublime.
GraphQL#
Follow installation instructions on LSP-graphql.
Haskell#
- Install haskell-language-server.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"haskell-language-server"
client configuration to the"clients"
:{ "clients": { "haskell-language-server": { "enabled": true, "command": ["haskell-language-server-wrapper", "--lsp"], "selector": "source.haskell" } } }
HTML#
Follow installation instructions on LSP-html.
Java#
Follow installation instructions on LSP-jdtls.
JavaScript/TypeScript#
See also Vue.
There are multiple options:
Biome#
Follow installation instructions on LSP-biome.
Deno#
Follow installation instructions on LSP-Deno.
ESLint#
Follow installation instructions on LSP-eslint.
Flow#
Follow installation instructions on LSP-flow.
quick-lint-js#
- Install the quick-lint-js LSP server for JavaScript.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"quick-lint-js"
client configuration to the"clients"
:{ "clients": { "quick-lint-js": { "command": ["quick-lint-js", "--lsp-server"], "enabled": true, "selector": "source.js" } } }
TypeScript Language Server#
Follow installation instructions on LSP-typescript.
JSON#
Follow installation instructions on LSP-json.
Julia#
Follow installation instructions on LSP-julia.
Kotlin#
- Install the Kotlin package from Package Control for syntax highlighting.
- Install the Kotlin Language Server (requires building first).
-
Open
Preferences > Package Settings > LSP > Settings
and add the"kotlinls"
client configuration to the"clients"
:{ "clients": { "kotlinls": { "enabled": true, "command": ["PATH/TO/KotlinLanguageServer/build/install/kotlin-language-server/bin/kotlin-language-server.bat"], // Update the PATH "selector": "source.Kotlin", "settings": { "kotlin": { // put your server settings here } } } } }
LaTeX#
TexLab#
Follow installation instructions on LSP-TexLab.
LTeX#
Spell check can be provided by LSP-ltex-ls.
Digestif#
- Follow installation instructions for Digestif to install the server, and make sure it is available in your PATH.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"digestif"
client configuration to the"clients"
:{ "clients": { "digestif": { "enabled": true, "command": ["digestif"], "selector": "text.tex.latex" } } }
-
To enable auto-completions for the relevant situations in LaTeX files, adjust Sublime's
"auto_complete_selector"
setting (Preferences > Settings
); for example{ "auto_complete_selector": "meta.tag, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc, text.tex constant.other.citation, text.tex constant.other.reference, text.tex support.function, text.tex variable.parameter.function", }
Lisp#
- Install cc-lsp using Roswell.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"cc-lsp"
client configuration to the"clients"
:{ "clients": { "cc-lsp": { "enabled": true, "command": ["cl-lsp", "stdio"], "selector": "source.lisp" } } }
Leo#
Follow installation instructions on LSP-leo.
Lua#
Follow installation instructions on LSP-lua.
Markdown#
Spell check can be provided by LSP-ltex-ls.
markmark#
Markmark is a language server for Markdown files, supporting go to definition / references and more.
- Install Markmark (requires
Node >= 16
) -
Open
Preferences > Package Settings > LSP > Settings
and add the"markmark"
client configuration to the"clients"
:{ "clients": { "markmark": { "enabled": true, "command": ["markmark-lsp", "--stdio"], "selector": "text.html.markdown" } } }
OCaml/Reason#
- Install the Reason package from Package Control for syntax highlighting.
- Install the Reason Language Server.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"reason"
client configuration to the"clients"
:{ "clients": { "reason": { "enabled": true, "command": ["PATH/TO/reason-language-server.exe"], // Update the PATH "selector": "source.ocaml | source.reason" } } }
Odin#
Follow installation instructions on ols.
PromQL#
Follow installation instructions on LSP-promql.
PHP#
There are multiple options:
Intelephense#
Follow installation instructions on LSP-intelephense.
Phpactor#
- Install Phpactor globally.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"phpactor"
client configuration to the"clients"
:{ "clients": { "phpactor": { "enabled": true, "command": ["PATH/TO/phpactor", "language-server"], "selector": "embedding.php", "priority_selector": "source.php", } } }
PowerShell#
Follow installation instructions on LSP-PowerShellEditorServices.
Python#
There are multiple options:
Pyright#
A full-featured, standards-based static type checker for Python. It is designed for high performance and can be used with large Python source bases.
Follow installation instructions on LSP-pyright.
Python LSP Server (pylsp)#
A Jedi-powered language server that also supports running various linters through built-in plugins.
Follow installation instructions on LSP-pylsp.
LSP-ruff#
An extremely fast Python linter and code transformation tool, written in Rust.
Follow installation instructions on LSP-ruff.
R#
Follow installation instructions on R-IDE.
Racket#
- Install the Racket package from Package Control for syntax highlighting.
- Follow the instructions for installation at racket-langserver.
- Open
Preferences > Package Settings > LSP > Settings
and add the"racket-langserver"
client configuration to the"clients"
:
{
"clients": {
"racket-langserver": {
"enabled": true,
"command": ["racket", "-l", "racket-langserver"],
"selector": "source.racket"
}
}
}
Ruby / Ruby on Rails#
There are multiple options:
Solargraph#
-
Install solargraph.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"ruby"
client configuration to the"clients"
:{ "clients": { "ruby": { "enabled": true, "command": ["solargraph", "stdio"], "selector": "source.ruby | text.html.ruby", "initializationOptions": { "diagnostics": true } } } }
Sorbet#
-
Install the
sorbet
andsorbet-runtime
gem (see github:sorbet/sorbet):gem install sorbet gem install sorbet-runtime
If you have a Gemfile, using bundler, add sorbet and sorbet-runtime to your Gemfile and run:
bundle install
-
Open
Preferences > Package Settings > LSP > Settings
and add the"sorbet"
client configuration to the"clients"
:{ "clients": { "sorbet": { "enabled": true, "command": ["srb", "tc", "--typed", "true", "--enable-all-experimental-lsp-features", "--lsp", "--disable-watchman"], "selector": "source.ruby | text.html.ruby", } } }
Stimulus LSP#
-
Install the
stimulus-language-server
package (see github:marcoroth/stimulus-lsp):npm install -g stimulus-language-server
-
Open
Preferences > Package Settings > LSP > Settings
and add the"stimulus"
client configuration to the"clients"
:{ "clients": { "stimulus": { "enabled": true, "command": ["stimulus-language-server", "--stdio"], "selector": "text.html.rails" } } }
Ruby LSP#
-
Install the
ruby-lsp
gem (see github:Shopify/ruby-lsp):gem install ruby-lsp
-
Open
Preferences > Package Settings > LSP > Settings
and add the"ruby-lsp"
client configuration to the"clients"
:{ "clients": { "ruby-lsp": { "enabled": true, "command": ["ruby-lsp"], "selector": "source.ruby | text.html.ruby", "initializationOptions": { "enabledFeatures": { "diagnostics": true }, "experimentalFeaturesEnabled": true } } } }
Steep#
-
Install the
steep
gem (see github:soutaro/steep):gem install steep
-
Open
Preferences > Package Settings > LSP > Settings
and add the"steep"
client configuration to the"clients"
:{ "clients": { "steep": { "enabled": true, "command": ["steep", "langserver"], "selector": "source.ruby | text.html.ruby", } } }
Rust#
Follow installation instructions on LSP-rust-analyzer.
Sass#
Follow installation instructions on LSP-some-sass.
Scala#
Follow installation instructions on LSP-metals.
Shell#
- Install shellcheck (follow instructions in the repo).
-
Install the diagnostic-languageserver server.
3. Open# with NPM npm i -g diagnostic-languageserver # or with Yarn yarn global add diagnostic-languageserver
Preferences > Package Settings > LSP > Settings
and add the"diagnostic-ls"
client configuration to the"clients"
:{ "clients": { "diagnostic-ls": { "enabled": true, "command": ["diagnostic-languageserver", "--stdio"], "selector": "source.shell.bash", "initializationOptions": { "linters": { "shellcheck": { "command": "shellcheck", "args": ["--format=json", "-"], "debounce": 100, "formatLines": 1, "offsetLine": 0, "offsetColumn": 0, "sourceName": "shellcheck", "parseJson": { "line": "line", "column": "column", "endLine": "endLine", "endColumn": "endColumn", "security": "level", "message": "\\${message} [\\${code}]", }, "securities": { "error": "error", "warning": "warning", "note": "info", }, } }, "formatters": {}, "filetypes": { "shellscript": "shellcheck", } } } } }
Solidity#
- Install the Ethereum package from Package Control for syntax highlighting.
- Install the github:NomicFoundation/hardhat-vscode language server.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"solidity"
client configuration to the"clients"
:{ "clients": { "solidity": { "enabled": true, "command": ["nomicfoundation-solidity-language-server", "--stdio"], "selector": "source.solidity" } } }
Stylelint#
Follow installation instructions on LSP-stylelint.
Svelte#
Follow installation instructions on LSP-svelte.
Swift#
Follow installation instructions on LSP-SourceKit.
SystemVerilog#
- Install the SystemVerilog package from Package Control for syntax highlighting.
- Make sure you install the latest version of Verible.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"verible"
client configuration to the"clients"
:{ "clients": { "verible": { "enabled": true, "command": [ "/PATH/TO/verible-verilog-ls" ], "selector": "source.systemverilog" } } }
TAGML#
Follow installation instructions on LSP-tagml.
Tailwind CSS#
Follow installation instructions on LSP-tailwindcss.
Terraform#
Follow installation instructions on LSP-terraform.
Toit#
- Install the Toit package from Package Control for syntax highlighting.
- Install the Jaguar Language Server.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"jag"
client configuration to the"clients"
:{ "clients": { "jag": { "enabled": true, "command": ["jag" "lsp"], "selector": "source.toit" } } }
Twig#
Follow installation instructions on LSP-twiggy.
TypeScript#
Typst#
- Install the Typst package from Package Control for syntax highlighting.
-
Optional: to enable auto-completions for the relevant situations in Typst files, adjust Sublime's
"auto_complete_selector"
and/or"auto_complete_triggers"
setting (Preferences > Settings
); for example{ "auto_complete_triggers": [ {"selector": "text.html, text.xml", "characters": "<"}, {"selector": "punctuation.accessor", "rhs_empty": true}, {"selector": "text.typst", "characters": "#", "rhs_empty": true}, ], }
There are 2 available languages servers.
Tinymist#
This server has more features, like go to definition, rename, etc.
- Install tinymist.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"tinymist"
client configuration to the"clients"
:{ "clients": { "tinymist": { "enabled": true, "command": ["path/to/tinymist"], // adjust this path according to your platform/setup "selector": "text.typst", // you can provide some initialization options: "initializationOptions": { "exportPdf": "never", "typstExtraArgs": [], }, } } }
-
Optional: to enable some useful commands provided by language server, add the following to the
*.sublime-commands
:Packages/User/Default.sublime-commands[ // ... { "caption": "tinymist - Pin the main file to the currently opened document", "command": "lsp_execute", "args": { "session_name": "tinymist", "command_name": "tinymist.pinMain", "command_args": ["${file}"] } }, { "caption": "tinymist - Unpin the main file", "command": "lsp_execute", "args": { "session_name": "tinymist", "command_name": "tinymist.pinMain", "command_args": [null] } }, ]
Typst-lsp#
- Install typst-lsp.
-
Open
Preferences > Package Settings > LSP > Settings
and add the"typst-lsp"
client configuration to the"clients"
:{ "clients": { "typst-lsp": { "enabled": true, "command": ["path/to/typst-lsp"], // adjust this path according to your platform/setup "selector": "text.typst" } } }
-
Optional: to enable some useful commands provided by language server, add the following to the
*.sublime-commands
:Packages/User/Default.sublime-commands[ // ... { "caption": "typst-lsp - Pin the main file to the currently opened document", "command": "lsp_execute", "args": { "session_name": "typst-lsp", "command_name": "typst-lsp.doPinMain", "command_args": ["${file_uri}"] } }, { "caption": "typst-lsp - Unpin the main file", "command": "lsp_execute", "args": { "session_name": "typst-lsp", "command_name": "typst-lsp.doPinMain", "command_args": ["detached"] } }, ]
Vue#
There are multiple options:
Vue Language Server#
Recommended, actively maintained package based on vuejs/language-tools.
Follow installation instructions on LSP-vue.
Volar#
Based on 1.x version of Volar (later renamed to Vue Language Server). Not recommended.
Follow installation instructions on LSP-volar.
Vetur#
No longer maintained, not compatible with TypeScript 5+ or new Vue versions.
Follow installation instructions on LSP-vetur.
Vala#
- Install the Vala-TMBundle package from Package Control to add Vala syntax highlighting and for Vala files to be reconginsed.
- Install the Vala Language Server
-
Add Vala Langauge Server to LSP settings:
{ "clients": { "vala-language-server": { "enabled": true, "command": [ "/path/to/vala-language-server" ], "selector": "source.vala | source.genie" }, }, }
Only works for certain project types. Visit vala-language-server repo for more details.
XML#
Follow installation instructions on LSP-lemminx.
YAML#
Follow installation instructions on LSP-yaml.