Updated github readme

This commit is contained in:
Alexandros Naskos 2021-03-30 01:56:09 +03:00
parent b417e64e10
commit c7e55b82e9
No known key found for this signature in database
GPG Key ID: 02BF2E72B0EA32D2

91
.github/README.md vendored
View File

@ -1,12 +1,10 @@
![Zig Language Server](./assets/zls.svg) # Zig Language Server
![CI](https://github.com/zigtools/zls/workflows/CI/badge.svg)
![Zig Tools](./assets/zigtools.svg)
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). 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).
<!-- omit in toc --> <!-- omit in toc -->
## Table Of Contents ## Table Of Contents
- [Installation](#installation) - [Installation](#installation)
- [Build Options](#build-options) - [Build Options](#build-options)
- [Configuration Options](#configuration-options) - [Configuration Options](#configuration-options)
@ -16,6 +14,7 @@ Zig Language Server, or `zls`, is a language server for Zig. The Zig wiki states
- [Kate](#kate) - [Kate](#kate)
- [Neovim/Vim8](#neovimvim8) - [Neovim/Vim8](#neovimvim8)
- [Emacs](#emacs) - [Emacs](#emacs)
- [Doom Emacs](#doom-emacs)
- [Related Projects](#related-projects) - [Related Projects](#related-projects)
- [License](#license) - [License](#license)
@ -25,6 +24,26 @@ Installation starts with downloading an official release from the [Releases page
See [Downloading and Building ZLS](https://github.com/zigtools/zls/wiki/Downloading-and-Building-ZLS) on the Wiki, or the page about [using ZLS with Visual Studio Code](https://github.com/zigtools/zls/wiki/Installing-for-Visual-Studio-Code) for a guide to help get `zls` running in your editor. See [Downloading and Building ZLS](https://github.com/zigtools/zls/wiki/Downloading-and-Building-ZLS) on the Wiki, or the page about [using ZLS with Visual Studio Code](https://github.com/zigtools/zls/wiki/Installing-for-Visual-Studio-Code) for a guide to help get `zls` running in your editor.
### Installing binaries
#### MacOS
You can install the latest release into `$HOME/zls` using e.g.:
```sh
brew install xz
mkdir $HOME/zls && cd $HOME/zls && curl -L https://github.com/zigtools/zls/releases/download/0.1.0/x86_64-macos.tar.xz | tar -xJ --strip-components=1 -C .
```
#### Linux
You can install the latest release into `$HOME/zls` using e.g.:
```
sudo apt install xz-utils
mkdir $HOME/zls && cd $HOME/zls && curl -L https://github.com/zigtools/zls/releases/download/0.1.0/x86_64-linux.tar.xz | tar -xJ --strip-components=1 -C .
```
### From Source ### From Source
Building `zls` is very easy. You will need [a build of Zig master](https://ziglang.org/download/) to build zls. Building `zls` is very easy. You will need [a build of Zig master](https://ziglang.org/download/) to build zls.
@ -65,6 +84,7 @@ The following options are currently available.
| `build_runner_cache_path` | `?[]const u8` | `null` | Path to a directroy that will be used as zig's cache when running `zig run build_runner.zig ...`. `null` is equivalent to `${KnownFloders.Cache}/zls` | | `build_runner_cache_path` | `?[]const u8` | `null` | Path to a directroy that will be used as zig's cache when running `zig run build_runner.zig ...`. `null` is equivalent to `${KnownFloders.Cache}/zls` |
| `enable_semantic_tokens` | `bool` | `true` | Enables semantic token support when the client also supports it. | | `enable_semantic_tokens` | `bool` | `true` | Enables semantic token support when the client also supports it. |
| `operator_completions` | `bool` | `true` | Enables `*` and `?` operators in completion lists. | | `operator_completions` | `bool` | `true` | Enables `*` and `?` operators in completion lists. |
| `skip_std_references` | `bool` | `false` | When true, skips searching for references in std. Improves lookup speed for functions in user's code. Renaming and go-to-definition will continue to work as is.
## Features ## Features
@ -141,7 +161,26 @@ Install the `zls-vscode` extension from [here](https://github.com/zigtools/zls-v
} }
``` ```
#### YouCompleteMe
- Install YouCompleteMeFrom [here](https://github.com/ycm-core/YouCompleteMe.git).
- Add these lines to your vimrc:
```vim
"ensure zig is a recognized filetype
autocmd BufNewFile,BufRead *.zig set filetype=zig
let g:ycm_language_server =
\ [
\{
\ 'name': 'zls',
\ 'filetypes': [ 'zig' ],
\ 'cmdline': [ '/path/to/zls_executable' ]
\ }
\ ]
```
#### nvim-lspconfig #### nvim-lspconfig
Requires Nvim 0.5 (HEAD)! Requires Nvim 0.5 (HEAD)!
- Install nvim-lspconfig from [here](https://github.com/neovim/nvim-lspconfig). - Install nvim-lspconfig from [here](https://github.com/neovim/nvim-lspconfig).
@ -178,6 +217,16 @@ set completeopt=menuone,noinsert,noselect
let g:completion_enable_auto_popup = 1 let g:completion_enable_auto_popup = 1
``` ```
#### LanguageClient-neovim
- Install the LanguageClient-neovim from [here](https://github.com/autozimu/LanguageClient-neovim)
- Edit your neovim configuration and add `zls` for zig filetypes:
```vim
let g:LanguageClient_serverCommands = {
\ 'zig': ['~/code/zls/zig-cache/bin/zls'],
\ }
```
### Emacs ### Emacs
@ -185,16 +234,35 @@ let g:completion_enable_auto_popup = 1
- [zig mode](https://github.com/ziglang/zig-mode) is also useful - [zig mode](https://github.com/ziglang/zig-mode) is also useful
```elisp ```elisp
(require 'lsp) ;; Setup lsp-mode as desired.
(add-to-list 'lsp-language-id-configuration '(zig-mode . "zig")) ;; See https://emacs-lsp.github.io/lsp-mode/page/installation/ for more information.
(lsp-register-client (require 'lsp-mode)
(make-lsp-client
:new-connection (lsp-stdio-connection "<path to zls>") ;; Either place zls in your PATH or add the following:
:major-modes '(zig-mode) (setq lsp-zig-zls-executable "<path to zls>")
:server-id 'zls)) ```
### Doom Emacs
- Enable the `lsp` module
- Install the [zig-mode](https://github.com/ziglang/zig-mode) package (add `(package! zig-mode)` to your `packages.el` file
```elisp
(use-package! zig-mode
:hook ((zig-mode . lsp-deferred))
:custom (zig-format-on-save nil)
:config
(after! lsp-mode
(add-to-list 'lsp-language-id-configuration '(zig-mode . "zig"))
(lsp-register-client
(make-lsp-client
:new-connection (lsp-stdio-connection "<path to zls>")
:major-modes '(zig-mode)
:server-id 'zls))))
``` ```
## Related Projects ## Related Projects
- [`sublime-zig-language` by @prime31](https://github.com/prime31/sublime-zig-language) - [`sublime-zig-language` by @prime31](https://github.com/prime31/sublime-zig-language)
- Supports basic language features - Supports basic language features
- Uses data provided by `src/data` to perform builtin autocompletion - Uses data provided by `src/data` to perform builtin autocompletion
@ -204,4 +272,5 @@ let g:completion_enable_auto_popup = 1
- Provides API to access known folders on Linux, Windows and Mac OS - Provides API to access known folders on Linux, Windows and Mac OS
## License ## License
MIT MIT