No description
  • Scheme 85.4%
  • Shell 11.6%
  • Makefile 3%
Find a file
ober b0ac12cbd8
Some checks failed
required-ci / required (push) Failing after 3m43s
Merge pull request #4
2026-09-12 21:11:01 -04:00
.forgejo Use FreeBSD Forgejo CI runner 2026-08-03 14:46:28 -06:00
test fix: segment source so import-path renames skip string literals and comments (#31) 2026-07-21 19:20:45 -06:00
.gitignore jerboa-gerbil: converter from jerboa-emacs .ss to gerbil-emacs 2026-06-02 20:16:03 -06:00
.gitsafeignore Set up Forgejo CI/CD policy 2026-08-03 12:50:49 -06:00
AGENTS.md docs(agents): add checkout hygiene policy (work dirs under ~/work, cleanup when done) 2026-09-12 19:10:02 -06:00
convert.ss fix: segment source so import-path renames skip string literals and comments (#31) 2026-07-21 19:20:45 -06:00
gerbil.pkg jerboa-gerbil: converter from jerboa-emacs .ss to gerbil-emacs 2026-06-02 20:16:03 -06:00
LICENSE Switch to MIT license 2026-07-21 13:42:16 -06:00
Makefile build: add missing security/lint targets 2026-07-21 12:27:01 -06:00
README.md Set up Forgejo CI/CD policy 2026-08-03 12:50:49 -06:00
SECURITY.md Security hardening and release readiness 2026-06-23 10:49:50 -06:00
VERSION Merge main and reconcile repository policies 2026-08-03 19:17:20 -06:00

jerboa-gerbil

Tooling to port jerboa-emacs features to gerbil-emacs, written in Gerbil Scheme.

The two editors are forks of one ancestor and share the same Gerbil surface syntax, so porting a feature is mostly renaming import module paths and pointing Jerboa's "chez-powers" stdlib surface at jerboa-compat.

convert.ss

Rewrites a jerboa-emacs .ss source's imports to gerbil-emacs, textually (comments/formatting preserved), and warns about residual :jerboa-* refs that need a human:

gxi convert.ss INPUT.ss [-o OUTPUT.ss]      # default: stdout

Rename rules (specific before generic):

from to
:jerboa-emacs/chez-powers :jerboa-compat/powers
:jerboa-emacs/atom :jerboa-compat/atom
:jerboa-scintilla/… :gerbil-scintilla/…
:jerboa-qt/… :gerbil-qt/…
:jerboa-aws/… :gerbil-aws/… (no Gerbil lib yet — flagged)
:jerboa-emacs/… :gemacs/…

Library use: (import :jerboa-gerbil/convert) → (convert-string text) returns (values new-text report residual-count).

Testing Gerbil from this session

gerbil-mcp can't be registered as an MCP server here (the jerboa-mcp loader occupies that slot), so drive it over stdio with the bundled client:

cd ~/mine/gerbil-mcp
node gmcp.mjs list
node gmcp.mjs gerbil_compile_check '{"file_path":"…","loadpath":["/Users/user/mine"]}'
node gmcp.mjs gerbil_eval '{"imports":[":jerboa-compat/powers"],"loadpath":["/Users/user/mine"],"expression":"…"}'

It pins GERBIL_MCP_GXI_PATH=/opt/gerbil/bin/gxi.

Status

Foundation complete: jerboa-compat (atom, lru-cache, stm, engine, powers) and this converter, both built and tested on Gerbil. End-to-end proof in ../proof-port. Remaining: port the ~484 cmd-* features that exist in jerboa-emacs but not gerbil-emacs (git/forge, org, editing, games, …).