zls/README.md

66 lines
4.2 KiB
Markdown
Raw Normal View History

2020-05-15 17:44:49 +01:00
![Zig Language Server](https://raw.githubusercontent.com/zigtools/zls/master/.assets/zls.svg)
2020-04-24 23:19:03 +01:00
2020-05-14 15:07:14 +01:00
![CI](https://github.com/zigtools/zls/workflows/CI/badge.svg)
![Zig Tools](https://img.shields.io/static/v1?label=zigtools&message=for%20all%20of%20ziguanity&color=F7A41D&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAEDklEQVR4nOzYbUwbZRwA8Oe53vXuSltaa2lxc+KKBGcyBhLDgH3SiSMZ++TQRT8uJH4x8S0myL6YmUjUbIkfZvZtX3TJlAwjiYImxuBwa1hEtxAcQ8GFQrtBWXvXu17vTH1ux1lv99IeLcn6//Rw9/D0l+ft/28xsC2jyrISVZaV2KYsfCsGxSDYs5OIhPCAB0tlpFt3hF//yqYyUsVYrQ3Eaz2ew0/Tta7/rENOlCZnuTMTqZHLrJlxoF2ggAf7+FVff2eNfrf+U/HRaMZwNHtmqzGMf/NucNfDxqNFQqY+0QZWYxifGKoL1TrQnzlRGrvKXphio/M8ANLEUKjeL7+aW86e+5EpB4vEwRevBxTTtSX++Gd3rv6ZBQCEfdi3g3VqU8/J1dspsRysd454n3rUidq//MH1Dcc3WEkxNdUTalNsXTYFPNgr3TULcWE0qn0CStryXhoufPqIi8wfusWE0DEYW0sbm9Rvj52Oj1zROAElXacvd7mQCQAwdH4dmdwUNGkCAAwc9GiOXBKrp4VGjcWEcGFKXo6B59wmTQCA7mbSTWmsWEmstsflXfXdTEa8d4e375YfMpx46AM9EwDAgcGWXYSdLAyCkE8+Zdf/5pXnqxs51HCR2Pv9PgxqmJbXckr/HQGHnSx1cNnN9tnvU5msPHXHumvODjy0w194AvqGV5X+bkrDUDxLlPI3J2rXujb3x+9LwoufxNWymY/qC3Ybw22m7cTdnJ0sAMD8ioAaHU+Q6ucTv3FqmXJalRPQHnEqnW/GBJtZk7Mcajy/l/bSUEdWcCqP7pczejItXr+lwSr+lg/7sK5meZIoJ2x5jPhpli+QHTixcvxZd73fcfkGd2Y8hUqu1gbihX0U6vP1NCNqlWFF3vL/v8c7BmMsb/yPXhr+cKJOyVed78VQAi2IYhZRM7eYMflr4MjbQcV0/ue0pqkYln6+o53wwJNkwT5Dl9zR/fTUyXBnk7zuiwnhzXPr9/sUa3vLZA7OZKXxGfbSHJ9kRIqAe3YSB/dS6iIxsZHrG47rFDkW9pb5ukA/ri3xL52+fUPrXlDC7GzZYmI48dTY3eGLG5weyTTLkmluOTs5y3U1k5EQ7vg3I64kc9F5fnwm8/lkGhWJhmHMsmpSvy06DE5iRUwGrEqZ9FgYBF++EayISY91pJ1qu1dnltmkx+ptlev0JCOW2aTH8rvlWvbKPFdmkx5rNSkXjZ1NZGMYL6dJL/kc2kd99VYQtRlOvDTHt0ecys9DW2rKfyO634ubK0J3M9kQzM8TgcPdIZwiYHlMeiwJgNEo+0yjE8mUmF7gD38Y31KTcQWBQdDbSvW20XVex1paHJtmL0ZZzTL3gYht+ktzlWUlqiwrUWVZiX8CAAD//7jyYLmjqPd4AAAAAElFTkSuQmCC)
2020-05-07 18:54:58 +01:00
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](https://github.com/search?q=zig+language+server).
2020-04-24 23:19:03 +01:00
2020-05-15 05:01:54 +01:00
<!-- omit in toc -->
## Table Of Contents
2020-05-15 05:00:44 +01:00
- [Installation](#installation)
- [Build Options](#build-options)
- [Configuration Options](#configuration-options)
- [Usage](#usage)
- [VSCode](#vscode)
- [Related Projects](#related-projects)
- [License](#license)
2020-04-24 23:19:03 +01:00
## Installation
2020-05-07 19:02:59 +01:00
Installing `zls` is pretty simple;
2020-05-07 18:54:58 +01:00
2020-04-24 23:19:03 +01:00
```bash
2020-05-15 17:44:49 +01:00
git clone https://github.com/zigtools/zls
2020-04-24 23:19:03 +01:00
cd zls
zig build
```
2020-05-07 18:54:58 +01:00
### Build Options
2020-05-18 17:56:43 +01:00
| 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.
2020-05-07 18:54:58 +01:00
2020-04-24 23:19:03 +01:00
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](https://github.com/ziglang/zig/pull/5167) after 0.6.0 was released.*
2020-05-15 05:00:44 +01:00
### Configuration Options
You can configure zls by providing a zls.json file in the same directory as the executable.
The following options are currently available.
| Option | Type | Default value | What it Does |
| --- | --- | --- | --- |
| `enable_snippets` | `bool` | `true` | Enables snippet completion, set to false for compatibility with language clients that do not support snippets (such as ale). |
2020-05-14 13:09:27 +01:00
| `zig_lib_path` | `?[]const u8` | `null` | zig library path, used to analyze std library imports. |
2020-05-15 20:10:53 +01:00
| `warn_style` | `bool` | `false` | Enables warnings for style *guideline* mismatches |
2020-04-24 23:19:03 +01:00
## Usage
2020-05-07 18:54:58 +01:00
`zls` is in its early stages, with a full analysis/completion engine coming soon, but it is still usable.
2020-04-24 23:19:03 +01:00
### VSCode
2020-05-15 05:00:44 +01:00
Install the `zls-vscode` extension from [here](https://github.com/zigtools/zls-vscode/releases).
2020-05-07 18:54:58 +01:00
## Related Projects
- [`sublime-zig-language` by @prime31](https://github.com/prime31/sublime-zig-language)
- Supports basic language features
- Uses data provided by `src/data` to perform builtin autocompletion
2020-05-15 05:00:44 +01:00
- [`zig-lsp` by @xackus](https://github.com/xackus/zig-lsp)
- Inspiration for `zls`
2020-05-07 18:54:58 +01:00
## License
MIT