mirror of https://github.com/dense-analysis/ale
Add ocaml-language-server for OCaml and ReasonML
This commit is contained in:
parent
8e0d1f57c6
commit
39107a48b9
|
@ -121,7 +121,7 @@ formatting.
|
||||||
| nroff | [proselint](http://proselint.com/), [write-good](https://github.com/btford/write-good)|
|
| nroff | [proselint](http://proselint.com/), [write-good](https://github.com/btford/write-good)|
|
||||||
| Objective-C | [clang](http://clang.llvm.org/) |
|
| Objective-C | [clang](http://clang.llvm.org/) |
|
||||||
| Objective-C++ | [clang](http://clang.llvm.org/) |
|
| Objective-C++ | [clang](http://clang.llvm.org/) |
|
||||||
| OCaml | [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-ocaml-merlin` for configuration instructions |
|
| OCaml | [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-ocaml-merlin` for configuration instructions, [ols](https://github.com/freebroccolo/ocaml-language-server) |
|
||||||
| Perl | [perl -c](https://perl.org/), [perl-critic](https://metacpan.org/pod/Perl::Critic) |
|
| Perl | [perl -c](https://perl.org/), [perl-critic](https://metacpan.org/pod/Perl::Critic) |
|
||||||
| PHP | [hack](http://hacklang.org/), [hackfmt](https://github.com/facebook/flow/tree/master/hack/hackfmt), [langserver](https://github.com/felixfbecker/php-language-server), [phan](https://github.com/phan/phan) see `:help ale-php-phan` to instructions, [php -l](https://secure.php.net/), [phpcs](https://github.com/squizlabs/PHP_CodeSniffer), [phpmd](https://phpmd.org), [phpstan](https://github.com/phpstan/phpstan), [phpcbf](https://github.com/squizlabs/PHP_CodeSniffer) |
|
| PHP | [hack](http://hacklang.org/), [hackfmt](https://github.com/facebook/flow/tree/master/hack/hackfmt), [langserver](https://github.com/felixfbecker/php-language-server), [phan](https://github.com/phan/phan) see `:help ale-php-phan` to instructions, [php -l](https://secure.php.net/), [phpcs](https://github.com/squizlabs/PHP_CodeSniffer), [phpmd](https://phpmd.org), [phpstan](https://github.com/phpstan/phpstan), [phpcbf](https://github.com/squizlabs/PHP_CodeSniffer) |
|
||||||
| Pod | [proselint](http://proselint.com/), [write-good](https://github.com/btford/write-good) |
|
| Pod | [proselint](http://proselint.com/), [write-good](https://github.com/btford/write-good) |
|
||||||
|
@ -130,7 +130,7 @@ formatting.
|
||||||
| Puppet | [puppet](https://puppet.com), [puppet-lint](https://puppet-lint.com) |
|
| Puppet | [puppet](https://puppet.com), [puppet-lint](https://puppet-lint.com) |
|
||||||
| Python | [autopep8](https://github.com/hhatto/autopep8), [flake8](http://flake8.pycqa.org/en/latest/), [isort](https://github.com/timothycrosley/isort), [mypy](http://mypy-lang.org/), [pycodestyle](https://github.com/PyCQA/pycodestyle), [pyls](https://github.com/palantir/python-language-server), [pylint](https://www.pylint.org/) !!, [yapf](https://github.com/google/yapf) |
|
| Python | [autopep8](https://github.com/hhatto/autopep8), [flake8](http://flake8.pycqa.org/en/latest/), [isort](https://github.com/timothycrosley/isort), [mypy](http://mypy-lang.org/), [pycodestyle](https://github.com/PyCQA/pycodestyle), [pyls](https://github.com/palantir/python-language-server), [pylint](https://www.pylint.org/) !!, [yapf](https://github.com/google/yapf) |
|
||||||
| R | [lintr](https://github.com/jimhester/lintr) |
|
| R | [lintr](https://github.com/jimhester/lintr) |
|
||||||
| ReasonML | [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-integration-reason-merlin` for configuration instructions, [refmt](https://github.com/reasonml/reason-cli) |
|
| ReasonML | [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-integration-reason-merlin` for configuration instructions, [ols](https://github.com/freebroccolo/ocaml-language-server), [refmt](https://github.com/reasonml/reason-cli) |
|
||||||
| reStructuredText | [proselint](http://proselint.com/), [rstcheck](https://github.com/myint/rstcheck), [write-good](https://github.com/btford/write-good) |
|
| reStructuredText | [proselint](http://proselint.com/), [rstcheck](https://github.com/myint/rstcheck), [write-good](https://github.com/btford/write-good) |
|
||||||
| RPM spec | [rpmlint](https://github.com/rpm-software-management/rpmlint) (disabled by default; see `:help ale-integration-spec`) |
|
| RPM spec | [rpmlint](https://github.com/rpm-software-management/rpmlint) (disabled by default; see `:help ale-integration-spec`) |
|
||||||
| Ruby | [brakeman](http://brakemanscanner.org/) !!, [rails_best_practices](https://github.com/flyerhzm/rails_best_practices) !!, [reek](https://github.com/troessner/reek), [rubocop](https://github.com/bbatsov/rubocop), [ruby](https://www.ruby-lang.org) |
|
| Ruby | [brakeman](http://brakemanscanner.org/) !!, [rails_best_practices](https://github.com/flyerhzm/rails_best_practices) !!, [reek](https://github.com/troessner/reek), [rubocop](https://github.com/bbatsov/rubocop), [ruby](https://www.ruby-lang.org) |
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
" Author: Michael Jungo <michaeljungo92@gmail.com>
|
||||||
|
" Description: A language server for OCaml
|
||||||
|
|
||||||
|
call ale#Set('ocaml_ols_executable', 'ocaml-language-server')
|
||||||
|
call ale#Set('ocaml_ols_use_global', 0)
|
||||||
|
|
||||||
|
call ale#linter#Define('ocaml', {
|
||||||
|
\ 'name': 'ols',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'executable_callback': 'ale#handlers#ols#GetExecutable',
|
||||||
|
\ 'command_callback': 'ale#handlers#ols#GetCommand',
|
||||||
|
\ 'language_callback': 'ale#handlers#ols#GetLanguage',
|
||||||
|
\ 'project_root_callback': 'ale#handlers#ols#GetProjectRoot',
|
||||||
|
\})
|
|
@ -0,0 +1,14 @@
|
||||||
|
" Author: Michael Jungo <michaeljungo92@gmail.com>
|
||||||
|
" Description: A language server for Reason
|
||||||
|
|
||||||
|
call ale#Set('reason_ols_executable', 'ocaml-language-server')
|
||||||
|
call ale#Set('reason_ols_use_global', 0)
|
||||||
|
|
||||||
|
call ale#linter#Define('reason', {
|
||||||
|
\ 'name': 'ols',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'executable_callback': 'ale#handlers#ols#GetExecutable',
|
||||||
|
\ 'command_callback': 'ale#handlers#ols#GetCommand',
|
||||||
|
\ 'language_callback': 'ale#handlers#ols#GetLanguage',
|
||||||
|
\ 'project_root_callback': 'ale#handlers#ols#GetProjectRoot',
|
||||||
|
\})
|
|
@ -0,0 +1,25 @@
|
||||||
|
" Author: Michael Jungo <michaeljungo92@gmail.com>
|
||||||
|
" Description: Handlers for the OCaml language server
|
||||||
|
|
||||||
|
function! ale#handlers#ols#GetExecutable(buffer) abort
|
||||||
|
let l:ols_setting = ale#handlers#ols#GetLanguage(a:buffer) . '_ols'
|
||||||
|
return ale#node#FindExecutable(a:buffer, l:ols_setting, [
|
||||||
|
\ 'node_modules/.bin/ocaml-language-server',
|
||||||
|
\])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#handlers#ols#GetCommand(buffer) abort
|
||||||
|
let l:executable = ale#handlers#ols#GetExecutable(a:buffer)
|
||||||
|
|
||||||
|
return ale#node#Executable(a:buffer, l:executable) . ' --stdio'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#handlers#ols#GetLanguage(buffer) abort
|
||||||
|
return getbufvar(a:buffer, '&filetype')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#handlers#ols#GetProjectRoot(buffer) abort
|
||||||
|
let l:merlin_file = ale#path#FindNearestFile(a:buffer, '.merlin')
|
||||||
|
|
||||||
|
return !empty(l:merlin_file) ? fnamemodify(l:merlin_file, ':h') : ''
|
||||||
|
endfunction
|
|
@ -10,6 +10,28 @@ merlin *ale-ocaml-merlin*
|
||||||
detailed instructions
|
detailed instructions
|
||||||
(https://github.com/the-lambda-church/merlin/wiki/vim-from-scratch).
|
(https://github.com/the-lambda-church/merlin/wiki/vim-from-scratch).
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
ols *ale-ocaml-ols*
|
||||||
|
|
||||||
|
The `ocaml-language-server` is the engine that powers OCaml and ReasonML
|
||||||
|
editor support using the Language Server Protocol. See the installation
|
||||||
|
instructions:
|
||||||
|
https://github.com/freebroccolo/ocaml-language-server#installation
|
||||||
|
|
||||||
|
g:ale_ocaml_ols_executable *g:ale_ocaml_ols_executable*
|
||||||
|
*b:ale_ocaml_ols_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'ocaml-language-server'`
|
||||||
|
|
||||||
|
This variable can be set to change the executable path for `ols`.
|
||||||
|
|
||||||
|
g:ale_ocaml_ols_use_global *g:ale_ocaml_ols_use_global*
|
||||||
|
*b:ale_ocaml_ols_use_global*
|
||||||
|
Type: |String|
|
||||||
|
Default: `0`
|
||||||
|
|
||||||
|
This variable can be set to `1` to always use the globally installed
|
||||||
|
executable. See also |ale-integrations-local-executables|.
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
|
|
|
@ -10,6 +10,29 @@ merlin *ale-reasonml-merlin*
|
||||||
detailed instructions
|
detailed instructions
|
||||||
(https://github.com/the-lambda-church/merlin/wiki/vim-from-scratch).
|
(https://github.com/the-lambda-church/merlin/wiki/vim-from-scratch).
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
ols *ale-reasonml-ols*
|
||||||
|
|
||||||
|
The `ocaml-language-server` is the engine that powers OCaml and ReasonML
|
||||||
|
editor support using the Language Server Protocol. See the installation
|
||||||
|
instructions:
|
||||||
|
https://github.com/freebroccolo/ocaml-language-server#installation
|
||||||
|
|
||||||
|
g:ale_reason_ols_executable *g:ale_reason_ols_executable*
|
||||||
|
*b:ale_reason_ols_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'ocaml-language-server'`
|
||||||
|
|
||||||
|
This variable can be set to change the executable path for `ols`.
|
||||||
|
|
||||||
|
g:ale_reason_ols_use_global *g:ale_reason_ols_use_global*
|
||||||
|
*b:ale_reason_ols_use_global*
|
||||||
|
Type: |String|
|
||||||
|
Default: `0`
|
||||||
|
|
||||||
|
This variable can be set to `1` to always use the globally installed
|
||||||
|
executable. See also |ale-integrations-local-executables|.
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
refmt *ale-reasonml-refmt*
|
refmt *ale-reasonml-refmt*
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,7 @@ CONTENTS *ale-contents*
|
||||||
clang...............................|ale-objcpp-clang|
|
clang...............................|ale-objcpp-clang|
|
||||||
ocaml.................................|ale-ocaml-options|
|
ocaml.................................|ale-ocaml-options|
|
||||||
merlin..............................|ale-ocaml-merlin|
|
merlin..............................|ale-ocaml-merlin|
|
||||||
|
ols.................................|ale-ocaml-ols|
|
||||||
perl..................................|ale-perl-options|
|
perl..................................|ale-perl-options|
|
||||||
perl................................|ale-perl-perl|
|
perl................................|ale-perl-perl|
|
||||||
perlcritic..........................|ale-perl-perlcritic|
|
perlcritic..........................|ale-perl-perlcritic|
|
||||||
|
@ -154,6 +155,7 @@ CONTENTS *ale-contents*
|
||||||
lintr...............................|ale-r-lintr|
|
lintr...............................|ale-r-lintr|
|
||||||
reasonml..............................|ale-reasonml-options|
|
reasonml..............................|ale-reasonml-options|
|
||||||
merlin..............................|ale-reasonml-merlin|
|
merlin..............................|ale-reasonml-merlin|
|
||||||
|
ols.................................|ale-reasonml-ols|
|
||||||
refmt...............................|ale-reasonml-refmt|
|
refmt...............................|ale-reasonml-refmt|
|
||||||
restructuredtext......................|ale-restructuredtext-options|
|
restructuredtext......................|ale-restructuredtext-options|
|
||||||
write-good..........................|ale-restructuredtext-write-good|
|
write-good..........................|ale-restructuredtext-write-good|
|
||||||
|
@ -308,7 +310,7 @@ Notes:
|
||||||
* nroff: `proselint`, `write-good`
|
* nroff: `proselint`, `write-good`
|
||||||
* Objective-C: `clang`
|
* Objective-C: `clang`
|
||||||
* Objective-C++: `clang`
|
* Objective-C++: `clang`
|
||||||
* OCaml: `merlin` (see |ale-ocaml-merlin|)
|
* OCaml: `merlin` (see |ale-ocaml-merlin|), `ols`
|
||||||
* Perl: `perl -c`, `perl-critic`
|
* Perl: `perl -c`, `perl-critic`
|
||||||
* PHP: `hack`, `hackfmt`, `langserver`, `phan`, `php -l`, `phpcs`, `phpmd`, `phpstan`, `phpcbf`
|
* PHP: `hack`, `hackfmt`, `langserver`, `phan`, `php -l`, `phpcs`, `phpmd`, `phpstan`, `phpcbf`
|
||||||
* Pod: `proselint`, `write-good`
|
* Pod: `proselint`, `write-good`
|
||||||
|
@ -317,7 +319,7 @@ Notes:
|
||||||
* Puppet: `puppet`, `puppet-lint`
|
* Puppet: `puppet`, `puppet-lint`
|
||||||
* Python: `autopep8`, `flake8`, `isort`, `mypy`, `pycodestyle`, `pyls`, `pylint`!!, `yapf`
|
* Python: `autopep8`, `flake8`, `isort`, `mypy`, `pycodestyle`, `pyls`, `pylint`!!, `yapf`
|
||||||
* R: `lintr`
|
* R: `lintr`
|
||||||
* ReasonML: `merlin`, `refmt`
|
* ReasonML: `merlin`, `ols`, `refmt`
|
||||||
* reStructuredText: `proselint`, `rstcheck`, `write-good`
|
* reStructuredText: `proselint`, `rstcheck`, `write-good`
|
||||||
* RPM spec: `rpmlint`
|
* RPM spec: `rpmlint`
|
||||||
* Ruby: `brakeman`, `rails_best_practices`!!, `reek`, `rubocop`, `ruby`
|
* Ruby: `brakeman`, `rails_best_practices`!!, `reek`, `rubocop`, `ruby`
|
||||||
|
|
Loading…
Reference in New Issue