← All extensions

Marko

v0.2.0 · by Dylan Piercey · added 6 November 2026

Marko language support: syntax highlighting, embedded languages, and the Marko language server.

LanguagesLanguage servers

How to install

With Forge Super installed, the button above opens the app on this extension, where you press Install. Nothing is installed until you do.

You can also open the Extensions panel in the app and search for Marko. The extension's id is marko.

Don't have Forge Super yet? Download it here.

README

From the extension's repository, written by its authors and not by Mentenaz. See the source.

Marko for Zed

Marko language support for Zed: syntax highlighting, embedded-language injections (TypeScript/CSS/SCSS), bracket matching, outline, and the Marko language server. It also registers @marko/ts-plugin so .marko imports resolve with types inside .ts/.tsx files.

The grammar is the @marko/tree-sitter parser, fetched and compiled by Zed from the [grammars.marko] entry in extension.toml.

Layout

extension.toml          # manifest: [grammars.marko] + [language_servers.marko]
Cargo.toml              # Rust/wasm extension crate
src/lib.rs              # installs @marko/language-server and launches it --stdio
languages/marko/
  config.toml           # filetype, comments, brackets
  highlights.scm        # copy of the grammar repo's queries/
  injections.scm        # copy of the grammar repo's queries/
  brackets.scm          # Zed-specific (@open/@close), maintained here
  outline.scm           # Zed-specific (@item/@name), maintained here

The language server (@marko/language-server) is installed from npm on demand into the extension's working directory and run with Zed's Node; it bundles its own TypeScript, so no project setup is required. The extension pins the major version of the server and of @marko/ts-plugin (3.x) and picks up the newest release within it once a session, since a new major may need the extension to change. For embedded highlighting, install Zed's TypeScript/CSS/SCSS languages.

Local development

To build the grammar from a local checkout instead of GitHub, point [grammars.marko] at it with a file:// URL and a committed rev (see the comment in extension.toml). Then, in Zed, run zed: install dev extension and select this directory; Zed compiles the Rust extension to wasm and builds the grammar. Open a .marko file to exercise it, and run zed --foreground from a terminal to surface grammar build, query, and language-server errors.

highlights.scm and injections.scm are copies of the grammar repo's tool-agnostic queries/; refresh them when the grammar changes:

cp ../tree-sitter/queries/*.scm languages/marko/

brackets.scm (delimiter pairs, @open/@close) and outline.scm (@item/@name) use Zed-only conventions and have no consumer outside Zed, so they live here rather than in the grammar repo.