spacemacs/layers/+lang/lua/README.org

2.8 KiB

Lua layer

/TakeV/spacemacs/media/commit/5b9612f57e7f3e44402ddc19912d95328120ee01/layers/+lang/lua/img/lua.gif

Description

This layer adds support for editing Lua.

Features:

  • Editing lua files using lua-mode
  • Code-Completion with lsp or company-lua
  • Sending code to a lua REPL
  • Code linting using Luacheck
  • Cross references (definitions, references, rename…)

Install

Layer

To use this configuration layer, add it to your ~/.spacemacs. You will need to add lua to the existing dotspacemacs-configuration-layers list in this file.

In order to enable code linting, install Luacheck.

Backends

Supported backends are:

  • lsp-emmy using clangd LSP server
  • lua-mode using emacs package

LSP

LSP support is provided via the LSP layer, currently only EmmyLua is supported.

To use the lsp-emmy backend, please download the EmmyLua-LS-all.jar and put it into ~/.emacs.d/, then set the layer variable lua-backend to lsp-emmy.

Lsp-emmy requires a working java installation in the path as well as the path to the LSP server jar. The java path and the path to the server executable can be configured as is shown below:

  (lua :variables
       lua-backend 'lsp-emmy
       lua-lsp-emmy-jar-path "~/.emacs.d/EmmyLua-LS-all.jar" ; default path
       lua-lsp-emmy-java-path "java"                         ; default path
       lua-lsp-emmy-enable-file-watchers t)                  ; enabled default

Lua mode

This backend provides support via pure emacs packages. It requires less setup than a full blown LSP setup but also provides less features. To enable it just set the lua-backend to nil.

Key bindings

LSP

The default key bindings for the LSP implementations are defined and documented in the LSP layer.

Commands

Key binding Description
SPC m d lookup thing at point in lua documentation
SPC m s b send buffer contents to REPL
SPC m s f send current function to REPL
SPC m s l send current line to REPL
SPC m s r send current region to REPL
SPC m ' open repl buffer