Skip to content

loom

A terminal text editor for SBCL with Emacs-style keybindings. Its direct runtime dependencies include cl-tty-kit, cl-host-kit, cl-history-kit, cl-prolog-kit, cl-cli, cl-regex-kit, cl-boundary-kit, cl-concurrent-kit, and cl-json-kit.

nix run github:nerima-lisp/loom

Status: early development (0.1.x, MVP)

Buffer editing, Emacs-style movement/kill-ring/yank/undo and numeric prefixes, window splits, file-tree create/rename/delete, syntax highlighting, Common Lisp evaluation, a user init.lisp, session persistence, and a minimal LSP client, named registers, and keyboard macros are implemented in the current source. The file tree uses a bounded concurrent runtime: directory work is submitted to workers, while cache updates and rendering remain on the editor's render lane. See the roadmap for the implemented surface and deferred Lem/Emacs-scale features.

Where to go next

  • Getting started -- build loom and open a file.
  • API reference -- the complete public export contract; src/package.lisp remains authoritative when the package surface changes.
  • Architecture -- the layered design and the toolkit family it builds on.
  • Roadmap -- what is implemented and what is not, yet.
  • Development -- source builds, tests, coverage, and process-level checks.

The CLI accepts --help, --version, and one optional path. The default keybindings are installed by src/application/commands-keybindings.lisp; the command catalogue and M-x registry live in src/application/command-definitions.lisp and src/application/command-registry.lisp.