Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Monogate ForgeNew to Visual Studio Code? Get it now.
Monogate Forge

Monogate Forge

Monogate

|
13 installs
| (0) | Free
EML-lang for VS Code. Free: syntax + snippets + completion + outline. With Forge CLI: LSP (errors-as-you-type, hover, cross-file goto-def + references + rename, format, workspace symbol search), builtin docs, inline profiling, FPGA status, multi-target compile across 36 targets.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Monogate Forge — VS Code extension

EML-lang language support for VS Code. Writing EML needs nothing else; install the Forge CLI (pip install "monogate-forge[lsp]") to add compile, analysis and verification. No license or account.

What you get for free (no CLI required)

  • Syntax highlighting for .eml files (TextMate grammar)
    • Keywords: module use as const type unit fn extern let mut where requires ensures assume while if else …
    • Builtins: exp ln log sin cos tan sqrt pow eml abs clamp asin acos atan sinh cosh tanh floor pi dot sum and the builtin calls min max atan2 log10 exp10 step arcsin arccos arctan log2 cbrt expm1 log1p hypot fmod ceil trunc round
  • Snippets for the common patterns: fn, fnverify, module, usestdlib, requires, ensures, targetfpga, verify, plus the @verify Hoare-contract template with requires/ensures pre-filled
  • Bracket auto-close, comment toggle, indent rules
  • Static completion: keyword + builtin suggestions
  • Outline view: regex-driven document symbols (fn, const, type)

What unlocks with the Forge CLI

The Forge CLI (pip install "monogate-forge[lsp]"; see monogateforge.com/get-started) ships an LSP server and the compiler. Once installed, the extension auto-detects both binaries on PATH and lights up:

  • Real-time diagnostics — lex, parse, and chain-order errors as you type
  • Hover — chain order, cost class, FPGA cycles for fns; structural class + chain delta for builtin transcendentals
  • Rich completion — local decls + 87 stdlib symbols (math, ml, signal, linalg, control, constants)
  • Cross-file goto-definition — into bundled stdlib + sibling user .eml files
  • Find all references + workspace-wide rename (rename blocks builtins; validates new names)
  • Document symbols + outline — typed via the real parser, not regex
  • Document links — ctrl-click use stdlib::* clauses to jump to source
  • Format-on-save — re-emit canonical EML in-process via the LSP
  • Workspace symbol search (Ctrl+T) — fuzzy match across every indexed file
  • FPGA status bar — LUT / DSP / cycle estimates per file
  • Inline profile lenses — chain order + cost class above each fn header
  • Compile commands for all 36 targets (palette + right-click)

Every target compiles locally, with no license or account. Some need something in the source to emit: Verilog, SystemVerilog, VHDL and Chisel a @target(fpga) function; SPICE, KiCad and JLCPCB @spice_* components; Lean, Coq and Isabelle a @verify block. JLCPCB writes its three-file bundle to <name>_jlcpcb/ beside the source.

Without eml-lsp, the extension still runs eml-compile --profile-only on save and puts each parse, import, unit, refinement and chain-order error on its line.

Install

  1. Install this extension from the VS Code marketplace.
  2. Open any .eml file — syntax + snippets + outline work immediately.
  3. To enable real-time diagnostics, hover, completion, format, and compile-to-anything: visit https://monogateforge.com/get-started for the CLI.

Architecture

File Role
src/extension.ts Entry point — registers providers + commands
src/forgeCli.ts Resolves eml-compile and eml-lsp on PATH
src/lspClient.ts Spawns eml-lsp and connects vscode-languageclient
src/editorOnly.ts Static completion + regex outline (no CLI needed)
src/profileProvider.ts CodeLens provider — runs --profile-only, parses dashboard
src/diagnostics.ts Save-triggered diagnostics fallback when LSP unavailable
src/cliDiagnostics.ts Reads each error's location from eml-compile output (no vscode import)
language-configuration.json Bracket auto-close, comment toggle
syntaxes/eml.tmLanguage.json TextMate grammar
snippets/eml.json Snippet library

The LSP discovery happens once per session (cached). When the LSP isn't available, the extension falls back to: static completion provider, regex outliner, save-time diagnostics from eml-compile when it is installed, and a one-shot install hint (no nag — appears once per session).

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