mirror of
https://github.com/dense-analysis/ale.git
synced 2026-08-12 10:52:32 +08:00
Add lexical for linting elixir projects (#4580)
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
" Author: Axel Clark <axelclark@pm.me>
|
||||||
|
" Description: Lexical integration (https://github.com/lexical-lsp/lexical)
|
||||||
|
|
||||||
|
call ale#Set('elixir_lexical_release', 'lexical')
|
||||||
|
|
||||||
|
function! ale_linters#elixir#lexical#GetExecutable(buffer) abort
|
||||||
|
let l:dir = ale#path#Simplify(ale#Var(a:buffer, 'elixir_lexical_release'))
|
||||||
|
let l:cmd = has('win32') ? '\start_lexical.bat' : '/start_lexical.sh'
|
||||||
|
|
||||||
|
return l:dir . l:cmd
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('elixir', {
|
||||||
|
\ 'name': 'lexical',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'executable': function('ale_linters#elixir#lexical#GetExecutable'),
|
||||||
|
\ 'command': function('ale_linters#elixir#lexical#GetExecutable'),
|
||||||
|
\ 'project_root': function('ale#handlers#elixir#FindMixUmbrellaRoot'),
|
||||||
|
\})
|
||||||
@@ -104,5 +104,23 @@ cspell *ale-elixir-cspell*
|
|||||||
See |ale-cspell-options|
|
See |ale-cspell-options|
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
lexical *ale-elixir-lexical*
|
||||||
|
|
||||||
|
Lexical (https://github.com/lexical-lsp/lexical)
|
||||||
|
|
||||||
|
g:ale_elixir_lexical_release *g:ale_elixir_lexical_release*
|
||||||
|
*b:ale_elixir_lexical_release*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'lexical'`
|
||||||
|
|
||||||
|
Location of the lexical release directory. This directory must contain
|
||||||
|
the language server scripts (start_lexical.sh and start_lexical.bat).
|
||||||
|
|
||||||
|
For example, set release to: `/home/projects/lexical/_build/dev/rel/lexical`
|
||||||
|
|
||||||
|
There are currnetly no configuration options for lexical.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
|
|||||||
@@ -168,6 +168,7 @@ Notes:
|
|||||||
* `dialyxir`
|
* `dialyxir`
|
||||||
* `dogma`!!
|
* `dogma`!!
|
||||||
* `elixir-ls`
|
* `elixir-ls`
|
||||||
|
* `lexical`
|
||||||
* `mix`!!
|
* `mix`!!
|
||||||
* Elm
|
* Elm
|
||||||
* `elm-format`
|
* `elm-format`
|
||||||
|
|||||||
@@ -2993,6 +2993,7 @@ documented in additional help files.
|
|||||||
elixir-ls.............................|ale-elixir-elixir-ls|
|
elixir-ls.............................|ale-elixir-elixir-ls|
|
||||||
credo.................................|ale-elixir-credo|
|
credo.................................|ale-elixir-credo|
|
||||||
cspell................................|ale-elixir-cspell|
|
cspell................................|ale-elixir-cspell|
|
||||||
|
lexical...............................|ale-elixir-lexical|
|
||||||
elm.....................................|ale-elm-options|
|
elm.....................................|ale-elm-options|
|
||||||
elm-format............................|ale-elm-elm-format|
|
elm-format............................|ale-elm-elm-format|
|
||||||
elm-ls................................|ale-elm-elm-ls|
|
elm-ls................................|ale-elm-elm-ls|
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ formatting.
|
|||||||
* [dialyxir](https://github.com/jeremyjh/dialyxir)
|
* [dialyxir](https://github.com/jeremyjh/dialyxir)
|
||||||
* [dogma](https://github.com/lpil/dogma) :floppy_disk:
|
* [dogma](https://github.com/lpil/dogma) :floppy_disk:
|
||||||
* [elixir-ls](https://github.com/elixir-lsp/elixir-ls) :warning:
|
* [elixir-ls](https://github.com/elixir-lsp/elixir-ls) :warning:
|
||||||
|
* [lexical](https://github.com/lexical-lsp/lexical) :warning:
|
||||||
* [mix](https://hexdocs.pm/mix/Mix.html) :warning: :floppy_disk:
|
* [mix](https://hexdocs.pm/mix/Mix.html) :warning: :floppy_disk:
|
||||||
* Elm
|
* Elm
|
||||||
* [elm-format](https://github.com/avh4/elm-format)
|
* [elm-format](https://github.com/avh4/elm-format)
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('elixir', 'lexical')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(should set correct defaults):
|
||||||
|
if has('win32')
|
||||||
|
AssertLinter 'lexical\start_lexical.bat', 'lexical\start_lexical.bat'
|
||||||
|
else
|
||||||
|
AssertLinter 'lexical/start_lexical.sh', 'lexical/start_lexical.sh'
|
||||||
|
endif
|
||||||
|
|
||||||
|
Execute(should configure lexical release location):
|
||||||
|
let b:ale_elixir_lexical_release = 'boo'
|
||||||
|
|
||||||
|
if has('win32')
|
||||||
|
AssertLinter 'boo\start_lexical.bat', 'boo\start_lexical.bat'
|
||||||
|
else
|
||||||
|
AssertLinter 'boo/start_lexical.sh', 'boo/start_lexical.sh'
|
||||||
|
endif
|
||||||
|
|
||||||
|
Execute(should set correct LSP values):
|
||||||
|
call ale#test#SetFilename('../test-files/elixir/umbrella_project/apps/app1/lib/app.ex')
|
||||||
|
|
||||||
|
AssertLSPLanguage 'elixir'
|
||||||
|
AssertLSPOptions {}
|
||||||
|
AssertLSPProject ale#path#Simplify(g:dir . '/../test-files/elixir/umbrella_project')
|
||||||
Reference in New Issue
Block a user