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

FScript

Magnus Opera

|
9 installs
| (0) | Free
Syntax highlighting and language-server integration for FScript (*.fss).
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

VS Code FScript Extension

Requires VS Code 1.91 or later. Extension development and packaging require Node.js 22 or later.

This extension provides:

  • .fss language registration
  • TextMate syntax highlighting, including numeric type annotations
  • LSP client wiring to FScript.LanguageServer
  • Configurable inlay hints and server settings

Numeric Types

Hover and inlay hints display unresolved arithmetic types as numeric:

let add x y = x + y
// add: (x: numeric) -> (y: numeric) -> numeric

let addInt x (y: int) = x + y
// addInt: (x: int) -> (y: int) -> int

Each add call accepts either two integers or two floats. Mixed numeric types and nonnumeric operands produce diagnostics; no implicit conversion is performed. numeric is also supported in explicit annotations and syntax highlighting. Remainder (%) accepts integers only.

See the type-system guide for the type hierarchy.

Development

From vscode-fscript/:

npm install

Then run the extension in VS Code (F5) from this repository.

Run npm test to check extension activation, logging-channel compatibility, startup failures, and shutdown. These JavaScript regression tests live in tests/FScript.LanguageServer.Tests/ and run alongside the .NET language-server tests in CI.

The extension depends on a .NET runtime for FScript.LanguageServer. It requests runtime acquisition through the VS Code .NET Install Tool integration (ms-dotnettools.vscode-dotnet-runtime) and falls back to dotnet from PATH when needed.

Release

The extension is published on tag pushes only, to both:

  • VS Code Marketplace
  • Open VSX

Release checklist:

  1. Update vscode-fscript/package.json version.
  2. Update root CHANGELOG.md (the extension changelog points to this file).
  3. Commit and push.
  4. Push tag vX.Y.Z matching package.json version.

The CI workflow validates that tag version and extension version are identical before publishing.

Settings

  • fscript.lsp.enabled: enable/disable LSP features.
  • fscript.inlayHints.enabled: toggle inlay hints from the language server.
  • fscript.server.path: optional custom path to FScript.LanguageServer.dll.
  • fscript.server.logLevel: requested server log level (error, warn, info, debug).
  • fscript.repl.command: shell command used to start REPL in the extension terminal. Default is auto (prefer local workspace CLI via dotnet run, then fallback to fscript).

Commands

  • FScript: Open REPL: opens (or reuses) an FScript REPL terminal and starts REPL.
  • FScript: Send Selection to REPL: sends current selection to the REPL terminal, preserving single top-level let bindings for later REPL use.
  • FScript: Execute Current Script in REPL: sends full active .fss document to the REPL terminal as one atomic block.
  • FScript: Show Language Server Output: opens language server logs.
  • FScript: View AST: renders AST JSON from the active file.
  • FScript: View Inferred AST: renders inferred AST JSON from the active file.

Logs and Status

  • Run command: FScript: Show Language Server Output to open server logs.
  • A status-bar item shows server lifecycle:
    • starting... spinner during initialization
    • FScript with check mark when ready
    • error indicator when startup fails

The extension starts the language server with one of these strategies:

  1. Custom path from fscript.server.path (if configured)
  2. Packaged server: server/FScript.LanguageServer.dll
  3. Local development fallback: builds ../src/FScript.LanguageServer/FScript.LanguageServer.csproj and runs bin/Debug/net10.0/FScript.LanguageServer.dll

Map annotations use postfix forms such as string map[int] and string map[Priority]. String-keyed maps appear as string map, including when annotated with map[string]. Hover and inlay hints preserve inferred key types.

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