doomemacs/modules/lang/lua
Henrik Lissner c7a1e2d70c
bump: :lang
JuliaEditorSupport/julia-emacs@5c940c4ba3 -> JuliaEditorSupport/julia-emacs@aadf29523a
ProofGeneral/PG@d60382db08 -> ProofGeneral/PG@75c13f91b6
agda/agda@bb9e13d970 -> agda/agda@5cf984c3d2
ananthakumaran/exunit.el@12a1efd003 -> ananthakumaran/exunit.el@bef971bde5
ardumont/markdown-toc@29e5c0f33e -> ardumont/markdown-toc@d22633b654
babashka/neil@8d5ccdbd81 -> babashka/neil@74cc79e4b9
clojure-emacs/cider@15bd3b0265 -> clojure-emacs/cider@ae247d8845
clojure-emacs/clojure-mode@4679222109 -> clojure-emacs/clojure-mode@bddba12e96
emacs-ess/ESS@f8c464dc1b -> emacs-ess/ESS@bfe892db15
emacs-rustic/rustic@e77f62facc -> emacs-rustic/rustic@cb013cd217
emacs-straight/auctex@077874d25a -> emacs-straight/auctex@1939acb54b
erlang/otp@2b2b39797f -> erlang/otp@f80e9c1c4a
godotengine/emacs-gdscript-mode@248b73b1bd -> godotengine/emacs-gdscript-mode@dd44f1dfa5
greghendershott/racket-mode@150b057953 -> greghendershott/racket-mode@71f27c643d
hakimel/reveal.js@33bfe3b233 -> hakimel/reveal.js@5abf24c1d8
haskell/haskell-mode@383b4b7775 -> haskell/haskell-mode@2dd755a5fa
hhvm/hack-mode@86a981bd7b -> hhvm/hack-mode@0b117e7f25
hvesalai/emacs-scala-mode@661337d8aa -> hvesalai/emacs-scala-mode@50bcafa181
idris-hackers/idris-mode@85928dc4cc -> idris-hackers/idris-mode@d32b2396a8
jrblevin/markdown-mode@92802fae9e -> jrblevin/markdown-mode@9de2df5a9f
mekeor/nael@9711443449 -> mekeor/nael@3ee1cf286d
meow_king/zig-ts-mode@89b52c865c -> meow_king/zig-ts-mode@64611c6d51
minad/org-modern@9bbc44cc7e -> minad/org-modern@b4b5b1c864
nim-lang/nim-mode@625cc023bd -> nim-lang/nim-mode@4502f83fbb
nix-community/nix-ts-mode@706bbfaf7f -> nix-community/nix-ts-mode@625306cf9c
ocaml/dune@14df34d30d -> ocaml/dune@7a7d49206f
ocaml/merlin@a0b096c243 -> ocaml/merlin@1c4148af05
org-roam/org-roam@c72702cf27 -> org-roam/org-roam@b4857fd7a1
rust-lang/rust-mode@ae161dca23 -> rust-lang/rust-mode@f68ddca5c2
seagle0128/grip-mode@26bdadf604 -> seagle0128/grip-mode@b8b9e603ed
sogaiu/janet-ts-mode@0e4d04d648 -> sogaiu/janet-ts-mode@aba932a1a1
szermatt/emacs-bash-completion@762f28fefb -> szermatt/emacs-bash-completion@5b621db96e
technomancy/fennel-mode@c1bccdec9e -> technomancy/fennel-mode@9c1dac3c39
tpapp/julia-repl@681efc14a7 -> tpapp/julia-repl@0173237a43
weijiangan/flycheck-golangci-lint@f7e36e19d6 -> weijiangan/flycheck-golangci-lint@51aede797d
2026-02-13 16:31:15 -05:00
..
autoload fix: file-name-concat paths instead of concat 2025-12-30 22:59:10 -05:00
.doommodule feat: add .doommodule files 2024-09-14 20:47:39 -04:00
config.el fix(lua): treesit: use tree-sitter-lua@v0.3.0 on <= 29 2025-09-26 00:15:54 -04:00
doctor.el feat(lua): add treesit support 2025-05-15 13:01:40 +02:00
packages.el bump: :lang 2026-02-13 16:31:15 -05:00
README.org docs(csharp,julia,lua,markdown): mention +tree-sitter requirements 2025-05-15 18:19:32 +02:00

:lang lua

Description   unfold

This module adds Lua support to Doom Emacs.

  • REPL
  • Love2D specific functions
  • Moonscript support
  • Fennel support

Module flags

+fennel
Enable support for the Fennel language.
+lsp
Enable LSP support for lua-mode. Requires doom-module::tools lsp and a langserver (supports EmmyLua, lua-language-server, and lua-lsp).
+tree-sitter
Leverages tree-sitter for better syntax highlighting and structural text editing. Requires Emacs 30.1+ and doom-module::tools tree-sitter. Only supports Lua at the moment.
+moonscript
Enable support for the Moonscript language.

Hacks

No hacks documented for this module.

TODO Changelog

This module does not have a changelog yet.

Installation

Enable this module in your doom! block.

This module requires Lua 5.1+ for most of its capabilities and, optionally, the fennel and moonscript transpilers. An LSP server is also required for LSP support.

Language Server Protocol servers

LSP server support depends on which flavor of the doom-module::tools lsp module you have installed (doom-package:eglot or doom-package:lsp-mode).

LSP-mode

Three servers are supported, ordered from highest to lowest priority:

EmmyLua-LanguageServer
Must be in $EMACSDIR/.local/etc/lsp/EmmyLua-LS-all.jar. See lsp-clients-emmy-lua-jar-path variable to change this.
Sumneko language server (lua-language-server)
Must be in $EMACSDIR/.local/etc/lsp/lua-language-server/. See lsp-clients-lua-language-server-bin variable to change this.
lua-lsp
Must be available in ~/.luarocks/bin/lua-lsp. See lsp-clients-lua-lsp-server-install-dir variable to change this.

LSP-mode documentation has more information about setting up the server and the configuration variables correctly.

Eglot

Eglot currently only supports one of the above servers out of the box:

Sumneko language server (lua-language-server)
Must be in $EMACSDIR/.local/etc/lsp/lua-language-server/. See +lua-lsp-dir variable to change this.

Formatter

Formatting is handled using the doom-module::editor format module via Stylua.

TODO Usage

󱌣 This module has no usage documentation yet. Write some?

TODO Configuration

󱌣 This module's configuration documentation is incomplete. Complete it?

lua-lsp-dir
This must be set when using doom-module:+lsp and using lua-language-server. This controls where the repository has been cloned and built to finish the configuration of the server.

Troubleshooting

Report an issue?

Install lua-language-server

A catch-all issue has been created to gather help for installing lua-language-server on non-VSCode platforms.

Frequently asked questions

This module has no FAQs yet. Ask one?

TODO Appendix

󱌣 This module has no appendix yet. Write one?