Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>PraxisNew to Visual Studio Code? Get it now.
Praxis

Praxis

Tomislav Ljubej

|
1 install
| (0) | Free
Language support for Praxis: syntax highlighting, diagnostics, hover, completion, inlay hints, references, rename, quick fixes, and the local toolchain commands.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Praxis for VS Code

Praxis is a small compiled language for input-shaped puzzles: it reads the file, gives you the shape you asked for, and JIT-compiles the program that walks it. This extension is the editor half.

Everything the editor knows about your program arrives from the compiler over LSP. There is no parsing and no type logic in the extension, so the editor and praxis check cannot disagree about what a file means.

It needs the praxis binary

The extension is a launcher, not a toolchain. Install the compiler first:

$ cargo install praxis-cli

That puts praxis in ~/.cargo/bin, which is where the extension looks by default. If it is somewhere else, set praxis.binaryPath to an absolute path. Without a binary you still get syntax highlighting; everything below it is the server, and the server is praxis lsp.

Full instructions, including building from a checkout, are in Installing Praxis.

What you get

Open a .px file and the language server attaches.

Diagnostics Every error praxis check prints, after a 150 ms pause in typing. There are no warnings — an underline is never advisory.
Hover The inferred type; a method's signature and what it does; a parser constructor's signature and the type it synthesizes.
Completion Methods and fields after ., enum variants in a pattern, parser atomics and constructors inside a read, names in scope elsewhere.
Signature help The callee's signature and which parameter the cursor is in.
Inlay hints The type of every binding the source does not annotate — and accepting one writes the annotation into the file.
Navigation Go to definition, find references, document and workspace symbols. All by symbol, so two shadowed bindings never answer for each other.
Rename A rename that would change what another name refers to is refused, with a sentence naming the collision.
Quick fixes The machine-applicable half of a diagnostic: a misspelled constructor, name or method, and the arms a match is missing.
Highlighting A TextMate grammar paints the file instantly; semantic tokens refine it once analysis has run.

Two things worth knowing up front. Inlay hints are on — turn them off with editor.inlayHints.enabled, which is the editor's setting and the only one. And Praxis has no formatter: the server does not advertise formatting, so Format Document leaves your editor doing whatever it would do by itself.

The full capability list, and what each one answers, is in Editor support.

Commands

Command What it runs
Praxis: Run File praxis run <file>, with --input input.txt appended when that file sits beside the source
Praxis: Check File praxis check <file>
Praxis: Restart Language Server Stops and relaunches the server process

The first two save the buffer first — praxis reads the file from disk — and run in an integrated terminal rather than an output channel, because the crash debugger is interactive and a write-only pane cannot answer a prompt.

Settings

Setting Default
praxis.binaryPath praxis The one path the server and both commands use. A bare name resolves on PATH. Changing it restarts the server: pointing at a different build is a relaunch, not a reconfiguration.
praxis.trace.server off Trace the JSON-RPC traffic between VS Code and praxis lsp.

If the server cannot start you get a message naming the command it tried and the setting to change. It is nearly always a praxis.binaryPath pointing at nothing.

Workspace trust

praxis.binaryPath names a program to execute, and a folder you open can carry its own settings. So the extension does not run in an untrusted workspace — opening a folder is not consent to run what it names. Highlighting still works there, because a grammar executes nothing; the server and the two commands wait until you trust the folder.

Reporting something

Issues and questions: https://github.com/tljubej/praxis/issues. The extension's source is editors/vscode/, and DEVELOPING.md is how to build, package and release it.

License

MIT OR Apache-2.0, at your option.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft