OxL Справочник OxL
РусскийEnglish

Zed

Zed подключает языки и серверы через расширения; отдельного расширения OxL в каталоге Zed нет, поэтому его ставят как «dev-расширение» из каталога. Структура:

sh
oxl-zed/
  extension.toml
  Cargo.toml
  src/lib.rs
  languages/oxl/config.toml
  languages/oxl/highlights.scm        # копия tree-sitter-oxl/queries/highlights.scm
toml
# extension.toml
id = "oxl"
name = "OxL"
version = "0.1.0"
schema_version = 1
authors = ["you"]
description = "OxL language support"

[grammars.oxl]
repository = "file:///opt/oxl-1.0.0-beta/share/oxl/tree-sitter-oxl"   # git-репозиторий или локальный путь
rev = "HEAD"

[language_servers.oxl-lsp]
name = "OxL language server"
languages = ["OxL"]
toml
# languages/oxl/config.toml
name = "OxL"
grammar = "oxl"
path_suffixes = ["oxl"]
line_comments = ["// ", "/// "]
tab_size = 2
brackets = [
  { start = "{", end = "}", close = true, newline = true },
  { start = "(", end = ")", close = true, newline = false },
  { start = "[", end = "]", close = true, newline = false },
  { start = "\"", end = "\"", close = true, newline = false, not_in = ["string"] },
]
toml
# Cargo.toml
[package]
name = "oxl-zed"
version = "0.1.0"
edition = "2021"

[lib]
path = "src/lib.rs"
crate-type = ["cdylib"]

[dependencies]
zed_extension_api = "0.3"
rust
// src/lib.rs
use zed_extension_api as zed;

struct Oxl;

impl zed::Extension for Oxl {
    fn new() -> Self { Oxl }

    fn language_server_command(
        &mut self,
        _id: &zed::LanguageServerId,
        worktree: &zed::Worktree,
    ) -> zed::Result<zed::Command> {
        let path = worktree.which("oxl").ok_or_else(|| "`oxl` is not in PATH".to_string())?;
        Ok(zed::Command { command: path, args: vec!["lsp".into()], env: Default::default() })
    }
}

zed::register_extension!(Oxl);

Установка: zed: install dev extension (палитра команд) и выбор каталога oxl-zed. Нужны Rust с целью wasm32-wasip1. Форматирование по сохранению: в settings.json — "languages": { "OxL": { "format_on_save": "on", "inlay_hints": { "enabled": true } } }. Параметры сервера: "lsp": { "oxl-lsp": { "initialization_options": { "debounceMs": 150 } } }.

Отладчик Zed работает по DAP; oxl dap указывается как команда адаптера в .zed/debug.json ({ "adapter": "...", "request": "launch", "program": "." } — формат зависит от версии Zed, см. отладка).