- Scheme 96.6%
- Makefile 3.4%
| .builds | ||
| test | ||
| .gitignore | ||
| AGENTS.md | ||
| convert.ss | ||
| gerbil.pkg | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| SECURITY.md | ||
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, …).