Marko
Marko language support: syntax highlighting, embedded languages, and the Marko language server.
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.