a customization of Theia from the Eclipse fondation for Modula-2 use, specifically (for the moment) GNU Modula-2
|
|
hace 2 días | |
|---|---|---|
| apps | hace 2 días | |
| examples | hace 2 días | |
| extensions | hace 2 días | |
| grammars | hace 2 días | |
| scripts | hace 2 días | |
| .gitignore | hace 6 días | |
| PARITY.md | hace 2 días | |
| PLAN.md | hace 2 días | |
| README.md | hace 5 días | |
| SOURCE-TREE.txt | hace 1 semana | |
| TUTORIAL.md | hace 2 días | |
| modula2-language-0.1.5.zip | hace 2 días | |
| oberon-language-0.1.6.zip | hace 2 días | |
| package-lock.json | hace 2 semanas | |
| package.json | hace 2 días | |
| pascal-language-0.1.6.zip | hace 2 días | |
| yarn.lock | hace 1 semana |
A starting point for a dedicated GNU Modula-2 IDE built on Eclipse Theia.
modula2-workbench extensionmodula2-language extension.mod and .def support.def resolution)modula2.jsonmodula2, program defaults to bin/<name>)modula2.json JSON schema for editor completions and validationThe current project targets Eclipse Theia 1.75.0, whose current stable release uses Node.js 24 as its minimum. Use Yarn Classic (1.x).
node --version
yarn --version
yarn
yarn build
Run browser:
yarn start:browser
Run Electron:
yarn start:electron
The language extension is intentionally a VS Code-compatible extension because Theia recommends VS Code extensions for language support. Native Theia extensions are used for product-specific workbench features.
The easiest way to run the IDE is one of the prebuilt Linux packages
(currently 0.31.0; dist/ is not tracked in git, build them with
yarn package as described below):
| File | Use |
|---|---|
dist/Modula-2 IDE-0.31.0.AppImage |
Make executable and run — no installation needed. Needs FUSE, or set APPIMAGE_EXTRACT_AND_RUN=1. |
dist/modula2-ide-electron_0.31.0_amd64.deb |
sudo apt install ./modula2-ide-electron_0.31.0_amd64.deb, then launch Modula-2 IDE from the applications menu (Development section). Uninstall with sudo apt remove modula2-ide-electron. |
Both ship everything except the compiler toolchain. To build, run or
debug Modula-2 programs you still need the host prerequisites below
(gm2, gdb, readelf); all editing features (highlighting, outline,
completion, hover, diagnostics, formatting) work without them.
The Electron app packages to a self-contained AppImage and a Debian package with everything except the compiler toolchain (see host prerequisites below):
cd apps/electron
yarn package # production bundle + plugin staging + dist/*.AppImage, dist/*.deb
This runs bundle:prod (native rebuild + production esbuild), stages the
modula2-language plugin with its runtime dependencies into
apps/electron/plugins/, and builds the artifacts via electron-builder.
The packaged launcher (electron-launcher.js) points the backend at the
bundled plugins through the THEIA_PLUGINS environment variable, so no
--plugins flag is needed.
Debian users install with (see versions in the section above):
sudo apt install ./modula2-ide-electron_0.31.0_amd64.deb
then launch Modula-2 IDE from the applications menu (Development
section). The package ships its icon and desktop entry; uninstall with
sudo apt remove modula2-ide-electron.
This runs bundle:prod (native rebuild + production esbuild), stages the
modula2-language plugin with its runtime dependencies into
apps/electron/plugins/, and builds
dist/Modula-2 IDE-<version>.AppImage via electron-builder. The packaged
launcher (electron-launcher.js) points the backend at the bundled
resources/plugins through the THEIA_PLUGINS environment variable, so no
--plugins flag is needed.
Host prerequisites (not bundled): GNU Modula-2 (gm2), gdb and readelf
for build/run/debug. On Debian/Ubuntu the IDE itself needs only FUSE (or
APPIMAGE_EXTRACT_AND_RUN=1) to launch the AppImage.
modula2-language-0.1.5.zip)For editors other than the packaged IDE, the VS Code-compatible language
extension ships as a self-contained zip (compiled server, grammars,
snippets, docs, plus its runtime dependencies — no dev files, no
gm2/gdb required for editing features):
unzip modula2-language-0.1.5.zip -d /tmp/m2plugin # yields modula2-language/
VS Code / VSCodium: copy (not the zip itself) into the extensions folder and restart:
cp -r /tmp/m2plugin/modula2-language ~/.vscode/extensions/
# VSCodium: ~/.vscode-oss/extensions/
bash
THEIA_PLUGINS=local-dir:/tmp/m2plugin <theia-launch-command>
You get .mod/.def highlighting, outline, completion, hover,
go-to-definition, references, rename, formatting (document + selection),
semantic highlighting and zero-false-positive diagnostics. Building,
running and debugging Modula-2 programs additionally need gm2
(and gdb for debugging) on PATH; the optional external validator
(modula2.cocoR.validatorCommand) stays off unless configured.
gm2 (see GNU-grammar).modula2.json project supportThe Modula-2 language extension is a VS Code-compatible extension. The build synchronizes it into plugins/modula2-language, and the Browser/Electron applications start Theia with --plugins=local-dir:../../plugins. The plugin directory must contain the extension folder; pointing --plugins directly at the extension folder does not provide the expected container layout.
The language extension now contains a real LSP client/server pair. The server
can invoke a GNU Modula-2 executable generated from a Coco/R grammar and turn
its editor-oriented diagnostics into LSP diagnostics. See
extensions/modula2-language/COCOR-LSP.md.