This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/layers/+lang/erlang/README.org

112 lines
3.9 KiB
Org Mode
Raw Normal View History

#+TITLE: Erlang layer
2015-06-10 16:44:30 +00:00
#+TAGS: general|layer|multi-paradigm|programming
2019-05-05 17:26:40 +00:00
2015-06-10 16:44:30 +00:00
[[file:img/erlang.png]]
2019-05-07 20:05:06 +00:00
* Table of Contents :TOC_5_gh:noexport:
2017-05-22 14:16:12 +00:00
- [[#description][Description]]
- [[#features][Features:]]
2017-05-22 14:16:12 +00:00
- [[#install][Install]]
- [[#layer][Layer]]
- [[#choosing-a-backend][Choosing a backend]]
- [[#configuration][Configuration]]
- [[#erlang-mode][erlang-mode]]
- [[#lsp][LSP]]
- [[#key-bindings][Key bindings]]
- [[#erlang-mode-1][erlang-mode]]
- [[#lsp-1][LSP]]
2015-06-10 16:44:30 +00:00
* Description
This layer adds support for [[https://erlang.org/][Erlang]].
Enabling [[https://github.com/emacs-lsp/lsp-mode][Lsp-mode]] brings IDE like
features following =Language Server Protocol=, through [[https://erlang-ls.github.io/][erlang_ls]]
** Features:
- Syntax highlighting
- Syntax checking via =Flycheck= integration
- Auto-completion via =Company= integration
- Code Completion
- Go To Definition
- Go To Implementation for OTP Behaviours
- Signature Suggestions
- Compiler Diagnostics
- [[https://erlang.org/doc/man/dialyzer.html][Dialyzer]] Diagnostics
- [[https://github.com/inaka/elvis][Elvis]] Diagnostics
- [[http://erlang.org/doc/apps/edoc/chapter.html][Edoc]]
- Navigation for Included Files
- Find/Peek References
- Outline
- Workspace Symbols
- Code Folding
2015-06-10 16:44:30 +00:00
* Install
** Layer
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =erlang= to the existing =dotspacemacs-configuration-layers= list in this
file.
** Choosing a backend
=company-erlang= uses gtags to provide a very basic working environment, it is
the default backend.
You can improve the IDE-like experience by choosing the =lsp= backend, to do so,
first add the =lsp= layer to =dotspacemacs-configuration-layers=, then, set the
layer variable =erlang-backend=:
#+begin_src elisp
(erlang :variables erlang-backend 'lsp)
#+end_src
Alternatively the =lsp= backend will be automatically chosen if the layer =lsp=
is used and you did not specify any value for =erlang-backend=.
* Configuration
** erlang-mode
To find the manual page for the function under the cursor you can either set
=erlang-man-root-dir= to erlang man root directory path in the layer definition:
#+BEGIN_SRC elisp
(erlang :variables erlang-man-root-dir "*path_to_folder*/otp_22/lib/erlang/man")
#+END_SRC
or let =erlang-mode= download it by executing ~M-x erlang-man-download-ask~.
** LSP
The =lsp= backend uses [[https://erlang-ls.github.io/][erlang_ls]] as its language server implementation.
Clone the project to your system and compile it:
#+BEGIN_SRC bash
make
#+END_SRC
*Note:* Ensure you have =erlang_ls= in your =PATH=...
You can install it:
#+BEGIN_SRC bash
make install
#+END_SRC
* Key bindings
** erlang-mode
| Key binding | Description |
|-------------+-----------------------------------------------------------------|
| ~C-c C-a~ | Align arrows ("->") |
| ~C-c C-c~ | Comment region |
| ~C-c C-d~ | Display function manual at point |
| ~C-c C-j~ | Generate a new clause |
| ~C-c C-q~ | Indent function |
| ~C-c C-u~ | Uncomment region |
| ~C-c C-y~ | Insert, at the point, the argument list of the previous clause. |
| ~C-c C-z~ | Display the erlang-shell or start a new |
| ~C-c M-a~ | Move backward to previous start of clause. |
| ~C-c M-e~ | Move to the end of the current clause. |
| ~C-c M-h~ | Put mark at end of clause, point at beginning. |
** LSP
You will find an overview of all the key bindings on the [[https://github.com/syl20bnr/spacemacs/tree/develop/layers/%2Btools/lsp#key-bindings][lsp layer description]].