2020-05-07 18:54:58 +01:00

2020-04-24 23:19:03 +01:00
2020-05-14 15:07:14 +01:00


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
git clone https://github.com/SuperAuguste/zls
cd zls
zig build
```
2020-05-07 18:54:58 +01:00
### Build Options
| Option | Type | What it Does |
| --- | --- | --- |
| `-Ddata_version` | `string` | The data file version. Any files in the `src/data` file that correspond with the Zig version you want the language server to build for (0.6.0, master).
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!
2020-05-15 05:00:44 +01:00
### Configuration Options
2020-05-09 19:45:13 +01:00
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-09 19:45:13 +01:00
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