loom
loom is a terminal text editor for SBCL with Emacs-style keybindings. It combines raw-mode editing, window management, interactive PTY terminal sessions, shell commands, Git status, diff, and staging commands, code-formatting integration, auto-save, feature slices, and a bounded concurrent file-tree runtime.
The full documentation is published at nerima-lisp.github.io/loom.
Quick Start
With Nix and flakes enabled:
nix run github:nerima-lisp/loom -- path/to/file.lispOmit the path to start with the current directory as the file-tree root. Use M-x terminal for a PTY-backed child process and M-x auto-save-mode to enable sidecar auto-save for modified file-backed buffers.
Install
Pin a reviewed commit when adding loom to another flake:
inputs.loom = {
url = "github:nerima-lisp/loom/<reviewed-commit>";
inputs.nixpkgs.follows = "nixpkgs";
};For a profile installation from the default branch, run nix profile install github:nerima-lisp/loom.
Documentation
- Getting started
- API reference
- Architecture
- Roadmap
- Development
The complete public export list is maintained in src/package-exports.lisp. The current command catalogue is in src/application/command-definitions.lisp, and M-x lookup is implemented by src/application/command-registry.lisp.
Development
nix develop
nix build
nix develop -c loom-test
nix flake check --print-build-logs
nix fmt -- --ci
# Reproducible, bounded test run
nix develop -c timeout --signal=TERM --kill-after=15s 1200 loom-test
# Release-oriented checks
LOOM_COVERAGE_DIR=/tmp/loom-coverage nix develop -c loom-coverage
nix run .#e2enix flake check --print-build-logs also runs the repository-wide paredit syntax check, formatting check, build, documentation, test, and coverage checks. Use the paredit command in the development shell for structural inspection and edits when changing Lisp source.
Coverage can be promoted to a quality gate with optional percentage thresholds: