Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Added ocamllsp * Update ordering in docs to be alphabetical * Updated expected result in test
- Loading branch information
1 parent
1ee7f6c
commit 3ea887d
Showing
8 changed files
with
83 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
" Author: Risto Stevcev <me@risto.codes> | ||
" Description: The official language server for OCaml | ||
|
||
call ale#Set('ocaml_ocamllsp_use_opam', 1) | ||
|
||
call ale#linter#Define('ocaml', { | ||
\ 'name': 'ocamllsp', | ||
\ 'lsp': 'stdio', | ||
\ 'executable': function('ale#handlers#ocamllsp#GetExecutable'), | ||
\ 'command': function('ale#handlers#ocamllsp#GetCommand'), | ||
\ 'language': function('ale#handlers#ocamllsp#GetLanguage'), | ||
\ 'project_root': function('ale#handlers#ocamllsp#GetProjectRoot'), | ||
\}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
" Author: Risto Stevcev <me@risto.codes> | ||
" Description: Handlers for the official OCaml language server | ||
|
||
function! ale#handlers#ocamllsp#GetExecutable(buffer) abort | ||
return 'ocamllsp' | ||
endfunction | ||
|
||
function! ale#handlers#ocamllsp#GetCommand(buffer) abort | ||
let l:executable = ale#handlers#ocamllsp#GetExecutable(a:buffer) | ||
let l:ocaml_ocamllsp_use_opam = ale#Var(a:buffer, 'ocaml_ocamllsp_use_opam') | ||
|
||
return l:ocaml_ocamllsp_use_opam ? 'opam config exec -- ' . l:executable : l:executable | ||
endfunction | ||
|
||
function! ale#handlers#ocamllsp#GetLanguage(buffer) abort | ||
return getbufvar(a:buffer, '&filetype') | ||
endfunction | ||
|
||
function! ale#handlers#ocamllsp#GetProjectRoot(buffer) abort | ||
let l:dune_project_file = ale#path#FindNearestFile(a:buffer, 'dune-project') | ||
|
||
return !empty(l:dune_project_file) ? fnamemodify(l:dune_project_file, ':h') : '' | ||
endfunction |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
Before: | ||
call ale#assert#SetUpLinterTest('ocaml', 'ocamllsp') | ||
|
||
Save &filetype | ||
let &filetype = 'ocaml' | ||
|
||
After: | ||
call ale#assert#TearDownLinterTest() | ||
|
||
Execute(The language string should be correct): | ||
AssertLSPLanguage 'ocaml' | ||
|
||
Execute(The project root should be detected correctly): | ||
AssertLSPProject '' | ||
|
||
call ale#test#SetFilename('ocamllsp_paths/file.ml') | ||
|
||
AssertLSPProject ale#path#Simplify(g:dir . '/ocamllsp_paths') | ||
|
||
Execute(The executable should be run using opam exec by default): | ||
call ale#test#SetFilename('ocamllsp_paths/file.ml') | ||
|
||
AssertLinter 'ocamllsp', 'opam config exec -- ocamllsp' | ||
|
||
Execute(The executable should be run directly if use_opam flag is disabled): | ||
let g:ale_ocaml_ocamllsp_use_opam = 0 | ||
call ale#test#SetFilename('ocamllsp_paths/file.ml') | ||
|
||
AssertLinter 'ocamllsp', 'ocamllsp' |