commit
26571fa050
7 changed files with 74 additions and 0 deletions
20
ale_linters/zig/zls.vim
Normal file
20
ale_linters/zig/zls.vim
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
" Author: CherryMan <skipper308@hotmail.ca>
|
||||||
|
" Description: A language server for Zig
|
||||||
|
|
||||||
|
call ale#Set('zig_zls_executable', 'zls')
|
||||||
|
call ale#Set('zig_zls_config', {})
|
||||||
|
|
||||||
|
function! ale_linters#zig#zls#GetProjectRoot(buffer) abort
|
||||||
|
let l:build_rs = ale#path#FindNearestFile(a:buffer, 'build.zig')
|
||||||
|
|
||||||
|
return !empty(l:build_rs) ? fnamemodify(l:build_rs, ':h') : ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('zig', {
|
||||||
|
\ 'name': 'zls',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'lsp_config': {b -> ale#Var(b, 'zig_zls_config')},
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'zig_zls_executable')},
|
||||||
|
\ 'command': '%e',
|
||||||
|
\ 'project_root': function('ale_linters#zig#zls#GetProjectRoot'),
|
||||||
|
\})
|
|
@ -510,3 +510,5 @@ Notes:
|
||||||
* `yamllint`
|
* `yamllint`
|
||||||
* YANG
|
* YANG
|
||||||
* `yang-lsp`
|
* `yang-lsp`
|
||||||
|
* Zig
|
||||||
|
* `zls`
|
||||||
|
|
33
doc/ale-zig.txt
Normal file
33
doc/ale-zig.txt
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
===============================================================================
|
||||||
|
ALE Zig Integration *ale-zig-options*
|
||||||
|
*ale-integration-zig*
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
Integration Information
|
||||||
|
|
||||||
|
Currently, the only supported linter for zig is zls.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
zls *ale-zig-zls*
|
||||||
|
|
||||||
|
g:ale_zig_zls_executable *g:ale_zig_zls_executable*
|
||||||
|
*b:ale_zig_zls_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'zls'`
|
||||||
|
|
||||||
|
This variable can be modified to change the executable path for `zls`.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_zig_zls_config *g:ale_zig_zls_config*
|
||||||
|
*b:ale_zig_zls_config*
|
||||||
|
Type: |Dictionary|
|
||||||
|
Default: `{}`
|
||||||
|
|
||||||
|
WARNING: As of writing, zls does not support receiving configuration
|
||||||
|
from the client. This variable is a PLACEHOLDER until it does.
|
||||||
|
|
||||||
|
Dictionary with configuration settings for zls.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
|
@ -2676,6 +2676,8 @@ documented in additional help files.
|
||||||
yamllint..............................|ale-yaml-yamllint|
|
yamllint..............................|ale-yaml-yamllint|
|
||||||
yang....................................|ale-yang-options|
|
yang....................................|ale-yang-options|
|
||||||
yang-lsp..............................|ale-yang-lsp|
|
yang-lsp..............................|ale-yang-lsp|
|
||||||
|
zig.....................................|ale-zig-options|
|
||||||
|
zls...................................|ale-zig-zls|
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
|
|
@ -519,3 +519,5 @@ formatting.
|
||||||
* [yamllint](https://yamllint.readthedocs.io/)
|
* [yamllint](https://yamllint.readthedocs.io/)
|
||||||
* YANG
|
* YANG
|
||||||
* [yang-lsp](https://github.com/theia-ide/yang-lsp)
|
* [yang-lsp](https://github.com/theia-ide/yang-lsp)
|
||||||
|
* Zig
|
||||||
|
* [zls](https://github.com/zigtools/zls)
|
||||||
|
|
15
test/command_callback/test_zig_zls_callbacks.vader
Normal file
15
test/command_callback/test_zig_zls_callbacks.vader
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('zig', 'zls')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(The default executable path should be correct):
|
||||||
|
AssertLinter 'zls', ale#Escape('zls')
|
||||||
|
|
||||||
|
Execute(The project root should be detected correctly):
|
||||||
|
AssertLSPProject ''
|
||||||
|
|
||||||
|
call ale#test#SetFilename('zig-zls-project/main.zig')
|
||||||
|
|
||||||
|
AssertLSPProject ale#path#Simplify(g:dir . '/zig-zls-project')
|
0
test/command_callback/zig-zls-project/build.zig
Normal file
0
test/command_callback/zig-zls-project/build.zig
Normal file
Reference in a new issue