Version 20221027 of package Lua-Mode has just been released in NonGNU ELPA. You can now find it in M-x list-packages RET.
Lua-Mode describes itself as: ==================================== a major-mode for editing Lua scripts ==================================== More at https://elpa.nongnu.org/nongnu/lua-mode.html ## Summary: Lua-mode ======== Maintainer: immerrr <immerrr+...@gmail.com> lua-mode is an Emacs major mode for editing Lua files. For documentation, including installation instructions, please see lua-mode.el. Please send bug reports and suggestions to the maintainer, or use the trackers at github: http://github.com/immerrr/lua-mode ## Recent NEWS: * Release v20151025 ** allow setting lua-indent-level as file local variable (issue #108) ** add luadoc keyword fontification (issue #71) ** fix comments being spilled into the code (issue #25) ** add `run-lua' alias for `lua-start-process' (issue #97) ** skip shebang line when sending to inferior buffer (issue #61) ** add builtin functions and modules for Lua 5.3 (issue #90) ** fix lua-beginning-of-proc matching (issue #85) ** add `lua-documentation-function' to customize the way the documentation is shown, rename `lua-search-url-prefix' to `lua-documentation-url', auto-detect lua documentation installed in /usr/share/doc/lua (issue #82) ** fix some errors with `lua-kill-process' (issue #69) ** improve `next-error' integration in Lua subprocess buffer: "stdin:N:" entries are no longer highlighted and no longer prompt for "stdin" files * release v20140514 ** add support for Lua 5.2 goto statements ** when indenting, don't anchor to block-open tokens somefunc({ ^ don't indent next line relative to this brace ** fix several `indent-new-comment-line'-related bugs ** add support for local functions in imenu (issue #65) ** fix font lock of functions with underscores (issue #63) ** don't send shebang when sending lua buffer to subprocess (issue #61) ** fix interaction with electric-pair-mode (issue #54) ** rewrite lua-send-region to use "loadstring" rather than "dofile" - sending code to processes on remote hosts is now supported - stack traces for errors occurred in sent code point to proper lines in files - script path is preserved when sending code (issue #55) - no more hang ups when waiting for input (issue #48) or after sending code with no output (issue #60) ** increase consistency with Emacs ecosystem to improve user experience - fix character syntax hacks: '.' is now punctuation and '_' is now symbol - remove number highlighting - font-lock "nil", "true" and "false" as constants rather than keywords ** make builtin font-locking more stable, enable it after ".." operator ** add missing modulo operator (%) to line-continuation tokens ** fix interaction with electric-pair-mode (issue #54) ** when unindenting block-close tokens consider all of them, not just the first one x = foobar('arg1', function () print('foobar') end) ^ this line starts with two block-close tokens and is unindented accordingly * Release rel-20130419 ** highlight hash-bang line as comment ** make lua-mode-hook editable via customize ** fix several indentation bugs & quirks ** fix lua-send-proc not to send previous function when point is at the beginning of a function ** derive lua-mode from prog-mode for Emacs24 ** add font-locking for builtins and numeric constants ** fix a bug causing exponential complexity in a keyword matching regexp ** add more unindentation cases for block-closing tokens ** improve multiline highlighting via font-lock-syntactic-keywords This should make font-locking of multiline literals more fluent & stable. And it becomes customizable via standard font-lock configuration ** properly fontify variable definitions in 'local ...' & 'for ...' Also, perform some basic syntax verification in those lines. Multi-line constructs not supported yet. ** fix indentation for blocks starting on continued lines local foo = { bar, baz } ^ 1. these lines should be indented properly now ^ 2. the following lines should be unindented properly now ** extend imenu-generic-expression Now it matches 'foo = function(...)' function definitions