Simplify install procedure (#764)
* Shrink the README, simplify install procedure * Remove old assets, goodbye cute badge :( * Remove wiki references * Actually describe what this is
This commit is contained in:
parent
88ed500439
commit
40167a5b52
BIN
.github/assets/wiki/extension-in-vscode.png
vendored
BIN
.github/assets/wiki/extension-in-vscode.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 51 KiB |
Binary file not shown.
Before Width: | Height: | Size: 42 KiB |
1
.github/assets/zigtools.svg
vendored
1
.github/assets/zigtools.svg
vendored
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="181" height="20" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" clip-rule="evenodd" viewBox="0 0 181 20"><path fill="url(#1)" d="M70 0H3C1.343 0 0 1.343 0 3v14c0 1.657 1.343 3 3 3h67V0z"/><path fill="url(#2)" d="M181 3.048c0-.808-.321-1.584-.893-2.155C179.536.321 178.76 0 177.952 0H70v20h107.952c.808 0 1.584-.321 2.155-.893.572-.571.893-1.347.893-2.155V3.048z"/><path fill="none" stroke="#f5a300" stroke-width="1.6" d="M18.783 10.473c1.421-1.42 1.785-3.599.903-5.405l-3.141 3.135c-.232.232-.614.232-.845 0l-1.338-1.335c-.113-.112-.176-.264-.176-.423 0-.158.063-.31.176-.423l3.14-3.134c-1.809-.874-3.987-.508-5.41.909-1.31 1.31-1.733 3.273-1.078 5.005l-5.552 5.54c-.355.355-.555.837-.555 1.338 0 .502.2.984.555 1.338l.002.002c.751.749 1.966.75 2.717.001l5.513-5.495c1.751.691 3.755.276 5.089-1.053z"/><text x="23.775" y="14.564" fill="#010101" fill-opacity=".3" font-family="'Verdana',sans-serif" font-size="10.833">zigtools</text><text x="74.548" y="14.544" fill="#010101" fill-opacity=".3" font-family="'Verdana',sans-serif" font-size="10.833">for all of ziguanity</text><text x="23.775" y="13.303" fill="#fff" font-family="'Verdana',sans-serif" font-size="10.833">zigtools</text><text x="74.548" y="13.284" fill="#fff" font-family="'Verdana',sans-serif" font-size="10.833">for all of ziguanity</text><defs><linearGradient id="1" x1="0" x2="1" y1="0" y2="0" gradientTransform="matrix(0 20 -20 0 37 0)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#444d56"/><stop offset="1" stop-color="#24292e"/></linearGradient><linearGradient id="2" x1="0" x2="1" y1="0" y2="0" gradientTransform="matrix(0 20 -20 0 104 0)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#e3981e"/><stop offset="1" stop-color="#c77112"/></linearGradient></defs></svg>
|
|
Before Width: | Height: | Size: 1.8 KiB |
1
.github/assets/zls.svg
vendored
1
.github/assets/zls.svg
vendored
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="280" height="143" viewBox="0 0 74 38"><text font-family="Inter,sans-serif" font-size="12.7" font-weight="700"><tspan x="2" y="12" fill="#f7a41d">Zig</tspan><tspan x="2" y="23" fill="#888">Language</tspan><tspan x="2" y="35" fill="#888">Server</tspan></text></svg>
|
|
Before Width: | Height: | Size: 311 B |
253
README.md
253
README.md
@ -1,19 +1,15 @@
|
|||||||
![Zig Language Server](./.github/assets/zls.svg)
|
<img src="https://raw.githubusercontent.com/zigtools/install-zls/main/img/zls-opt.svg" alt="Zig Language Server" width=200>
|
||||||
|
|
||||||
[![CI](https://github.com/zigtools/zls/workflows/CI/badge.svg)](https://github.com/zigtools/zls/actions)
|
[![CI](https://github.com/zigtools/zls/workflows/CI/badge.svg)](https://github.com/zigtools/zls/actions)
|
||||||
![Zig Tools](./.github/assets/zigtools.svg)
|
|
||||||
|
|
||||||
**Need support? Wanna help out? Join our [Discord server](https://discord.gg/5m5U3qpUhk)!**
|
**Need support? Wanna help out? Join our [Discord server](https://discord.gg/5m5U3qpUhk)!**
|
||||||
|
|
||||||
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).
|
The Zig Language Server (zls) is a tool that implements Microsoft's Language Server Protocol for Zig in Zig. In simpler terms: it'll provide you with completions, go-to definition, [etc.](#features) when you write Zig code!
|
||||||
|
|
||||||
<!-- omit in toc -->
|
<!-- omit in toc -->
|
||||||
## Table Of Contents
|
## Table Of Contents
|
||||||
|
|
||||||
- [Installation](#installation)
|
- [Installation](#installation)
|
||||||
- [Installing binaries](#installing-binaries)
|
|
||||||
- [MacOS](#macos)
|
|
||||||
- [Linux](#linux)
|
|
||||||
- [From Source](#from-source)
|
- [From Source](#from-source)
|
||||||
- [Build Options](#build-options)
|
- [Build Options](#build-options)
|
||||||
- [Updating Data Files](#updating-data-files)
|
- [Updating Data Files](#updating-data-files)
|
||||||
@ -21,50 +17,14 @@ Zig Language Server, or `zls`, is a language server for Zig. The Zig wiki states
|
|||||||
- [Per-build Configuration Options](#per-build-configuration-options)
|
- [Per-build Configuration Options](#per-build-configuration-options)
|
||||||
- [`BuildOption`](#buildoption)
|
- [`BuildOption`](#buildoption)
|
||||||
- [Features](#features)
|
- [Features](#features)
|
||||||
- [VS Code](#vs-code)
|
|
||||||
- [Sublime Text](#sublime-text)
|
|
||||||
- [Sublime Text 3](#sublime-text-3)
|
|
||||||
- [Sublime Text 4](#sublime-text-4)
|
|
||||||
- [Kate](#kate)
|
|
||||||
- [Neovim/Vim8](#neovimvim8)
|
|
||||||
- [CoC](#coc)
|
|
||||||
- [YouCompleteMe](#youcompleteme)
|
|
||||||
- [nvim-lspconfig](#nvim-lspconfig)
|
|
||||||
- [LanguageClient-neovim](#languageclient-neovim)
|
|
||||||
- [Emacs](#emacs)
|
|
||||||
- [Doom Emacs](#doom-emacs)
|
|
||||||
- [Spacemacs](#spacemacs)
|
|
||||||
- [Helix](#helix)
|
|
||||||
- [Related Projects](#related-projects)
|
- [Related Projects](#related-projects)
|
||||||
- [Quick Thanks :)](#quick-thanks-)
|
- [Quick Thanks :)](#quick-thanks-)
|
||||||
- [License](#license)
|
- [License](#license)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Installation starts with downloading an official release from the [Releases page](https://github.com/zigtools/zls/releases).
|
<!-- omit in toc -->
|
||||||
Up to date builds from master branch are also available in the [latest successful CI run](https://github.com/zigtools/zls/actions), contained in the `builds` artifact.
|
### [See the `install zls` tool](https://zigtools.github.io/install-zls/) for editor and binary installation instructions.
|
||||||
|
|
||||||
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 zstd
|
|
||||||
mkdir $HOME/zls && cd $HOME/zls && curl -L https://github.com/zigtools/zls/releases/download/0.10.0/x86_64-macos.tar.zst | tar --use-compress-program unzstd -x --strip-components=1 -C . && chmod +x zls
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Linux
|
|
||||||
|
|
||||||
You can install the latest release into `$HOME/zls` using e.g.:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt install zstd
|
|
||||||
mkdir $HOME/zls && cd $HOME/zls && curl -L https://github.com/zigtools/zls/releases/download/0.10.0/x86_64-linux.tar.zst | tar --use-compress-program unzstd -x --strip-components=1 -C .
|
|
||||||
```
|
|
||||||
|
|
||||||
### From Source
|
### From Source
|
||||||
|
|
||||||
@ -77,12 +37,8 @@ zig build -Drelease-safe
|
|||||||
./zig-out/bin/zls --config # Configure ZLS
|
./zig-out/bin/zls --config # Configure ZLS
|
||||||
```
|
```
|
||||||
|
|
||||||
*For detailed building instructions, see the Wiki page about [Cloning With Git](https://github.com/zigtools/zls/wiki/Downloading-and-Building-ZLS#cloning-with-git).*
|
|
||||||
|
|
||||||
#### Build Options
|
#### Build Options
|
||||||
|
|
||||||
<!-- When updating this table, be sure to copy changes to the Wiki page about building from source. -->
|
|
||||||
<!-- If this table grows too large, then delete this one and move it all over to the Wiki page about building from source. -->
|
|
||||||
| Option | Type | Default Value | What it Does |
|
| Option | Type | Default Value | What it Does |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| `-Ddata_version` | `string` (like 0.7.1 or 0.9.0) | master | The data file version. This selects the files in the `src/data` folder that correspond to the Zig version being served.|
|
| `-Ddata_version` | `string` (like 0.7.1 or 0.9.0) | master | The data file version. This selects the files in the `src/data` folder that correspond to the Zig version being served.|
|
||||||
@ -165,207 +121,6 @@ The following LSP features are supported:
|
|||||||
- Semantic token highlighting (implemented by a few clients including VS Code, kak and emacs lsp-mode)
|
- Semantic token highlighting (implemented by a few clients including VS Code, kak and emacs lsp-mode)
|
||||||
- Inlay hints (implemented by VS Code)
|
- Inlay hints (implemented by VS Code)
|
||||||
|
|
||||||
You can install `zls` using the instuctions for your text editor below:
|
|
||||||
|
|
||||||
### VS Code
|
|
||||||
|
|
||||||
Install the `zls-vscode` extension from [here](https://github.com/zigtools/zls-vscode/releases) or via the extensions menu.
|
|
||||||
It will install `zls` if it is not found in your `PATH`.
|
|
||||||
|
|
||||||
### Sublime Text
|
|
||||||
|
|
||||||
- Install the `LSP` package from [here](https://github.com/sublimelsp/LSP/releases) or via Package Control.
|
|
||||||
- Add this snippet to `LSP's` user settings:
|
|
||||||
|
|
||||||
#### Sublime Text 3
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"clients": {
|
|
||||||
"zig": {
|
|
||||||
"command": ["zls"],
|
|
||||||
"enabled": true,
|
|
||||||
"languageId": "zig",
|
|
||||||
"scopes": ["source.zig"],
|
|
||||||
"syntaxes": ["Packages/Zig Language/Syntaxes/Zig.tmLanguage"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Sublime Text 4
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"clients": {
|
|
||||||
"zig": {
|
|
||||||
"command": ["zls"],
|
|
||||||
"enabled": true,
|
|
||||||
"selector": "source.zig"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Kate
|
|
||||||
|
|
||||||
- Install language support for Zig from [here](https://github.com/ziglang/kde-syntax-highlighting).
|
|
||||||
- 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)
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"servers": {
|
|
||||||
"zig": {
|
|
||||||
"command": ["zls"],
|
|
||||||
"url": "https://github.com/zigtools/zls",
|
|
||||||
"highlightingModeRegex": "^Zig$"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Neovim/Vim8
|
|
||||||
#### CoC
|
|
||||||
|
|
||||||
- Install the CoC engine from [here](https://github.com/neoclide/coc.nvim).
|
|
||||||
|
|
||||||
Then choose one of the following two ways:
|
|
||||||
|
|
||||||
1. Use extension
|
|
||||||
|
|
||||||
Run `:CocInstall coc-zls` to install [coc-zls](https://github.com/xiyaowong/coc-zls),
|
|
||||||
this extension supports the same functionality as the VS Code extension.
|
|
||||||
|
|
||||||
2. Manually register
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"languageserver": {
|
|
||||||
"zls" : {
|
|
||||||
"command": "command_or_path_to_zls",
|
|
||||||
"filetypes": ["zig"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### YouCompleteMe
|
|
||||||
- Install YouCompleteMe from [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
|
|
||||||
|
|
||||||
Requires Nvim 0.5 (HEAD)!
|
|
||||||
|
|
||||||
- Install nvim-lspconfig from [here](https://github.com/neovim/nvim-lspconfig).
|
|
||||||
- Install zig.vim from [here](https://github.com/ziglang/zig.vim).
|
|
||||||
|
|
||||||
nvim-lspconfig already ships a configuration for zls. A simple `init.vim` might look like this:
|
|
||||||
```vim
|
|
||||||
call plug#begin('~/.config/nvim/plugged')
|
|
||||||
Plug 'neovim/nvim-lspconfig'
|
|
||||||
Plug 'nvim-lua/completion-nvim'
|
|
||||||
Plug 'ziglang/zig.vim'
|
|
||||||
call plug#end()
|
|
||||||
|
|
||||||
:lua << EOF
|
|
||||||
local lspconfig = require('lspconfig')
|
|
||||||
|
|
||||||
local on_attach = function(_, bufnr)
|
|
||||||
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
|
||||||
require('completion').on_attach()
|
|
||||||
end
|
|
||||||
|
|
||||||
local servers = {'zls'}
|
|
||||||
for _, lsp in ipairs(servers) do
|
|
||||||
lspconfig[lsp].setup {
|
|
||||||
on_attach = on_attach,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
EOF
|
|
||||||
|
|
||||||
" Set completeopt to have a better completion experience
|
|
||||||
set completeopt=menuone,noinsert,noselect
|
|
||||||
|
|
||||||
" Enable completions as you type
|
|
||||||
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-out/bin/zls'],
|
|
||||||
\ }
|
|
||||||
```
|
|
||||||
|
|
||||||
### Emacs
|
|
||||||
|
|
||||||
- Install [lsp-mode](https://github.com/emacs-lsp/lsp-mode) from melpa.
|
|
||||||
- [zig mode](https://github.com/ziglang/zig-mode) is also useful.
|
|
||||||
|
|
||||||
```elisp
|
|
||||||
;; Setup lsp-mode as desired.
|
|
||||||
;; See https://emacs-lsp.github.io/lsp-mode/page/installation/ for more information.
|
|
||||||
(require 'lsp-mode)
|
|
||||||
|
|
||||||
;; Either place zls in your PATH or add the following:
|
|
||||||
(setq lsp-zig-zls-executable "<path to 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.
|
|
||||||
- Add the following to your `config.el`:
|
|
||||||
|
|
||||||
```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))))
|
|
||||||
```
|
|
||||||
|
|
||||||
### Spacemacs
|
|
||||||
|
|
||||||
- Add `lsp` and `zig` to `dotspacemacs-configuration-layers` in your `.spacemacs` file.
|
|
||||||
- If you don't have `zls` in your `PATH`, add the following to `dotspacemacs/user-config` in your
|
|
||||||
`.spacemacs` file:
|
|
||||||
|
|
||||||
```elisp
|
|
||||||
(setq lsp-zig-zls-executable "<path to zls>")
|
|
||||||
```
|
|
||||||
|
|
||||||
### Helix
|
|
||||||
|
|
||||||
- Just add `zls` to your `PATH`.
|
|
||||||
- run `hx --health` to check if helix found `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)
|
||||||
|
Loading…
Reference in New Issue
Block a user