Skip to content

Type to search extensions

LiG

v0.1.2

LiG editor themes: Light, Dark, Light Paper and Dark Paper

Updated 4 days ago
23 downloads 0 stars Repository ↗
zedext main
// Load settings, retrying a few times
fn load_config(path: &str) -> Result<Config, Error> {
let retries = 3;
let text = fs::read_to_string(path)?;
let name = "settings.json";
Ok(Config { text, retries, name })
}

LiG for Zed

Zed is an editor port: the adapter covers editor chrome, syntax, diagnostics, Git states, player selections and the integrated terminal. It shares the same core/spec.json and style intent as Neovim and VS Code. This is the independent zed-theme-LiG distribution repository, generated by LiG. It is not yet listed in the Zed extension store.

Install

Clone the repository, optionally pinned to this release:

git clone --branch v0.1.3 https://github.com/0froq/zed-theme-LiG.git

In Zed run zed: install dev extension and select the cloned directory containing extension.toml. Then use theme selector: toggle to choose LiG Light, LiG Dark, LiG Light Paper or LiG Dark Paper. The repository contains only a theme extension; no language server or executable code is included. Zed documents this workflow in Developing Extensions.

Alternatively, download lig-zed-extension.zip from this repository's releases, extract it and select that directory. Install only one copy of the extension.

Local theme files

For a file-only installation, use the JSON files in themes/, or download a single lig-light.json, lig-dark.json, lig-light-paper.json or lig-dark-paper.json from the LiG site. The site's lig-zed-all.zip contains all four local-theme files, rather than the extension package.

Copy the JSON files into ~/.config/zed/themes/ on macOS/Linux, or %USERPROFILE%\AppData\Roaming\Zed\themes\ on Windows. Keep filenames distinct, then reload Zed and use theme selector: toggle to choose LiG Light, LiG Dark, LiG Light Paper or LiG Dark Paper.

Optional system appearance switching in Zed's existing settings:

{
  "theme": {
    "mode": "system",
    "light": "LiG Light Paper",
    "dark": "LiG Dark Paper"
  }
}

Merge only the theme selection after approval; keep other settings. Back up conflicting files first. Remove the added theme files and restore the previous theme value to roll back.

Update and rollback

For a repository installation, fetch tags and check out the chosen release, then reload the dev extension in Zed. To roll back, check out the previous tag and reload. To uninstall, remove the dev extension through Zed's Extensions page and restore your previous theme setting. For local files, replace only LiG's JSON files after backing them up; remove them to uninstall. Do not install both the extension and local copies with the same theme names.

Source and reproducibility

Do not edit generated themes here. Change the palette or adapter in LiG's source snapshot, then run pnpm ports:generate there. dist/ports/zed-extension/ contains this repository payload and lig-zed-extension.zip. Publish a new repository commit and release when updating the generated output.

lig-build.json records the source ref, compiler/design versions, exact input SHA-256 and checksums for every payload file. Website local themes and repository themes are checked for byte equality. Run python3 scripts/verify.py to check this distribution, or python3 scripts/sync.py /path/to/lig/dist/ports/zed-extension to import a new verified compiler payload. Distribution is static; installing it does not fetch tokens or require Node.js.

Scope and verification

The adapter emits Zed's v0.2.0 theme format. Local paths and selection follow Zed's theme documentation. It does not install languages, modify capture queries, enable semantic tokens, change fonts/keybindings or configure external tools.

Zed's native capture names are mapped explicitly to LiG's shared roles. Language queries and optional semantic tokens can classify the same code differently from Neovim/VS Code. The theme format cannot express every shared style modifier (for example link underlines); supported foreground, italic and weight intent is preserved. Dim terminal slots reuse the normal ANSI colors; bright slots retain the shared emphasis colors.

Ordinary syntax inherits the editor's buffer_font_weight; the theme does not force a regular weight. Only headings (title) and strong emphasis (emphasis.strong) explicitly use weight 700.

Native attribute captures use neutral property ink so HTML/Vue attribute names remain gray while tags stay green. Zed's capture vocabulary also reuses attribute for annotations in some languages; those captures share the neutral fallback. Shared muted syntax ink is quieter than UI subtle text in both light and dark modes.

Capture parity with Neovim

The adapter audits JavaScript, TypeScript, TSX, Vue, HTML, Python, Rust, Lua, JSON and Markdown. The capture inventory and semantic examples pin upstream query revisions and hashes; data contracts compare shared roles and generated foreground/italic/weight intent against Neovim in all four variants. These checks cover the recorded query snapshots, not every language, future extension update or active LSP result.

Zed accepts dotted theme keys and resolves the longest matching capture prefix. Specific semantics must be mapped before they fall back to a broader category:

Native Zed capture Shared intent / Neovim counterpart
attribute, attribute.jsx Gray template property / tag.attribute
function.decorator, attribute.builtin Green annotation / attribute
function.kwargs, Lua parameter Green parameter binding / variable.parameter
function.builtin, function.special Builtin function or macro / function.builtin, function.macro
function.method.constructor Constructor / constructor
keyword.operator Neutral operator / keyword.operator
keyword.operator.regex Escape/reference ink / character.special
Rust lifetime Green annotation / attribute
tag.jsx Intrinsic JSX tag / tag.builtin
text, none Ordinary prose / none

Some query distinctions cannot be recovered by a theme alone:

  • JS/TS/TSX queries reuse function or function.method for both declarations and calls. Their generic fallback uses call ink; separately classified definitions retain definition ink.
  • keyword.control combines control flow, return, async and exception words; some languages put all keywords under keyword. The adapter keeps neutral keyword ink rather than coloring every conditional as an action.
  • Rust annotations and HTML/Vue attributes can share bare attribute. Python's specific decorator captures can be green, but bare annotations retain the neutral fallback required by templates.
  • Lua table braces and constructor identifiers can share bare constructor. Without a language-specific capture, the theme cannot apply Neovim's constructor.lua punctuation override safely.
  • Embedded-language queries, overlapping captures and LSP semantic tokens can classify or override the same source differently. This theme does not replace queries or configure semantic-token behavior.

For manual comparison, use a Vue/TSX template with tags and attributes, Python decorators and keyword arguments, a Lua function parameter, a Rust lifetime/macro, JSON keys/string values, and Markdown prose/headings. Compare all four variants with Neovim; also check that regular syntax still inherits the configured font weight. Report the active capture and language-extension version when a difference remains.

Data checks validate token provenance, all 16 ANSI slots, appearance metadata, artifact checksums and ZIP contents. They do not establish native visual acceptance. Manually check all four variants in Zed: editor text and syntax, selections/cursor, completion menus, panels/tabs, diagnostics/Git colors and ANSI output. Zed settings or theme overrides may take precedence.

Store publishing

The theme extension ID is lig-theme. Stable GitHub Releases trigger registry synchronization after the first human-reviewed registration. Follow PUBLISHING.md for manual first submission and later release hooks; a successful build alone does not mean the Zed store has updated.

ZedExt An unofficial community project. Not affiliated with Zed Industries.

Data from Zed’s extension registry and GitHub · updated