A laboratory assistant; an Elixir language server that works.
  • Elixir 99.1%
  • Nix 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-01 20:28:13 -04:00
config Remove deprecated notion of "instantiation provider" 2025-12-13 14:02:01 -05:00
lib Update function hover formatting 2026-10-01 20:28:13 -04:00
test Update function hover formatting 2026-10-01 20:28:13 -04:00
.envrc Initial commit 2025-12-01 09:26:43 -05:00
.formatter.exs Initial commit 2025-12-01 09:26:43 -05:00
.gitignore Testing conveniences 2025-12-17 09:12:46 -05:00
flake.lock Initial commit 2025-12-01 09:26:43 -05:00
flake.nix Add nix flake packaging 2026-07-23 22:49:35 -04:00
LICENSE Initial commit 2025-12-01 09:26:43 -05:00
mise.toml Upgrade mise.toml versions 2026-09-07 11:26:41 -04:00
mix.exs Add nix flake packaging 2026-07-23 22:49:35 -04:00
mix.lock Update dependencies 2026-08-08 21:28:40 -04:00
README.md Update README 2026-07-28 22:08:50 -04:00

Laborant

A laboratory assistant; an Elixir language server that works.

Unlike Expert, Laborant is syntax-directed, which means that it takes a much more "superficial" view of your code, assuming things like defmodule defines a module, def defines a function, etc. These need not be true, you can override defmodule, def, etc to do something completely different, and Expert will (I think) handle that far better than Laborant will. Additionally, Laborant makes no attempt to understand custom macros.

However, being syntax-driven means that Laborant is wonderfully simple in design. A project's code is first parsed with Sourceror (originally just Code.string_to_quoted/2 was used, but Sourceror's AST includes end_of_expression positions which are very useful), and the resultant AST is matched against known patterns in Laborant.FileAnalyzer. The rest of Laborant just deals with storing the file analyzer results and speaking the LSP protocol. That's it!

Installation

Binaries for Linux and macOS (with support for x86 and aarch64 for both) are available from the Laborant releases page. The easiest way to install Laborant is to download a release binary corresponding to your computer's OS and CPU architecture and place the binary somewhere on your shell's PATH.