Editor

A VS Code extension comes with LP-9: colours, a language server and a debugger. The language server and the debugger are lp9 itself (lp9 lsp, lp9 dap), not separate programs.

Mistakes Marked as They Are Typed

On every keystroke the language server runs the whole front of the compiler: it reads the file, follows its imports:, checks what each module lets out, and infers. It goes through the same code as lp9 run, so the editor cannot accept what lp9 run refuses.

LP-9 stops at the first mistake, so one is marked at a time.

Hover Shows What Inference Found

Types are not written, so hover shows them:

Under a type, hover says where it was settled, and why:

settled at 20:6 by x:y:

When a type is not the one you expected, that is where to look.

Definition, References, Rename, Completion

Go to definition, find references, rename and completion. Renaming a class changes every place its name is written, including a handler's name (Counter >> Bump), on: #click send: Bump, a receive: table, and a field's written type.

The Debugger

Breakpoints, step in, step over, step out, the call stack, and what is in scope at each frame: the arguments, the receiver's fields and self. Press F5 with a .lp9 file open. The program's output goes to the debug console.

What it does not do:

Run and Build

LP-9: Run Current File and LP-9: Build Current File save the file and send it to a terminal, because a program opens a window and reads the keyboard, and an output panel shows neither.

Settings

lp9.pathwhere lp9 is; empty means the copy in the extension, then the workspace's build output, then PATH
lp9.importPathdirectories to resolve imports: against; passed to the server, the debugger and Run alike, so what the editor resolves is what a run resolves