Skip to content
nerima-lispPublic

About

A terminal text editor for SBCL with Emacs-style keybindings

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,291 Commits

Folders and files

Repository files navigation

loom

CI License: MIT Documentation

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.

Quick Start

With Nix and flakes enabled:

nix run github:nerima-lisp/loom -- path/to/file.lisp

Omit 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.

For release archives, follow the archive installation instructions. Archives include the Nix runtime closure and require Nix; they are not standalone executables.

Documentation

The authoritative public export declarations are 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

# Verification gates
LOOM_COVERAGE_DIR=/tmp/loom-coverage nix develop -c loom-coverage
nix run .#e2e

nix 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.

The Nix check is the in-process gate. Sandbox3 may skip PTY-dependent checks when no usable PTY is available; those skips do not cover PTY behavior. nix run .#e2e is a separate PTY gate and must be run on a PTY-capable environment.

Coverage can be promoted to a quality gate with optional percentage thresholds:

LOOM_COVERAGE_MIN_EXPRESSIONS=95 \
LOOM_COVERAGE_MIN_BRANCHES=92 \
LOOM_COVERAGE_DIR=/tmp/loom-coverage \
nix develop -c timeout --signal=TERM --kill-after=15s 1200 loom-coverage

Thresholds accept values from 0 to 100. The command fails when a configured threshold is not met, so the gate can be raised incrementally toward 100%.

The Nix coverage output is a report directory, not an executable. Build it with nix build .#coverage (or run nix flake check); use the development command above when the report should be written to a local directory. Inside an interactive shell, test and coverage remain available as convenience aliases; loom-test and loom-coverage are the portable executable commands.

The development guide covers the unit and integration suite, PTY checks, coverage, and the concurrency benchmark.

Contributing

Please read the nerima-lisp contribution guide and the package standard.

Support

Open an issue or consult the nerima-lisp support guide.

License

MIT. See LICENSE.

About

A terminal text editor for SBCL with Emacs-style keybindings

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages