2019-04-06 00:38:46 -04:00
|
|
|
#+TITLE: tools/lsp
|
|
|
|
#+DATE: March 05, 2019
|
|
|
|
#+SINCE: v2.1
|
|
|
|
#+STARTUP: inlineimages
|
|
|
|
|
|
|
|
* Table of Contents :TOC_3:noexport:
|
|
|
|
- [[#description][Description]]
|
|
|
|
- [[#module-flags][Module Flags]]
|
|
|
|
- [[#plugins][Plugins]]
|
|
|
|
- [[#prerequisites][Prerequisites]]
|
|
|
|
- [[#features][Features]]
|
|
|
|
- [[#configuration][Configuration]]
|
|
|
|
- [[#troubleshooting][Troubleshooting]]
|
|
|
|
|
|
|
|
* Description
|
|
|
|
This module integrate [[https://langserver.org/][language servers]] into Doom Emacs. They provide features
|
|
|
|
you'd expect from IDEs, like code completion, realtime linting, language-aware
|
|
|
|
imenu/xref integration, jump-to-definition/references support, and more.
|
|
|
|
|
|
|
|
To get LSP working, you'll need two things:
|
|
|
|
|
|
|
|
1. To install a language server appropriate for your targeted language (you'll
|
|
|
|
find a table mapping languages to available servers [[https://github.com/emacs-lsp/lsp-mode#supported-languages][in the lsp-mode project
|
|
|
|
README]]).
|
|
|
|
2. To enable this module and the LSP capabilities of the appropriate =:lang=
|
|
|
|
module with the =+lsp= flag. If your language's module doesn't have LSP
|
|
|
|
support, you'll have to configure your own (described in the Configuration
|
|
|
|
section).
|
|
|
|
|
2019-04-08 23:02:50 -04:00
|
|
|
As of this writing, this is the state of LSP support in Doom Emacs:
|
2019-04-06 00:38:46 -04:00
|
|
|
|
|
|
|
| Module | Major modes | Default language server |
|
|
|
|
|------------------+---------------------------------------------------------+---------------------------------------------------------------|
|
|
|
|
| [[../../lang/cc/README.org][:lang cc]] | c-mode, c++-mode, objc-mode | ccls |
|
2019-07-26 21:32:20 +03:00
|
|
|
| [[../../lang/elixir/README.org][:lang elixir]] | elixir-mode | elixir-ls |
|
2019-04-06 00:38:46 -04:00
|
|
|
| [[../../lang/go/README.org][:lang go]] | go-mode | go-langserver |
|
2019-04-07 16:46:59 -04:00
|
|
|
| [[../../lang/haskell/README.org][:lang haskell]] | haskell-mode | haskell-ide-engine |
|
2019-04-06 00:38:46 -04:00
|
|
|
| [[../../lang/javascript/README.org][:lang javascript]] | js2-mode, rjsx-mode, typescript-mode | typescript-language-server |
|
|
|
|
| [[../../lang/java/README.org][:lang java]] | java-mode | lsp-java |
|
|
|
|
| [[../../lang/ocaml/README.org][:lang ocaml]] | taureg-mode | ocaml-language-server |
|
|
|
|
| [[../../lang/php/README.org][:lang php]] | php-mode | php-language-server |
|
|
|
|
| [[../../lang/python/README.org][:lang python]] | python-mode | lsp-python-ms |
|
|
|
|
| [[../../lang/ruby/README.org][:lang ruby]] | ruby-mode, enh-ruby-mode | solargraph |
|
|
|
|
| [[../../lang/rust/README.org][:lang rust]] | rust-mode | rls |
|
|
|
|
| [[../../lang/sh/README.org][:lang sh]] | sh-mode | bash-language-server |
|
|
|
|
| [[../../lang/web/README.org][:lang web]] | web-mode, css-mode, scss-mode, sass-mode, less-css-mode | vscode-css-languageserver-bin, vscode-html-languageserver-bin |
|
|
|
|
|
|
|
|
** Module Flags
|
|
|
|
This module provides no flags.
|
|
|
|
|
|
|
|
** Plugins
|
|
|
|
+ [[https://github.com/emacs-lsp/lsp-mode][lsp-mode]]
|
|
|
|
+ [[https://github.com/emacs-lsp/lsp-ui][lsp-ui]]
|
|
|
|
+ [[https://github.com/tigersoldier/company-lsp][company-lsp]]*
|
|
|
|
|
|
|
|
* Prerequisites
|
2019-04-08 23:02:50 -04:00
|
|
|
This module has no direct prerequisites, but major-modes require you to install
|
|
|
|
language servers.
|
2019-04-06 00:38:46 -04:00
|
|
|
|
|
|
|
You'll find a table that lists available language servers and how to install
|
|
|
|
them [[https://github.com/emacs-lsp/lsp-mode#supported-languages][in the lsp-mode project README]]. The documentation of the module for your
|
|
|
|
targeted language will contain brief instructions as well.
|
|
|
|
|
|
|
|
* TODO Features
|
|
|
|
|
|
|
|
* TODO Configuration
|
|
|
|
|
|
|
|
* TODO Troubleshooting
|