Add glslls (#1179)
* Add glslls-based LSP linter * Make logfile configureable
This commit is contained in:
parent
6053f764bd
commit
51b127a4fd
5 changed files with 98 additions and 2 deletions
|
@ -100,7 +100,7 @@ formatting.
|
||||||
| Erlang | [erlc](http://erlang.org/doc/man/erlc.html), [SyntaxErl](https://github.com/ten0s/syntaxerl) |
|
| Erlang | [erlc](http://erlang.org/doc/man/erlc.html), [SyntaxErl](https://github.com/ten0s/syntaxerl) |
|
||||||
| Fortran | [gcc](https://gcc.gnu.org/) |
|
| Fortran | [gcc](https://gcc.gnu.org/) |
|
||||||
| FusionScript | [fusion-lint](https://github.com/RyanSquared/fusionscript) |
|
| FusionScript | [fusion-lint](https://github.com/RyanSquared/fusionscript) |
|
||||||
| GLSL | [glslang](https://github.com/KhronosGroup/glslang) |
|
| GLSL | [glslang](https://github.com/KhronosGroup/glslang), [glslls](https://github.com/svenstaro/glsl-language-server) |
|
||||||
| Go | [gofmt](https://golang.org/cmd/gofmt/), [goimports](https://godoc.org/golang.org/x/tools/cmd/goimports), [go vet](https://golang.org/cmd/vet/), [golint](https://godoc.org/github.com/golang/lint), [gometalinter](https://github.com/alecthomas/gometalinter) !!, [go build](https://golang.org/cmd/go/) !!, [gosimple](https://github.com/dominikh/go-tools/tree/master/cmd/gosimple) !!, [staticcheck](https://github.com/dominikh/go-tools/tree/master/cmd/staticcheck) !! |
|
| Go | [gofmt](https://golang.org/cmd/gofmt/), [goimports](https://godoc.org/golang.org/x/tools/cmd/goimports), [go vet](https://golang.org/cmd/vet/), [golint](https://godoc.org/github.com/golang/lint), [gometalinter](https://github.com/alecthomas/gometalinter) !!, [go build](https://golang.org/cmd/go/) !!, [gosimple](https://github.com/dominikh/go-tools/tree/master/cmd/gosimple) !!, [staticcheck](https://github.com/dominikh/go-tools/tree/master/cmd/staticcheck) !! |
|
||||||
| GraphQL | [eslint](http://eslint.org/), [gqlint](https://github.com/happylinks/gqlint) |
|
| GraphQL | [eslint](http://eslint.org/), [gqlint](https://github.com/happylinks/gqlint) |
|
||||||
| Haml | [haml-lint](https://github.com/brigade/haml-lint) |
|
| Haml | [haml-lint](https://github.com/brigade/haml-lint) |
|
||||||
|
|
38
ale_linters/glsl/glslls.vim
Normal file
38
ale_linters/glsl/glslls.vim
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
" Author: Sven-Hendrik Haase <svenstaro@gmail.com>
|
||||||
|
" Description: A language server for glsl
|
||||||
|
|
||||||
|
call ale#Set('glsl_glslls_executable', 'glslls')
|
||||||
|
call ale#Set('glsl_glslls_logfile', '')
|
||||||
|
|
||||||
|
function! ale_linters#glsl#glslls#GetExecutable(buffer) abort
|
||||||
|
return ale#Var(a:buffer, 'glsl_glslls_executable')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#glsl#glslls#GetCommand(buffer) abort
|
||||||
|
let l:executable = ale_linters#glsl#glslls#GetExecutable(a:buffer)
|
||||||
|
let l:logfile = ale#Var(a:buffer, 'glsl_glslls_logfile')
|
||||||
|
let l:logfile_args = ''
|
||||||
|
if l:logfile isnot# ''
|
||||||
|
let l:logfile_args = ' --verbose -l ' . l:logfile
|
||||||
|
endif
|
||||||
|
return ale#Escape(l:executable) . l:logfile_args . ' --stdin'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#glsl#glslls#GetLanguage(buffer) abort
|
||||||
|
return 'glsl'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#glsl#glslls#GetProjectRoot(buffer) abort
|
||||||
|
let l:project_root = ale#c#FindProjectRoot(a:buffer)
|
||||||
|
|
||||||
|
return !empty(l:project_root) ? fnamemodify(l:project_root, ':h:h') : ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('glsl', {
|
||||||
|
\ 'name': 'glslls',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'executable_callback': 'ale_linters#glsl#glslls#GetExecutable',
|
||||||
|
\ 'command_callback': 'ale_linters#glsl#glslls#GetCommand',
|
||||||
|
\ 'language_callback': 'ale_linters#glsl#glslls#GetLanguage',
|
||||||
|
\ 'project_root_callback': 'ale_linters#glsl#glslls#GetProjectRoot',
|
||||||
|
\})
|
|
@ -32,5 +32,25 @@ g:ale_glsl_glslang_options *g:ale_glsl_glslang_options*
|
||||||
This variable can be set to pass additional options to glslangValidator.
|
This variable can be set to pass additional options to glslangValidator.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
glslls *ale-glsl-glslls*
|
||||||
|
|
||||||
|
g:ale_glsl_glslls_executable *g:ale_glsl_glslls_executable*
|
||||||
|
*b:ale_glsl_glslls_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'glslls'`
|
||||||
|
|
||||||
|
This variable can be changed to change the path to glslls.
|
||||||
|
See |ale-integrations-local-executables|
|
||||||
|
|
||||||
|
g:ale_glsl_glslls_logfile *g:ale_glsl_glslls_logfile*
|
||||||
|
*b:ale_glsl_glslls_logfile*
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
Setting this variable to a writeable file path will enable logging to that
|
||||||
|
file.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
|
|
|
@ -70,6 +70,7 @@ CONTENTS *ale-contents*
|
||||||
fusion-lint.........................|ale-fuse-fusionlint|
|
fusion-lint.........................|ale-fuse-fusionlint|
|
||||||
glsl..................................|ale-glsl-options|
|
glsl..................................|ale-glsl-options|
|
||||||
glslang.............................|ale-glsl-glslang|
|
glslang.............................|ale-glsl-glslang|
|
||||||
|
glslls..............................|ale-glsl-glslls|
|
||||||
go....................................|ale-go-options|
|
go....................................|ale-go-options|
|
||||||
gofmt...............................|ale-go-gofmt|
|
gofmt...............................|ale-go-gofmt|
|
||||||
gometalinter........................|ale-go-gometalinter|
|
gometalinter........................|ale-go-gometalinter|
|
||||||
|
@ -295,7 +296,7 @@ Notes:
|
||||||
* Erlang: `erlc`, `SyntaxErl`
|
* Erlang: `erlc`, `SyntaxErl`
|
||||||
* Fortran: `gcc`
|
* Fortran: `gcc`
|
||||||
* FusionScript: `fusion-lint`
|
* FusionScript: `fusion-lint`
|
||||||
* GLSL: glslang
|
* GLSL: glslang, `glslls`
|
||||||
* Go: `gofmt`, `goimports`, `go vet`, `golint`, `gometalinter`!!, `go build`!!, `gosimple`!!, `staticcheck`!!
|
* Go: `gofmt`, `goimports`, `go vet`, `golint`, `gometalinter`!!, `go build`!!, `gosimple`!!, `staticcheck`!!
|
||||||
* GraphQL: `eslint`, `gqlint`
|
* GraphQL: `eslint`, `gqlint`
|
||||||
* Haml: `haml-lint`
|
* Haml: `haml-lint`
|
||||||
|
|
37
test/command_callback/test_glslls_command_callback.vader
Normal file
37
test/command_callback/test_glslls_command_callback.vader
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
Before:
|
||||||
|
Save g:ale_glsl_glslls_executable
|
||||||
|
Save g:ale_glsl_glslls_logfile
|
||||||
|
|
||||||
|
unlet! g:ale_glsl_glslls_executable
|
||||||
|
unlet! g:ale_glsl_glslls_logfile
|
||||||
|
|
||||||
|
runtime ale_linters/glsl/glslls.vim
|
||||||
|
call ale#test#SetDirectory('/testplugin/test/command_callback')
|
||||||
|
|
||||||
|
After:
|
||||||
|
Restore
|
||||||
|
call ale#linter#Reset()
|
||||||
|
|
||||||
|
Execute(Executable should default to 'glslls'):
|
||||||
|
AssertEqual
|
||||||
|
\ 'glslls',
|
||||||
|
\ ale_linters#glsl#glslls#GetExecutable(bufnr(''))
|
||||||
|
|
||||||
|
Execute(Executable should be configurable):
|
||||||
|
let g:ale_glsl_glslls_executable = 'foobar'
|
||||||
|
AssertEqual
|
||||||
|
\ 'foobar',
|
||||||
|
\ ale_linters#glsl#glslls#GetExecutable(bufnr(''))
|
||||||
|
|
||||||
|
Execute(Command should use executable):
|
||||||
|
let command1 = ale_linters#glsl#glslls#GetCommand(bufnr(''))
|
||||||
|
AssertEqual command1, ale#Escape('glslls') . ' --stdin'
|
||||||
|
|
||||||
|
let g:ale_glsl_glslls_executable = 'foobar'
|
||||||
|
let command2 = ale_linters#glsl#glslls#GetCommand(bufnr(''))
|
||||||
|
AssertEqual command2, ale#Escape('foobar') . ' --stdin'
|
||||||
|
|
||||||
|
Execute(Setting logfile should work):
|
||||||
|
let g:ale_glsl_glslls_logfile = '/tmp/test.log'
|
||||||
|
let command = ale_linters#glsl#glslls#GetCommand(bufnr(''))
|
||||||
|
AssertEqual command, ale#Escape('glslls') . ' --verbose -l /tmp/test.log --stdin'
|
Reference in a new issue