Table of Contents

Gleam layer

Table of ContentsClose

gleam.png

1. Description

This layers adds support for Gleam. It relies on the official gleam-mode package and tree-sitter-indent.

1.1. Features:

  • Gleam language server integration
  • Formatting (gleam format)
  • Execution (gleam build, gleam run, gleam test)

2. Install

To use this configuration layer, add gleam to the existing dotspacemacs-configuration-layers list in your ~/.spacemacs file.

You also need to install Gleam and make sure the gleam command was properly added to you PATH.

3. Configuration

3.1. LSP

lsp-gleam is the official implementation of the Gleam language server that comes pre-installed with the built-in gleam lsp command.

If the lsp layer was already added to your dotfile, the LSP backend will be enabled by default. To explicitly disable it for the gleam layer, set the following:

(gleam :variables gleam-enable-lsp nil)

If the lsp layer is not already installed, the LSP backend must be explicitely enabled for lsp-mode to start automatically when visiting a gleam file:

(gleam :variables gleam-enable-lsp nil)

When enabled, the gleam-lsp server will be automatically initialized when visiting a gleam file.

More details can be found in the lsp layer configuration section.

3.2. Formatting

gleam-mode provides the gleam-format command (SPC m = =) to format source code in the official Gleam style.

To automatically apply formatting files before saving:

(gleam :variables gleam-format-on-save t)

If the LSP backend is enabled, automatic formatting will use the lsp-format-buffer command (SPC m = b) instead.

3.3. Execution

The platform to target during compilation is set to erlang by default. To select javascript instead:

(gleam :variables gleam-target 'javascript)

The default runtime for the javascript target is nodejs. To select a different runtime:

(gleam :variables gleam-target 'javascript
                  gleam-runtime 'bun)

By default, the spacemacs//gleam-run command (SPC m c c) is set up to execute gleam run inside the project root directory. To run the module associated with the current instead:

(gleam :variables gleam-run-scope 'module)

4. Key bindings

4.1. LSP

Detailed key bindings can be found in the lsp layer key bindings section

4.2. Formatting

Key binding Description
SPC m = = Run gleam-format
SPC m T = Toggle gleam-format-on-save in current buffer

4.3. Execution

Key binding Description
SPC m c b Build project (run gleam build)
SPC m c a Run project (run gleam run in project root)
SPC m c m Run module (run gleam run --module <module>)
SPC m c c Run project or module (see gleam-run-scope)
SPC m t a Test project (run gleam test)

Author: root

Created: 2024-09-04 Wed 14:01

Validate