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

Jacket

matteopolak

|
8 installs
| (0) | Free
Jai toolchain: language server, linter, formatter and syntax highlighting for the Jai language
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Jai for Visual Studio Code

[!NOTE] This project is unofficial and is not affiliated with or endorsed by Thekla, Inc. or the official Jai project.

Language support for Jai from Jacket, the toolchain behind jaic: the jailsp language server, jailint lints and fixes, jaifmt formatting and syntax highlighting.

Hover over a struct: its fields, size and alignment

Features

  • Errors as you type from the real compiler, with hover (types, values, memory layout), completion, go to definition, references, rename, inlay hints, signature help, code lenses, #insert/#run/macro expansions and Add #import fixes.

    A type mismatch reported inline

  • Completion of members, procedures, modules and directives, with auto-import: prin offers print and adds #import "Basic"; when accepted (likewise for your own modules, and #load for your project's other files; jai.completion.autoImport). A jai.toml at the project root can name its build files and module folders.

    Completing the fields of a struct

  • Inline assembly help: inside #asm blocks, completion and hover for every instruction jaic accepts, with its operand forms and the CPU feature it needs, and signature help for its operands.

    Completing an AVX2 instruction in an #asm block

  • Refactorings in the lightbulb menu: extract the selected expression into a variable, extract statements into a procedure (parameters and results worked out; declined when it cannot be done safely), inline a variable, add the missing cases of an if x == { on an enum, add the missing fields of a Type.{...} literal, and convert between ifx and if/else. Call hierarchy (incoming and outgoing calls) and expand selection work too.

  • Lints from jailint with quick fixes; source.fixAll.jailint applies every safe fix, on demand or on save. Unsaved edits to jailint.toml apply at once.

    A jailint warning and its documentation link

    The quick fix for it

  • Formatting with jaifmt, honouring jaifmt.toml (including its ignore globs); works with editor.formatOnSave.

    A file before and after Format Document

  • Doc comments: the comment above a declaration is shown as Markdown in hover, completion and signature help, with per-parameter docs (- name: text in the comment) and [print] / [Type.field] / [text](https://github.com/matteopolak/jacket/blob/HEAD/print) links you can click or go to the definition of. The Markdown in comments is highlighted, and fenced code in them as Jai.

  • Highlighting: a TextMate grammar for keywords, directives, here-strings, numbers (0x, 0b, 0h, _), nested comments, declarations and $T/$$x polymorph variables, refined by the server's semantic tokens.

  • Embedded languages: a here-string whose terminator names a language is highlighted as that language: #string WGSL, GLSL, HLSL, SQL, JSON, HTML, CSS, JS, TS, PY, SH, C, CPP, RUST, YAML, TOML, JAI and more (ignoring case). A WGSL grammar is bundled; GLSL and Metal need an extension that provides their grammar. Other terminators (END) stay plain strings.

  • Commands: Jai: Run File, Build File and Check File (jaic file.jai [-interp|-check] in a terminal), Restart Language Server, Download Toolchain.

  • Snippets, bracket and comment configuration, a file icon, and schemas for jailint.toml/jaifmt.toml/jai.toml (validated by TOML extensions that read tomlValidation, such as Even Better TOML).

Getting the toolchain

The extension looks for jailsp in jai.server.path, then on PATH, then next to jai.compiler.path or the jaic on PATH. If none is found it asks before downloading the compiler release pinned into this extension (jaic, jailsp, jailint, jaifmt and the standard library) from github.com/matteopolak/jacket/releases, and checks it against SHA-256 checksums pinned into the extension. Set jai.toolchain.autoDownload to never to turn this off, or always to skip the question. Prebuilt toolchains exist for macOS, Linux and Windows, each on x86-64 and arm64; elsewhere, build from source and set the paths.

Settings

{
  "jai.server.path": "",            // jailsp
  "jai.compiler.path": "",          // jaic (Run/Build/Check)
  "jai.formatter.path": "",         // jaifmt
  "jai.stdlib.path": "",            // passed as JAIC_STDLIB
  "jai.toolchain.autoDownload": "prompt",
  "jai.run.arguments": [],          // extra jaic arguments, such as "-O2"
  "jai.completion.autoImport": true, // offer names from modules and files not imported yet
  "[jai]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": { "source.fixAll.jailint": "explicit" }
  }
}

See the extension's documentation for how it works and how to change it.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft