Boo for VS Code
A thin client for boo-ls, the Boo language server. The extension starts the
server and gets out of the way; everything it shows comes from boo-ls.
The server lives in the compiler repository
and ships as a dotnet tool. That repository is the fork the work happens in;
the original Boo is at boo-lang/boo.
What works
Diagnostics as you type, completion, signature help, hover, go to definition,
document outline, highlight, find references, rename, and semantic highlighting.
Going to the definition of a type that only exists in a compiled assembly
decompiles it. boo.decompiler.language chooses whether that shows as C# or as
Boo.
Requirements
VS Code 1.82 or newer, and the .NET 10 runtime,
which is what boo-ls is built for.
Installing
Install the extension from the marketplace. It looks for the server on first
use, and offers to install it if it is not there. Taking that offer runs:
dotnet tool install --global boo-ls --prerelease
--prerelease is not optional yet: every published boo-ls so far is one.
Boo: Install Language Server runs the same thing from the command palette.
The install puts boo-ls in the dotnet tools directory, which reaches PATH
through your shell profile. A VS Code window that never read that profile needs
a reload before it can see the server.
To build a .vsix instead of installing from the marketplace:
npm install
npx @vscode/vsce package
Running it from source
npm install
code --extensionDevelopmentPath="$PWD" /path/to/a/boo/project
A clone of the compiler is a useful thing to open in that second window: it
holds several thousand .boo files.
Finding the server
The extension looks for the server in this order:
boo.server.path, if that setting names one.
src/boo-ls/bin/Debug/net10.0/boo-ls, then the Release build, under any
open folder. This is what a compiler clone built with dotnet build
produces. Debug wins, so a Release-only rebuild is not picked up.
boo-ls on PATH, which is where the dotnet tool installs it.
Settings
| Setting |
What it does |
boo.server.path |
The server to run. Empty means search, as above. |
boo.server.arguments |
Extra arguments for the server. |
boo.server.restartOnChange |
Restart when the server executable is rebuilt. On by default. |
boo.decompiler.language |
csharp or boo, for a type that only exists in an assembly. |
boo.trace.server |
messages or verbose logs the traffic to the Boo output channel. |
Boo: Restart Language Server restarts it without reloading the window, which
is what you want after rebuilding. Boo: Build Language Server builds the
clone the running server came from. Boo: Install Language Server installs it
as a dotnet tool, for when there is no clone.
Known rough edges
Line comments toggle with #. Boo accepts // as well and both are
highlighted, but VS Code takes only one comment marker for the toggle.
Whitespace-agnostic sources are parsed the ordinary way, so a file written in
that dialect reports errors it should not.
License
MIT. See LICENSE.