Obfusku for VS Code
Highlighting ✦ Live Diagnostics ✦ Project-Aware Tasks
Language support for Obfusku, the symbolic ritualistic esoteric programming language, directly inside VS Code.

Why This Extension
Obfusku expresses computation through a frozen alphabet of glyphs (λ, ≔, ⟡, ▷, ☄, ☊, ❧…) rather than ASCII keywords. Without editor support, that alphabet is just unrecognized text to VS Code — no highlighting, no error feedback until you run the CLI by hand, no sense of whether a directory is a Project or a bare file.
This extension closes that gap: it never reimplements any of Obfusku's language logic itself — parsing, type inference, and formatting all stay owned by the obfusku/obfusku-lsp binaries — it only wires their real output into VS Code's native UI.
Key Features
Syntax Highlighting
A TextMate grammar built directly from spec/CONCRETE_SYMBOLIC_GRAMMAR.md's glyph table — binders (≔ ˚ ⚙︎), control (⟡ ☄ ☊), base types, pattern/match syntax, and every operator at its correct precedence group.
Live Diagnostics
obfusku-lsp runs as a real language server, pushing type errors, parse errors, and warnings as you type — against the unsaved buffer, not just on save.
Formats the current buffer through obfusku fmt, no save required first.
Project Support
Recognizes obfusku.toml (spec/adr/ADR-017/018/020) the same way the CLI does — walking upward from the active file:
Obfusku: Build Project and its editor-title icon appear only when the active file sits inside a Project.
- Build/Run tasks (
Terminal: Run Task → obfusku) for every workspace folder with a manifest, with errors and warnings attributed to the Project's entry file and surfaced in the Problems panel.
- Schema-backed completion for
obfusku.toml when the Even Better TOML extension is installed.
Commands
| Command |
What it does |
Obfusku: Run File |
Runs the active file with obfusku run and shows output |
Obfusku: Type Check File |
Runs obfusku check and refreshes diagnostics |
Obfusku: Format File |
Formats the active file |
Obfusku: Open REPL |
Opens an integrated terminal running obfusku repl |
Obfusku: Build Project |
Runs obfusku build (only shown inside a Project) |
Obfusku: Show Language Server Output |
Opens the obfusku-lsp output channel |
Status Bar
Shows whether obfusku-lsp is running, starting, or failed to start — click it to jump straight to the server's own log.
Snippets
Functions, bindings, type declarations (sum/record/tuple), match, conditionals, raise/catch, and imports.
Requirements
Both obfusku and obfusku-lsp must be installed and resolvable on PATH — the official install.sh installs both together:
curl -fsSL https://raw.githubusercontent.com/core-red-project/obfusku/main/install.sh | bash
If they live somewhere else, point to them explicitly:
{
"obfusku.path": "/path/to/obfusku",
"obfusku.lspPath": "/path/to/obfusku-lsp"
}
Compatible versions
The extension reads obfusku --version and enables only what that CLI can do. Tested against 1.0.0 and 1.1.0.
| Feature |
1.0.x |
1.1.x |
Live diagnostics (obfusku-lsp) |
yes |
yes |
| Error in an imported module |
drawn on the importing file at the imported file's line |
pinned to line 1 with an "in an imported module" prefix |
| Closing a file |
its diagnostics stay in Problems |
cleared |
| Buffer not on disk yet |
could not read '<path>' |
checked against its directory |
Type Check File, Run, Build, REPL |
yes (text output) |
yes (JSON output) |
Format File |
disabled: the 1.0 formatter deletes comments |
yes |
Run Project Tests and the test task |
no |
yes |
Manifest format 2 ([capabilities], [dependencies]…) |
no |
yes |
The obfusku-lsp rows come from running the real server (tests/lsp, selectable with OBFUSKU_LSP_PATH and OBFUSKU_PATH); the extension cannot correct what a 1.0 server publishes.
A 1.0.x CLI shows a notice once. Anything from 2.0 on is outside the tested range and also notices once; 1.x releases after 1.1 keep every 1.1 feature. Keep obfusku and obfusku-lsp on the same version.
Settings
| Setting |
Default |
Description |
obfusku.path |
"obfusku" |
Path to the obfusku CLI executable |
obfusku.lspPath |
"obfusku-lsp" |
Path to the obfusku-lsp language server executable |
Known Limitations
- With obfusku 1.0.x a brand-new file that is not on disk yet is reported as unreadable until it
is saved once; 1.1 checks it against its directory.
- No hover, go-to-definition, or completion yet —
obfusku-lsp currently implements
textDocument/publishDiagnostics only.
- Build/Run tasks don't use a declarative
problemMatcher: the CLI's plain-text
diagnostic lines (error: message (line:col)) never include a filename, so a
regex-based matcher has nothing to key on. Instead, the task provider resolves
the Project's entry file itself and attributes diagnostics to it directly — correct
for the common case, but a diagnostic that actually originates in an imported
module still surfaces against the entry file, not the module that raised it.
Obfusku for VS Code — A Core Red Project
© 2026 Sxnnyside Project. Distributed under the MIT License.