magequery LSP
Magento 2 wiring answers from magequery: doctor diagnostics, go-to-definition and hover in di.xml/events.xml, reverse-DI references.
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 magequery LSP. The extension's id is magequery-lsp.
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.
magequery LSP for Zed
Live on the Zed extension registry as magequery LSP (magequery-lsp) — install it from
zed: extensions in the command palette.
Magento 2 wiring answers inside Zed, powered by the
magequery language server: doctor
diagnostics as you save, go-to-definition and hover on class names in
di.xml/events.xml/webapi.xml, reverse-DI find-references.
The server attaches to the PHP and XML languages (install those extensions), running alongside the language's primary server. Open buffers overlay the checkout, so diagnostics and answers follow your unsaved edits as you type.
Completions are context-aware: class/virtual-type names, event names, config paths, ACL ids, module names, and db_schema tables, in both config XML and PHP strings.
Plugin indicators render as inlay hints (« 7 plugin(s) » at the end of an
intercepted method's signature, → Save::execute() on a plugin's interception
methods — hover the hint for the breakdown). Enable them in Zed's settings:
"inlay_hints": { "enabled": true }
Rename rewrites an ACL resource id, event name, or layout block name across the
config XML and PHP string literals (dispatch(), isAllowed()) — the identifiers a
PHP server treats as opaque strings. Class/config-path/template renames are left to your
PHP server / a file rename on purpose.
Server binary
magequery from PATH when present; otherwise the extension downloads the current
GitHub release for your platform automatically.
Development
Install as a dev extension: zed: install dev extension from the command palette,
pointing at this directory. Zed compiles the WASM shim with your local Rust toolchain,
targeting wasm32-wasip2 — install that target first or the compile fails
("failed to compile Rust extension"):
rustup target add wasm32-wasip2
License
This extension shim is MIT-licensed (the Zed extension registry requires a license from its allowlist, which excludes the repository's EUPL-1.2). The magequery binary the extension downloads and runs remains EUPL-1.2.
Publishing
Zed extensions are distributed via a PR to
zed-industries/extensions. That registration
is done — this repository is a submodule at extensions/magequery-lsp (the directory must be
named after the extension id) with an extensions.toml entry keyed [magequery-lsp] and
path = "editors/zed" (monorepo layout):
[magequery-lsp]
submodule = "extensions/magequery-lsp"
path = "editors/zed"
version = "0.1.0"
Each subsequent release is another PR there: bump version in both that entry and
extension.toml, and point the submodule at the new commit.