Table of Contents

Erlang layer

Table of ContentsClose


1. Description

This layer adds support for Erlang.

Enabling Lsp-mode brings IDE like features following Language Server Protocol, through erlangls

1.1. 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
  • Dialyzer Diagnostics
  • Elvis Diagnostics
  • Edoc
  • Navigation for Included Files
  • Find/Peek References
  • Outline
  • Workspace Symbols
  • Code Folding
  • Interactive debugger using dap-mode

2. Install

2.1. 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.

2.2. 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:

(erlang :variables erlang-backend 'lsp)

Alternatively the lsp backend will be automatically chosen if the layer lsp is used and you did not specify any value for erlang-backend.

3. Configuration

3.1. 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:

(erlang :variables erlang-man-root-dir "*path_to_folder*/otp_22/lib/erlang/man")

or let erlang-mode download it by executing M-x erlang-man-download-ask.

3.2. LSP

The lsp backend uses erlangls as its language server implementation.

Clone the project to your system and compile it:


Note: Ensure you have erlang_ls in your PATH

You can install it:

make install

3.3. Debugger

The dap backend uses erlangls-dap implementation. Information about configuring a project to use the debugger can be found here.

If you are using erlang_ls backend, probably you have els_dap already installed, otherwise, follow the instructions.

Clone the project to your system and compile it to produce the els_dap escript:

rebar3 as dap escriptize



els_dap will be found at "erlangls/build/dap/bin/"

Note: Ensure you have els_dap in your PATH

4. Key bindings

4.1. 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.

4.2. LSP

You will find an overview of all the key bindings on the lsp layer description.

4.3. DAP

You will find an overview of all the key bindings on the dap layer description.

Author: root

Created: 2024-06-14 Fri 18:50