escriba-lisp 0.1.9

Tatara-Lisp authoring bridge for escriba — declarative keybindings, options, themes, hooks, commands
docs.rs failed to build escriba-lisp-0.1.9
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

Tatara-Lisp ↔ escriba bridge.

Mirrors frost-lisp for the editor domain. The pleme-io Rust + Lisp pattern:

  • Rust owns the types, invariants, and execution.
  • Lisp owns the authoring surface — users declare what they want the editor to be, and the runtime resolves it.

This crate parses a Lisp source and returns an [ApplyPlan] — a typed bundle of every declaration found. The escriba binary then applies the plan to live state (keymap, command registry, options, hooks). Keeping the plan as data (vs. mutating live state directly) means the bridge stays trivially testable and composable: load several files, merge plans, apply once.

Supported forms

Keyword Spec type
defkeybind [KeybindSpec]
defcmd [CmdSpec]
defoption [OptionSpec]
deftheme [ThemeSpec]
defhook [HookSpec]
defft [FiletypeSpec]
defabbrev [AbbrevSpec]
defsnippet [SnippetSpec]
defmode [MajorModeSpec]
defplugin [PluginSpec]
defhighlight [HighlightSpec]
defstatusline [StatusLineSpec]
defbufferline [BufferLineSpec]
deflsp [LspServerSpec]
defformatter [FormatterSpec]
defpalette [PaletteSpec]
deficon [IconSpec]
defdap [DapAdapterSpec]
defgate [GateSpec] — convergence pre/post-condition on an editor event
deftextobject [TextObjectSpec] — tree-sitter text object bound to vim i/a grammar
defworkflow [WorkflowSpec] — named DAG of gates + actions (editor-layer workflow)
defsession [SessionSpec] — named workspace layout (absorbs vim :mksession / vscode workspaces)
defeffect [EffectSpec] — ghostty-style GPU shader effect (cursor glow / bloom / scanlines)
defterm [TermSpec] — terminal session spec (wire-compatible with mado::term_spec::TermSpec)
defmark [MarkSpec] — named marks with jump/anchor/glance kind semantics
deftask [TaskSpec] — single shell task with filetype + cwd + env scope (absorbs vscode tasks.json / nvim asynctasks)
defschedule [ScheduleSpec] — typed declarative triggers (cron / interval / idle / startup) for commands + workflows (invention — no editor ships this typed)
defkmacro [KmacroSpec] — declarative keyboard macro (vim q-register / emacs kmacro.el as rc-authored typed spec)
defattest [AttestSpec] — content-addressed rc integrity attestation (BLAKE3-128 of ApplyPlan::summary(); invention — pleme-io convergence-computing at the editor layer)
defruler [RulerSpec] — declarative column rulers / visual guides (absorbs vim colorcolumn, vscode editor.rulers, jetbrains hard-wrap margin)
defmcp [McpToolSpec] — declarative MCP-tool binding (invention — no editor ships typed cross-process MCP import)
deffold [FoldSpec] — declarative folding rules per filetype (absorbs vim foldmethod, nvim-treesitter-fold, vscode FoldingRangeProvider)

Extending

Add a new module next to the others with a #[derive(DeriveTataraDomain)] struct plus #[tatara(keyword = "…")], re-export it from [lib], and add a line in [apply_source] that pulls it out via tatara_lisp::compile_typed.