Alan IF IDE
Editor tooling for the Alan interactive-fiction language —
syntax highlighting, navigation, real compiler diagnostics, formatting, and one-click
Play, powered by a language server built with Xtext.
Alan IF, not the M-industries Alan application
platform — same name, different language. This extension is for the
interactive-fiction Alan.

Features
Syntax highlighting for .alan and .i files.
Document outline — classes, instances, additions, events, imports, verbs,
syntax, scripts and synonyms, nested and with distinct icons.
Go to Definition (F12) — across files, and aware of what a name means. A loop
variable resolves to its for each rather than to an instance elsewhere that shares
the name, and this resolves to the class or instance you are inside. Everything
else resolves by name across the project — right for classes and instances, whose
names are global in Alan — and works from isa, locate, describe, exits and the
rest.
On a verb, Go to Definition shows what decides its behaviour: the syntax that
says how the player phrases it, then each class down the hierarchy that overrides
it, ending where you are. In Alan's own lookup order, instead of every declaration
of that name at once.
Find All References (Shift+F12) — scoped to agree with Go to Definition:
inside a loop, that loop's uses; outside it, the global's. On a verb it still lists
every implementation, which is what that question means.
Occurrences of the name under the cursor are highlighted, the declaration marked
differently from the uses.
Compiler diagnostics — the real Alan compiler's errors, shown in-editor for a
whole multi-file adventure. It compiles the main file and routes each error back
to the file it came from, so errors surface in your .i imports too.

Play (▶) — compile the adventure and launch it in an integrated terminal, from
the editor title bar, the status bar, or the context menu.

Format Document — a structure-aware indenter that takes indentation from real
block nesting, with optional keyword-case normalization. Multi-line strings move as
rigid blocks and are never reflowed internally.

The Alan compiler is the source of truth for diagnostics; the language server
provides the ergonomics — navigation, outline, and formatting.
Requirements
Java is included. The language server runs on the JVM, but the build for your
platform ships with its own trimmed Java runtime — you do not need to install a JDK.
If you would rather use your own, point alanif.java.home at it. (The
platform-neutral build carries no runtime and falls back to JAVA_HOME or java on
your PATH.)
To get diagnostics and Play you also need the Alan toolchain:
|
|
|
alan |
the compiler (3.0beta8), for diagnostics and Play |
Set alanif.compiler.path, or have it on your PATH. |
arun |
the interpreter, for Play |
Found next to the compiler, or on PATH. |
Without them, editing features still work — diagnostics are simply skipped.
Settings
| Setting |
Purpose |
alanif.compiler.path |
Path to the Alan compiler (else found automatically). |
alanif.arun.path |
Path to arun (else next to the compiler, or on PATH). |
alanif.mainFile |
The .alan file to compile and Play (else auto-detected). |
alanif.format.keywordCase |
off (default) / lower / upper / capitalize. |
alanif.java.home |
JDK/JRE 21+ home (else the bundled runtime). |
You should not need to set the paths: leave them empty and the tools are found
automatically. Clearing one always returns to that automatic search.
Knowing whether it works
While an Alan file is open, the language status bubble (the {} beside the
language mode in the status bar) lists what the extension found:
Compiler 3.0beta8 ~/alan/bin/alan — PATH
Interpreter 3.0beta8 ~/alan/bin/arun — next to the compiler
Java 21 from the bundled runtime
If something is missing, a warning appears in the status bar instead — click it,
or run Alan IF: Check Setup, to see all three at once and fix any of them.
There is also Alan IF: Locate Alan Compiler… to browse for the compiler, and
the same for the interpreter.
A note on .i files
Alan uses .i for imported source. That extension is contested — C toolchains claim
it too — so this extension sets a workspace default associating *.i with Alan. If
you also edit C .i files, override files.associations for that workspace.
Source and issues
Source, build instructions and issue tracker:
github.com/thoni56/alan-if-ide.
It is the successor to the older Eclipse-RCP AlanIDE.
License
MIT © Thomas Nilefalk.