← 全部工具

nerima-lisp/loom

热度 75 更新于 网络与系统管理

A terminal text editor for SBCL with Emacs-style keybindings

githubauto-collected

安装

暂未验证可直接使用的安装命令,请查看项目官方文档或 Release。

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

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

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