• Sign In



  • Categories

    Extension Details



    Readme

    Zig for Nova

    Zig language support – ZLS, LLDB, Tree-Sitter grammar

    Requirements

    • Zig installed and on PATH (or configured in extension preferences)
    • ZLS* for language intelligence
    • LLDB DAP* for debugging (discovered automatically via xcrun or PATH; install the Xcode Command Line Tools if absent: xcode-select --install)

    * optional but recommended for full experience

    Why

    A personal project to learn Zig without leaving Nova and without giving up the comfort of language server and debugging features.

    Features

    Editing

    • Syntax highlighting for .zig and .zon
    • Code folding for blocks, declarations, and control-flow expressions
    • Document symbols (outline, breadcrumbs, Go to Symbol)
    • Diagnostics, completion, hover, go to definition, find references, select all references, formatting (all via ZLS)
    • Inline compiler errors from zig build

    Tasks

    • Zig Package: build and run a Zig package in the Nova console
    • Zig Package (macOS Terminal): build and run in the external Terminal app for interactive CLIs
    • Zig Debug: build in Debug mode and launch under the debugger, with configurable console and stop-on-entry
    • A clean action on every runnable template that removes .zig-cache, zig-cache, and zig-out

    Debugging

    • Breakpoint support in Zig source files
    • LLDB-based debug adapter, auto-discovered via xcrun or PATH

    Configuration

    Global settings live under Nova Preferences > Extensions > Zig.
    Per-workspace overrides live under Project Settings > Zig and take precedence.

    Tooling

    Paths to the zig, zls, and lldb-dap executables. Leave any blank to discover from PATH.

    Language Server

    • Enable or disable ZLS
    • Allow ZLS to run its build/check on save
    • Log ZLS traffic to the Extension Console (for troubleshooting)

    Troubleshooting

    A large part of the file turns red after one error

    The parser may report a broad recovery range when it hits an incomplete expression (for example, MyError.), and Nova highlights that entire range. Fix the first syntax error shown and the overlay should narrow to the real error locations.

    Development

    The Tree-sitter parser is built from the vendored grammar snapshot under vendor/tree-sitter-zig. The pinned upstream commit is recorded in vendor/tree-sitter-zig/VENDORING.md.

    Rebuild the parser dylib:

    ./Scripts/build-parser.sh
    

    Bump the vendored snapshot (and rebuild):

    ./Scripts/update-parser.sh           # upstream HEAD
    ./Scripts/update-parser.sh <ref>     # specific tag, branch, or SHA
    

    Validate the extension bundle:

    /Applications/Nova.app/Contents/SharedSupport/nova extension validate .
    

    Attributions

    The Zig logo is the work of the Zig Software Foundation and is licensed under CC BY-SA 4.0. The zig-debug@2x.png is a derivative of the original logo, improving pixel alignment at 32px size.

    The Tree-sitter grammar for Zig is sourced from github.com/tree-sitter-grammars/tree-sitter-zig.

    Release Notes

    Changelog

    0.1.4 — 2026-05-07

    • Initial release: syntax highlighting, ZLS integration, task templates, and LLDB debugging.

    License

    BSD 2-Clause License

    Copyright 2026 David Czihak

    Redistribution and use in source and binary forms, with or without modification,
    are permitted provided that the following conditions are met:

    1. Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.

    2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and / or other materials provided with the distribution.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.