diff --git a/modules/tools/lsp/README.org b/modules/tools/lsp/README.org new file mode 100644 index 000000000..d68fde77d --- /dev/null +++ b/modules/tools/lsp/README.org @@ -0,0 +1,66 @@ +#+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). + +As of this writing, these Doom modules possess LSP support: + +| Module | Major modes | Default language server | +|------------------+---------------------------------------------------------+---------------------------------------------------------------| +| [[../../lang/cc/README.org][:lang cc]] | c-mode, c++-mode, objc-mode | ccls | +| [[../../lang/go/README.org][:lang go]] | go-mode | go-langserver | +| [[../../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 +This module has no direct prerequisites, but to get LSP working, you'll need to +install language servers. + +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