Ignid for VS Code
Syntax highlighting, inline type-checker diagnostics, IntelliSense, a
run-in-terminal command, and Run-and-Debug-panel support for .ig files (the
Ignid programming language), plus a custom file icon.
What it does
- Syntax highlighting — keywords, types, strings (including
${...}
interpolation), numbers, comments, function calls/definitions, record/enum type
names, field access.
- Inline error diagnostics — runs the Ignid type checker whenever a
.ig file
is opened or saved, and shows its errors as red squiggles at the correct line.
- IntelliSense — autocomplete for keywords, types, every builtin and
std.ig
function (with parameter snippets and a signature shown in the suggestion), plus
the current file's own fn/rec/enum names and enum members. Snippets for
common blocks (fn, start, rec, enum, when, whenelse, loopwhile,
loopin, match, try, let, fix) fill in the boilerplate [ ... ] body.
- Run in terminal — the ▶ button in the editor title bar (or
F5/Ctrl+F5,
or right-click → "Ignid: Run File") saves the file, then compiles and runs it
with ignid.exe in an integrated terminal named "Ignid". Fully interactive
(works fine with ask()), equivalent to typing ignid file.ig yourself.
- Run and Debug panel — the Debug side panel (
Ctrl+Shift+D) now lists
"Ignid" and can launch the active file, streaming its output into the Debug
Console with a working Stop button. This is launch-only, not real
breakpoint debugging — setting a breakpoint shows it as an unfilled/"unverified"
circle and it will not actually pause execution, because that requires the
Ignid compiler/runtime itself to emit debug info and support pausing on a
line, which doesn't exist yet (a compiler feature, not something this
extension can add by itself). It also can't feed keystrokes to a running
program's ask() calls — the Debug Console doesn't forward stdin like a
real terminal. Use the ▶ "Run File" command instead for anything
interactive; use the Debug panel only when you specifically want the
Run-and-Debug-panel workflow (e.g. from a launch.json, or alongside other
debugged projects in a multi-root workspace).
- A file icon —
.ig files show a small purple "ig" badge in the file
explorer and editor tabs, instead of the generic file icon.
Setup
Install from the VS Code Marketplace by searching for "Ignid", or manually:
- Make sure
checker.exe (or checker_s11.exe, renamed/copied to checker.exe,
or any build of Ignid's checker.ig) is on your PATH, or set
ignid.checkerPath in your VS Code settings to its full path.
- Make sure
ignid.exe is on your PATH (needed for both the run command and
the Debug panel), or set ignid.ignidPath to its full path.
- Either:
- Run from source (for development): open this
vscode-ignid/ folder in
VS Code and press F5 to launch an Extension Development Host window with
it loaded.
- Package and install: run
npx @vscode/vsce package in this folder to
produce a .vsix file, then in VS Code: Extensions view → ... menu →
"Install from VSIX...".
Settings
| Setting |
Default |
Description |
ignid.checkerPath |
"checker.exe" |
Path to the Ignid type-checker executable |
ignid.lintOnSave |
true |
Run the checker and show errors on open/save |
ignid.ignidPath |
"ignid.exe" |
Path to the ignid compile-and-run executable, used by "Ignid: Run File" |
How the diagnostics work
checker.ig's error messages include a real line number
([type error] line N: message near TOKEN) — the extension spawns the checker
process, feeds it the current file's path over stdin (matching how the rest of
the Ignid toolchain is invoked), and parses that format out of stderr into VS
Code Diagnostics. There's no column information yet (the checker tracks
positions by line, not line+column), so each error underlines the whole line —
still enough to jump straight to the right spot.
If used files are involved, line numbers are computed against the expanded
source (with used files' content spliced in), so they may not perfectly match
your file for programs that use other modules with errors originating in those
modules.
License
Unlike the core Ignid language/compiler (see the main project's LICENSE file, which
disallows redistribution), this extension is provided under the MIT License — the
whole point of an editor extension is for it to be shared and installed freely.
| |