3.12.1 - 2026-09-08
3.12.0 - 2026-05-12
- Bumped dependencies.
- Hardened build and publishing process to lower risk of supply-chain attacks.
3.11.0 - 2026-03-29
- Added config option to print debug logs:
lua_ls_verbose. - Improved error messages related to object lookup errors and added a troubleshooting guide.
3.10.1 - 2026-03-29
- Fiexd broken cross-references on the search page.
3.10.0 - 2026-01-29
- Added option to disable running lua-ls (
lua_ls_backend = "disable") for cases when only manual documentation is required (#47 by @pieterlexis).
3.9.0 - 2026-01-23
- Fixed LaTeX build and improved rendering of multiline signatures in LaTeX (#46).
3.8.1 - 2025-12-08
- Added LuaLs 3.16.0 to the list of known broken releases (LuaLS#3301).
3.8.0 - 2025-12-03
-
Added support for Sphinx 9.
-
Added
lua_ls_skip_versionsconfig option to selectively avoid certain language server releases.
3.7.0-post1 - 2025-11-14
- Minor documentation tweaks.
3.7.0 - 2025-11-14
-
Fixed parsing of
@seeannotations with LuaLs backend. -
Fixed parsing of EmmyLua output after they removed
classDefaultCallsetting.
3.6.0 - 2025-10-17
-
Adjusted styles for links in object signatures to match those produced by python domain.
-
Releases are no longer uploaded to test version of PyPi.
3.5.0-post1 - 2025-10-03
-
Migrated documentation to Read the Docs.
-
Moved repository to sphinx-contrib organization.
3.5.0 - 2025-10-03
-
Added
autodata,autoattribute,autoclass, and otherauto*directives.They work like
autoobject, but apply their doctype to the documented object (if!doctypewas set in source code, it shouldn't conflict with the used directive).They also allow overriding object's signature, which may be useful when automatically generated signature is too long.
-
Added
lua_ls_max_versionconfig option to safeguard against incompatible changes to documentation export format. -
Fixed a few more minor bugs in highlighting of Lua types.
3.4.0 - 2025-09-28
-
Potential breaking change: use
confdirinstead ofsrcdiras base path forlua_ls_project_root.Prior to this change,
lua_ls_project_rootwas resolved relative to the directory containing source.rstfiles. Documentation, however, was saying that it's resolved relative to the directory withconf.py.This is not an issue, because in most projects
conf.pyand source.rstfiles are located in the same directory. Still, I've decided to be consistent with other Sphinx extensions and useconfdirinstead ofsrcdir.This is a breaking change, but I don't believe there are any projects that use separate
confdirandsrcdir(the only reason to do this is if you're hosting multiple documentation sites in the same repo.) For this reason, this change is released as a minor version change.
3.3.0 - 2025-09-28
-
Added an option to extend list options (like
:exclude-members:) without overriding defaults:.. lua:autoobject:: :exclude-members: +foo
Also added
:no-*:options to ignore defaults. -
Improved display of members which use types instead of names, i.e.
[<type>](#19 by @bkoropoff). -
Added a warning for situations when
lua_ls_project_directoriescontains directories outside of the current VCS root.
3.2.0 - 2025-09-02
-
Updated a few dependencies. Most notably, restricted
sphinxto<9. -
Fixed dashes in types being parsed as type names (#18 by @bkoropoff).
-
Added normalization for function syntax (
fun() -> Tis converted tofun(): T). -
Done some internal refactorings.
3.1.0 - 2025-08-21
-
Added pygments lexer for Lua that highlights documentation tags.
-
Added option to control maximum signature length before wrapping.
-
Sphinx's nitpicky mode will no longer emit warnings for cross-references in signatures.
-
Fixed generation of URL anchors to avoid duplicates.
-
Fixed some edge cases in parsing of type expressions.
3.0.0 - 2025-07-26
-
Breaking change: changed how
apidocgenerates file names to avoid collisions. -
Supported EmmyLua as an alternative backend for documentation export.
EmmyLua was recently re-implemented in Rust, and its new language server provides some substantial benefits:
- it has stronger and more flexible type system,
- it handles aliases and enums way better than LuaLs,
- it supports namespaces,
- it exports way more metadata, including function overloads and class constructors,
- you don't have to annotate modules with
@classand!doctypeanymore.
I plan to use EmmyLua as the default language server since v4.0.0.
-
Long object signatures are now broken into multiple lines.
-
Supported using arbitrary types as object names, i.e.:
.. lua:data:: [integer]: string
-
Added
:globals:flag for thelua:autoobjectdirective. It will allow automatically documenting global variables defined in a module. -
The
lua:autoindexdirective now lists globals defined in a module. -
Added support for documenting class constructors:
.. lua:class:: Foo(a, b, ...)
-
Added directive for enums.
-
Supported generic parameters for functions, classes, aliases and enums:
.. lua:class:: Foo<T>
-
Improved linking to Lua language documentation to take into account whether an item is supported for the given Lua version.
-
Added the
lua:luarole to compensate for MySt not supporting default roles.If Lua is your primary domain cross-referencing from markdown can be done like this:
Reference to a {lua}`logging.Logger.info`. -
Added the
lua:other-inherited-membersdirective and:inherited-members-table:flag for thelua:autoobjectdirective.These allow listing all members that were inherited by a class but weren't documented within the class body (see #3).
-
Supported markdown output for
apidoc. -
Added option to separate module members into their own files for
apidoc.
-
If you're using
apidoc, you'll need to update links to your documentation. -
You'll need to explicitly specify which language server to use by including
lua_ls_backendto yourconf.py.
2.0.1 - 2025-04-12
- Fixed documentation not being rebuilt after changing lua source code.
2.0.0 - 2025-03-16
-
Breaking change: don't implicitly convert classes that're derived from
tableto modules. Users should use a!doctypecomment instead. -
Breaking change: disallow nesting modules inside classes.
-
Added
autoindexdirective. -
Added
apidocfunctionality. -
Improved test coverage and fixed found bugs.
In your Lua code base, perform global replace by regexp:
^(\s*)---\s*@class\s*(.+): table$
to
$1--- !doctype module
$1--- @class $2
Make sure that you only use !doctype module on the top-level tables that can be imported
via require. On other objects, use !doctype table instead, otherwise you'll get errors
that modules are not allowed within other objects.
1.1.0 - 2025-03-11
-
Added support for
!docand!doctypecomments. -
Added
:include-protected:and:include-package:options forlua:autoobject. -
Allowed referring
lua:constobjects fromlua:attrrole. -
Fixed a bug when default options would not properly propagate when using
lua:autoobjectwith:recurse:. -
Fixed a bug when
lua:autoobjectwould deduce incorrect module paths when applied to non-toplevel modules. -
Fixed a bug when docstring for a class would be used for undocumented function parameters that have this class as their type.
-
Fixed types when
lua:autoobjectwould infer incorrect types fordata.
1.0.0 - 2025-03-09
Initial release.