Giter VIP home page Giter VIP logo

zls's Introduction

Zig Language Server

CI Zig Tools

Zig Language Server, or zls, is a language server for Zig. The Zig wiki states that "The Zig community is decentralized" and "There is no concept of 'official' or 'unofficial'", so instead of calling zls unofficial, and I'm going to call it a cool option, one of many.

Table Of Contents

Installation

Installing zls is pretty simple;

git clone --recurse-submodules https://github.com/zigtools/zls
cd zls
zig build

# To configure ZLS:
zig build config

Build Options

Option Type Default Value What it Does
-Ddata_version string (master or 0.6.0) 0.6.0 The data file version. This selects the files in the src/data folder that correspond to the Zig version being served.

Then, you can use the zls executable in an editor of your choice that has a Zig language server client!

Note: zls itself must be built using the master branch of zig currently due to a bug in std.json which was fixed after 0.6.0 was released, as well as various parser changes that have happened since.

Configuration Options

You can configure zls by providing a zls.json file.
zls will look for a zls.json configuration file in multiple locations with the following priority:

  • In the folders open in your workspace (this applies for files in those folders)
  • In the local configuration folder of your OS (as provided by known-folders)
  • In the same directory as the executable

The following options are currently available.

Option Type Default value What it Does
enable_snippets bool false Enables snippet completion, set to false for compatibility with language clients that do not support snippets (such as ale).
zig_lib_path ?[]const u8 null zig library path, e.g. /path/to/zig/lib/zig, used to analyze std library imports.
zig_exe_path ?[]const u8 null zig executable path, e.g. /path/to/zig/zig, used to run the custom build runner. If null, zig is looked up in PATH. Will be used to infer the zig standard library path if none is provided.
warn_style bool false Enables warnings for style guideline mismatches
build_runner_path ?[]const u8 null Path to the build_runner.zig file provided by zls. This option must be present in one of the global configuration files to have any effect. null is equivalent to ${executable_directory}/build_runner.zig

Usage

zls will supercharge your Zig programming experience with autocomplete, function documentation, and more! Follow the instructions for your specific editor below:

VSCode

Install the zls-vscode extension from here.

Sublime Text 3

  • Install the LSP package from here or via Package Control.
  • Add this snippet to LSP's user settings:
{
    "clients": {
        "zig":{
            "command": ["zls"],
            "enabled": true,
            "languageId": "zig",
            "scopes": ["source.zig"],
            "syntaxes": ["Packages/Zig/Syntaxes/Zig.tmLanguage"]
        }
    }
}

Kate

  • Enable LSP client plugin in Kate settings.
  • Add this snippet to LSP client's user settings (e.g. /$HOME/.config/kate/lspclient) (or paste it in LSP client's GUI settings)
{
    "servers": {
        "zig": {
            "command": ["zls"],
            "url": "https://github.com/zigtools/zls",
            "highlightingModeRegex": "^Zig$"
        }
    }
}

Neovim/Vim8

  • Install the CoC engine from here.
  • Issue :CocConfig from within your Vim editor, and the following snippet:
{
   "lanuageserver": {
       "zls" : {
           "command": "command_or_path_to_zls",
           "filetypes": ["zig"]
       }
   }
}

Related Projects

License

MIT

zls's People

Contributors

alexnask avatar superauguste avatar sergeeeek avatar vexu avatar kubkon avatar daurnimator avatar markfirmware avatar data-man avatar joachimschmidt557 avatar firefox317 avatar iansimonson avatar ifreund avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.