Merge branch 'master' into fix-swipl
* master: (133 commits) Add rnix-lsp for Nix diagnostics and completion add spectral support for json add spectral handler add spectral linter for yaml doc: Fix linter issues doc: Add documentation for Deno feat: Add Deno lsp support feat: Add Deno fmt fixer Add document for apkbuild filetype Add tests for atools handler, basic and dealing with Error and Warning Test default linters for apkbuild Document new default linters for apkbuild Make apkbuild_lint and secfixes_check default for apkbuild filetype document support for apkbuild-lint and secfixes-check for apkbuild Add linters for apkbuild-lint and secfixes-check from atools Add handler for the output of atools Fix typos Add command callback tests Add support for standalone files Fix linting errors ...
This commit is contained in:
commit
2c1c5b06d9
135 changed files with 2692 additions and 273 deletions
23
.github/workflows/main.yml
vendored
Normal file
23
.github/workflows/main.yml
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
name: CI
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
tags:
|
||||||
|
- /^v\d+\.\d+\.(x|\d+)$/
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test_ale:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
vim-version:
|
||||||
|
- '--vim-80-only'
|
||||||
|
- '--vim-81-only'
|
||||||
|
- '--neovim-only'
|
||||||
|
- '--linters-only'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Run tests
|
||||||
|
run: ./run-tests -v ${{ matrix.vim-version }}
|
16
.travis.yml
16
.travis.yml
|
@ -1,16 +0,0 @@
|
||||||
---
|
|
||||||
sudo: required
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
language: generic
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /^v\d+\.\d+\.(x|\d+)$/
|
|
||||||
env:
|
|
||||||
- OPTIONS=--vim-80-only
|
|
||||||
- OPTIONS=--vim-81-only
|
|
||||||
- OPTIONS=--neovim-only
|
|
||||||
- OPTIONS=--linters-only
|
|
||||||
script: |
|
|
||||||
./run-tests -v $OPTIONS
|
|
|
@ -10,6 +10,8 @@ ENV PACKAGES="\
|
||||||
git \
|
git \
|
||||||
python \
|
python \
|
||||||
py-pip \
|
py-pip \
|
||||||
|
grep \
|
||||||
|
sed \
|
||||||
"
|
"
|
||||||
RUN apk --update add $PACKAGES && \
|
RUN apk --update add $PACKAGES && \
|
||||||
rm -rf /var/cache/apk/* /tmp/* /var/tmp/*
|
rm -rf /var/cache/apk/* /tmp/* /var/tmp/*
|
||||||
|
|
26
ale_linters/ada/adals.vim
Normal file
26
ale_linters/ada/adals.vim
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
" Author: Bartek Jasicki http://github.com/thindil
|
||||||
|
" Description: Support for Ada Language Server
|
||||||
|
|
||||||
|
call ale#Set('ada_adals_executable', 'ada_language_server')
|
||||||
|
call ale#Set('ada_adals_project', 'default.gpr')
|
||||||
|
call ale#Set('ada_adals_encoding', 'utf-8')
|
||||||
|
|
||||||
|
function! ale_linters#ada#adals#GetAdaLSConfig(buffer) abort
|
||||||
|
return {
|
||||||
|
\ 'ada.projectFile': ale#Var(a:buffer, 'ada_adals_project'),
|
||||||
|
\ 'ada.defaultCharset': ale#Var(a:buffer, 'ada_adals_encoding')
|
||||||
|
\}
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#ada#adals#GetRootDirectory(buffer) abort
|
||||||
|
return fnamemodify(bufname(a:buffer), ':p:h')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('ada', {
|
||||||
|
\ 'name': 'adals',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'ada_adals_executable')},
|
||||||
|
\ 'command': '%e',
|
||||||
|
\ 'project_root': function('ale_linters#ada#adals#GetRootDirectory'),
|
||||||
|
\ 'lsp_config': function('ale_linters#ada#adals#GetAdaLSConfig')
|
||||||
|
\})
|
12
ale_linters/apkbuild/apkbuild_lint.vim
Normal file
12
ale_linters/apkbuild/apkbuild_lint.vim
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
" Author: Leo <thinkabit.ukim@gmail.com>
|
||||||
|
" Description: apkbuild-lint from atools linter for APKBUILDs
|
||||||
|
|
||||||
|
call ale#Set('apkbuild_apkbuild_lint_executable', 'apkbuild-lint')
|
||||||
|
|
||||||
|
call ale#linter#Define('apkbuild', {
|
||||||
|
\ 'name': 'apkbuild_lint',
|
||||||
|
\ 'output_stream': 'stdout',
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'apkbuild_apkbuild_lint_executable')},
|
||||||
|
\ 'command': '%e %t',
|
||||||
|
\ 'callback': 'ale#handlers#atools#Handle',
|
||||||
|
\})
|
12
ale_linters/apkbuild/secfixes_check.vim
Normal file
12
ale_linters/apkbuild/secfixes_check.vim
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
" Author: Leo <thinkabit.ukim@gmail.com>
|
||||||
|
" Description: secfixes-check from atools linter for APKBUILDs
|
||||||
|
|
||||||
|
call ale#Set('apkbuild_secfixes_check_executable', 'secfixes-check')
|
||||||
|
|
||||||
|
call ale#linter#Define('apkbuild', {
|
||||||
|
\ 'name': 'secfixes_check',
|
||||||
|
\ 'output_stream': 'stdout',
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'apkbuild_secfixes_check_executable')},
|
||||||
|
\ 'command': '%e %t',
|
||||||
|
\ 'callback': 'ale#handlers#atools#Handle',
|
||||||
|
\})
|
|
@ -23,11 +23,13 @@ function! ale_linters#cpp#clangtidy#GetCommand(buffer, output) abort
|
||||||
let l:options = ale#Var(a:buffer, 'cpp_clangtidy_options')
|
let l:options = ale#Var(a:buffer, 'cpp_clangtidy_options')
|
||||||
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
|
let l:cflags = ale#c#GetCFlags(a:buffer, a:output)
|
||||||
let l:options .= !empty(l:options) ? ale#Pad(l:cflags) : l:cflags
|
let l:options .= !empty(l:options) ? ale#Pad(l:cflags) : l:cflags
|
||||||
endif
|
|
||||||
|
|
||||||
" Tell clang-tidy a .h header with a C++ filetype in Vim is a C++ file.
|
" Tell clang-tidy a .h header with a C++ filetype in Vim is a C++ file
|
||||||
if expand('#' . a:buffer) =~# '\.h$'
|
" only when compile-commands.json file is not there. Adding these
|
||||||
let l:options .= !empty(l:options) ? ' -x c++' : '-x c++'
|
" flags makes clang-tidy completely ignore compile commmands.
|
||||||
|
if expand('#' . a:buffer) =~# '\.h$'
|
||||||
|
let l:options .= !empty(l:options) ? ' -x c++' : '-x c++'
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Get the options to pass directly to clang-tidy
|
" Get the options to pass directly to clang-tidy
|
||||||
|
|
|
@ -6,7 +6,7 @@ function! ale_linters#dafny#dafny#Handle(buffer, lines) abort
|
||||||
|
|
||||||
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
\ 'bufnr': a:buffer,
|
\ 'filename': l:match[1],
|
||||||
\ 'col': l:match[3] + 0,
|
\ 'col': l:match[3] + 0,
|
||||||
\ 'lnum': l:match[2] + 0,
|
\ 'lnum': l:match[2] + 0,
|
||||||
\ 'text': l:match[5],
|
\ 'text': l:match[5],
|
||||||
|
@ -14,13 +14,28 @@ function! ale_linters#dafny#dafny#Handle(buffer, lines) abort
|
||||||
\ })
|
\ })
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
for l:match in ale#util#GetMatches(a:lines, '\v(.*)\((\d+),(\d+)\): (Verification of .{-} timed out after \d+ seconds)')
|
||||||
|
call add(l:output, {
|
||||||
|
\ 'bufnr': a:buffer,
|
||||||
|
\ 'col': l:match[3] + 0,
|
||||||
|
\ 'lnum': l:match[2] + 0,
|
||||||
|
\ 'text': l:match[4],
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ })
|
||||||
|
endfor
|
||||||
|
|
||||||
return l:output
|
return l:output
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#dafny#dafny#GetCommand(buffer) abort
|
||||||
|
return printf('dafny %%s /compile:0 /timeLimit:%d', ale#Var(a:buffer, 'dafny_dafny_timelimit'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#Set('dafny_dafny_timelimit', 10)
|
||||||
call ale#linter#Define('dafny', {
|
call ale#linter#Define('dafny', {
|
||||||
\ 'name': 'dafny',
|
\ 'name': 'dafny',
|
||||||
\ 'executable': 'dafny',
|
\ 'executable': 'dafny',
|
||||||
\ 'command': 'dafny %s /compile:0',
|
\ 'command': function('ale_linters#dafny#dafny#GetCommand'),
|
||||||
\ 'callback': 'ale_linters#dafny#dafny#Handle',
|
\ 'callback': 'ale_linters#dafny#dafny#Handle',
|
||||||
\ 'lint_file': 1,
|
\ 'lint_file': 1,
|
||||||
\ })
|
\ })
|
||||||
|
|
29
ale_linters/dart/analysis_server.vim
Normal file
29
ale_linters/dart/analysis_server.vim
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
" Author: Nelson Yeung <nelsyeung@gmail.com>
|
||||||
|
" Description: Check Dart files with dart analysis server LSP
|
||||||
|
|
||||||
|
call ale#Set('dart_analysis_server_executable', 'dart')
|
||||||
|
|
||||||
|
function! ale_linters#dart#analysis_server#GetProjectRoot(buffer) abort
|
||||||
|
" Note: pub only looks for pubspec.yaml, there's no point in adding
|
||||||
|
" support for pubspec.yml
|
||||||
|
let l:pubspec = ale#path#FindNearestFile(a:buffer, 'pubspec.yaml')
|
||||||
|
|
||||||
|
return !empty(l:pubspec) ? fnamemodify(l:pubspec, ':h:h') : '.'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#dart#analysis_server#GetCommand(buffer) abort
|
||||||
|
let l:executable = ale#Var(a:buffer, 'dart_analysis_server_executable')
|
||||||
|
let l:dart = resolve(exepath(l:executable))
|
||||||
|
|
||||||
|
return '%e '
|
||||||
|
\ . fnamemodify(l:dart, ':h') . '/snapshots/analysis_server.dart.snapshot'
|
||||||
|
\ . ' --lsp'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('dart', {
|
||||||
|
\ 'name': 'analysis_server',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'dart_analysis_server_executable')},
|
||||||
|
\ 'command': function('ale_linters#dart#analysis_server#GetCommand'),
|
||||||
|
\ 'project_root': function('ale_linters#dart#analysis_server#GetProjectRoot'),
|
||||||
|
\})
|
|
@ -45,6 +45,16 @@ function! ale_linters#elixir#credo#GetMode() abort
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#elixir#credo#GetConfigFile() abort
|
||||||
|
let l:config_file = get(g:, 'ale_elixir_credo_config_file', '')
|
||||||
|
|
||||||
|
if empty(l:config_file)
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ' --config-file ' . l:config_file
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! ale_linters#elixir#credo#GetCommand(buffer) abort
|
function! ale_linters#elixir#credo#GetCommand(buffer) abort
|
||||||
let l:project_root = ale#handlers#elixir#FindMixUmbrellaRoot(a:buffer)
|
let l:project_root = ale#handlers#elixir#FindMixUmbrellaRoot(a:buffer)
|
||||||
let l:mode = ale_linters#elixir#credo#GetMode()
|
let l:mode = ale_linters#elixir#credo#GetMode()
|
||||||
|
@ -52,6 +62,7 @@ function! ale_linters#elixir#credo#GetCommand(buffer) abort
|
||||||
return ale#path#CdString(l:project_root)
|
return ale#path#CdString(l:project_root)
|
||||||
\ . 'mix help credo && '
|
\ . 'mix help credo && '
|
||||||
\ . 'mix credo ' . ale_linters#elixir#credo#GetMode()
|
\ . 'mix credo ' . ale_linters#elixir#credo#GetMode()
|
||||||
|
\ . ale_linters#elixir#credo#GetConfigFile()
|
||||||
\ . ' --format=flycheck --read-from-stdin %s'
|
\ . ' --format=flycheck --read-from-stdin %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,22 @@
|
||||||
" Author: Magnus Ottenklinger - https://github.com/evnu
|
" Author: Magnus Ottenklinger - https://github.com/evnu
|
||||||
|
|
||||||
|
let g:ale_erlang_erlc_executable = get(g:, 'ale_erlang_erlc_executable', 'erlc')
|
||||||
let g:ale_erlang_erlc_options = get(g:, 'ale_erlang_erlc_options', '')
|
let g:ale_erlang_erlc_options = get(g:, 'ale_erlang_erlc_options', '')
|
||||||
|
|
||||||
|
function! ale_linters#erlang#erlc#GetExecutable(buffer) abort
|
||||||
|
return ale#Var(a:buffer, 'erlang_erlc_executable')
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! ale_linters#erlang#erlc#GetCommand(buffer) abort
|
function! ale_linters#erlang#erlc#GetCommand(buffer) abort
|
||||||
let l:output_file = ale#util#Tempname()
|
let l:output_file = ale#util#Tempname()
|
||||||
call ale#command#ManageFile(a:buffer, l:output_file)
|
call ale#command#ManageFile(a:buffer, l:output_file)
|
||||||
|
|
||||||
return 'erlc -o ' . ale#Escape(l:output_file)
|
let l:command = ale#Escape(ale_linters#erlang#erlc#GetExecutable(a:buffer))
|
||||||
\ . ' ' . ale#Var(a:buffer, 'erlang_erlc_options')
|
\ . ' -o ' . ale#Escape(l:output_file)
|
||||||
\ . ' %t'
|
\ . ' ' . ale#Var(a:buffer, 'erlang_erlc_options')
|
||||||
|
\ . ' %t'
|
||||||
|
|
||||||
|
return l:command
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale_linters#erlang#erlc#Handle(buffer, lines) abort
|
function! ale_linters#erlang#erlc#Handle(buffer, lines) abort
|
||||||
|
@ -90,7 +98,7 @@ endfunction
|
||||||
|
|
||||||
call ale#linter#Define('erlang', {
|
call ale#linter#Define('erlang', {
|
||||||
\ 'name': 'erlc',
|
\ 'name': 'erlc',
|
||||||
\ 'executable': 'erlc',
|
\ 'executable': function('ale_linters#erlang#erlc#GetExecutable'),
|
||||||
\ 'command': function('ale_linters#erlang#erlc#GetCommand'),
|
\ 'command': function('ale_linters#erlang#erlc#GetCommand'),
|
||||||
\ 'callback': 'ale_linters#erlang#erlc#Handle',
|
\ 'callback': 'ale_linters#erlang#erlc#Handle',
|
||||||
\})
|
\})
|
||||||
|
|
33
ale_linters/inko/inko.vim
Normal file
33
ale_linters/inko/inko.vim
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
" Author: Yorick Peterse <yorick@yorickpeterse.com>
|
||||||
|
" Description: linting of Inko source code using the Inko compiler
|
||||||
|
|
||||||
|
call ale#Set('inko_inko_executable', 'inko')
|
||||||
|
|
||||||
|
function! ale_linters#inko#inko#GetCommand(buffer) abort
|
||||||
|
let l:include = ''
|
||||||
|
|
||||||
|
" Include the tests source directory, but only for test files.
|
||||||
|
if expand('#' . a:buffer . ':p') =~? '\vtests[/\\]test[/\\]'
|
||||||
|
let l:test_dir = ale#path#FindNearestDirectory(a:buffer, 'tests')
|
||||||
|
|
||||||
|
if isdirectory(l:test_dir)
|
||||||
|
let l:include = '--include ' . ale#Escape(l:test_dir)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" We use %s instead of %t so the compiler determines the correct module
|
||||||
|
" names for the file being edited. Not doing so may lead to errors in
|
||||||
|
" certain cases.
|
||||||
|
return '%e build --check --format=json'
|
||||||
|
\ . ale#Pad(l:include)
|
||||||
|
\ . ' %s'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('inko', {
|
||||||
|
\ 'name': 'inko',
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'inko_inko_executable')},
|
||||||
|
\ 'command': function('ale_linters#inko#inko#GetCommand'),
|
||||||
|
\ 'callback': 'ale#handlers#inko#Handle',
|
||||||
|
\ 'output_stream': 'stderr',
|
||||||
|
\ 'lint_file': 1
|
||||||
|
\})
|
|
@ -9,7 +9,7 @@ function! ale_linters#java#checkstyle#Handle(buffer, lines) abort
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
" modern checkstyle versions
|
" modern checkstyle versions
|
||||||
let l:pattern = '\v\[(WARN|ERROR)\] [a-zA-Z]?:?[^:]+:(\d+):(\d+)?:? (.*) \[(.+)\]$'
|
let l:pattern = '\v\[(WARN|ERROR)\] [a-zA-Z]?:?[^:]+:(\d+):(\d+)?:? (.*) \[(.+)\]'
|
||||||
|
|
||||||
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
|
|
|
@ -1,26 +1,9 @@
|
||||||
" Author: Daniel Lupu <lupu.daniel.f@gmail.com>
|
" Author: Daniel Lupu <lupu.daniel.f@gmail.com>
|
||||||
" Description: xo for JavaScript files
|
" Description: xo for JavaScript files
|
||||||
|
|
||||||
call ale#Set('javascript_xo_executable', 'xo')
|
|
||||||
call ale#Set('javascript_xo_use_global', get(g:, 'ale_use_global_executables', 0))
|
|
||||||
call ale#Set('javascript_xo_options', '')
|
|
||||||
|
|
||||||
function! ale_linters#javascript#xo#GetExecutable(buffer) abort
|
|
||||||
return ale#node#FindExecutable(a:buffer, 'javascript_xo', [
|
|
||||||
\ 'node_modules/.bin/xo',
|
|
||||||
\])
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ale_linters#javascript#xo#GetCommand(buffer) abort
|
|
||||||
return ale#Escape(ale_linters#javascript#xo#GetExecutable(a:buffer))
|
|
||||||
\ . ' ' . ale#Var(a:buffer, 'javascript_xo_options')
|
|
||||||
\ . ' --reporter json --stdin --stdin-filename %s'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" xo uses eslint and the output format is the same
|
|
||||||
call ale#linter#Define('javascript', {
|
call ale#linter#Define('javascript', {
|
||||||
\ 'name': 'xo',
|
\ 'name': 'xo',
|
||||||
\ 'executable': function('ale_linters#javascript#xo#GetExecutable'),
|
\ 'executable': function('ale#handlers#xo#GetExecutable'),
|
||||||
\ 'command': function('ale_linters#javascript#xo#GetCommand'),
|
\ 'command': function('ale#handlers#xo#GetLintCommand'),
|
||||||
\ 'callback': 'ale#handlers#eslint#HandleJSON',
|
\ 'callback': 'ale#handlers#xo#HandleJSON',
|
||||||
\})
|
\})
|
||||||
|
|
14
ale_linters/json/spectral.vim
Normal file
14
ale_linters/json/spectral.vim
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
" Author: t2h5 <https://github.com/t2h5>
|
||||||
|
" Description: Integration of Stoplight Spectral CLI with ALE.
|
||||||
|
|
||||||
|
call ale#Set('json_spectral_executable', 'spectral')
|
||||||
|
call ale#Set('json_spectral_use_global', get(g:, 'ale_use_global_executables', 0))
|
||||||
|
|
||||||
|
call ale#linter#Define('json', {
|
||||||
|
\ 'name': 'spectral',
|
||||||
|
\ 'executable': {b -> ale#node#FindExecutable(b, 'json_spectral', [
|
||||||
|
\ 'node_modules/.bin/spectral',
|
||||||
|
\ ])},
|
||||||
|
\ 'command': '%e lint --ignore-unknown-format -q -f text %t',
|
||||||
|
\ 'callback': 'ale#handlers#spectral#HandleSpectralOutput'
|
||||||
|
\})
|
|
@ -6,9 +6,9 @@ call ale#Set('julia_executable', 'julia')
|
||||||
|
|
||||||
function! ale_linters#julia#languageserver#GetCommand(buffer) abort
|
function! ale_linters#julia#languageserver#GetCommand(buffer) abort
|
||||||
let l:julia_executable = ale#Var(a:buffer, 'julia_executable')
|
let l:julia_executable = ale#Var(a:buffer, 'julia_executable')
|
||||||
let l:cmd_string = 'using LanguageServer; server = LanguageServer.LanguageServerInstance(isdefined(Base, :stdin) ? stdin : STDIN, isdefined(Base, :stdout) ? stdout : STDOUT, false); server.runlinter = true; run(server);'
|
let l:cmd_string = 'using LanguageServer; using Pkg; import StaticLint; import SymbolServer; server = LanguageServer.LanguageServerInstance(isdefined(Base, :stdin) ? stdin : STDIN, isdefined(Base, :stdout) ? stdout : STDOUT, dirname(Pkg.Types.Context().env.project_file)); server.runlinter = true; run(server);'
|
||||||
|
|
||||||
return ale#Escape(l:julia_executable) . ' --startup-file=no --history-file=no -e ' . ale#Escape(l:cmd_string)
|
return ale#Escape(l:julia_executable) . ' --project=@. --startup-file=no --history-file=no -e ' . ale#Escape(l:cmd_string)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('julia', {
|
call ale#linter#Define('julia', {
|
||||||
|
|
16
ale_linters/nix/rnix_lsp.vim
Normal file
16
ale_linters/nix/rnix_lsp.vim
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
" Author: jD91mZM2 <me@krake.one>
|
||||||
|
" Description: rnix-lsp language client
|
||||||
|
|
||||||
|
function! ale_linters#nix#rnix_lsp#GetProjectRoot(buffer) abort
|
||||||
|
" rnix-lsp does not yet use the project root, so getting it right is not
|
||||||
|
" important
|
||||||
|
return fnamemodify(a:buffer, ':h')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('nix', {
|
||||||
|
\ 'name': 'rnix_lsp',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'executable': 'rnix-lsp',
|
||||||
|
\ 'command': '%e',
|
||||||
|
\ 'project_root': function('ale_linters#nix#rnix_lsp#GetProjectRoot'),
|
||||||
|
\})
|
58
ale_linters/openapi/ibm_validator.vim
Normal file
58
ale_linters/openapi/ibm_validator.vim
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
" Author: Horacio Sanson <hsanson@gmail.com>
|
||||||
|
|
||||||
|
call ale#Set('openapi_ibm_validator_executable', 'lint-openapi')
|
||||||
|
call ale#Set('openapi_ibm_validator_options', '')
|
||||||
|
|
||||||
|
function! ale_linters#openapi#ibm_validator#GetCommand(buffer) abort
|
||||||
|
return '%e' . ale#Pad(ale#Var(a:buffer, 'openapi_ibm_validator_options'))
|
||||||
|
\ . ' %t'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#openapi#ibm_validator#Handle(buffer, lines) abort
|
||||||
|
let l:output = []
|
||||||
|
let l:type = 'E'
|
||||||
|
let l:message = ''
|
||||||
|
let l:nr = -1
|
||||||
|
|
||||||
|
for l:line in a:lines
|
||||||
|
let l:match = matchlist(l:line, '^errors$')
|
||||||
|
|
||||||
|
if !empty(l:match)
|
||||||
|
let l:type = 'E'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:match = matchlist(l:line, '^warnings$')
|
||||||
|
|
||||||
|
if !empty(l:match)
|
||||||
|
let l:type = 'W'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:match = matchlist(l:line, '^ *Message : *\(.\+\)$')
|
||||||
|
|
||||||
|
if !empty(l:match)
|
||||||
|
let l:message = l:match[1]
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:match = matchlist(l:line, '^ *Line *: *\(\d\+\)$')
|
||||||
|
|
||||||
|
if !empty(l:match)
|
||||||
|
let l:nr = l:match[1]
|
||||||
|
|
||||||
|
call add(l:output, {
|
||||||
|
\ 'lnum': l:nr + 0,
|
||||||
|
\ 'col': 0,
|
||||||
|
\ 'text': l:message,
|
||||||
|
\ 'type': l:type,
|
||||||
|
\})
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('openapi', {
|
||||||
|
\ 'name': 'ibm_validator',
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'openapi_ibm_validator_executable')},
|
||||||
|
\ 'command': function('ale_linters#openapi#ibm_validator#GetCommand'),
|
||||||
|
\ 'callback': 'ale_linters#openapi#ibm_validator#Handle',
|
||||||
|
\})
|
9
ale_linters/openapi/yamllint.vim
Normal file
9
ale_linters/openapi/yamllint.vim
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
call ale#Set('yaml_yamllint_executable', 'yamllint')
|
||||||
|
call ale#Set('yaml_yamllint_options', '')
|
||||||
|
|
||||||
|
call ale#linter#Define('openapi', {
|
||||||
|
\ 'name': 'yamllint',
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'yaml_yamllint_executable')},
|
||||||
|
\ 'command': function('ale#handlers#yamllint#GetCommand'),
|
||||||
|
\ 'callback': 'ale#handlers#yamllint#Handle',
|
||||||
|
\})
|
4
ale_linters/php/intelephense.vim
Normal file → Executable file
4
ale_linters/php/intelephense.vim
Normal file → Executable file
|
@ -18,8 +18,8 @@ function! ale_linters#php#intelephense#GetProjectRoot(buffer) abort
|
||||||
return !empty(l:git_path) ? fnamemodify(l:git_path, ':h:h') : ''
|
return !empty(l:git_path) ? fnamemodify(l:git_path, ':h:h') : ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale_linters#php#intelephense#GetInitializationOptions() abort
|
function! ale_linters#php#intelephense#GetInitializationOptions(buffer) abort
|
||||||
return ale#Get('php_intelephense_config')
|
return ale#Var(a:buffer, 'php_intelephense_config')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('php', {
|
call ale#linter#Define('php', {
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
call ale#Set('ruby_sorbet_executable', 'srb')
|
call ale#Set('ruby_sorbet_executable', 'srb')
|
||||||
call ale#Set('ruby_sorbet_options', '')
|
call ale#Set('ruby_sorbet_options', '')
|
||||||
|
call ale#Set('ruby_sorbet_enable_watchman', 0)
|
||||||
|
|
||||||
function! ale_linters#ruby#sorbet#GetCommand(buffer) abort
|
function! ale_linters#ruby#sorbet#GetCommand(buffer) abort
|
||||||
let l:executable = ale#Var(a:buffer, 'ruby_sorbet_executable')
|
let l:executable = ale#Var(a:buffer, 'ruby_sorbet_executable')
|
||||||
let l:options = ale#Var(a:buffer, 'ruby_sorbet_options')
|
let l:options = ale#Var(a:buffer, 'ruby_sorbet_options')
|
||||||
|
let l:enable_watchman = ale#Var(a:buffer, 'ruby_sorbet_enable_watchman')
|
||||||
|
|
||||||
return ale#ruby#EscapeExecutable(l:executable, 'srb')
|
return ale#ruby#EscapeExecutable(l:executable, 'srb')
|
||||||
\ . ' tc'
|
\ . ' tc'
|
||||||
\ . (!empty(l:options) ? ' ' . l:options : '')
|
\ . (!empty(l:options) ? ' ' . l:options : '')
|
||||||
\ . ' --lsp --disable-watchman'
|
\ . ' --lsp'
|
||||||
|
\ . (l:enable_watchman ? '' : ' --disable-watchman')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('ruby', {
|
call ale#linter#Define('ruby', {
|
||||||
|
|
|
@ -17,7 +17,7 @@ endfunction
|
||||||
call ale#linter#Define('rust', {
|
call ale#linter#Define('rust', {
|
||||||
\ 'name': 'analyzer',
|
\ 'name': 'analyzer',
|
||||||
\ 'lsp': 'stdio',
|
\ 'lsp': 'stdio',
|
||||||
\ 'lsp_config': {b -> ale#Var(b, 'rust_analyzer_config')},
|
\ 'initialization_options': {b -> ale#Var(b, 'rust_analyzer_config')},
|
||||||
\ 'executable': {b -> ale#Var(b, 'rust_analyzer_executable')},
|
\ 'executable': {b -> ale#Var(b, 'rust_analyzer_executable')},
|
||||||
\ 'command': function('ale_linters#rust#analyzer#GetCommand'),
|
\ 'command': function('ale_linters#rust#analyzer#GetCommand'),
|
||||||
\ 'project_root': function('ale_linters#rust#analyzer#GetProjectRoot'),
|
\ 'project_root': function('ale_linters#rust#analyzer#GetProjectRoot'),
|
||||||
|
|
33
ale_linters/salt/salt_lint.vim
Normal file
33
ale_linters/salt/salt_lint.vim
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
" Author: Benjamin BINIER <poulpatine@gmail.com>
|
||||||
|
" Description: salt-lint, saltstack linter
|
||||||
|
|
||||||
|
call ale#Set('salt_salt_lint_executable', 'salt-lint')
|
||||||
|
call ale#Set('salt_salt_lint_options', '')
|
||||||
|
|
||||||
|
function! ale_linters#salt#salt_lint#GetCommand(buffer) abort
|
||||||
|
return '%e' . ale#Pad(ale#Var(a:buffer, 'salt_salt_lint_options'))
|
||||||
|
\ . ' --json'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#salt#salt_lint#Handle(buffer, lines) abort
|
||||||
|
let l:output = []
|
||||||
|
|
||||||
|
for l:error in ale#util#FuzzyJSONDecode(a:lines, [])
|
||||||
|
call add(l:output, {
|
||||||
|
\ 'lnum': l:error.linenumber + 0,
|
||||||
|
\ 'code': l:error.id + 0,
|
||||||
|
\ 'text': l:error.message,
|
||||||
|
\ 'type': l:error.severity is# 'HIGH' ? 'E' : 'W',
|
||||||
|
\})
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('salt', {
|
||||||
|
\ 'name': 'salt_lint',
|
||||||
|
\ 'aliases': ['salt-lint'],
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'salt_salt_lint_executable')},
|
||||||
|
\ 'command': function('ale_linters#salt#salt_lint#GetCommand'),
|
||||||
|
\ 'callback': 'ale_linters#salt#salt_lint#Handle'
|
||||||
|
\})
|
25
ale_linters/typescript/deno.vim
Normal file
25
ale_linters/typescript/deno.vim
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
" Author: Mohammed Chelouti - https://github.com/motato1
|
||||||
|
" Description: Deno lsp linter for TypeScript files.
|
||||||
|
|
||||||
|
call ale#linter#Define('typescript', {
|
||||||
|
\ 'name': 'deno',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'executable': function('ale#handlers#deno#GetExecutable'),
|
||||||
|
\ 'command': '%e lsp',
|
||||||
|
\ 'project_root': function('ale#handlers#deno#GetProjectRoot'),
|
||||||
|
\ 'initialization_options': function('ale_linters#typescript#deno#GetInitializationOptions'),
|
||||||
|
\})
|
||||||
|
|
||||||
|
function! ale_linters#typescript#deno#GetInitializationOptions(buffer) abort
|
||||||
|
let l:options = {
|
||||||
|
\ 'enable': v:true,
|
||||||
|
\ 'lint': v:true,
|
||||||
|
\ 'unstable': v:false,
|
||||||
|
\ }
|
||||||
|
|
||||||
|
if ale#Var(a:buffer, 'deno_unstable')
|
||||||
|
let l:options.unstable = v:true
|
||||||
|
endif
|
||||||
|
|
||||||
|
return l:options
|
||||||
|
endfunction
|
|
@ -1,23 +1,6 @@
|
||||||
call ale#Set('typescript_xo_executable', 'xo')
|
|
||||||
call ale#Set('typescript_xo_use_global', get(g:, 'ale_use_global_executables', 0))
|
|
||||||
call ale#Set('typescript_xo_options', '')
|
|
||||||
|
|
||||||
function! ale_linters#typescript#xo#GetExecutable(buffer) abort
|
|
||||||
return ale#node#FindExecutable(a:buffer, 'typescript_xo', [
|
|
||||||
\ 'node_modules/.bin/xo',
|
|
||||||
\])
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ale_linters#typescript#xo#GetCommand(buffer) abort
|
|
||||||
return ale#Escape(ale_linters#typescript#xo#GetExecutable(a:buffer))
|
|
||||||
\ . ale#Pad(ale#Var(a:buffer, 'typescript_xo_options'))
|
|
||||||
\ . ' --reporter json --stdin --stdin-filename %s'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" xo uses eslint and the output format is the same
|
|
||||||
call ale#linter#Define('typescript', {
|
call ale#linter#Define('typescript', {
|
||||||
\ 'name': 'xo',
|
\ 'name': 'xo',
|
||||||
\ 'executable': function('ale_linters#typescript#xo#GetExecutable'),
|
\ 'executable': function('ale#handlers#xo#GetExecutable'),
|
||||||
\ 'command': function('ale_linters#typescript#xo#GetCommand'),
|
\ 'command': function('ale#handlers#xo#GetLintCommand'),
|
||||||
\ 'callback': 'ale#handlers#eslint#HandleJSON',
|
\ 'callback': 'ale#handlers#xo#HandleJSON',
|
||||||
\})
|
\})
|
||||||
|
|
66
ale_linters/vala/vala_lint.vim
Normal file
66
ale_linters/vala/vala_lint.vim
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
" Author: Atsuya Takagi <asoftonight@gmail.com>
|
||||||
|
" Description: A linter for Vala using Vala-Lint.
|
||||||
|
|
||||||
|
call ale#Set('vala_vala_lint_config_filename', 'vala-lint.conf')
|
||||||
|
call ale#Set('vala_vala_lint_executable', 'io.elementary.vala-lint')
|
||||||
|
|
||||||
|
function! ale_linters#vala#vala_lint#GetExecutable(buffer) abort
|
||||||
|
return ale#Var(a:buffer, 'vala_vala_lint_executable')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#vala#vala_lint#GetCommand(buffer) abort
|
||||||
|
let l:command = ale_linters#vala#vala_lint#GetExecutable(a:buffer)
|
||||||
|
|
||||||
|
let l:config_filename = ale#Var(a:buffer, 'vala_vala_lint_config_filename')
|
||||||
|
let l:config_path = ale#path#FindNearestFile(a:buffer, l:config_filename)
|
||||||
|
|
||||||
|
if !empty(l:config_path)
|
||||||
|
let l:command .= ' -c ' . l:config_path
|
||||||
|
endif
|
||||||
|
|
||||||
|
return l:command . ' %s'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#vala#vala_lint#Handle(buffer, lines) abort
|
||||||
|
let l:pattern = '^\s*\(\d\+\)\.\(\d\+\)\s\+\(error\|warn\)\s\+\(.\+\)\s\([A-Za-z0-9_\-]\+\)'
|
||||||
|
let l:output = []
|
||||||
|
|
||||||
|
for l:line in a:lines
|
||||||
|
" remove color escape sequences since vala-lint doesn't support
|
||||||
|
" output without colors
|
||||||
|
let l:cleaned_line = substitute(l:line, '\e\[[0-9;]\+[mK]', '', 'g')
|
||||||
|
let l:match = matchlist(l:cleaned_line, l:pattern)
|
||||||
|
|
||||||
|
if len(l:match) == 0
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:refined_type = l:match[3] is# 'warn' ? 'W' : 'E'
|
||||||
|
let l:cleaned_text = substitute(l:match[4], '^\s*\(.\{-}\)\s*$', '\1', '')
|
||||||
|
|
||||||
|
let l:lnum = l:match[1] + 0
|
||||||
|
let l:column = l:match[2] + 0
|
||||||
|
let l:type = l:refined_type
|
||||||
|
let l:text = l:cleaned_text
|
||||||
|
let l:code = l:match[5]
|
||||||
|
|
||||||
|
call add(l:output, {
|
||||||
|
\ 'lnum': l:lnum,
|
||||||
|
\ 'col': l:column,
|
||||||
|
\ 'text': l:text,
|
||||||
|
\ 'type': l:type,
|
||||||
|
\ 'code': l:code,
|
||||||
|
\})
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('vala', {
|
||||||
|
\ 'name': 'vala_lint',
|
||||||
|
\ 'output_stream': 'stdout',
|
||||||
|
\ 'executable': function('ale_linters#vala#vala_lint#GetExecutable'),
|
||||||
|
\ 'command': function('ale_linters#vala#vala_lint#GetCommand'),
|
||||||
|
\ 'callback': 'ale_linters#vala#vala_lint#Handle',
|
||||||
|
\ 'lint_file': 1,
|
||||||
|
\})
|
14
ale_linters/yaml/spectral.vim
Normal file
14
ale_linters/yaml/spectral.vim
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
" Author: t2h5 <https://github.com/t2h5>
|
||||||
|
" Description: Integration of Stoplight Spectral CLI with ALE.
|
||||||
|
|
||||||
|
call ale#Set('yaml_spectral_executable', 'spectral')
|
||||||
|
call ale#Set('yaml_spectral_use_global', get(g:, 'ale_use_global_executables', 0))
|
||||||
|
|
||||||
|
call ale#linter#Define('yaml', {
|
||||||
|
\ 'name': 'spectral',
|
||||||
|
\ 'executable': {b -> ale#node#FindExecutable(b, 'yaml_spectral', [
|
||||||
|
\ 'node_modules/.bin/spectral',
|
||||||
|
\ ])},
|
||||||
|
\ 'command': '%e lint --ignore-unknown-format -q -f text %t',
|
||||||
|
\ 'callback': 'ale#handlers#spectral#HandleSpectralOutput'
|
||||||
|
\})
|
|
@ -3,48 +3,9 @@
|
||||||
call ale#Set('yaml_yamllint_executable', 'yamllint')
|
call ale#Set('yaml_yamllint_executable', 'yamllint')
|
||||||
call ale#Set('yaml_yamllint_options', '')
|
call ale#Set('yaml_yamllint_options', '')
|
||||||
|
|
||||||
function! ale_linters#yaml#yamllint#GetCommand(buffer) abort
|
|
||||||
return '%e' . ale#Pad(ale#Var(a:buffer, 'yaml_yamllint_options'))
|
|
||||||
\ . ' -f parsable %t'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ale_linters#yaml#yamllint#Handle(buffer, lines) abort
|
|
||||||
" Matches patterns line the following:
|
|
||||||
" something.yaml:1:1: [warning] missing document start "---" (document-start)
|
|
||||||
" something.yml:2:1: [error] syntax error: expected the node content, but found '<stream end>'
|
|
||||||
let l:pattern = '\v^.*:(\d+):(\d+): \[(error|warning)\] (.+)$'
|
|
||||||
let l:output = []
|
|
||||||
|
|
||||||
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
|
||||||
let l:item = {
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
|
||||||
\ 'col': l:match[2] + 0,
|
|
||||||
\ 'text': l:match[4],
|
|
||||||
\ 'type': l:match[3] is# 'error' ? 'E' : 'W',
|
|
||||||
\}
|
|
||||||
|
|
||||||
let l:code_match = matchlist(l:item.text, '\v^(.+) \(([^)]+)\)$')
|
|
||||||
|
|
||||||
if !empty(l:code_match)
|
|
||||||
if l:code_match[2] is# 'trailing-spaces'
|
|
||||||
\&& !ale#Var(a:buffer, 'warn_about_trailing_whitespace')
|
|
||||||
" Skip warnings for trailing whitespace if the option is off.
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:item.text = l:code_match[1]
|
|
||||||
let l:item.code = l:code_match[2]
|
|
||||||
endif
|
|
||||||
|
|
||||||
call add(l:output, l:item)
|
|
||||||
endfor
|
|
||||||
|
|
||||||
return l:output
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
call ale#linter#Define('yaml', {
|
call ale#linter#Define('yaml', {
|
||||||
\ 'name': 'yamllint',
|
\ 'name': 'yamllint',
|
||||||
\ 'executable': {b -> ale#Var(b, 'yaml_yamllint_executable')},
|
\ 'executable': {b -> ale#Var(b, 'yaml_yamllint_executable')},
|
||||||
\ 'command': function('ale_linters#yaml#yamllint#GetCommand'),
|
\ 'command': function('ale#handlers#yamllint#GetCommand'),
|
||||||
\ 'callback': 'ale_linters#yaml#yamllint#Handle',
|
\ 'callback': 'ale#handlers#yamllint#Handle',
|
||||||
\})
|
\})
|
||||||
|
|
|
@ -152,6 +152,7 @@ function! ale#c#ParseCFlags(path_prefix, should_quote, raw_arguments) abort
|
||||||
\ || stridx(l:option, '-idirafter') == 0
|
\ || stridx(l:option, '-idirafter') == 0
|
||||||
\ || stridx(l:option, '-iframework') == 0
|
\ || stridx(l:option, '-iframework') == 0
|
||||||
\ || stridx(l:option, '-include') == 0
|
\ || stridx(l:option, '-include') == 0
|
||||||
|
\ || stridx(l:option, '-imacros') == 0
|
||||||
if stridx(l:option, '-I') == 0 && l:option isnot# '-I'
|
if stridx(l:option, '-I') == 0 && l:option isnot# '-I'
|
||||||
let l:arg = join(split(l:option, '\zs')[2:], '')
|
let l:arg = join(split(l:option, '\zs')[2:], '')
|
||||||
let l:option = '-I'
|
let l:option = '-I'
|
||||||
|
|
|
@ -261,7 +261,10 @@ function! ale#codefix#HandleLSPResponse(conn_id, response) abort
|
||||||
|
|
||||||
" Send the results to the menu callback, if set.
|
" Send the results to the menu callback, if set.
|
||||||
if l:MenuCallback isnot v:null
|
if l:MenuCallback isnot v:null
|
||||||
call l:MenuCallback(map(copy(l:result), '[''lsp'', v:val]'))
|
call l:MenuCallback(
|
||||||
|
\ l:data,
|
||||||
|
\ map(copy(l:result), '[''lsp'', v:val]')
|
||||||
|
\)
|
||||||
|
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -9,7 +9,6 @@ let g:ale_echo_delay = get(g:, 'ale_echo_delay', 10)
|
||||||
let g:ale_echo_msg_format = get(g:, 'ale_echo_msg_format', '%code: %%s')
|
let g:ale_echo_msg_format = get(g:, 'ale_echo_msg_format', '%code: %%s')
|
||||||
|
|
||||||
let s:cursor_timer = -1
|
let s:cursor_timer = -1
|
||||||
let s:last_pos = [0, 0, 0]
|
|
||||||
|
|
||||||
function! ale#cursor#TruncatedEcho(original_message) abort
|
function! ale#cursor#TruncatedEcho(original_message) abort
|
||||||
let l:message = a:original_message
|
let l:message = a:original_message
|
||||||
|
@ -118,14 +117,18 @@ function! ale#cursor#EchoCursorWarningWithDelay() abort
|
||||||
|
|
||||||
let l:pos = getpos('.')[0:2]
|
let l:pos = getpos('.')[0:2]
|
||||||
|
|
||||||
|
if !exists('w:last_pos')
|
||||||
|
let w:last_pos = [0, 0, 0]
|
||||||
|
endif
|
||||||
|
|
||||||
" Check the current buffer, line, and column number against the last
|
" Check the current buffer, line, and column number against the last
|
||||||
" recorded position. If the position has actually changed, *then*
|
" recorded position. If the position has actually changed, *then*
|
||||||
" we should echo something. Otherwise we can end up doing processing
|
" we should echo something. Otherwise we can end up doing processing
|
||||||
" the echo message far too frequently.
|
" the echo message far too frequently.
|
||||||
if l:pos != s:last_pos
|
if l:pos != w:last_pos
|
||||||
let l:delay = ale#Var(l:buffer, 'echo_delay')
|
let l:delay = ale#Var(l:buffer, 'echo_delay')
|
||||||
|
|
||||||
let s:last_pos = l:pos
|
let w:last_pos = l:pos
|
||||||
let s:cursor_timer = timer_start(
|
let s:cursor_timer = timer_start(
|
||||||
\ l:delay,
|
\ l:delay,
|
||||||
\ function('ale#cursor#EchoCursorWarning')
|
\ function('ale#cursor#EchoCursorWarning')
|
||||||
|
@ -139,11 +142,16 @@ function! s:ShowCursorDetailForItem(loc, options) abort
|
||||||
let s:last_detailed_line = line('.')
|
let s:last_detailed_line = line('.')
|
||||||
let l:message = get(a:loc, 'detail', a:loc.text)
|
let l:message = get(a:loc, 'detail', a:loc.text)
|
||||||
let l:lines = split(l:message, "\n")
|
let l:lines = split(l:message, "\n")
|
||||||
call ale#preview#Show(l:lines, {'stay_here': l:stay_here})
|
|
||||||
|
|
||||||
" Clear the echo message if we manually displayed details.
|
if g:ale_floating_preview || g:ale_detail_to_floating_preview
|
||||||
if !l:stay_here
|
call ale#floating_preview#Show(l:lines)
|
||||||
execute 'echo'
|
else
|
||||||
|
call ale#preview#Show(l:lines, {'stay_here': l:stay_here})
|
||||||
|
|
||||||
|
" Clear the echo message if we manually displayed details.
|
||||||
|
if !l:stay_here
|
||||||
|
execute 'echo'
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
24
autoload/ale/dhall.vim
Normal file
24
autoload/ale/dhall.vim
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
" Author: Pat Brisbin <pbrisbin@gmail.com>, toastal <toastal@protonmail.com>
|
||||||
|
" Description: Functions for working with Dhall’s executable
|
||||||
|
|
||||||
|
call ale#Set('dhall_executable', 'dhall')
|
||||||
|
call ale#Set('dhall_use_global', get(g:, 'ale_use_global_executables', 0))
|
||||||
|
call ale#Set('dhall_options', '')
|
||||||
|
|
||||||
|
function! ale#dhall#GetExecutable(buffer) abort
|
||||||
|
let l:executable = ale#Var(a:buffer, 'dhall_executable')
|
||||||
|
|
||||||
|
" Dhall is written in Haskell and commonly installed with Stack
|
||||||
|
return ale#handlers#haskell_stack#EscapeExecutable(l:executable, 'dhall')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#dhall#GetExecutableWithOptions(buffer) abort
|
||||||
|
let l:executable = ale#dhall#GetExecutable(a:buffer)
|
||||||
|
|
||||||
|
return l:executable
|
||||||
|
\ . ale#Pad(ale#Var(a:buffer, 'dhall_options'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#dhall#GetCommand(buffer) abort
|
||||||
|
return '%e ' . ale#Pad(ale#Var(a:buffer, 'dhall_options'))
|
||||||
|
endfunction
|
|
@ -32,11 +32,37 @@ let s:default_registry = {
|
||||||
\ 'suggested_filetypes': ['python'],
|
\ 'suggested_filetypes': ['python'],
|
||||||
\ 'description': 'Fix PEP8 issues with black.',
|
\ 'description': 'Fix PEP8 issues with black.',
|
||||||
\ },
|
\ },
|
||||||
|
\ 'deno': {
|
||||||
|
\ 'function': 'ale#fixers#deno#Fix',
|
||||||
|
\ 'suggested_filetypes': ['typescript'],
|
||||||
|
\ 'description': 'Fix TypeScript using deno fmt.',
|
||||||
|
\ },
|
||||||
\ 'dfmt': {
|
\ 'dfmt': {
|
||||||
\ 'function': 'ale#fixers#dfmt#Fix',
|
\ 'function': 'ale#fixers#dfmt#Fix',
|
||||||
\ 'suggested_filetypes': ['d'],
|
\ 'suggested_filetypes': ['d'],
|
||||||
\ 'description': 'Fix D files with dfmt.',
|
\ 'description': 'Fix D files with dfmt.',
|
||||||
\ },
|
\ },
|
||||||
|
\ 'dhall': {
|
||||||
|
\ 'function': 'ale#fixers#dhall#Fix',
|
||||||
|
\ 'suggested_filetypes': ['dhall'],
|
||||||
|
\ 'description': 'Fix Dhall files with dhall-format.',
|
||||||
|
\ },
|
||||||
|
\ 'dhall-format': {
|
||||||
|
\ 'function': 'ale#fixers#dhall_format#Fix',
|
||||||
|
\ 'suggested_filetypes': ['dhall'],
|
||||||
|
\ 'description': 'Standard code formatter for the Dhall language',
|
||||||
|
\ 'aliases': ['dhall'],
|
||||||
|
\ },
|
||||||
|
\ 'dhall-freeze': {
|
||||||
|
\ 'function': 'ale#fixers#dhall_freeze#Freeze',
|
||||||
|
\ 'suggested_filetypes': ['dhall'],
|
||||||
|
\ 'description': 'Add integrity checks to remote import statements of an expression for the Dhall language',
|
||||||
|
\ },
|
||||||
|
\ 'dhall-lint': {
|
||||||
|
\ 'function': 'ale#fixers#dhall_lint#Fix',
|
||||||
|
\ 'suggested_filetypes': ['dhall'],
|
||||||
|
\ 'description': 'Standard code formatter for the Dhall language and removing dead code',
|
||||||
|
\ },
|
||||||
\ 'fecs': {
|
\ 'fecs': {
|
||||||
\ 'function': 'ale#fixers#fecs#Fix',
|
\ 'function': 'ale#fixers#fecs#Fix',
|
||||||
\ 'suggested_filetypes': ['javascript', 'css', 'html'],
|
\ 'suggested_filetypes': ['javascript', 'css', 'html'],
|
||||||
|
@ -81,7 +107,7 @@ let s:default_registry = {
|
||||||
\ },
|
\ },
|
||||||
\ 'prettier': {
|
\ 'prettier': {
|
||||||
\ 'function': 'ale#fixers#prettier#Fix',
|
\ 'function': 'ale#fixers#prettier#Fix',
|
||||||
\ 'suggested_filetypes': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'json5', 'graphql', 'markdown', 'vue', 'html', 'yaml'],
|
\ 'suggested_filetypes': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'json5', 'graphql', 'markdown', 'vue', 'html', 'yaml', 'openapi'],
|
||||||
\ 'description': 'Apply prettier to a file.',
|
\ 'description': 'Apply prettier to a file.',
|
||||||
\ },
|
\ },
|
||||||
\ 'prettier_eslint': {
|
\ 'prettier_eslint': {
|
||||||
|
@ -132,7 +158,7 @@ let s:default_registry = {
|
||||||
\ },
|
\ },
|
||||||
\ 'scalafmt': {
|
\ 'scalafmt': {
|
||||||
\ 'function': 'ale#fixers#scalafmt#Fix',
|
\ 'function': 'ale#fixers#scalafmt#Fix',
|
||||||
\ 'suggested_filetypes': ['scala'],
|
\ 'suggested_filetypes': ['sbt', 'scala'],
|
||||||
\ 'description': 'Fix Scala files using scalafmt',
|
\ 'description': 'Fix Scala files using scalafmt',
|
||||||
\ },
|
\ },
|
||||||
\ 'sorbet': {
|
\ 'sorbet': {
|
||||||
|
@ -342,7 +368,7 @@ let s:default_registry = {
|
||||||
\ },
|
\ },
|
||||||
\ 'ktlint': {
|
\ 'ktlint': {
|
||||||
\ 'function': 'ale#fixers#ktlint#Fix',
|
\ 'function': 'ale#fixers#ktlint#Fix',
|
||||||
\ 'suggested_filetypes': ['kt'],
|
\ 'suggested_filetypes': ['kt', 'kotlin'],
|
||||||
\ 'description': 'Fix Kotlin files with ktlint.',
|
\ 'description': 'Fix Kotlin files with ktlint.',
|
||||||
\ },
|
\ },
|
||||||
\ 'styler': {
|
\ 'styler': {
|
||||||
|
@ -390,16 +416,11 @@ let s:default_registry = {
|
||||||
\ 'suggested_filetypes': ['lua'],
|
\ 'suggested_filetypes': ['lua'],
|
||||||
\ 'description': 'Fix Lua files with luafmt.',
|
\ 'description': 'Fix Lua files with luafmt.',
|
||||||
\ },
|
\ },
|
||||||
\ 'dhall': {
|
|
||||||
\ 'function': 'ale#fixers#dhall#Fix',
|
|
||||||
\ 'suggested_filetypes': ['dhall'],
|
|
||||||
\ 'description': 'Fix Dhall files with dhall-format.',
|
|
||||||
\ },
|
|
||||||
\ 'ormolu': {
|
\ 'ormolu': {
|
||||||
\ 'function': 'ale#fixers#ormolu#Fix',
|
\ 'function': 'ale#fixers#ormolu#Fix',
|
||||||
\ 'suggested_filetypes': ['haskell'],
|
\ 'suggested_filetypes': ['haskell'],
|
||||||
\ 'description': 'A formatter for Haskell source code.',
|
\ 'description': 'A formatter for Haskell source code.',
|
||||||
\ },
|
\ }
|
||||||
\}
|
\}
|
||||||
|
|
||||||
" Reset the function registry to the default entries.
|
" Reset the function registry to the default entries.
|
||||||
|
|
17
autoload/ale/fixers/deno.vim
Normal file
17
autoload/ale/fixers/deno.vim
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
function! ale#fixers#deno#Fix(buffer) abort
|
||||||
|
let l:executable = ale#handlers#deno#GetExecutable(a:buffer)
|
||||||
|
|
||||||
|
if !executable(l:executable)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:options = ' fmt -'
|
||||||
|
|
||||||
|
if ale#Var(a:buffer, 'deno_unstable')
|
||||||
|
let l:options = l:options . ' --unstable'
|
||||||
|
endif
|
||||||
|
|
||||||
|
return {
|
||||||
|
\ 'command': ale#Escape(l:executable) . l:options
|
||||||
|
\}
|
||||||
|
endfunction
|
|
@ -1,23 +0,0 @@
|
||||||
" Author: Pat Brisbin <pbrisbin@gmail.com>
|
|
||||||
" Description: Integration of dhall-format with ALE.
|
|
||||||
|
|
||||||
call ale#Set('dhall_format_executable', 'dhall')
|
|
||||||
|
|
||||||
function! ale#fixers#dhall#GetExecutable(buffer) abort
|
|
||||||
let l:executable = ale#Var(a:buffer, 'dhall_format_executable')
|
|
||||||
|
|
||||||
" Dhall is written in Haskell and commonly installed with Stack
|
|
||||||
return ale#handlers#haskell_stack#EscapeExecutable(l:executable, 'dhall')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ale#fixers#dhall#Fix(buffer) abort
|
|
||||||
let l:executable = ale#fixers#dhall#GetExecutable(a:buffer)
|
|
||||||
|
|
||||||
return {
|
|
||||||
\ 'command': l:executable
|
|
||||||
\ . ' format'
|
|
||||||
\ . ' --inplace'
|
|
||||||
\ . ' %t',
|
|
||||||
\ 'read_temporary_file': 1,
|
|
||||||
\}
|
|
||||||
endfunction
|
|
14
autoload/ale/fixers/dhall_format.vim
Normal file
14
autoload/ale/fixers/dhall_format.vim
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
" Author: toastal <toastal@protonmail.com>
|
||||||
|
" Description: Dhall’s built-in formatter
|
||||||
|
"
|
||||||
|
function! ale#fixers#dhall_format#Fix(buffer) abort
|
||||||
|
let l:executable = ale#dhall#GetExecutableWithOptions(a:buffer)
|
||||||
|
let l:command = l:executable
|
||||||
|
\ . ' format'
|
||||||
|
\ . ' --inplace %t'
|
||||||
|
|
||||||
|
return {
|
||||||
|
\ 'command': l:command,
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\}
|
||||||
|
endfunction
|
18
autoload/ale/fixers/dhall_freeze.vim
Normal file
18
autoload/ale/fixers/dhall_freeze.vim
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
" Author: toastal <toastal@protonmail.com>
|
||||||
|
" Description: Dhall’s package freezing
|
||||||
|
|
||||||
|
call ale#Set('dhall_freeze_options', '')
|
||||||
|
|
||||||
|
function! ale#fixers#dhall_freeze#Freeze(buffer) abort
|
||||||
|
let l:executable = ale#dhall#GetExecutableWithOptions(a:buffer)
|
||||||
|
let l:command = l:executable
|
||||||
|
\ . ' freeze'
|
||||||
|
\ . ale#Pad(ale#Var(a:buffer, 'dhall_freeze_options'))
|
||||||
|
\ . ' --inplace %t'
|
||||||
|
|
||||||
|
|
||||||
|
return {
|
||||||
|
\ 'command': l:command,
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\}
|
||||||
|
endfunction
|
14
autoload/ale/fixers/dhall_lint.vim
Normal file
14
autoload/ale/fixers/dhall_lint.vim
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
" Author: toastal <toastal@protonmail.com>
|
||||||
|
" Description: Dhall’s built-in linter/formatter
|
||||||
|
|
||||||
|
function! ale#fixers#dhall_lint#Fix(buffer) abort
|
||||||
|
let l:executable = ale#dhall#GetExecutableWithOptions(a:buffer)
|
||||||
|
let l:command = l:executable
|
||||||
|
\ . ' lint'
|
||||||
|
\ . ' --inplace %t'
|
||||||
|
|
||||||
|
return {
|
||||||
|
\ 'command': l:command,
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\}
|
||||||
|
endfunction
|
|
@ -2,24 +2,35 @@
|
||||||
" Description: Fixing Python imports with isort.
|
" Description: Fixing Python imports with isort.
|
||||||
|
|
||||||
call ale#Set('python_isort_executable', 'isort')
|
call ale#Set('python_isort_executable', 'isort')
|
||||||
call ale#Set('python_isort_options', '')
|
|
||||||
call ale#Set('python_isort_use_global', get(g:, 'ale_use_global_executables', 0))
|
call ale#Set('python_isort_use_global', get(g:, 'ale_use_global_executables', 0))
|
||||||
|
call ale#Set('python_isort_options', '')
|
||||||
|
call ale#Set('python_isort_auto_pipenv', 0)
|
||||||
|
|
||||||
|
function! ale#fixers#isort#GetExecutable(buffer) abort
|
||||||
|
if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'python_isort_auto_pipenv'))
|
||||||
|
\ && ale#python#PipenvPresent(a:buffer)
|
||||||
|
return 'pipenv'
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ale#python#FindExecutable(a:buffer, 'python_isort', ['isort'])
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! ale#fixers#isort#Fix(buffer) abort
|
function! ale#fixers#isort#Fix(buffer) abort
|
||||||
let l:options = ale#Var(a:buffer, 'python_isort_options')
|
let l:options = ale#Var(a:buffer, 'python_isort_options')
|
||||||
|
|
||||||
let l:executable = ale#python#FindExecutable(
|
let l:executable = ale#fixers#isort#GetExecutable(a:buffer)
|
||||||
\ a:buffer,
|
|
||||||
\ 'python_isort',
|
|
||||||
\ ['isort'],
|
|
||||||
\)
|
|
||||||
|
|
||||||
if !executable(l:executable)
|
let l:exec_args = l:executable =~? 'pipenv$'
|
||||||
|
\ ? ' run isort'
|
||||||
|
\ : ''
|
||||||
|
|
||||||
|
if !executable(l:executable) && l:executable isnot# 'pipenv'
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return {
|
return {
|
||||||
\ 'command': ale#path#BufferCdString(a:buffer)
|
\ 'command': ale#path#BufferCdString(a:buffer)
|
||||||
\ . ale#Escape(l:executable) . (!empty(l:options) ? ' ' . l:options : '') . ' -',
|
\ . ale#Escape(l:executable) . l:exec_args
|
||||||
|
\ . (!empty(l:options) ? ' ' . l:options : '') . ' -',
|
||||||
\}
|
\}
|
||||||
endfunction
|
endfunction
|
||||||
|
|
|
@ -83,6 +83,7 @@ function! ale#fixers#prettier#ApplyFixForVersion(buffer, version) abort
|
||||||
\ 'markdown': 'markdown',
|
\ 'markdown': 'markdown',
|
||||||
\ 'vue': 'vue',
|
\ 'vue': 'vue',
|
||||||
\ 'yaml': 'yaml',
|
\ 'yaml': 'yaml',
|
||||||
|
\ 'openapi': 'yaml',
|
||||||
\ 'html': 'html',
|
\ 'html': 'html',
|
||||||
\}
|
\}
|
||||||
|
|
||||||
|
|
|
@ -12,12 +12,12 @@ function! ale#fixers#standardrb#GetCommand(buffer) abort
|
||||||
return ale#ruby#EscapeExecutable(l:executable, 'standardrb')
|
return ale#ruby#EscapeExecutable(l:executable, 'standardrb')
|
||||||
\ . (!empty(l:config) ? ' --config ' . ale#Escape(l:config) : '')
|
\ . (!empty(l:config) ? ' --config ' . ale#Escape(l:config) : '')
|
||||||
\ . (!empty(l:options) ? ' ' . l:options : '')
|
\ . (!empty(l:options) ? ' ' . l:options : '')
|
||||||
\ . ' --fix --force-exclusion %t'
|
\ . ' --fix --force-exclusion --stdin %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#fixers#standardrb#Fix(buffer) abort
|
function! ale#fixers#standardrb#Fix(buffer) abort
|
||||||
return {
|
return {
|
||||||
\ 'command': ale#fixers#standardrb#GetCommand(a:buffer),
|
\ 'command': ale#fixers#standardrb#GetCommand(a:buffer),
|
||||||
\ 'read_temporary_file': 1,
|
\ 'process_with': 'ale#fixers#rubocop#PostProcess'
|
||||||
\}
|
\}
|
||||||
endfunction
|
endfunction
|
||||||
|
|
|
@ -1,23 +1,36 @@
|
||||||
" Author: Albert Marquez - https://github.com/a-marquez
|
" Author: Albert Marquez - https://github.com/a-marquez
|
||||||
" Description: Fixing files with XO.
|
" Description: Fixing files with XO.
|
||||||
|
|
||||||
call ale#Set('javascript_xo_executable', 'xo')
|
function! ale#fixers#xo#Fix(buffer) abort
|
||||||
call ale#Set('javascript_xo_use_global', get(g:, 'ale_use_global_executables', 0))
|
let l:executable = ale#handlers#xo#GetExecutable(a:buffer)
|
||||||
call ale#Set('javascript_xo_options', '')
|
let l:options = ale#handlers#xo#GetOptions(a:buffer)
|
||||||
|
|
||||||
function! ale#fixers#xo#GetExecutable(buffer) abort
|
return ale#semver#RunWithVersionCheck(
|
||||||
return ale#node#FindExecutable(a:buffer, 'javascript_xo', [
|
\ a:buffer,
|
||||||
\ 'node_modules/xo/cli.js',
|
\ l:executable,
|
||||||
\ 'node_modules/.bin/xo',
|
\ '%e --version',
|
||||||
\])
|
\ {b, v -> ale#fixers#xo#ApplyFixForVersion(b, v, l:executable, l:options)}
|
||||||
|
\)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#fixers#xo#Fix(buffer) abort
|
function! ale#fixers#xo#ApplyFixForVersion(buffer, version, executable, options) abort
|
||||||
let l:executable = ale#fixers#xo#GetExecutable(a:buffer)
|
let l:executable = ale#node#Executable(a:buffer, a:executable)
|
||||||
|
let l:options = ale#Pad(a:options)
|
||||||
|
|
||||||
|
" 0.30.0 is the first version with a working --stdin --fix
|
||||||
|
if ale#semver#GTE(a:version, [0, 30, 0])
|
||||||
|
return {
|
||||||
|
\ 'command': l:executable
|
||||||
|
\ . ' --stdin --stdin-filename %s'
|
||||||
|
\ . ' --fix'
|
||||||
|
\ . l:options,
|
||||||
|
\}
|
||||||
|
endif
|
||||||
|
|
||||||
return {
|
return {
|
||||||
\ 'command': ale#node#Executable(a:buffer, l:executable)
|
\ 'command': l:executable
|
||||||
\ . ' --fix %t',
|
\ . ' --fix %t'
|
||||||
|
\ . l:options,
|
||||||
\ 'read_temporary_file': 1,
|
\ 'read_temporary_file': 1,
|
||||||
\}
|
\}
|
||||||
endfunction
|
endfunction
|
||||||
|
|
91
autoload/ale/floating_preview.vim
Normal file
91
autoload/ale/floating_preview.vim
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
" Author: Jan-Grimo Sobez <jan-grimo.sobez@phys.chem.ethz.ch>
|
||||||
|
" Author: Kevin Clark <kevin.clark@gmail.com>
|
||||||
|
" Description: Floating preview window for showing whatever information in.
|
||||||
|
|
||||||
|
" Precondition: exists('*nvim_open_win')
|
||||||
|
|
||||||
|
function! ale#floating_preview#Show(lines, ...) abort
|
||||||
|
if !exists('*nvim_open_win')
|
||||||
|
execute 'echom ''Floating windows not supported in this vim instance.'''
|
||||||
|
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Remove the close autocmd so it doesn't happen mid update
|
||||||
|
augroup ale_floating_preview_window
|
||||||
|
autocmd!
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
let l:options = get(a:000, 0, {})
|
||||||
|
|
||||||
|
" Only create a new window if we need it
|
||||||
|
if !exists('w:preview') || index(nvim_list_wins(), w:preview['id']) is# -1
|
||||||
|
call s:Create(l:options)
|
||||||
|
else
|
||||||
|
call nvim_buf_set_option(w:preview['buffer'], 'modifiable', v:true)
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Execute commands in window context
|
||||||
|
let l:parent_window = nvim_get_current_win()
|
||||||
|
|
||||||
|
call nvim_set_current_win(w:preview['id'])
|
||||||
|
|
||||||
|
for l:command in get(l:options, 'commands', [])
|
||||||
|
call execute(l:command)
|
||||||
|
endfor
|
||||||
|
|
||||||
|
call nvim_set_current_win(l:parent_window)
|
||||||
|
|
||||||
|
" Return to parent context on move
|
||||||
|
augroup ale_floating_preview_window
|
||||||
|
autocmd!
|
||||||
|
|
||||||
|
if g:ale_close_preview_on_insert
|
||||||
|
autocmd CursorMoved,TabLeave,WinLeave,InsertEnter <buffer> ++once call s:Close()
|
||||||
|
else
|
||||||
|
autocmd CursorMoved,TabLeave,WinLeave <buffer> ++once call s:Close()
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
let l:width = max(map(copy(a:lines), 'strdisplaywidth(v:val)'))
|
||||||
|
let l:height = min([len(a:lines), 10])
|
||||||
|
call nvim_win_set_width(w:preview['id'], l:width)
|
||||||
|
call nvim_win_set_height(w:preview['id'], l:height)
|
||||||
|
|
||||||
|
call nvim_buf_set_lines(w:preview['buffer'], 0, -1, v:false, a:lines)
|
||||||
|
call nvim_buf_set_option(w:preview['buffer'], 'modified', v:false)
|
||||||
|
call nvim_buf_set_option(w:preview['buffer'], 'modifiable', v:false)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Create(options) abort
|
||||||
|
let l:buffer = nvim_create_buf(v:false, v:false)
|
||||||
|
let l:winid = nvim_open_win(l:buffer, v:false, {
|
||||||
|
\ 'relative': 'cursor',
|
||||||
|
\ 'row': 1,
|
||||||
|
\ 'col': 0,
|
||||||
|
\ 'width': 42,
|
||||||
|
\ 'height': 4,
|
||||||
|
\ 'style': 'minimal'
|
||||||
|
\ })
|
||||||
|
call nvim_buf_set_option(l:buffer, 'buftype', 'acwrite')
|
||||||
|
call nvim_buf_set_option(l:buffer, 'bufhidden', 'delete')
|
||||||
|
call nvim_buf_set_option(l:buffer, 'swapfile', v:false)
|
||||||
|
call nvim_buf_set_option(l:buffer, 'filetype', get(a:options, 'filetype', 'ale-preview'))
|
||||||
|
|
||||||
|
let w:preview = {'id': l:winid, 'buffer': l:buffer}
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Close() abort
|
||||||
|
if !exists('w:preview')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
call setbufvar(w:preview['buffer'], '&modified', 0)
|
||||||
|
|
||||||
|
if win_id2win(w:preview['id']) > 0
|
||||||
|
execute win_id2win(w:preview['id']).'wincmd c'
|
||||||
|
endif
|
||||||
|
|
||||||
|
unlet w:preview
|
||||||
|
endfunction
|
||||||
|
|
41
autoload/ale/handlers/atools.vim
Normal file
41
autoload/ale/handlers/atools.vim
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
" Author: Leo <thinkabit.ukim@gmail.com>
|
||||||
|
" Description: Handlers for output expected from atools
|
||||||
|
|
||||||
|
function! ale#handlers#atools#Handle(buffer, lines) abort
|
||||||
|
" Format: SEVERITY:[TAG]:PATH:LINENUM:MSG
|
||||||
|
" Example: MC:[AL5]:./APKBUILD:12:variable set to empty string: install=
|
||||||
|
let l:pattern = '\([^:]\+\):\([^:]\+\):\([^:]\+\):\(\d\+\):\(.\+\)$'
|
||||||
|
let l:output = []
|
||||||
|
|
||||||
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
|
" We are expected to receive 2 characters, the first character
|
||||||
|
" can be 'S', 'I', 'M' 'T', which are respectively:
|
||||||
|
" Serious (Error)
|
||||||
|
" Important (Error)
|
||||||
|
" Minor (Warning)
|
||||||
|
" Style (Warning)
|
||||||
|
"
|
||||||
|
" The second character can be either 'C' or 'P', which are respectively:
|
||||||
|
" Certain (Error)
|
||||||
|
" Possible (Warning)
|
||||||
|
let l:severity = matchstr(l:match[1], '^.')
|
||||||
|
let l:certainty = matchstr(l:match[1], '.$')
|
||||||
|
|
||||||
|
let l:type = 'E'
|
||||||
|
" If the tag returns 'Minor' or 'Style' or is 'Possible'
|
||||||
|
" then return a warning
|
||||||
|
|
||||||
|
if l:severity is# 'M' || l:severity is# 'T' || l:certainty is# 'P'
|
||||||
|
let l:type = 'W'
|
||||||
|
endif
|
||||||
|
|
||||||
|
call add(l:output, {
|
||||||
|
\ 'lnum': l:match[4] + 0,
|
||||||
|
\ 'text': l:match[5],
|
||||||
|
\ 'type': l:type,
|
||||||
|
\ 'code': matchstr(l:match[2], 'AL[0-9]*'),
|
||||||
|
\})
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
52
autoload/ale/handlers/deno.vim
Normal file
52
autoload/ale/handlers/deno.vim
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
" Author: Mohammed Chelouti - https://github.com/motato1
|
||||||
|
" Description: Handler functions for Deno.
|
||||||
|
|
||||||
|
call ale#Set('deno_executable', 'deno')
|
||||||
|
call ale#Set('deno_unstable', 0)
|
||||||
|
call ale#Set('deno_lsp_project_root', '')
|
||||||
|
|
||||||
|
function! ale#handlers#deno#GetExecutable(buffer) abort
|
||||||
|
return ale#Var(a:buffer, 'deno_executable')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Find project root for Deno's language server.
|
||||||
|
"
|
||||||
|
" Deno projects do not require a project or configuration file at the project root.
|
||||||
|
" This means the root directory has to be guessed,
|
||||||
|
" unless it is explicitly specified by the user.
|
||||||
|
"
|
||||||
|
" The project root is determined by ...
|
||||||
|
" 1. using a user-specified value from deno_lsp_project_root
|
||||||
|
" 2. looking for common top-level files/dirs
|
||||||
|
" 3. using the buffer's directory
|
||||||
|
function! ale#handlers#deno#GetProjectRoot(buffer) abort
|
||||||
|
let l:project_root = ale#Var(a:buffer, 'deno_lsp_project_root')
|
||||||
|
|
||||||
|
if !empty(l:project_root)
|
||||||
|
return l:project_root
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:possible_project_roots = [
|
||||||
|
\ 'tsconfig.json',
|
||||||
|
\ '.git',
|
||||||
|
\ bufname(a:buffer),
|
||||||
|
\]
|
||||||
|
|
||||||
|
for l:possible_root in l:possible_project_roots
|
||||||
|
let l:project_root = ale#path#FindNearestFile(a:buffer, l:possible_root)
|
||||||
|
|
||||||
|
if empty(l:project_root)
|
||||||
|
let l:project_root = ale#path#FindNearestDirectory(a:buffer, l:possible_root)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !empty(l:project_root)
|
||||||
|
" dir:p expands to /full/path/to/dir/ whereas
|
||||||
|
" file:p expands to /full/path/to/file (no trailing slash)
|
||||||
|
" Appending '/' ensures that :h:h removes the path's last segment
|
||||||
|
" regardless of whether it is a directory or not.
|
||||||
|
return fnamemodify(l:project_root . '/', ':p:h:h')
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return ''
|
||||||
|
endfunction
|
37
autoload/ale/handlers/inko.vim
Normal file
37
autoload/ale/handlers/inko.vim
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
" Author: Yorick Peterse <yorick@yorickpeterse.com>
|
||||||
|
" Description: output handlers for the Inko JSON format
|
||||||
|
|
||||||
|
function! ale#handlers#inko#GetType(severity) abort
|
||||||
|
if a:severity is? 'warning'
|
||||||
|
return 'W'
|
||||||
|
endif
|
||||||
|
|
||||||
|
return 'E'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#handlers#inko#Handle(buffer, lines) abort
|
||||||
|
try
|
||||||
|
let l:errors = json_decode(join(a:lines, ''))
|
||||||
|
catch
|
||||||
|
return []
|
||||||
|
endtry
|
||||||
|
|
||||||
|
if empty(l:errors)
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:output = []
|
||||||
|
let l:dir = expand('#' . a:buffer . ':p:h')
|
||||||
|
|
||||||
|
for l:error in l:errors
|
||||||
|
call add(l:output, {
|
||||||
|
\ 'filename': ale#path#GetAbsPath(l:dir, l:error['file']),
|
||||||
|
\ 'lnum': l:error['line'],
|
||||||
|
\ 'col': l:error['column'],
|
||||||
|
\ 'text': l:error['message'],
|
||||||
|
\ 'type': ale#handlers#inko#GetType(l:error['level']),
|
||||||
|
\})
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
31
autoload/ale/handlers/spectral.vim
Normal file
31
autoload/ale/handlers/spectral.vim
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
" Author: t2h5 <https://github.com/t2h5>
|
||||||
|
" Description: Integration of Stoplight Spectral CLI with ALE.
|
||||||
|
|
||||||
|
function! ale#handlers#spectral#HandleSpectralOutput(buffer, lines) abort
|
||||||
|
" Matches patterns like the following:
|
||||||
|
" openapi.yml:1:1 error oas3-schema "Object should have required property `info`."
|
||||||
|
" openapi.yml:1:1 warning oas3-api-servers "OpenAPI `servers` must be present and non-empty array."
|
||||||
|
let l:pattern = '\v^.*:(\d+):(\d+) (error|warning) (.*)$'
|
||||||
|
let l:output = []
|
||||||
|
|
||||||
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
|
let l:obj = {
|
||||||
|
\ 'lnum': l:match[1] + 0,
|
||||||
|
\ 'col': l:match[2] + 0,
|
||||||
|
\ 'type': l:match[3] is# 'error' ? 'E' : 'W',
|
||||||
|
\ 'text': l:match[4],
|
||||||
|
\}
|
||||||
|
|
||||||
|
let l:code_match = matchlist(l:obj.text, '\v^(.+) "(.+)"$')
|
||||||
|
|
||||||
|
if !empty(l:code_match)
|
||||||
|
let l:obj.code = l:code_match[1]
|
||||||
|
let l:obj.text = l:code_match[2]
|
||||||
|
endif
|
||||||
|
|
||||||
|
call add(l:output, l:obj)
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
||||||
|
|
44
autoload/ale/handlers/xo.vim
Normal file
44
autoload/ale/handlers/xo.vim
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
call ale#Set('javascript_xo_executable', 'xo')
|
||||||
|
call ale#Set('javascript_xo_use_global', get(g:, 'ale_use_global_executables', 0))
|
||||||
|
call ale#Set('javascript_xo_options', '')
|
||||||
|
|
||||||
|
call ale#Set('typescript_xo_executable', 'xo')
|
||||||
|
call ale#Set('typescript_xo_use_global', get(g:, 'ale_use_global_executables', 0))
|
||||||
|
call ale#Set('typescript_xo_options', '')
|
||||||
|
|
||||||
|
function! ale#handlers#xo#GetExecutable(buffer) abort
|
||||||
|
let l:type = ale#handlers#xo#GetType(a:buffer)
|
||||||
|
|
||||||
|
return ale#node#FindExecutable(a:buffer, l:type . '_xo', [
|
||||||
|
\ 'node_modules/xo/cli.js',
|
||||||
|
\ 'node_modules/.bin/xo',
|
||||||
|
\])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#handlers#xo#GetLintCommand(buffer) abort
|
||||||
|
return ale#Escape(ale#handlers#xo#GetExecutable(a:buffer))
|
||||||
|
\ . ale#Pad(ale#handlers#xo#GetOptions(a:buffer))
|
||||||
|
\ . ' --reporter json --stdin --stdin-filename %s'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#handlers#xo#GetOptions(buffer) abort
|
||||||
|
let l:type = ale#handlers#xo#GetType(a:buffer)
|
||||||
|
|
||||||
|
return ale#Var(a:buffer, l:type . '_xo_options')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" xo uses eslint and the output format is the same
|
||||||
|
function! ale#handlers#xo#HandleJSON(buffer, lines) abort
|
||||||
|
return ale#handlers#eslint#HandleJSON(a:buffer, a:lines)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#handlers#xo#GetType(buffer) abort
|
||||||
|
let l:filetype = getbufvar(a:buffer, '&filetype')
|
||||||
|
let l:type = 'javascript'
|
||||||
|
|
||||||
|
if l:filetype =~# 'typescript'
|
||||||
|
let l:type = 'typescript'
|
||||||
|
endif
|
||||||
|
|
||||||
|
return l:type
|
||||||
|
endfunction
|
39
autoload/ale/handlers/yamllint.vim
Normal file
39
autoload/ale/handlers/yamllint.vim
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
function! ale#handlers#yamllint#GetCommand(buffer) abort
|
||||||
|
return '%e' . ale#Pad(ale#Var(a:buffer, 'yaml_yamllint_options'))
|
||||||
|
\ . ' -f parsable %t'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#handlers#yamllint#Handle(buffer, lines) abort
|
||||||
|
" Matches patterns line the following:
|
||||||
|
" something.yaml:1:1: [warning] missing document start "---" (document-start)
|
||||||
|
" something.yml:2:1: [error] syntax error: expected the node content, but found '<stream end>'
|
||||||
|
let l:pattern = '\v^.*:(\d+):(\d+): \[(error|warning)\] (.+)$'
|
||||||
|
let l:output = []
|
||||||
|
|
||||||
|
for l:match in ale#util#GetMatches(a:lines, l:pattern)
|
||||||
|
let l:item = {
|
||||||
|
\ 'lnum': l:match[1] + 0,
|
||||||
|
\ 'col': l:match[2] + 0,
|
||||||
|
\ 'text': l:match[4],
|
||||||
|
\ 'type': l:match[3] is# 'error' ? 'E' : 'W',
|
||||||
|
\}
|
||||||
|
|
||||||
|
let l:code_match = matchlist(l:item.text, '\v^(.+) \(([^)]+)\)$')
|
||||||
|
|
||||||
|
if !empty(l:code_match)
|
||||||
|
if l:code_match[2] is# 'trailing-spaces'
|
||||||
|
\&& !ale#Var(a:buffer, 'warn_about_trailing_whitespace')
|
||||||
|
" Skip warnings for trailing whitespace if the option is off.
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:item.text = l:code_match[1]
|
||||||
|
let l:item.code = l:code_match[2]
|
||||||
|
endif
|
||||||
|
|
||||||
|
call add(l:output, l:item)
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
||||||
|
|
|
@ -46,6 +46,10 @@ function! ale#hover#HandleTSServerResponse(conn_id, response) abort
|
||||||
call balloon_show(a:response.body.displayString)
|
call balloon_show(a:response.body.displayString)
|
||||||
elseif get(l:options, 'truncated_echo', 0)
|
elseif get(l:options, 'truncated_echo', 0)
|
||||||
call ale#cursor#TruncatedEcho(split(a:response.body.displayString, "\n")[0])
|
call ale#cursor#TruncatedEcho(split(a:response.body.displayString, "\n")[0])
|
||||||
|
elseif g:ale_hover_to_floating_preview || g:ale_floating_preview
|
||||||
|
call ale#floating_preview#Show(split(a:response.body.displayString, "\n"), {
|
||||||
|
\ 'filetype': 'ale-preview.message',
|
||||||
|
\})
|
||||||
elseif g:ale_hover_to_preview
|
elseif g:ale_hover_to_preview
|
||||||
call ale#preview#Show(split(a:response.body.displayString, "\n"), {
|
call ale#preview#Show(split(a:response.body.displayString, "\n"), {
|
||||||
\ 'filetype': 'ale-preview.message',
|
\ 'filetype': 'ale-preview.message',
|
||||||
|
@ -226,6 +230,11 @@ function! ale#hover#HandleLSPResponse(conn_id, response) abort
|
||||||
call balloon_show(join(l:lines, "\n"))
|
call balloon_show(join(l:lines, "\n"))
|
||||||
elseif get(l:options, 'truncated_echo', 0)
|
elseif get(l:options, 'truncated_echo', 0)
|
||||||
call ale#cursor#TruncatedEcho(l:lines[0])
|
call ale#cursor#TruncatedEcho(l:lines[0])
|
||||||
|
elseif g:ale_hover_to_floating_preview || g:ale_floating_preview
|
||||||
|
call ale#floating_preview#Show(l:lines, {
|
||||||
|
\ 'filetype': 'ale-preview.message',
|
||||||
|
\ 'commands': l:commands,
|
||||||
|
\})
|
||||||
elseif g:ale_hover_to_preview
|
elseif g:ale_hover_to_preview
|
||||||
call ale#preview#Show(l:lines, {
|
call ale#preview#Show(l:lines, {
|
||||||
\ 'filetype': 'ale-preview.message',
|
\ 'filetype': 'ale-preview.message',
|
||||||
|
|
|
@ -38,11 +38,13 @@ let s:default_ale_linter_aliases = {
|
||||||
"
|
"
|
||||||
" NOTE: Update the g:ale_linters documentation when modifying this.
|
" NOTE: Update the g:ale_linters documentation when modifying this.
|
||||||
let s:default_ale_linters = {
|
let s:default_ale_linters = {
|
||||||
|
\ 'apkbuild': ['apkbuild_lint', 'secfixes_check'],
|
||||||
\ 'csh': ['shell'],
|
\ 'csh': ['shell'],
|
||||||
\ 'elixir': ['credo', 'dialyxir', 'dogma'],
|
\ 'elixir': ['credo', 'dialyxir', 'dogma'],
|
||||||
\ 'go': ['gofmt', 'golint', 'go vet'],
|
\ 'go': ['gofmt', 'golint', 'go vet'],
|
||||||
\ 'hack': ['hack'],
|
\ 'hack': ['hack'],
|
||||||
\ 'help': [],
|
\ 'help': [],
|
||||||
|
\ 'inko': ['inko'],
|
||||||
\ 'perl': ['perlcritic'],
|
\ 'perl': ['perlcritic'],
|
||||||
\ 'perl6': [],
|
\ 'perl6': [],
|
||||||
\ 'python': ['flake8', 'mypy', 'pylint', 'pyright'],
|
\ 'python': ['flake8', 'mypy', 'pylint', 'pyright'],
|
||||||
|
|
|
@ -85,12 +85,18 @@ function! s:HandleTSServerDiagnostics(response, error_type) abort
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:info.syntax_loclist = l:thislist
|
let l:info.syntax_loclist = l:thislist
|
||||||
else
|
elseif a:error_type is# 'semantic'
|
||||||
if len(l:thislist) is 0 && len(get(l:info, 'semantic_loclist', [])) is 0
|
if len(l:thislist) is 0 && len(get(l:info, 'semantic_loclist', [])) is 0
|
||||||
let l:no_changes = 1
|
let l:no_changes = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:info.semantic_loclist = l:thislist
|
let l:info.semantic_loclist = l:thislist
|
||||||
|
else
|
||||||
|
if len(l:thislist) is 0 && len(get(l:info, 'suggestion_loclist', [])) is 0
|
||||||
|
let l:no_changes = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:info.suggestion_loclist = l:thislist
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if l:no_changes
|
if l:no_changes
|
||||||
|
@ -98,6 +104,7 @@ function! s:HandleTSServerDiagnostics(response, error_type) abort
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:loclist = get(l:info, 'semantic_loclist', [])
|
let l:loclist = get(l:info, 'semantic_loclist', [])
|
||||||
|
\ + get(l:info, 'suggestion_loclist', [])
|
||||||
\ + get(l:info, 'syntax_loclist', [])
|
\ + get(l:info, 'syntax_loclist', [])
|
||||||
|
|
||||||
call ale#engine#HandleLoclist(l:linter_name, l:buffer, l:loclist, 0)
|
call ale#engine#HandleLoclist(l:linter_name, l:buffer, l:loclist, 0)
|
||||||
|
@ -150,6 +157,10 @@ function! ale#lsp_linter#HandleLSPResponse(conn_id, response) abort
|
||||||
elseif get(a:response, 'type', '') is# 'event'
|
elseif get(a:response, 'type', '') is# 'event'
|
||||||
\&& get(a:response, 'event', '') is# 'syntaxDiag'
|
\&& get(a:response, 'event', '') is# 'syntaxDiag'
|
||||||
call s:HandleTSServerDiagnostics(a:response, 'syntax')
|
call s:HandleTSServerDiagnostics(a:response, 'syntax')
|
||||||
|
elseif get(a:response, 'type', '') is# 'event'
|
||||||
|
\&& get(a:response, 'event', '') is# 'suggestionDiag'
|
||||||
|
\&& get(g:, 'ale_lsp_suggestions', '1') == 1
|
||||||
|
call s:HandleTSServerDiagnostics(a:response, 'suggestion')
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ function! ale#maven#FindExecutable(buffer) abort
|
||||||
let l:wrapper_cmd = has('unix') ? 'mvnw' : 'mvnw.cmd'
|
let l:wrapper_cmd = has('unix') ? 'mvnw' : 'mvnw.cmd'
|
||||||
let l:wrapper_path = ale#path#FindNearestFile(a:buffer, l:wrapper_cmd)
|
let l:wrapper_path = ale#path#FindNearestFile(a:buffer, l:wrapper_cmd)
|
||||||
|
|
||||||
if executable(l:wrapper_path)
|
if !empty(l:wrapper_path) && executable(l:wrapper_path)
|
||||||
return l:wrapper_path
|
return l:wrapper_path
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,8 @@ function! ale#python#FindProjectRootIni(buffer) abort
|
||||||
\|| filereadable(l:path . '/.pylintrc')
|
\|| filereadable(l:path . '/.pylintrc')
|
||||||
\|| filereadable(l:path . '/Pipfile')
|
\|| filereadable(l:path . '/Pipfile')
|
||||||
\|| filereadable(l:path . '/Pipfile.lock')
|
\|| filereadable(l:path . '/Pipfile.lock')
|
||||||
|
\|| filereadable(l:path . '/poetry.lock')
|
||||||
|
\|| filereadable(l:path . '/pyproject.toml')
|
||||||
return l:path
|
return l:path
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
|
@ -486,7 +486,7 @@ function! ale#util#Input(message, value) abort
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#util#HasBuflineApi() abort
|
function! ale#util#HasBuflineApi() abort
|
||||||
return exists('*deletebufline') && exists('*appendbufline') && exists('*getpos') && exists('*setpos')
|
return exists('*deletebufline') && exists('*setbufline')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Sets buffer contents to lines
|
" Sets buffer contents to lines
|
||||||
|
@ -507,11 +507,8 @@ function! ale#util#SetBufferContents(buffer, lines) abort
|
||||||
|
|
||||||
" Use a Vim API for setting lines in other buffers, if available.
|
" Use a Vim API for setting lines in other buffers, if available.
|
||||||
if l:has_bufline_api
|
if l:has_bufline_api
|
||||||
let l:save_cursor = getpos('.')
|
call setbufline(a:buffer, 1, l:new_lines)
|
||||||
call deletebufline(a:buffer, 1, '$')
|
call deletebufline(a:buffer, l:first_line_to_remove, '$')
|
||||||
call appendbufline(a:buffer, 1, l:new_lines)
|
|
||||||
call deletebufline(a:buffer, 1, 1)
|
|
||||||
call setpos('.', l:save_cursor)
|
|
||||||
" Fall back on setting lines the old way, for the current buffer.
|
" Fall back on setting lines the old way, for the current buffer.
|
||||||
else
|
else
|
||||||
let l:old_line_length = line('$')
|
let l:old_line_length = line('$')
|
||||||
|
|
|
@ -32,5 +32,35 @@ g:ale_ada_gnatpp_options *g:ale_ada_gnatpp_options*
|
||||||
This variable can be set to pass extra options to the gnatpp fixer.
|
This variable can be set to pass extra options to the gnatpp fixer.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
ada-language-server *ale-ada-language-server*
|
||||||
|
|
||||||
|
g:ale_ada_adals_executable *g:ale_ada_adals_executable*
|
||||||
|
*b:ale_ada_adals_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'ada_language_server'`
|
||||||
|
|
||||||
|
This variable can be changed to use a different executable for Ada Language
|
||||||
|
Server.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_ada_adals_project *g:ale_ada_adals_project*
|
||||||
|
*b:ale_ada_adals_project*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'default.gpr'`
|
||||||
|
|
||||||
|
This variable can be changed to use a different GPR file for
|
||||||
|
Ada Language Server.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_ada_adals_encoding *g:ale_ada_adals_encoding*
|
||||||
|
*b:ale_ada_adals_encoding*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'utf-8'`
|
||||||
|
|
||||||
|
This variable can be changed to use a different file encoding for
|
||||||
|
Ada Language Server.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
|
|
30
doc/ale-apkbuild.txt
Normal file
30
doc/ale-apkbuild.txt
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
===============================================================================
|
||||||
|
ALE APKBUILD Integration *ale-apkbuild-options*
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
apkbuild-lint *ale-apkbuild-apkbuild-lint*
|
||||||
|
|
||||||
|
g:ale_apkbuild_apkbuild_lint_executable
|
||||||
|
*g:ale_apkbuild_apkbuild_lint_executable*
|
||||||
|
*b:ale_apkbuild_apkbuild_lint_executable*
|
||||||
|
|
||||||
|
Type: |String|
|
||||||
|
Default: `'apkbuild-lint'`
|
||||||
|
|
||||||
|
This variable can be set to change the path to apkbuild-lint
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
secfixes-check *ale-apkbuild-secfixes-check*
|
||||||
|
|
||||||
|
g:ale_apkbuild_secfixes_check_executable
|
||||||
|
*g:ale_apkbuild_secfixes_check_executable*
|
||||||
|
*b:ale_apkbuild_secfixes_check_executable*
|
||||||
|
|
||||||
|
Type: |String|
|
||||||
|
Default: `'secfixes-check'`
|
||||||
|
|
||||||
|
This variable can be set to change the path to secfixes-check
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
16
doc/ale-dafny.txt
Normal file
16
doc/ale-dafny.txt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
===============================================================================
|
||||||
|
ALE Dafny Integration *ale-dafny-options*
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
dafny *ale-dafny-dafny*
|
||||||
|
|
||||||
|
g:ale_dafny_dafny_timelimit *g:ale_dafny_dafny_timelimit*
|
||||||
|
*b:ale_dafny_dafny_timelimit*
|
||||||
|
Type: |Number|
|
||||||
|
Default: `10`
|
||||||
|
|
||||||
|
This variable sets the `/timeLimit` used for dafny.
|
||||||
|
|
||||||
|
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
|
@ -2,6 +2,31 @@
|
||||||
ALE Dart Integration *ale-dart-options*
|
ALE Dart Integration *ale-dart-options*
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
analysis_server *ale-dart-analysis_server*
|
||||||
|
|
||||||
|
Installation
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Install Dart via whatever means. `analysis_server` will be included in the SDK.
|
||||||
|
|
||||||
|
In case that `dart` is not in your path, try to set the executable option to
|
||||||
|
its absolute path. : >
|
||||||
|
" Set the executable path for dart to the absolute path to it.
|
||||||
|
let g:ale_dart_analysis_server_executable = '/usr/local/bin/dart'
|
||||||
|
<
|
||||||
|
|
||||||
|
Options
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
g:ale_dart_analysis_server_executable *g:ale_dart_analysis_server_executable*
|
||||||
|
*b:ale_dart_analysis_server_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'dart'`
|
||||||
|
|
||||||
|
This variable can be set to change the path of dart.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
dartanalyzer *ale-dart-dartanalyzer*
|
dartanalyzer *ale-dart-dartanalyzer*
|
||||||
|
|
||||||
|
|
52
doc/ale-dhall.txt
Normal file
52
doc/ale-dhall.txt
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
===============================================================================
|
||||||
|
ALE Dhall Integration *ale-dhall-options*
|
||||||
|
|
||||||
|
g:ale_dhall_executable *g:ale_dhall_executable*
|
||||||
|
*b:ale_dhall_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'dhall'`
|
||||||
|
|
||||||
|
g:ale_dhall_options g:ale_dhall_options
|
||||||
|
b:ale_dhall_options
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This variable can be set to pass additional options to the 'dhall` executable.
|
||||||
|
This is shared with `dhall-freeze` and `dhall-lint`.
|
||||||
|
>
|
||||||
|
let g:dhall_options = '--ascii'
|
||||||
|
<
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
dhall-format *ale-dhall-format*
|
||||||
|
|
||||||
|
Dhall
|
||||||
|
(https://dhall-lang.org/)
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
dhall-freeze *ale-dhall-freeze*
|
||||||
|
|
||||||
|
Dhall
|
||||||
|
(https://dhall-lang.org/)
|
||||||
|
|
||||||
|
g:ale_dhall_freeze_options g:ale_dhall_freeze_options
|
||||||
|
b:ale_dhall_freeze_options
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This variable can be set to pass additional options to the 'dhall freeze`
|
||||||
|
executable.
|
||||||
|
>
|
||||||
|
let g:dhall_freeze_options = '--all'
|
||||||
|
<
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
dhall-lint *ale-dhall-lint*
|
||||||
|
|
||||||
|
Dhall
|
||||||
|
(https://dhall-lang.org/)
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
|
@ -85,5 +85,12 @@ g:ale_elixir_credo_strict *g:ale_elixir_credo_strict*
|
||||||
Tells credo to run in strict mode or suggest mode. Set variable to 1 to
|
Tells credo to run in strict mode or suggest mode. Set variable to 1 to
|
||||||
enable --strict mode.
|
enable --strict mode.
|
||||||
|
|
||||||
|
g:ale_elixir_credo_config_file g:ale_elixir_credo_config_file
|
||||||
|
|
||||||
|
Type: String
|
||||||
|
Default: ''
|
||||||
|
|
||||||
|
Tells credo to use a custom configuration 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:
|
||||||
|
|
|
@ -46,6 +46,14 @@ g:ale_erlang_elvis_executable *g:ale_erlang_elvis_executable*
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
erlc *ale-erlang-erlc*
|
erlc *ale-erlang-erlc*
|
||||||
|
|
||||||
|
g:ale_erlang_erlc_executable *g:ale_erlang_erlc_executable*
|
||||||
|
*b:ale_erlang_erlc_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'erlc'`
|
||||||
|
|
||||||
|
This variable can be changed to specify the erlc executable.
|
||||||
|
|
||||||
|
|
||||||
g:ale_erlang_erlc_options *g:ale_erlang_erlc_options*
|
g:ale_erlang_erlc_options *g:ale_erlang_erlc_options*
|
||||||
*b:ale_erlang_erlc_options*
|
*b:ale_erlang_erlc_options*
|
||||||
Type: |String|
|
Type: |String|
|
||||||
|
|
22
doc/ale-inko.txt
Normal file
22
doc/ale-inko.txt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
===============================================================================
|
||||||
|
ALE Inko Integration *ale-inko-options*
|
||||||
|
*ale-integration-inko*
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
Integration Information
|
||||||
|
|
||||||
|
Currently, the only supported linter for Inko is the Inko compiler itself.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
inko *ale-inko-inko*
|
||||||
|
|
||||||
|
g:ale_inko_inko_executable *g:ale_inko_inko_executable*
|
||||||
|
*b:ale_inko_inko_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'inko'`
|
||||||
|
|
||||||
|
This variable can be modified to change the executable path for `inko`.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
|
@ -101,5 +101,37 @@ prettier *ale-json-prettier*
|
||||||
See |ale-javascript-prettier| for information about the available options.
|
See |ale-javascript-prettier| for information about the available options.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
spectral *ale-json-spectral*
|
||||||
|
|
||||||
|
Website: https://github.com/stoplightio/spectral
|
||||||
|
|
||||||
|
Installation
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Install spectral either globally or locally: >
|
||||||
|
|
||||||
|
npm install @stoplight/spectral -g # global
|
||||||
|
npm install @stoplight/spectral # local
|
||||||
|
<
|
||||||
|
|
||||||
|
Options
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
g:ale_json_spectral_executable *g:ale_json_spectral_executable*
|
||||||
|
*b:ale_json_spectral_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'spectral'`
|
||||||
|
|
||||||
|
This variable can be set to change the path to spectral.
|
||||||
|
|
||||||
|
g:ale_json_spectral_use_global *g:ale_json_spectral_use_global*
|
||||||
|
*b:ale_json_spectral_use_global*
|
||||||
|
Type: |String|
|
||||||
|
Default: `get(g:, 'ale_use_global_executables', 0)`
|
||||||
|
|
||||||
|
See |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:
|
||||||
|
|
74
doc/ale-openapi.txt
Normal file
74
doc/ale-openapi.txt
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
===============================================================================
|
||||||
|
ALE OpenApi Integration *ale-openapi-options*
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
ibm_validator *ale-openapi-ibm-validator*
|
||||||
|
|
||||||
|
Website: https://github.com/IBM/openapi-validator
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Install ibm-openapi-validator either globally or locally: >
|
||||||
|
|
||||||
|
npm install ibm-openapi-validator -g # global
|
||||||
|
npm install ibm-openapi-validator # local
|
||||||
|
<
|
||||||
|
Configuration
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
OpenAPI files can be written in YAML or JSON so in order for ALE plugins to
|
||||||
|
work with these files we must set the buffer |filetype| to either |openapi.yaml|
|
||||||
|
or |openapi.json| respectively. This causes ALE to lint the file with linters
|
||||||
|
configured for openapi and yaml files or openapi and json files respectively.
|
||||||
|
|
||||||
|
For example setting filetype to |openapi.yaml| on a buffer and the following
|
||||||
|
|g:ale_linters| configuration will enable linting of openapi files using both
|
||||||
|
|ibm_validator| and |yamlint|:
|
||||||
|
|
||||||
|
>
|
||||||
|
let g:ale_linters = {
|
||||||
|
\ 'yaml': ['yamllint'],
|
||||||
|
\ 'openapi': ['ibm_validator']
|
||||||
|
\}
|
||||||
|
<
|
||||||
|
|
||||||
|
The following plugin will detect openapi files automatically and set the
|
||||||
|
filetype to |openapi.yaml| or |openapi.json|:
|
||||||
|
|
||||||
|
https://github.com/hsanson/vim-openapi
|
||||||
|
|
||||||
|
Options
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
g:ale_openapi_ibm_validator_executable *g:ale_openapi_ibm_validator_executable*
|
||||||
|
*b:ale_openapi_ibm_validator_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'lint-openapi'`
|
||||||
|
|
||||||
|
This variable can be set to change the path to lint-openapi.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_openapi_ibm_validator_options *g:ale_openapi_ibm_validator_options*
|
||||||
|
*b:ale_openapi_ibm_validator_options*
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This variable can be set to pass additional options to lint-openapi.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
prettier *ale-openapi-prettier*
|
||||||
|
|
||||||
|
See |ale-javascript-prettier| for information about the available options.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
yamllint *ale-openapi-yamllint*
|
||||||
|
|
||||||
|
See |ale-yaml-yamllint| for information about the available options.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
|
@ -36,6 +36,8 @@ ALE will look for configuration files with the following filenames. >
|
||||||
.pylintrc
|
.pylintrc
|
||||||
Pipfile
|
Pipfile
|
||||||
Pipfile.lock
|
Pipfile.lock
|
||||||
|
poetry.lock
|
||||||
|
pyproject.toml
|
||||||
<
|
<
|
||||||
|
|
||||||
The first directory containing any of the files named above will be used.
|
The first directory containing any of the files named above will be used.
|
||||||
|
@ -280,6 +282,15 @@ g:ale_python_isort_use_global *g:ale_python_isort_use_global*
|
||||||
See |ale-integrations-local-executables|
|
See |ale-integrations-local-executables|
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_python_isort_auto_pipenv *g:ale_python_isort_auto_pipenv*
|
||||||
|
*b:ale_python_isort_auto_pipenv*
|
||||||
|
Type: |Number|
|
||||||
|
Default: `0`
|
||||||
|
|
||||||
|
Detect whether the file is inside a pipenv, and set the executable to `pipenv`
|
||||||
|
if true. This is overridden by a manually-set executable.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
mypy *ale-python-mypy*
|
mypy *ale-python-mypy*
|
||||||
|
|
||||||
|
|
|
@ -177,6 +177,16 @@ g:ale_ruby_sorbet_options *g:ale_ruby_sorbet_options*
|
||||||
This variable can be changed to modify flags given to sorbet.
|
This variable can be changed to modify flags given to sorbet.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_ruby_sorbet_enable_watchman *g:ale_ruby_sorbet_enable_watchman*
|
||||||
|
*b:ale_ruby_sorbet_enable_watchman*
|
||||||
|
Type: |Number|
|
||||||
|
Default: `0`
|
||||||
|
|
||||||
|
Whether or not to use watchman to let the LSP server to know about changes
|
||||||
|
to files from outside of vim. Defaults to disable watchman because it
|
||||||
|
requires watchman to be installed separately from sorbet.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
standardrb *ale-ruby-standardrb*
|
standardrb *ale-ruby-standardrb*
|
||||||
|
|
||||||
|
|
43
doc/ale-salt.tmt
Normal file
43
doc/ale-salt.tmt
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
===============================================================================
|
||||||
|
ALE SALT Integration *ale-salt-options*
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
salt-lint *ale-salt-salt-lint*
|
||||||
|
|
||||||
|
Website: https://github.com/warpnet/salt-lint
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Install salt-lint in your a virtualenv directory, locally, or globally: >
|
||||||
|
|
||||||
|
pip install salt-lint # After activating virtualenv
|
||||||
|
pip install --user salt-lint # Install to ~/.local/bin
|
||||||
|
sudo pip install salt-lint # Install globally
|
||||||
|
|
||||||
|
See |g:ale_virtualenv_dir_names| for configuring how ALE searches for
|
||||||
|
virtualenv directories.
|
||||||
|
|
||||||
|
|
||||||
|
Options
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
g:ale_salt_salt-lint_executable *g:ale_salt_salt_lint_executable*
|
||||||
|
*b:ale_salt_salt_lint_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'salt-lint'`
|
||||||
|
|
||||||
|
This variable can be set to change the path to salt-lint.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_salt_salt-lint_options *g:ale_salt_salt-lint_options*
|
||||||
|
*b:ale_salt_salt-lint_options*
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This variable can be set to pass additional options to salt-lint.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
|
@ -13,12 +13,16 @@ Notes:
|
||||||
`!!` These linters check only files on disk. See |ale-lint-file-linters|
|
`!!` These linters check only files on disk. See |ale-lint-file-linters|
|
||||||
|
|
||||||
* Ada
|
* Ada
|
||||||
|
* `ada_language_server`
|
||||||
* `gcc`
|
* `gcc`
|
||||||
* `gnatpp`
|
* `gnatpp`
|
||||||
* Ansible
|
* Ansible
|
||||||
* `ansible-lint`
|
* `ansible-lint`
|
||||||
* API Blueprint
|
* API Blueprint
|
||||||
* `drafter`
|
* `drafter`
|
||||||
|
* APKBUILD
|
||||||
|
* `apkbuild-lint`
|
||||||
|
* `secfixes-check`
|
||||||
* AsciiDoc
|
* AsciiDoc
|
||||||
* `alex`!!
|
* `alex`!!
|
||||||
* `languagetool`!!
|
* `languagetool`!!
|
||||||
|
@ -49,8 +53,8 @@ Notes:
|
||||||
* `astyle`
|
* `astyle`
|
||||||
* `ccls`
|
* `ccls`
|
||||||
* `clang` (`cc`)
|
* `clang` (`cc`)
|
||||||
* `clangd`
|
|
||||||
* `clang-format`
|
* `clang-format`
|
||||||
|
* `clangd`
|
||||||
* `clangtidy`!!
|
* `clangtidy`!!
|
||||||
* `cppcheck`
|
* `cppcheck`
|
||||||
* `cpplint`!!
|
* `cpplint`!!
|
||||||
|
@ -67,9 +71,9 @@ Notes:
|
||||||
* `astyle`
|
* `astyle`
|
||||||
* `ccls`
|
* `ccls`
|
||||||
* `clang` (`cc`)
|
* `clang` (`cc`)
|
||||||
|
* `clang-format`
|
||||||
* `clangcheck`!!
|
* `clangcheck`!!
|
||||||
* `clangd`
|
* `clangd`
|
||||||
* `clang-format`
|
|
||||||
* `clangtidy`!!
|
* `clangtidy`!!
|
||||||
* `clazy`!!
|
* `clazy`!!
|
||||||
* `cppcheck`
|
* `cppcheck`
|
||||||
|
@ -116,11 +120,14 @@ Notes:
|
||||||
* Dafny
|
* Dafny
|
||||||
* `dafny`!!
|
* `dafny`!!
|
||||||
* Dart
|
* Dart
|
||||||
|
* `analysis_server`
|
||||||
* `dartanalyzer`!!
|
* `dartanalyzer`!!
|
||||||
* `dartfmt`!!
|
* `dartfmt`!!
|
||||||
* `language_server`
|
* `language_server`
|
||||||
* Dhall
|
* Dhall
|
||||||
* `dhall-format`
|
* `dhall-format`
|
||||||
|
* `dhall-freeze`
|
||||||
|
* `dhall-lint`
|
||||||
* Dockerfile
|
* Dockerfile
|
||||||
* `dockerfile_lint`
|
* `dockerfile_lint`
|
||||||
* `hadolint`
|
* `hadolint`
|
||||||
|
@ -140,9 +147,9 @@ Notes:
|
||||||
* `erubis`
|
* `erubis`
|
||||||
* `ruumba`
|
* `ruumba`
|
||||||
* Erlang
|
* Erlang
|
||||||
|
* `SyntaxErl`
|
||||||
* `elvis`!!
|
* `elvis`!!
|
||||||
* `erlc`
|
* `erlc`
|
||||||
* `SyntaxErl`
|
|
||||||
* Fish
|
* Fish
|
||||||
* `fish` (-n flag)
|
* `fish` (-n flag)
|
||||||
* Fortran
|
* Fortran
|
||||||
|
@ -160,17 +167,17 @@ Notes:
|
||||||
* Go
|
* Go
|
||||||
* `bingo`
|
* `bingo`
|
||||||
* `go build`!!
|
* `go build`!!
|
||||||
|
* `go mod`!!
|
||||||
|
* `go vet`!!
|
||||||
* `gofmt`
|
* `gofmt`
|
||||||
* `goimports`
|
* `goimports`
|
||||||
* `golangci-lint`!!
|
* `golangci-lint`!!
|
||||||
* `golangserver`
|
* `golangserver`
|
||||||
* `golint`
|
* `golint`
|
||||||
* `gometalinter`!!
|
* `gometalinter`!!
|
||||||
* `go mod`!!
|
|
||||||
* `gopls`
|
* `gopls`
|
||||||
* `gosimple`!!
|
* `gosimple`!!
|
||||||
* `gotype`!!
|
* `gotype`!!
|
||||||
* `go vet`!!
|
|
||||||
* `revive`!!
|
* `revive`!!
|
||||||
* `staticcheck`!!
|
* `staticcheck`!!
|
||||||
* GraphQL
|
* GraphQL
|
||||||
|
@ -203,10 +210,10 @@ Notes:
|
||||||
* HCL
|
* HCL
|
||||||
* `terraform-fmt`
|
* `terraform-fmt`
|
||||||
* HTML
|
* HTML
|
||||||
|
* `HTMLHint`
|
||||||
* `alex`!!
|
* `alex`!!
|
||||||
* `fecs`
|
* `fecs`
|
||||||
* `html-beautify`
|
* `html-beautify`
|
||||||
* `HTMLHint`
|
|
||||||
* `prettier`
|
* `prettier`
|
||||||
* `proselint`
|
* `proselint`
|
||||||
* `tidy`
|
* `tidy`
|
||||||
|
@ -215,15 +222,17 @@ Notes:
|
||||||
* `idris`
|
* `idris`
|
||||||
* Ink
|
* Ink
|
||||||
* `ink-language-server`
|
* `ink-language-server`
|
||||||
|
* Inko
|
||||||
|
* `inko` !!
|
||||||
* ISPC
|
* ISPC
|
||||||
* `ispc`!!
|
* `ispc`!!
|
||||||
* Java
|
* Java
|
||||||
|
* `PMD`
|
||||||
* `checkstyle`
|
* `checkstyle`
|
||||||
* `eclipselsp`
|
* `eclipselsp`
|
||||||
* `google-java-format`
|
* `google-java-format`
|
||||||
* `javac`
|
* `javac`
|
||||||
* `javalsp`
|
* `javalsp`
|
||||||
* `PMD`
|
|
||||||
* `uncrustify`
|
* `uncrustify`
|
||||||
* JavaScript
|
* JavaScript
|
||||||
* `eslint`
|
* `eslint`
|
||||||
|
@ -242,6 +251,7 @@ Notes:
|
||||||
* `jq`
|
* `jq`
|
||||||
* `jsonlint`
|
* `jsonlint`
|
||||||
* `prettier`
|
* `prettier`
|
||||||
|
* `spectral`
|
||||||
* Julia
|
* Julia
|
||||||
* `languageserver`
|
* `languageserver`
|
||||||
* Kotlin
|
* Kotlin
|
||||||
|
@ -300,6 +310,7 @@ Notes:
|
||||||
* nix
|
* nix
|
||||||
* `nix-instantiate`
|
* `nix-instantiate`
|
||||||
* `nixpkgs-fmt`
|
* `nixpkgs-fmt`
|
||||||
|
* `rnix-lsp`
|
||||||
* nroff
|
* nroff
|
||||||
* `alex`!!
|
* `alex`!!
|
||||||
* `proselint`
|
* `proselint`
|
||||||
|
@ -318,6 +329,10 @@ Notes:
|
||||||
* `ocamlformat`
|
* `ocamlformat`
|
||||||
* `ocp-indent`
|
* `ocp-indent`
|
||||||
* `ols`
|
* `ols`
|
||||||
|
* OpenApi
|
||||||
|
* `ibm_validator`
|
||||||
|
* `prettier`
|
||||||
|
* `yamllint`
|
||||||
* Pawn
|
* Pawn
|
||||||
* `uncrustify`
|
* `uncrustify`
|
||||||
* Perl
|
* Perl
|
||||||
|
@ -330,10 +345,10 @@ Notes:
|
||||||
* `intelephense`
|
* `intelephense`
|
||||||
* `langserver`
|
* `langserver`
|
||||||
* `phan`
|
* `phan`
|
||||||
|
* `php -l`
|
||||||
|
* `php-cs-fixer`
|
||||||
* `phpcbf`
|
* `phpcbf`
|
||||||
* `phpcs`
|
* `phpcs`
|
||||||
* `php-cs-fixer`
|
|
||||||
* `php -l`
|
|
||||||
* `phpmd`
|
* `phpmd`
|
||||||
* `phpstan`
|
* `phpstan`
|
||||||
* `psalm`!!
|
* `psalm`!!
|
||||||
|
@ -394,6 +409,8 @@ Notes:
|
||||||
* `styler`
|
* `styler`
|
||||||
* Racket
|
* Racket
|
||||||
* `raco`
|
* `raco`
|
||||||
|
* Re:VIEW
|
||||||
|
* `redpen`
|
||||||
* ReasonML
|
* ReasonML
|
||||||
* `merlin`
|
* `merlin`
|
||||||
* `ols`
|
* `ols`
|
||||||
|
@ -407,8 +424,6 @@ Notes:
|
||||||
* `textlint`
|
* `textlint`
|
||||||
* `vale`
|
* `vale`
|
||||||
* `write-good`
|
* `write-good`
|
||||||
* Re:VIEW
|
|
||||||
* `redpen`
|
|
||||||
* RPM spec
|
* RPM spec
|
||||||
* `rpmlint`
|
* `rpmlint`
|
||||||
* Ruby
|
* Ruby
|
||||||
|
@ -428,6 +443,8 @@ Notes:
|
||||||
* `rust-analyzer`
|
* `rust-analyzer`
|
||||||
* `rustc` (see |ale-integration-rust|)
|
* `rustc` (see |ale-integration-rust|)
|
||||||
* `rustfmt`
|
* `rustfmt`
|
||||||
|
* Salt
|
||||||
|
* `salt-lint`
|
||||||
* Sass
|
* Sass
|
||||||
* `sass-lint`
|
* `sass-lint`
|
||||||
* `stylelint`
|
* `stylelint`
|
||||||
|
@ -453,10 +470,10 @@ Notes:
|
||||||
* `solium`
|
* `solium`
|
||||||
* SQL
|
* SQL
|
||||||
* `pgformatter`
|
* `pgformatter`
|
||||||
|
* `sql-lint`
|
||||||
* `sqlfmt`
|
* `sqlfmt`
|
||||||
* `sqlformat`
|
* `sqlformat`
|
||||||
* `sqlint`
|
* `sqlint`
|
||||||
* `sql-lint`
|
|
||||||
* Stylus
|
* Stylus
|
||||||
* `stylelint`
|
* `stylelint`
|
||||||
* SugarSS
|
* SugarSS
|
||||||
|
@ -486,6 +503,7 @@ Notes:
|
||||||
* Thrift
|
* Thrift
|
||||||
* `thrift`
|
* `thrift`
|
||||||
* TypeScript
|
* TypeScript
|
||||||
|
* `deno`
|
||||||
* `eslint`
|
* `eslint`
|
||||||
* `fecs`
|
* `fecs`
|
||||||
* `prettier`
|
* `prettier`
|
||||||
|
@ -495,6 +513,7 @@ Notes:
|
||||||
* `typecheck`
|
* `typecheck`
|
||||||
* VALA
|
* VALA
|
||||||
* `uncrustify`
|
* `uncrustify`
|
||||||
|
* `vala_lint`!!
|
||||||
* Verilog
|
* Verilog
|
||||||
* `hdl-checker`
|
* `hdl-checker`
|
||||||
* `iverilog`
|
* `iverilog`
|
||||||
|
@ -523,6 +542,7 @@ Notes:
|
||||||
* `xmllint`
|
* `xmllint`
|
||||||
* YAML
|
* YAML
|
||||||
* `prettier`
|
* `prettier`
|
||||||
|
* `spectral`
|
||||||
* `swaglint`
|
* `swaglint`
|
||||||
* `yamlfix`
|
* `yamlfix`
|
||||||
* `yamllint`
|
* `yamllint`
|
||||||
|
|
|
@ -2,6 +2,39 @@
|
||||||
ALE TypeScript Integration *ale-typescript-options*
|
ALE TypeScript Integration *ale-typescript-options*
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
deno *ale-typescript-deno*
|
||||||
|
|
||||||
|
Starting from version 1.6.0, Deno comes with its own language server. Earlier
|
||||||
|
versions are not supported.
|
||||||
|
|
||||||
|
g:ale_deno_executable *g:ale_deno_executable*
|
||||||
|
*b:ale_deno_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'deno'`
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_deno_lsp_project_root *g:ale_deno_lsp_project_root*
|
||||||
|
*b:ale_deno_lsp_project_root*
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
If this variable is left unset, ALE will try to find the project root by
|
||||||
|
executing the following steps in the given order:
|
||||||
|
|
||||||
|
1. Find an ancestor directory containing a tsconfig.json.
|
||||||
|
2. Find an ancestory irectory containing a .git folder.
|
||||||
|
3. Use the directory of the current buffer (if the buffer was opened from
|
||||||
|
a file).
|
||||||
|
|
||||||
|
g:ale_deno_unstable *g:ale_deno_unstable*
|
||||||
|
*b:ale_deno_unstable*
|
||||||
|
Type: |Number|
|
||||||
|
Default: `0`
|
||||||
|
|
||||||
|
Enable or disable unstable Deno features and APIs.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
eslint *ale-typescript-eslint*
|
eslint *ale-typescript-eslint*
|
||||||
|
|
||||||
|
@ -138,5 +171,32 @@ g:ale_typescript_tsserver_use_global *g:ale_typescript_tsserver_use_global*
|
||||||
tsserver in node_modules.
|
tsserver in node_modules.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
xo *ale-typescript-xo*
|
||||||
|
|
||||||
|
g:ale_typescript_xo_executable *g:ale_typescript_xo_executable*
|
||||||
|
*b:ale_typescript_xo_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'xo'`
|
||||||
|
|
||||||
|
See |ale-integrations-local-executables|
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_typescript_xo_options *g:ale_typescript_xo_options*
|
||||||
|
*b:ale_typescript_xo_options*
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This variable can be set to pass additional options to xo.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_typescript_xo_use_global *g:ale_typescript_xo_use_global*
|
||||||
|
*b:ale_typescript_xo_use_global*
|
||||||
|
Type: |Number|
|
||||||
|
Default: `get(g:, 'ale_use_global_executables', 0)`
|
||||||
|
|
||||||
|
See |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:
|
||||||
|
|
|
@ -8,5 +8,26 @@ uncrustify *ale-vala-uncrustify*
|
||||||
See |ale-c-uncrustify| for information about the available options.
|
See |ale-c-uncrustify| for information about the available options.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
Vala-Lint *ale-vala-vala-lint*
|
||||||
|
|
||||||
|
g:vala_vala_lint_executable *g:vala_vala_lint_executable*
|
||||||
|
*b:vala_vala_lint_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'io.elementary.vala-lint'`
|
||||||
|
|
||||||
|
This variable can be set to specify a Vala-Lint executable file.
|
||||||
|
|
||||||
|
|
||||||
|
g:vala_vala_lint_config_filename *g:vala_vala_lint_config_filename*
|
||||||
|
*b:vala_vala_lint_config_filename*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'vala-lint.conf'`
|
||||||
|
|
||||||
|
This variable can be set to specify a Vala-Lint config filename. When a file
|
||||||
|
with the specified name was not found or this variable was set to empty,
|
||||||
|
Vala-Lint will be executed without specifying a config filename.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
|
|
|
@ -15,6 +15,38 @@ Install prettier either globally or locally: >
|
||||||
npm install prettier -g # global
|
npm install prettier -g # global
|
||||||
npm install prettier # local
|
npm install prettier # local
|
||||||
<
|
<
|
||||||
|
===============================================================================
|
||||||
|
spectral *ale-yaml-spectral*
|
||||||
|
|
||||||
|
Website: https://github.com/stoplightio/spectral
|
||||||
|
|
||||||
|
Installation
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Install spectral either globally or locally: >
|
||||||
|
|
||||||
|
npm install @stoplight/spectral -g # global
|
||||||
|
npm install @stoplight/spectral # local
|
||||||
|
<
|
||||||
|
|
||||||
|
Options
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
g:ale_yaml_spectral_executable *g:ale_yaml_spectral_executable*
|
||||||
|
*b:ale_yaml_spectral_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'spectral'`
|
||||||
|
|
||||||
|
This variable can be set to change the path to spectral.
|
||||||
|
|
||||||
|
g:ale_yaml_spectral_use_global *g:ale_yaml_spectral_use_global*
|
||||||
|
*b:ale_yaml_spectral_use_global*
|
||||||
|
Type: |String|
|
||||||
|
Default: `get(g:, 'ale_use_global_executables', 0)`
|
||||||
|
|
||||||
|
See |ale-integrations-local-executables|
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
swaglint *ale-yaml-swaglint*
|
swaglint *ale-yaml-swaglint*
|
||||||
|
|
||||||
|
|
68
doc/ale.txt
68
doc/ale.txt
|
@ -646,6 +646,9 @@ problem will be displayed in a balloon instead of hover information.
|
||||||
Hover information can be displayed in the preview window instead by setting
|
Hover information can be displayed in the preview window instead by setting
|
||||||
|g:ale_hover_to_preview| to `1`.
|
|g:ale_hover_to_preview| to `1`.
|
||||||
|
|
||||||
|
When using Neovim, if |g:ale_hover_to_floating_preview| or |g:ale_floating_preview|
|
||||||
|
is set to 1, the hover information will show in a floating window.
|
||||||
|
|
||||||
For Vim 8.1+ terminals, mouse hovering is disabled by default. Enabling
|
For Vim 8.1+ terminals, mouse hovering is disabled by default. Enabling
|
||||||
|balloonexpr| commands in terminals can cause scrolling issues in terminals,
|
|balloonexpr| commands in terminals can cause scrolling issues in terminals,
|
||||||
so ALE will not attempt to show balloons unless |g:ale_set_balloons| is set to
|
so ALE will not attempt to show balloons unless |g:ale_set_balloons| is set to
|
||||||
|
@ -954,6 +957,15 @@ g:ale_default_navigation *g:ale_default_navigation*
|
||||||
buffer, such as for |ALEFindReferences|, or |ALEGoToDefinition|.
|
buffer, such as for |ALEFindReferences|, or |ALEGoToDefinition|.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_detail_to_floating_preview *g:ale_detail_to_floating_preview*
|
||||||
|
*b:ale_detail_to_floating_preview*
|
||||||
|
Type: |Number|
|
||||||
|
Default: `0`
|
||||||
|
|
||||||
|
When this option is set to `1`, Neovim will use a floating window for
|
||||||
|
ALEDetail output.
|
||||||
|
|
||||||
|
|
||||||
g:ale_disable_lsp *g:ale_disable_lsp*
|
g:ale_disable_lsp *g:ale_disable_lsp*
|
||||||
*b:ale_disable_lsp*
|
*b:ale_disable_lsp*
|
||||||
|
|
||||||
|
@ -1177,6 +1189,16 @@ g:ale_fix_on_save_ignore *g:ale_fix_on_save_ignore*
|
||||||
let g:ale_fix_on_save_ignore = [g:AddBar]
|
let g:ale_fix_on_save_ignore = [g:AddBar]
|
||||||
<
|
<
|
||||||
|
|
||||||
|
g:ale_floating_preview *g:ale_floating_preview*
|
||||||
|
|
||||||
|
Type: |Number|
|
||||||
|
Default: `0`
|
||||||
|
|
||||||
|
When set to `1`, Neovim will use a floating window for ale's preview window.
|
||||||
|
This is equivalent to setting |g:ale_hover_to_floating_preview| and
|
||||||
|
|g:ale_detail_to_floating_preview| to `1`.
|
||||||
|
|
||||||
|
|
||||||
g:ale_history_enabled *g:ale_history_enabled*
|
g:ale_history_enabled *g:ale_history_enabled*
|
||||||
|
|
||||||
Type: |Number|
|
Type: |Number|
|
||||||
|
@ -1235,6 +1257,14 @@ g:ale_hover_to_preview *g:ale_hover_to_preview*
|
||||||
instead of in balloons or the message line.
|
instead of in balloons or the message line.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_hover_to_floating_preview *g:ale_hover_to_floating_preview*
|
||||||
|
*b:ale_hover_to_floating_preview*
|
||||||
|
Type: |Number|
|
||||||
|
Default: `0`
|
||||||
|
|
||||||
|
If set to `1`, Neovim will use floating windows for hover messages.
|
||||||
|
|
||||||
|
|
||||||
g:ale_keep_list_window_open *g:ale_keep_list_window_open*
|
g:ale_keep_list_window_open *g:ale_keep_list_window_open*
|
||||||
*b:ale_keep_list_window_open*
|
*b:ale_keep_list_window_open*
|
||||||
Type: |Number|
|
Type: |Number|
|
||||||
|
@ -1526,11 +1556,13 @@ g:ale_linters *g:ale_linters*
|
||||||
following values: >
|
following values: >
|
||||||
|
|
||||||
{
|
{
|
||||||
|
\ 'apkbuild': ['apkbuild_lint', 'secfixes_check'],
|
||||||
\ 'csh': ['shell'],
|
\ 'csh': ['shell'],
|
||||||
\ 'elixir': ['credo', 'dialyxir', 'dogma'],
|
\ 'elixir': ['credo', 'dialyxir', 'dogma'],
|
||||||
\ 'go': ['gofmt', 'golint', 'go vet'],
|
\ 'go': ['gofmt', 'golint', 'go vet'],
|
||||||
\ 'hack': ['hack'],
|
\ 'hack': ['hack'],
|
||||||
\ 'help': [],
|
\ 'help': [],
|
||||||
|
\ 'inko': ['inko'],
|
||||||
\ 'perl': ['perlcritic'],
|
\ 'perl': ['perlcritic'],
|
||||||
\ 'perl6': [],
|
\ 'perl6': [],
|
||||||
\ 'python': ['flake8', 'mypy', 'pylint', 'pyright'],
|
\ 'python': ['flake8', 'mypy', 'pylint', 'pyright'],
|
||||||
|
@ -1677,6 +1709,15 @@ g:ale_lsp_show_message_severity *g:ale_lsp_show_message_severity*
|
||||||
`'disabled'` - Doesn't display any information at all.
|
`'disabled'` - Doesn't display any information at all.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_lsp_suggestions *g:ale_lsp_suggestions*
|
||||||
|
|
||||||
|
Type: |Number|
|
||||||
|
Default: 1
|
||||||
|
|
||||||
|
This variable defines if suggestions must be collected from LSP or tsserver
|
||||||
|
and shown.
|
||||||
|
|
||||||
|
|
||||||
g:ale_lsp_root *g:ale_lsp_root*
|
g:ale_lsp_root *g:ale_lsp_root*
|
||||||
*b:ale_lsp_root*
|
*b:ale_lsp_root*
|
||||||
|
|
||||||
|
@ -2556,8 +2597,12 @@ documented in additional help files.
|
||||||
ada.....................................|ale-ada-options|
|
ada.....................................|ale-ada-options|
|
||||||
gcc...................................|ale-ada-gcc|
|
gcc...................................|ale-ada-gcc|
|
||||||
gnatpp................................|ale-ada-gnatpp|
|
gnatpp................................|ale-ada-gnatpp|
|
||||||
|
ada-language-server...................|ale-ada-language-server|
|
||||||
ansible.................................|ale-ansible-options|
|
ansible.................................|ale-ansible-options|
|
||||||
ansible-lint..........................|ale-ansible-ansible-lint|
|
ansible-lint..........................|ale-ansible-ansible-lint|
|
||||||
|
apkbuild................................|ale-apkbuild-options|
|
||||||
|
apkbuild-lint.........................|ale-apkbuild-apkbuild-lint|
|
||||||
|
secfixes-check........................|ale-apkbuild-secfixes-check|
|
||||||
asciidoc................................|ale-asciidoc-options|
|
asciidoc................................|ale-asciidoc-options|
|
||||||
write-good............................|ale-asciidoc-write-good|
|
write-good............................|ale-asciidoc-write-good|
|
||||||
textlint..............................|ale-asciidoc-textlint|
|
textlint..............................|ale-asciidoc-textlint|
|
||||||
|
@ -2621,9 +2666,16 @@ documented in additional help files.
|
||||||
dfmt..................................|ale-d-dfmt|
|
dfmt..................................|ale-d-dfmt|
|
||||||
dls...................................|ale-d-dls|
|
dls...................................|ale-d-dls|
|
||||||
uncrustify............................|ale-d-uncrustify|
|
uncrustify............................|ale-d-uncrustify|
|
||||||
|
dafny...................................|ale-dafny-options|
|
||||||
|
dafny.................................|ale-dafny-dafny|
|
||||||
dart....................................|ale-dart-options|
|
dart....................................|ale-dart-options|
|
||||||
|
analysis_server.......................|ale-dart-analysis_server|
|
||||||
dartanalyzer..........................|ale-dart-dartanalyzer|
|
dartanalyzer..........................|ale-dart-dartanalyzer|
|
||||||
dartfmt...............................|ale-dart-dartfmt|
|
dartfmt...............................|ale-dart-dartfmt|
|
||||||
|
dhall...................................|ale-dhall-options|
|
||||||
|
dhall-format..........................|ale-dhall-format|
|
||||||
|
dhall-freeze..........................|ale-dhall-freeze|
|
||||||
|
dhall-lint............................|ale-dhall-lint|
|
||||||
dockerfile..............................|ale-dockerfile-options|
|
dockerfile..............................|ale-dockerfile-options|
|
||||||
dockerfile_lint.......................|ale-dockerfile-dockerfile_lint|
|
dockerfile_lint.......................|ale-dockerfile-dockerfile_lint|
|
||||||
hadolint..............................|ale-dockerfile-hadolint|
|
hadolint..............................|ale-dockerfile-hadolint|
|
||||||
|
@ -2708,6 +2760,8 @@ documented in additional help files.
|
||||||
idris.................................|ale-idris-idris|
|
idris.................................|ale-idris-idris|
|
||||||
ink.....................................|ale-ink-options|
|
ink.....................................|ale-ink-options|
|
||||||
ink-language-server...................|ale-ink-language-server|
|
ink-language-server...................|ale-ink-language-server|
|
||||||
|
inko....................................|ale-inko-options|
|
||||||
|
inko..................................|ale-inko-inko|
|
||||||
ispc....................................|ale-ispc-options|
|
ispc....................................|ale-ispc-options|
|
||||||
ispc..................................|ale-ispc-ispc|
|
ispc..................................|ale-ispc-ispc|
|
||||||
java....................................|ale-java-options|
|
java....................................|ale-java-options|
|
||||||
|
@ -2735,6 +2789,7 @@ documented in additional help files.
|
||||||
jsonlint..............................|ale-json-jsonlint|
|
jsonlint..............................|ale-json-jsonlint|
|
||||||
jq....................................|ale-json-jq|
|
jq....................................|ale-json-jq|
|
||||||
prettier..............................|ale-json-prettier|
|
prettier..............................|ale-json-prettier|
|
||||||
|
spectral..............................|ale-json-spectral|
|
||||||
julia...................................|ale-julia-options|
|
julia...................................|ale-julia-options|
|
||||||
languageserver........................|ale-julia-languageserver|
|
languageserver........................|ale-julia-languageserver|
|
||||||
kotlin..................................|ale-kotlin-options|
|
kotlin..................................|ale-kotlin-options|
|
||||||
|
@ -2787,6 +2842,10 @@ documented in additional help files.
|
||||||
ols...................................|ale-ocaml-ols|
|
ols...................................|ale-ocaml-ols|
|
||||||
ocamlformat...........................|ale-ocaml-ocamlformat|
|
ocamlformat...........................|ale-ocaml-ocamlformat|
|
||||||
ocp-indent............................|ale-ocaml-ocp-indent|
|
ocp-indent............................|ale-ocaml-ocp-indent|
|
||||||
|
openapi.................................|ale-openapi-options|
|
||||||
|
ibm_validator.........................|ale-openapi-ibm-validator|
|
||||||
|
prettier..............................|ale-openapi-prettier|
|
||||||
|
yamllint..............................|ale-openapi-yamllint|
|
||||||
pawn....................................|ale-pawn-options|
|
pawn....................................|ale-pawn-options|
|
||||||
uncrustify............................|ale-pawn-uncrustify|
|
uncrustify............................|ale-pawn-uncrustify|
|
||||||
perl....................................|ale-perl-options|
|
perl....................................|ale-perl-options|
|
||||||
|
@ -2882,6 +2941,8 @@ documented in additional help files.
|
||||||
rls...................................|ale-rust-rls|
|
rls...................................|ale-rust-rls|
|
||||||
rustc.................................|ale-rust-rustc|
|
rustc.................................|ale-rust-rustc|
|
||||||
rustfmt...............................|ale-rust-rustfmt|
|
rustfmt...............................|ale-rust-rustfmt|
|
||||||
|
salt....................................|ale-salt-options|
|
||||||
|
salt-lint.............................|ale-salt-salt-lint|
|
||||||
sass....................................|ale-sass-options|
|
sass....................................|ale-sass-options|
|
||||||
sasslint..............................|ale-sass-sasslint|
|
sasslint..............................|ale-sass-sasslint|
|
||||||
stylelint.............................|ale-sass-stylelint|
|
stylelint.............................|ale-sass-stylelint|
|
||||||
|
@ -2938,11 +2999,13 @@ documented in additional help files.
|
||||||
thrift..................................|ale-thrift-options|
|
thrift..................................|ale-thrift-options|
|
||||||
thrift................................|ale-thrift-thrift|
|
thrift................................|ale-thrift-thrift|
|
||||||
typescript..............................|ale-typescript-options|
|
typescript..............................|ale-typescript-options|
|
||||||
|
deno..................................|ale-typescript-deno|
|
||||||
eslint................................|ale-typescript-eslint|
|
eslint................................|ale-typescript-eslint|
|
||||||
prettier..............................|ale-typescript-prettier|
|
prettier..............................|ale-typescript-prettier|
|
||||||
standard..............................|ale-typescript-standard|
|
standard..............................|ale-typescript-standard|
|
||||||
tslint................................|ale-typescript-tslint|
|
tslint................................|ale-typescript-tslint|
|
||||||
tsserver..............................|ale-typescript-tsserver|
|
tsserver..............................|ale-typescript-tsserver|
|
||||||
|
xo....................................|ale-typescript-xo|
|
||||||
vala....................................|ale-vala-options|
|
vala....................................|ale-vala-options|
|
||||||
uncrustify............................|ale-vala-uncrustify|
|
uncrustify............................|ale-vala-uncrustify|
|
||||||
verilog/systemverilog...................|ale-verilog-options|
|
verilog/systemverilog...................|ale-verilog-options|
|
||||||
|
@ -2956,11 +3019,11 @@ documented in additional help files.
|
||||||
hdl-checker...........................|ale-vhdl-hdl-checker|
|
hdl-checker...........................|ale-vhdl-hdl-checker|
|
||||||
vcom..................................|ale-vhdl-vcom|
|
vcom..................................|ale-vhdl-vcom|
|
||||||
xvhdl.................................|ale-vhdl-xvhdl|
|
xvhdl.................................|ale-vhdl-xvhdl|
|
||||||
|
vim help................................|ale-vim-help-options|
|
||||||
|
write-good............................|ale-vim-help-write-good|
|
||||||
vim.....................................|ale-vim-options|
|
vim.....................................|ale-vim-options|
|
||||||
vimls.................................|ale-vim-vimls|
|
vimls.................................|ale-vim-vimls|
|
||||||
vint..................................|ale-vim-vint|
|
vint..................................|ale-vim-vint|
|
||||||
vim help................................|ale-vim-help-options|
|
|
||||||
write-good............................|ale-vim-help-write-good|
|
|
||||||
vue.....................................|ale-vue-options|
|
vue.....................................|ale-vue-options|
|
||||||
prettier..............................|ale-vue-prettier|
|
prettier..............................|ale-vue-prettier|
|
||||||
vls...................................|ale-vue-vls|
|
vls...................................|ale-vue-vls|
|
||||||
|
@ -2970,6 +3033,7 @@ documented in additional help files.
|
||||||
xmllint...............................|ale-xml-xmllint|
|
xmllint...............................|ale-xml-xmllint|
|
||||||
yaml....................................|ale-yaml-options|
|
yaml....................................|ale-yaml-options|
|
||||||
prettier..............................|ale-yaml-prettier|
|
prettier..............................|ale-yaml-prettier|
|
||||||
|
spectral..............................|ale-yaml-spectral|
|
||||||
swaglint..............................|ale-yaml-swaglint|
|
swaglint..............................|ale-yaml-swaglint|
|
||||||
yamlfix...............................|ale-yaml-yamlfix|
|
yamlfix...............................|ale-yaml-yamlfix|
|
||||||
yamllint..............................|ale-yaml-yamllint|
|
yamllint..............................|ale-yaml-yamllint|
|
||||||
|
|
|
@ -138,6 +138,15 @@ let g:ale_set_balloons = get(g:, 'ale_set_balloons', has('balloon_eval') && has(
|
||||||
" Use preview window for hover messages.
|
" Use preview window for hover messages.
|
||||||
let g:ale_hover_to_preview = get(g:, 'ale_hover_to_preview', 0)
|
let g:ale_hover_to_preview = get(g:, 'ale_hover_to_preview', 0)
|
||||||
|
|
||||||
|
" Float preview windows in Neovim
|
||||||
|
let g:ale_floating_preview = get(g:, 'ale_floating_preview', 0)
|
||||||
|
|
||||||
|
" Hovers use floating windows in Neovim
|
||||||
|
let g:ale_hover_to_floating_preview = get(g:, 'ale_hover_to_floating_preview', 0)
|
||||||
|
|
||||||
|
" Detail uses floating windows in Neovim
|
||||||
|
let g:ale_detail_to_floating_preview = get(g:, 'ale_detail_to_floating_preview', 0)
|
||||||
|
|
||||||
" This flag can be set to 0 to disable warnings for trailing whitespace
|
" This flag can be set to 0 to disable warnings for trailing whitespace
|
||||||
let g:ale_warn_about_trailing_whitespace = get(g:, 'ale_warn_about_trailing_whitespace', 1)
|
let g:ale_warn_about_trailing_whitespace = get(g:, 'ale_warn_about_trailing_whitespace', 1)
|
||||||
" This flag can be set to 0 to disable warnings for trailing blank lines
|
" This flag can be set to 0 to disable warnings for trailing blank lines
|
||||||
|
|
|
@ -10,7 +10,7 @@ set -u
|
||||||
#
|
#
|
||||||
|
|
||||||
image=w0rp/ale
|
image=w0rp/ale
|
||||||
current_image_id=f58c7bf8900f
|
current_image_id=1c04720f5d17
|
||||||
|
|
||||||
# Used in all test scripts for running the selected Docker image.
|
# Used in all test scripts for running the selected Docker image.
|
||||||
DOCKER_RUN_IMAGE="$image"
|
DOCKER_RUN_IMAGE="$image"
|
||||||
|
|
|
@ -22,12 +22,16 @@ formatting.
|
||||||
---
|
---
|
||||||
|
|
||||||
* Ada
|
* Ada
|
||||||
|
* [ada_language_server](https://github.com/AdaCore/ada_language_server)
|
||||||
* [gcc](https://gcc.gnu.org)
|
* [gcc](https://gcc.gnu.org)
|
||||||
* [gnatpp](https://docs.adacore.com/gnat_ugn-docs/html/gnat_ugn/gnat_ugn/gnat_utility_programs.html#the-gnat-pretty-printer-gnatpp) :floppy_disk:
|
* [gnatpp](https://docs.adacore.com/gnat_ugn-docs/html/gnat_ugn/gnat_ugn/gnat_utility_programs.html#the-gnat-pretty-printer-gnatpp) :floppy_disk:
|
||||||
* Ansible
|
* Ansible
|
||||||
* [ansible-lint](https://github.com/willthames/ansible-lint)
|
* [ansible-lint](https://github.com/willthames/ansible-lint)
|
||||||
* API Blueprint
|
* API Blueprint
|
||||||
* [drafter](https://github.com/apiaryio/drafter)
|
* [drafter](https://github.com/apiaryio/drafter)
|
||||||
|
* APKBUILD
|
||||||
|
* [apkbuild-lint](https://gitlab.alpinelinux.org/Leo/atools)
|
||||||
|
* [secfixes-check](https://gitlab.alpinelinux.org/Leo/atools)
|
||||||
* AsciiDoc
|
* AsciiDoc
|
||||||
* [alex](https://github.com/wooorm/alex) :floppy_disk:
|
* [alex](https://github.com/wooorm/alex) :floppy_disk:
|
||||||
* [languagetool](https://languagetool.org/) :floppy_disk:
|
* [languagetool](https://languagetool.org/) :floppy_disk:
|
||||||
|
@ -58,8 +62,8 @@ formatting.
|
||||||
* [astyle](http://astyle.sourceforge.net/)
|
* [astyle](http://astyle.sourceforge.net/)
|
||||||
* [ccls](https://github.com/MaskRay/ccls)
|
* [ccls](https://github.com/MaskRay/ccls)
|
||||||
* [clang](http://clang.llvm.org/)
|
* [clang](http://clang.llvm.org/)
|
||||||
* [clangd](https://clang.llvm.org/extra/clangd.html)
|
|
||||||
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
|
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
|
||||||
|
* [clangd](https://clang.llvm.org/extra/clangd.html)
|
||||||
* [clangtidy](http://clang.llvm.org/extra/clang-tidy/) :floppy_disk:
|
* [clangtidy](http://clang.llvm.org/extra/clang-tidy/) :floppy_disk:
|
||||||
* [cppcheck](http://cppcheck.sourceforge.net)
|
* [cppcheck](http://cppcheck.sourceforge.net)
|
||||||
* [cpplint](https://github.com/google/styleguide/tree/gh-pages/cpplint)
|
* [cpplint](https://github.com/google/styleguide/tree/gh-pages/cpplint)
|
||||||
|
@ -76,9 +80,9 @@ formatting.
|
||||||
* [astyle](http://astyle.sourceforge.net/)
|
* [astyle](http://astyle.sourceforge.net/)
|
||||||
* [ccls](https://github.com/MaskRay/ccls)
|
* [ccls](https://github.com/MaskRay/ccls)
|
||||||
* [clang](http://clang.llvm.org/)
|
* [clang](http://clang.llvm.org/)
|
||||||
|
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
|
||||||
* [clangcheck](http://clang.llvm.org/docs/ClangCheck.html) :floppy_disk:
|
* [clangcheck](http://clang.llvm.org/docs/ClangCheck.html) :floppy_disk:
|
||||||
* [clangd](https://clang.llvm.org/extra/clangd.html)
|
* [clangd](https://clang.llvm.org/extra/clangd.html)
|
||||||
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
|
|
||||||
* [clangtidy](http://clang.llvm.org/extra/clang-tidy/) :floppy_disk:
|
* [clangtidy](http://clang.llvm.org/extra/clang-tidy/) :floppy_disk:
|
||||||
* [clazy](https://github.com/KDE/clazy) :floppy_disk:
|
* [clazy](https://github.com/KDE/clazy) :floppy_disk:
|
||||||
* [cppcheck](http://cppcheck.sourceforge.net)
|
* [cppcheck](http://cppcheck.sourceforge.net)
|
||||||
|
@ -125,11 +129,14 @@ formatting.
|
||||||
* Dafny
|
* Dafny
|
||||||
* [dafny](https://rise4fun.com/Dafny) :floppy_disk:
|
* [dafny](https://rise4fun.com/Dafny) :floppy_disk:
|
||||||
* Dart
|
* Dart
|
||||||
|
* [analysis_server](https://github.com/dart-lang/sdk/tree/master/pkg/analysis_server)
|
||||||
* [dartanalyzer](https://github.com/dart-lang/sdk/tree/master/pkg/analyzer_cli) :floppy_disk:
|
* [dartanalyzer](https://github.com/dart-lang/sdk/tree/master/pkg/analyzer_cli) :floppy_disk:
|
||||||
* [dartfmt](https://github.com/dart-lang/sdk/tree/master/utils/dartfmt)
|
* [dartfmt](https://github.com/dart-lang/sdk/tree/master/utils/dartfmt)
|
||||||
* [language_server](https://github.com/natebosch/dart_language_server)
|
* [language_server](https://github.com/natebosch/dart_language_server)
|
||||||
* Dhall
|
* Dhall
|
||||||
* [dhall-format](https://github.com/dhall-lang/dhall-lang)
|
* [dhall-format](https://github.com/dhall-lang/dhall-lang)
|
||||||
|
* [dhall-freeze](https://github.com/dhall-lang/dhall-lang)
|
||||||
|
* [dhall-lint](https://github.com/dhall-lang/dhall-lang)
|
||||||
* Dockerfile
|
* Dockerfile
|
||||||
* [dockerfile_lint](https://github.com/projectatomic/dockerfile_lint)
|
* [dockerfile_lint](https://github.com/projectatomic/dockerfile_lint)
|
||||||
* [hadolint](https://github.com/hadolint/hadolint)
|
* [hadolint](https://github.com/hadolint/hadolint)
|
||||||
|
@ -149,9 +156,9 @@ formatting.
|
||||||
* [erubis](https://github.com/kwatch/erubis)
|
* [erubis](https://github.com/kwatch/erubis)
|
||||||
* [ruumba](https://github.com/ericqweinstein/ruumba)
|
* [ruumba](https://github.com/ericqweinstein/ruumba)
|
||||||
* Erlang
|
* Erlang
|
||||||
|
* [SyntaxErl](https://github.com/ten0s/syntaxerl)
|
||||||
* [elvis](https://github.com/inaka/elvis) :floppy_disk:
|
* [elvis](https://github.com/inaka/elvis) :floppy_disk:
|
||||||
* [erlc](http://erlang.org/doc/man/erlc.html)
|
* [erlc](http://erlang.org/doc/man/erlc.html)
|
||||||
* [SyntaxErl](https://github.com/ten0s/syntaxerl)
|
|
||||||
* Fish
|
* Fish
|
||||||
* fish [-n flag](https://linux.die.net/man/1/fish)
|
* fish [-n flag](https://linux.die.net/man/1/fish)
|
||||||
* Fortran
|
* Fortran
|
||||||
|
@ -169,17 +176,17 @@ formatting.
|
||||||
* Go
|
* Go
|
||||||
* [bingo](https://github.com/saibing/bingo) :warning:
|
* [bingo](https://github.com/saibing/bingo) :warning:
|
||||||
* [go build](https://golang.org/cmd/go/) :warning: :floppy_disk:
|
* [go build](https://golang.org/cmd/go/) :warning: :floppy_disk:
|
||||||
|
* [go mod](https://golang.org/cmd/go/) :warning: :floppy_disk:
|
||||||
|
* [go vet](https://golang.org/cmd/vet/) :floppy_disk:
|
||||||
* [gofmt](https://golang.org/cmd/gofmt/)
|
* [gofmt](https://golang.org/cmd/gofmt/)
|
||||||
* [goimports](https://godoc.org/golang.org/x/tools/cmd/goimports) :warning:
|
* [goimports](https://godoc.org/golang.org/x/tools/cmd/goimports) :warning:
|
||||||
* [golangci-lint](https://github.com/golangci/golangci-lint) :warning: :floppy_disk:
|
* [golangci-lint](https://github.com/golangci/golangci-lint) :warning: :floppy_disk:
|
||||||
* [golangserver](https://github.com/sourcegraph/go-langserver) :warning:
|
* [golangserver](https://github.com/sourcegraph/go-langserver) :warning:
|
||||||
* [golint](https://godoc.org/github.com/golang/lint)
|
* [golint](https://godoc.org/github.com/golang/lint)
|
||||||
* [gometalinter](https://github.com/alecthomas/gometalinter) :warning: :floppy_disk:
|
* [gometalinter](https://github.com/alecthomas/gometalinter) :warning: :floppy_disk:
|
||||||
* [go mod](https://golang.org/cmd/go/) :warning: :floppy_disk:
|
|
||||||
* [gopls](https://github.com/golang/go/wiki/gopls) :warning:
|
* [gopls](https://github.com/golang/go/wiki/gopls) :warning:
|
||||||
* [gosimple](https://github.com/dominikh/go-tools/tree/master/cmd/gosimple) :warning: :floppy_disk:
|
* [gosimple](https://github.com/dominikh/go-tools/tree/master/cmd/gosimple) :warning: :floppy_disk:
|
||||||
* [gotype](https://godoc.org/golang.org/x/tools/cmd/gotype) :warning: :floppy_disk:
|
* [gotype](https://godoc.org/golang.org/x/tools/cmd/gotype) :warning: :floppy_disk:
|
||||||
* [go vet](https://golang.org/cmd/vet/) :floppy_disk:
|
|
||||||
* [revive](https://github.com/mgechev/revive) :warning: :floppy_disk:
|
* [revive](https://github.com/mgechev/revive) :warning: :floppy_disk:
|
||||||
* [staticcheck](https://github.com/dominikh/go-tools/tree/master/cmd/staticcheck) :warning: :floppy_disk:
|
* [staticcheck](https://github.com/dominikh/go-tools/tree/master/cmd/staticcheck) :warning: :floppy_disk:
|
||||||
* GraphQL
|
* GraphQL
|
||||||
|
@ -212,10 +219,10 @@ formatting.
|
||||||
* HCL
|
* HCL
|
||||||
* [terraform-fmt](https://github.com/hashicorp/terraform)
|
* [terraform-fmt](https://github.com/hashicorp/terraform)
|
||||||
* HTML
|
* HTML
|
||||||
|
* [HTMLHint](http://htmlhint.com/)
|
||||||
* [alex](https://github.com/wooorm/alex) :floppy_disk:
|
* [alex](https://github.com/wooorm/alex) :floppy_disk:
|
||||||
* [fecs](http://fecs.baidu.com/)
|
* [fecs](http://fecs.baidu.com/)
|
||||||
* [html-beautify](https://beautifier.io/)
|
* [html-beautify](https://beautifier.io/)
|
||||||
* [HTMLHint](http://htmlhint.com/)
|
|
||||||
* [prettier](https://github.com/prettier/prettier)
|
* [prettier](https://github.com/prettier/prettier)
|
||||||
* [proselint](http://proselint.com/)
|
* [proselint](http://proselint.com/)
|
||||||
* [tidy](http://www.html-tidy.org/)
|
* [tidy](http://www.html-tidy.org/)
|
||||||
|
@ -224,15 +231,17 @@ formatting.
|
||||||
* [idris](http://www.idris-lang.org/)
|
* [idris](http://www.idris-lang.org/)
|
||||||
* Ink
|
* Ink
|
||||||
* [ink-language-server](https://github.com/ephread/ink-language-server)
|
* [ink-language-server](https://github.com/ephread/ink-language-server)
|
||||||
|
* Inko
|
||||||
|
* [inko](https://inko-lang.org/) :floppy_disk:
|
||||||
* ISPC
|
* ISPC
|
||||||
* [ispc](https://ispc.github.io/) :floppy_disk:
|
* [ispc](https://ispc.github.io/) :floppy_disk:
|
||||||
* Java
|
* Java
|
||||||
|
* [PMD](https://pmd.github.io/)
|
||||||
* [checkstyle](http://checkstyle.sourceforge.net)
|
* [checkstyle](http://checkstyle.sourceforge.net)
|
||||||
* [eclipselsp](https://github.com/eclipse/eclipse.jdt.ls)
|
* [eclipselsp](https://github.com/eclipse/eclipse.jdt.ls)
|
||||||
* [google-java-format](https://github.com/google/google-java-format)
|
* [google-java-format](https://github.com/google/google-java-format)
|
||||||
* [javac](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
|
* [javac](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
|
||||||
* [javalsp](https://github.com/georgewfraser/vscode-javac)
|
* [javalsp](https://github.com/georgewfraser/vscode-javac)
|
||||||
* [PMD](https://pmd.github.io/)
|
|
||||||
* [uncrustify](https://github.com/uncrustify/uncrustify)
|
* [uncrustify](https://github.com/uncrustify/uncrustify)
|
||||||
* JavaScript
|
* JavaScript
|
||||||
* [eslint](http://eslint.org/)
|
* [eslint](http://eslint.org/)
|
||||||
|
@ -251,6 +260,7 @@ formatting.
|
||||||
* [jq](https://stedolan.github.io/jq/)
|
* [jq](https://stedolan.github.io/jq/)
|
||||||
* [jsonlint](http://zaa.ch/jsonlint/)
|
* [jsonlint](http://zaa.ch/jsonlint/)
|
||||||
* [prettier](https://github.com/prettier/prettier)
|
* [prettier](https://github.com/prettier/prettier)
|
||||||
|
* [spectral](https://github.com/stoplightio/spectral)
|
||||||
* Julia
|
* Julia
|
||||||
* [languageserver](https://github.com/JuliaEditorSupport/LanguageServer.jl)
|
* [languageserver](https://github.com/JuliaEditorSupport/LanguageServer.jl)
|
||||||
* Kotlin
|
* Kotlin
|
||||||
|
@ -309,6 +319,7 @@ formatting.
|
||||||
* nix
|
* nix
|
||||||
* [nix-instantiate](http://nixos.org/nix/manual/#sec-nix-instantiate)
|
* [nix-instantiate](http://nixos.org/nix/manual/#sec-nix-instantiate)
|
||||||
* [nixpkgs-fmt](https://github.com/nix-community/nixpkgs-fmt)
|
* [nixpkgs-fmt](https://github.com/nix-community/nixpkgs-fmt)
|
||||||
|
* [rnix-lsp](https://github.com/nix-community/rnix-lsp)
|
||||||
* nroff
|
* nroff
|
||||||
* [alex](https://github.com/wooorm/alex) :floppy_disk:
|
* [alex](https://github.com/wooorm/alex) :floppy_disk:
|
||||||
* [proselint](http://proselint.com/)
|
* [proselint](http://proselint.com/)
|
||||||
|
@ -327,6 +338,10 @@ formatting.
|
||||||
* [ocamlformat](https://github.com/ocaml-ppx/ocamlformat)
|
* [ocamlformat](https://github.com/ocaml-ppx/ocamlformat)
|
||||||
* [ocp-indent](https://github.com/OCamlPro/ocp-indent)
|
* [ocp-indent](https://github.com/OCamlPro/ocp-indent)
|
||||||
* [ols](https://github.com/freebroccolo/ocaml-language-server)
|
* [ols](https://github.com/freebroccolo/ocaml-language-server)
|
||||||
|
* OpenApi
|
||||||
|
* [ibm_validator](https://github.com/IBM/openapi-validator)
|
||||||
|
* [prettier](https://github.com/prettier/prettier)
|
||||||
|
* [yamllint](https://yamllint.readthedocs.io/)
|
||||||
* Pawn
|
* Pawn
|
||||||
* [uncrustify](https://github.com/uncrustify/uncrustify)
|
* [uncrustify](https://github.com/uncrustify/uncrustify)
|
||||||
* Perl
|
* Perl
|
||||||
|
@ -339,10 +354,10 @@ formatting.
|
||||||
* [intelephense](https://github.com/bmewburn/intelephense-docs)
|
* [intelephense](https://github.com/bmewburn/intelephense-docs)
|
||||||
* [langserver](https://github.com/felixfbecker/php-language-server)
|
* [langserver](https://github.com/felixfbecker/php-language-server)
|
||||||
* [phan](https://github.com/phan/phan) see `:help ale-php-phan` to instructions
|
* [phan](https://github.com/phan/phan) see `:help ale-php-phan` to instructions
|
||||||
|
* [php -l](https://secure.php.net/)
|
||||||
|
* [php-cs-fixer](http://cs.sensiolabs.org/)
|
||||||
* [phpcbf](https://github.com/squizlabs/PHP_CodeSniffer)
|
* [phpcbf](https://github.com/squizlabs/PHP_CodeSniffer)
|
||||||
* [phpcs](https://github.com/squizlabs/PHP_CodeSniffer)
|
* [phpcs](https://github.com/squizlabs/PHP_CodeSniffer)
|
||||||
* [php-cs-fixer](http://cs.sensiolabs.org/)
|
|
||||||
* [php -l](https://secure.php.net/)
|
|
||||||
* [phpmd](https://phpmd.org)
|
* [phpmd](https://phpmd.org)
|
||||||
* [phpstan](https://github.com/phpstan/phpstan)
|
* [phpstan](https://github.com/phpstan/phpstan)
|
||||||
* [psalm](https://getpsalm.org) :floppy_disk:
|
* [psalm](https://getpsalm.org) :floppy_disk:
|
||||||
|
@ -403,6 +418,8 @@ formatting.
|
||||||
* [styler](https://github.com/r-lib/styler)
|
* [styler](https://github.com/r-lib/styler)
|
||||||
* Racket
|
* Racket
|
||||||
* [raco](https://docs.racket-lang.org/raco/)
|
* [raco](https://docs.racket-lang.org/raco/)
|
||||||
|
* Re:VIEW
|
||||||
|
* [redpen](http://redpen.cc/)
|
||||||
* ReasonML
|
* ReasonML
|
||||||
* [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-reasonml-ols` for configuration instructions
|
* [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-reasonml-ols` for configuration instructions
|
||||||
* [ols](https://github.com/freebroccolo/ocaml-language-server)
|
* [ols](https://github.com/freebroccolo/ocaml-language-server)
|
||||||
|
@ -416,8 +433,6 @@ formatting.
|
||||||
* [textlint](https://textlint.github.io/)
|
* [textlint](https://textlint.github.io/)
|
||||||
* [vale](https://github.com/ValeLint/vale)
|
* [vale](https://github.com/ValeLint/vale)
|
||||||
* [write-good](https://github.com/btford/write-good)
|
* [write-good](https://github.com/btford/write-good)
|
||||||
* Re:VIEW
|
|
||||||
* [redpen](http://redpen.cc/)
|
|
||||||
* RPM spec
|
* RPM spec
|
||||||
* [rpmlint](https://github.com/rpm-software-management/rpmlint) :warning: (see `:help ale-integration-spec`)
|
* [rpmlint](https://github.com/rpm-software-management/rpmlint) :warning: (see `:help ale-integration-spec`)
|
||||||
* Ruby
|
* Ruby
|
||||||
|
@ -437,6 +452,8 @@ formatting.
|
||||||
* [rust-analyzer](https://github.com/rust-analyzer/rust-analyzer) :warning:
|
* [rust-analyzer](https://github.com/rust-analyzer/rust-analyzer) :warning:
|
||||||
* [rustc](https://www.rust-lang.org/) :warning:
|
* [rustc](https://www.rust-lang.org/) :warning:
|
||||||
* [rustfmt](https://github.com/rust-lang-nursery/rustfmt)
|
* [rustfmt](https://github.com/rust-lang-nursery/rustfmt)
|
||||||
|
* Salt
|
||||||
|
* [salt-lint](https://github.com/warpnet/salt-lint)
|
||||||
* Sass
|
* Sass
|
||||||
* [sass-lint](https://www.npmjs.com/package/sass-lint)
|
* [sass-lint](https://www.npmjs.com/package/sass-lint)
|
||||||
* [stylelint](https://github.com/stylelint/stylelint)
|
* [stylelint](https://github.com/stylelint/stylelint)
|
||||||
|
@ -462,10 +479,10 @@ formatting.
|
||||||
* [solium](https://github.com/duaraghav8/Solium)
|
* [solium](https://github.com/duaraghav8/Solium)
|
||||||
* SQL
|
* SQL
|
||||||
* [pgformatter](https://github.com/darold/pgFormatter)
|
* [pgformatter](https://github.com/darold/pgFormatter)
|
||||||
|
* [sql-lint](https://github.com/joereynolds/sql-lint)
|
||||||
* [sqlfmt](https://github.com/jackc/sqlfmt)
|
* [sqlfmt](https://github.com/jackc/sqlfmt)
|
||||||
* [sqlformat](https://github.com/andialbrecht/sqlparse)
|
* [sqlformat](https://github.com/andialbrecht/sqlparse)
|
||||||
* [sqlint](https://github.com/purcell/sqlint)
|
* [sqlint](https://github.com/purcell/sqlint)
|
||||||
* [sql-lint](https://github.com/joereynolds/sql-lint)
|
|
||||||
* Stylus
|
* Stylus
|
||||||
* [stylelint](https://github.com/stylelint/stylelint)
|
* [stylelint](https://github.com/stylelint/stylelint)
|
||||||
* SugarSS
|
* SugarSS
|
||||||
|
@ -495,6 +512,7 @@ formatting.
|
||||||
* Thrift
|
* Thrift
|
||||||
* [thrift](http://thrift.apache.org/)
|
* [thrift](http://thrift.apache.org/)
|
||||||
* TypeScript
|
* TypeScript
|
||||||
|
* [deno](https://deno.land/)
|
||||||
* [eslint](http://eslint.org/)
|
* [eslint](http://eslint.org/)
|
||||||
* [fecs](http://fecs.baidu.com/)
|
* [fecs](http://fecs.baidu.com/)
|
||||||
* [prettier](https://github.com/prettier/prettier)
|
* [prettier](https://github.com/prettier/prettier)
|
||||||
|
@ -504,6 +522,7 @@ formatting.
|
||||||
* typecheck
|
* typecheck
|
||||||
* VALA
|
* VALA
|
||||||
* [uncrustify](https://github.com/uncrustify/uncrustify)
|
* [uncrustify](https://github.com/uncrustify/uncrustify)
|
||||||
|
* [vala_lint](https://github.com/vala-lang/vala-lint) :floppy_disk:
|
||||||
* Verilog
|
* Verilog
|
||||||
* [hdl-checker](https://pypi.org/project/hdl-checker)
|
* [hdl-checker](https://pypi.org/project/hdl-checker)
|
||||||
* [iverilog](https://github.com/steveicarus/iverilog)
|
* [iverilog](https://github.com/steveicarus/iverilog)
|
||||||
|
@ -532,6 +551,7 @@ formatting.
|
||||||
* [xmllint](http://xmlsoft.org/xmllint.html)
|
* [xmllint](http://xmlsoft.org/xmllint.html)
|
||||||
* YAML
|
* YAML
|
||||||
* [prettier](https://github.com/prettier/prettier)
|
* [prettier](https://github.com/prettier/prettier)
|
||||||
|
* [spectral](https://github.com/stoplightio/spectral)
|
||||||
* [swaglint](https://github.com/byCedric/swaglint)
|
* [swaglint](https://github.com/byCedric/swaglint)
|
||||||
* [yamlfix](https://lyz-code.github.io/yamlfix)
|
* [yamlfix](https://lyz-code.github.io/yamlfix)
|
||||||
* [yamllint](https://yamllint.readthedocs.io/)
|
* [yamllint](https://yamllint.readthedocs.io/)
|
||||||
|
|
0
test/command_callback/inko_paths/test.inko
Normal file
0
test/command_callback/inko_paths/test.inko
Normal file
0
test/command_callback/spectral_paths/node_modules/.bin/spectral
generated
vendored
Normal file
0
test/command_callback/spectral_paths/node_modules/.bin/spectral
generated
vendored
Normal file
0
test/command_callback/spectral_paths/openapi.yaml
Normal file
0
test/command_callback/spectral_paths/openapi.yaml
Normal file
17
test/command_callback/test_adals_command_callbacks.vader
Normal file
17
test/command_callback/test_adals_command_callbacks.vader
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('ada', 'adals')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(Sets adals executable):
|
||||||
|
let g:ale_ada_adals_executable = '/path/to /Ada'
|
||||||
|
AssertLinter '/path/to /Ada', ale#Escape('/path/to /Ada')
|
||||||
|
|
||||||
|
Execute(Sets adals encoding):
|
||||||
|
let b:ale_ada_adals_encoding = 'iso-8859-1'
|
||||||
|
AssertLSPConfig {'ada.defaultCharset': 'iso-8859-1', 'ada.projectFile': 'default.gpr'}
|
||||||
|
|
||||||
|
Execute(Sets adals project):
|
||||||
|
let g:ale_ada_adals_project = 'myproject.gpr'
|
||||||
|
AssertLSPConfig {'ada.defaultCharset': 'utf-8', 'ada.projectFile': 'myproject.gpr'}
|
|
@ -68,7 +68,6 @@ Execute(The build directory should be used for header files):
|
||||||
\ ale#Escape('clang-tidy')
|
\ ale#Escape('clang-tidy')
|
||||||
\ . ' -checks=' . ale#Escape('*') . ' %s'
|
\ . ' -checks=' . ale#Escape('*') . ' %s'
|
||||||
\ . ' -p ' . ale#Escape('/foo/bar')
|
\ . ' -p ' . ale#Escape('/foo/bar')
|
||||||
\ . ' -- -x c++'
|
|
||||||
|
|
||||||
call ale#test#SetFilename('test.hpp')
|
call ale#test#SetFilename('test.hpp')
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('dart', 'analysis_server')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(The default command should be correct):
|
||||||
|
AssertLinter 'dart', ale#Escape('dart')
|
||||||
|
\ . ' ./snapshots/analysis_server.dart.snapshot --lsp'
|
||||||
|
|
||||||
|
Execute(The executable should be configurable):
|
||||||
|
let g:ale_dart_analysis_server_executable = 'foobar'
|
||||||
|
|
||||||
|
AssertLinter 'foobar', ale#Escape('foobar')
|
||||||
|
\ . ' ./snapshots/analysis_server.dart.snapshot --lsp'
|
|
@ -38,3 +38,10 @@ Execute(Builds credo command with suggest mode when set to 0):
|
||||||
AssertLinter 'mix',
|
AssertLinter 'mix',
|
||||||
\ ale#path#CdString(ale#path#Simplify(g:dir . '/elixir_paths/mix_project'))
|
\ ale#path#CdString(ale#path#Simplify(g:dir . '/elixir_paths/mix_project'))
|
||||||
\ . 'mix help credo && mix credo suggest --format=flycheck --read-from-stdin %s'
|
\ . 'mix help credo && mix credo suggest --format=flycheck --read-from-stdin %s'
|
||||||
|
|
||||||
|
Execute(Builds credo command with a custom config file):
|
||||||
|
let g:ale_elixir_credo_config_file = '/home/user/custom_credo.exs'
|
||||||
|
|
||||||
|
AssertLinter 'mix',
|
||||||
|
\ ale#path#CdString(ale#path#Simplify(g:dir . '/elixir_paths/mix_project'))
|
||||||
|
\ . 'mix help credo && mix credo suggest --config-file /home/user/custom_credo.exs --format=flycheck --read-from-stdin %s'
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('erlang', 'erlc')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(The default command should be correct.):
|
||||||
|
let g:cmd = ale_linters#erlang#erlc#GetCommand(bufnr(''))
|
||||||
|
let g:regex = 'erlc.\+-o.\+%t'
|
||||||
|
let g:matched = match(g:cmd, g:regex)
|
||||||
|
|
||||||
|
" match returns -1 if not found
|
||||||
|
AssertNotEqual
|
||||||
|
\ g:matched,
|
||||||
|
\ -1,
|
||||||
|
\ 'Command error: expected [' . g:cmd . '] to match [' . g:regex . ']'
|
||||||
|
|
||||||
|
Execute(The command should accept configured executable.):
|
||||||
|
let b:ale_erlang_erlc_executable = '/usr/bin/erlc'
|
||||||
|
let g:cmd = ale_linters#erlang#erlc#GetCommand(bufnr(''))
|
||||||
|
let g:regex = '/usr/bin/erlc.\+-o.\+%t'
|
||||||
|
let g:matched = match(g:cmd, g:regex)
|
||||||
|
|
||||||
|
" match returns -1 if not found
|
||||||
|
AssertNotEqual
|
||||||
|
\ g:matched,
|
||||||
|
\ -1,
|
||||||
|
\ 'Command error: expected [' . g:cmd . '] to match [' . g:regex . ']'
|
||||||
|
|
||||||
|
Execute(The command should accept configured options.):
|
||||||
|
let b:ale_erlang_erlc_options = '-I include'
|
||||||
|
let g:cmd = ale_linters#erlang#erlc#GetCommand(bufnr(''))
|
||||||
|
let g:regex = 'erlc.\+-o.\+-I include.\+%t'
|
||||||
|
let g:matched = match(g:cmd, g:regex)
|
||||||
|
|
||||||
|
" match returns -1 if not found
|
||||||
|
AssertNotEqual
|
||||||
|
\ g:matched,
|
||||||
|
\ -1,
|
||||||
|
\ 'Command error: expected [' . g:cmd . '] to match [' . g:regex . ']'
|
|
@ -1,5 +1,6 @@
|
||||||
Before:
|
Before:
|
||||||
call ale#assert#SetUpLinterTest('javascript', 'fecs')
|
call ale#assert#SetUpLinterTest('javascript', 'fecs')
|
||||||
|
runtime autoload/ale/handlers/fecs.vim
|
||||||
|
|
||||||
After:
|
After:
|
||||||
call ale#assert#TearDownLinterTest()
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('openapi', 'ibm_validator')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(The yaml ibm-openapi-validator command callback should return the correct default string):
|
||||||
|
AssertLinter 'lint-openapi', ale#Escape('lint-openapi') . ' %t'
|
||||||
|
|
||||||
|
Execute(The yaml ibm-openapi-validator command callback should be configurable):
|
||||||
|
let g:ale_openapi_ibm_validator_executable = '~/.local/bin/lint-openapi'
|
||||||
|
let g:ale_openapi_ibm_validator_options = '-c ~/.config'
|
||||||
|
|
||||||
|
AssertLinter '~/.local/bin/lint-openapi', ale#Escape('~/.local/bin/lint-openapi')
|
||||||
|
\ . ' -c ~/.config %t'
|
20
test/command_callback/test_inko_inko_callbacks.vader
Normal file
20
test/command_callback/test_inko_inko_callbacks.vader
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('inko', 'inko')
|
||||||
|
call ale#test#SetFilename('inko_paths/test.inko')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(The default executable path should be correct):
|
||||||
|
AssertLinter 'inko', ale#Escape('inko') . ' build --check --format=json %s'
|
||||||
|
|
||||||
|
Execute(The inko callback should include tests/ for test paths):
|
||||||
|
call ale#engine#Cleanup(bufnr(''))
|
||||||
|
noautocmd e! inko_paths/tests/test/test_foo.inko
|
||||||
|
call ale#engine#InitBufferInfo(bufnr(''))
|
||||||
|
|
||||||
|
AssertLinter 'inko',
|
||||||
|
\ ale#Escape('inko')
|
||||||
|
\ . ' build --check --format=json --include '
|
||||||
|
\ . ale#Escape(ale#path#Simplify(g:dir . '/inko_paths/tests/'))
|
||||||
|
\ . ' %s'
|
|
@ -11,16 +11,16 @@ After:
|
||||||
Execute(The default executable path should be correct):
|
Execute(The default executable path should be correct):
|
||||||
AssertLinter 'julia',
|
AssertLinter 'julia',
|
||||||
\ ale#Escape('julia') .
|
\ ale#Escape('julia') .
|
||||||
\' --startup-file=no --history-file=no -e ' .
|
\' --project=@. --startup-file=no --history-file=no -e ' .
|
||||||
\ ale#Escape('using LanguageServer; server = LanguageServer.LanguageServerInstance(isdefined(Base, :stdin) ? stdin : STDIN, isdefined(Base, :stdout) ? stdout : STDOUT, false); server.runlinter = true; run(server);')
|
\ ale#Escape('using LanguageServer; using Pkg; import StaticLint; import SymbolServer; server = LanguageServer.LanguageServerInstance(isdefined(Base, :stdin) ? stdin : STDIN, isdefined(Base, :stdout) ? stdout : STDOUT, dirname(Pkg.Types.Context().env.project_file)); server.runlinter = true; run(server);')
|
||||||
|
|
||||||
Execute(The executable should be configurable):
|
Execute(The executable should be configurable):
|
||||||
let g:ale_julia_executable = 'julia-new'
|
let g:ale_julia_executable = 'julia-new'
|
||||||
|
|
||||||
AssertLinter 'julia-new',
|
AssertLinter 'julia-new',
|
||||||
\ ale#Escape('julia-new') .
|
\ ale#Escape('julia-new') .
|
||||||
\' --startup-file=no --history-file=no -e ' .
|
\' --project=@. --startup-file=no --history-file=no -e ' .
|
||||||
\ ale#Escape('using LanguageServer; server = LanguageServer.LanguageServerInstance(isdefined(Base, :stdin) ? stdin : STDIN, isdefined(Base, :stdout) ? stdout : STDOUT, false); server.runlinter = true; run(server);')
|
\ ale#Escape('using LanguageServer; using Pkg; import StaticLint; import SymbolServer; server = LanguageServer.LanguageServerInstance(isdefined(Base, :stdin) ? stdin : STDIN, isdefined(Base, :stdout) ? stdout : STDOUT, dirname(Pkg.Types.Context().env.project_file)); server.runlinter = true; run(server);')
|
||||||
|
|
||||||
Execute(The project root should be detected correctly):
|
Execute(The project root should be detected correctly):
|
||||||
AssertLSPProject ''
|
AssertLSPProject ''
|
||||||
|
|
|
@ -16,5 +16,5 @@ Execute(The project root should be detected correctly):
|
||||||
|
|
||||||
Execute(Should accept configuration settings):
|
Execute(Should accept configuration settings):
|
||||||
AssertLSPConfig {}
|
AssertLSPConfig {}
|
||||||
let b:ale_rust_analyzer_config = {'rust': {'clippy_preference': 'on'}}
|
let b:ale_rust_analyzer_config = {'diagnostics': {'disabled': ['unresolved-import']}}
|
||||||
AssertLSPConfig {'rust': {'clippy_preference': 'on'}}
|
AssertLSPOptions {'diagnostics': {'disabled': ['unresolved-import']}}
|
||||||
|
|
|
@ -5,6 +5,7 @@ Before:
|
||||||
|
|
||||||
let g:ale_ruby_sorbet_executable = 'srb'
|
let g:ale_ruby_sorbet_executable = 'srb'
|
||||||
let g:ale_ruby_sorbet_options = ''
|
let g:ale_ruby_sorbet_options = ''
|
||||||
|
let g:ale_ruby_sorbet_enable_watchman = 0
|
||||||
|
|
||||||
After:
|
After:
|
||||||
call ale#assert#TearDownLinterTest()
|
call ale#assert#TearDownLinterTest()
|
||||||
|
@ -13,6 +14,12 @@ Execute(Executable should default to srb):
|
||||||
AssertLinter 'srb', ale#Escape('srb')
|
AssertLinter 'srb', ale#Escape('srb')
|
||||||
\ . ' tc --lsp --disable-watchman'
|
\ . ' tc --lsp --disable-watchman'
|
||||||
|
|
||||||
|
Execute(Able to enable watchman):
|
||||||
|
let g:ale_ruby_sorbet_enable_watchman = 1
|
||||||
|
|
||||||
|
AssertLinter 'srb', ale#Escape('srb')
|
||||||
|
\ . ' tc --lsp'
|
||||||
|
|
||||||
Execute(Should be able to set a custom executable):
|
Execute(Should be able to set a custom executable):
|
||||||
let g:ale_ruby_sorbet_executable = 'bin/srb'
|
let g:ale_ruby_sorbet_executable = 'bin/srb'
|
||||||
|
|
||||||
|
|
31
test/command_callback/test_spectral_command_callback.vader
Normal file
31
test/command_callback/test_spectral_command_callback.vader
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('yaml', 'spectral')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(The yaml spectral command callback should return the correct default string):
|
||||||
|
AssertLinter 'spectral', ale#Escape('spectral') . ' lint --ignore-unknown-format -q -f text %t'
|
||||||
|
|
||||||
|
Execute(The yaml spectral command callback should be configurable):
|
||||||
|
let g:ale_yaml_spectral_executable = '~/.local/bin/spectral'
|
||||||
|
|
||||||
|
AssertLinter '~/.local/bin/spectral',
|
||||||
|
\ ale#Escape('~/.local/bin/spectral')
|
||||||
|
\ . ' lint --ignore-unknown-format -q -f text %t'
|
||||||
|
|
||||||
|
Execute(The yaml spectral command callback should allow a global installation to be used):
|
||||||
|
let g:ale_yaml_spectral_executable = '/usr/local/bin/spectral'
|
||||||
|
let g:ale_yaml_spectral_use_global = 1
|
||||||
|
|
||||||
|
AssertLinter '/usr/local/bin/spectral',
|
||||||
|
\ ale#Escape('/usr/local/bin/spectral')
|
||||||
|
\ . ' lint --ignore-unknown-format -q -f text %t'
|
||||||
|
|
||||||
|
Execute(The yaml spectral command callback should allow a local installation to be used):
|
||||||
|
call ale#test#SetFilename('spectral_paths/openapi.yaml')
|
||||||
|
|
||||||
|
AssertLinter
|
||||||
|
\ ale#path#Simplify(g:dir . '/spectral_paths/node_modules/.bin/spectral'),
|
||||||
|
\ ale#Escape(ale#path#Simplify(g:dir . '/spectral_paths/node_modules/.bin/spectral'))
|
||||||
|
\ . ' lint --ignore-unknown-format -q -f text %t'
|
60
test/command_callback/test_typescript_deno_lsp.vader
Normal file
60
test/command_callback/test_typescript_deno_lsp.vader
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
Before:
|
||||||
|
let g:ale_deno_unstable = 0
|
||||||
|
let g:ale_deno_executable = 'deno'
|
||||||
|
let g:ale_deno_project_root = ''
|
||||||
|
|
||||||
|
runtime autoload/ale/handlers/deno.vim
|
||||||
|
call ale#assert#SetUpLinterTest('typescript', 'deno')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(Should set deno lsp for TypeScript projects using stable Deno API):
|
||||||
|
AssertLSPLanguage 'typescript'
|
||||||
|
AssertLSPConfig {}
|
||||||
|
AssertLSPProject ale#path#Simplify(g:dir . '/../..')
|
||||||
|
AssertLSPOptions {
|
||||||
|
\ 'enable': v:true,
|
||||||
|
\ 'lint': v:true,
|
||||||
|
\ 'unstable': v:false
|
||||||
|
\}
|
||||||
|
|
||||||
|
Execute(Should set deno lsp using unstable Deno API if enabled by user):
|
||||||
|
let g:ale_deno_unstable = 1
|
||||||
|
AssertLSPLanguage 'typescript'
|
||||||
|
AssertLSPConfig {}
|
||||||
|
AssertLSPProject ale#path#Simplify(g:dir . '/../..')
|
||||||
|
AssertLSPOptions {
|
||||||
|
\ 'enable': v:true,
|
||||||
|
\ 'lint': v:true,
|
||||||
|
\ 'unstable': v:true
|
||||||
|
\}
|
||||||
|
|
||||||
|
Execute(Should find project root containing tsconfig.json):
|
||||||
|
call ale#test#SetFilename('../typescript/test.ts')
|
||||||
|
AssertLSPLanguage 'typescript'
|
||||||
|
AssertLSPConfig {}
|
||||||
|
AssertLSPProject ale#path#Simplify(g:dir . '/../typescript')
|
||||||
|
AssertLSPOptions {
|
||||||
|
\ 'enable': v:true,
|
||||||
|
\ 'lint': v:true,
|
||||||
|
\ 'unstable': v:false
|
||||||
|
\}
|
||||||
|
|
||||||
|
Execute(Should use user-specified project root):
|
||||||
|
let g:ale_deno_lsp_project_root = '/'
|
||||||
|
|
||||||
|
call ale#test#SetFilename('../typescript/test.ts')
|
||||||
|
AssertLSPLanguage 'typescript'
|
||||||
|
AssertLSPConfig {}
|
||||||
|
AssertLSPProject '/'
|
||||||
|
AssertLSPOptions {
|
||||||
|
\ 'enable': v:true,
|
||||||
|
\ 'lint': v:true,
|
||||||
|
\ 'unstable': v:false
|
||||||
|
\}
|
||||||
|
|
||||||
|
Execute(Check Deno LSP command):
|
||||||
|
AssertLinter 'deno', [
|
||||||
|
\ ale#Escape('deno') . ' lsp',
|
||||||
|
\]
|
|
@ -1,8 +1,11 @@
|
||||||
Before:
|
Before:
|
||||||
call ale#assert#SetUpLinterTest('typescript', 'xo')
|
call ale#assert#SetUpLinterTest('javascript', 'xo')
|
||||||
call ale#test#SetFilename('testfile.ts')
|
call ale#test#SetFilename('testfile.jsx')
|
||||||
unlet! b:executable
|
unlet! b:executable
|
||||||
|
|
||||||
|
set filetype=javascriptreact
|
||||||
|
runtime autoload/ale/handlers/xo.vim
|
||||||
|
|
||||||
After:
|
After:
|
||||||
call ale#assert#TearDownLinterTest()
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
@ -10,11 +13,11 @@ Execute(The XO executable should be called):
|
||||||
AssertLinter 'xo', ale#Escape('xo') . ' --reporter json --stdin --stdin-filename %s'
|
AssertLinter 'xo', ale#Escape('xo') . ' --reporter json --stdin --stdin-filename %s'
|
||||||
|
|
||||||
Execute(The XO executable should be configurable):
|
Execute(The XO executable should be configurable):
|
||||||
let b:ale_typescript_xo_executable = 'foobar'
|
let b:ale_javascript_xo_executable = 'foobar'
|
||||||
|
|
||||||
AssertLinter 'foobar', ale#Escape('foobar') . ' --reporter json --stdin --stdin-filename %s'
|
AssertLinter 'foobar', ale#Escape('foobar') . ' --reporter json --stdin --stdin-filename %s'
|
||||||
|
|
||||||
Execute(The XO options should be configurable):
|
Execute(The XO options should be configurable):
|
||||||
let b:ale_typescript_xo_options = '--wat'
|
let b:ale_javascript_xo_options = '--wat'
|
||||||
|
|
||||||
AssertLinter 'xo', ale#Escape('xo') . ' --wat --reporter json --stdin --stdin-filename %s'
|
AssertLinter 'xo', ale#Escape('xo') . ' --wat --reporter json --stdin --stdin-filename %s'
|
||||||
|
|
23
test/command_callback/test_xots_command_callback.vader
Normal file
23
test/command_callback/test_xots_command_callback.vader
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('typescript', 'xo')
|
||||||
|
call ale#test#SetFilename('testfile.tsx')
|
||||||
|
unlet! b:executable
|
||||||
|
|
||||||
|
set filetype=typescriptreact
|
||||||
|
runtime autoload/ale/handlers/xo.vim
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(The XO executable should be called):
|
||||||
|
AssertLinter 'xo', ale#Escape('xo') . ' --reporter json --stdin --stdin-filename %s'
|
||||||
|
|
||||||
|
Execute(The XO executable should be configurable):
|
||||||
|
let b:ale_typescript_xo_executable = 'foobar'
|
||||||
|
|
||||||
|
AssertLinter 'foobar', ale#Escape('foobar') . ' --reporter json --stdin --stdin-filename %s'
|
||||||
|
|
||||||
|
Execute(The XO options should be configurable):
|
||||||
|
let b:ale_typescript_xo_options = '--wat'
|
||||||
|
|
||||||
|
AssertLinter 'xo', ale#Escape('xo') . ' --wat --reporter json --stdin --stdin-filename %s'
|
0
test/eslint-test-files/react-app/node_modules/xo/cli.js
generated
vendored
Normal file
0
test/eslint-test-files/react-app/node_modules/xo/cli.js
generated
vendored
Normal file
0
test/eslint-test-files/react-app/subdir/testfile.ts
Normal file
0
test/eslint-test-files/react-app/subdir/testfile.ts
Normal file
|
@ -1,11 +0,0 @@
|
||||||
Before:
|
|
||||||
call ale#assert#SetUpFixerTest('dhall', 'dhall')
|
|
||||||
|
|
||||||
After:
|
|
||||||
call ale#assert#TearDownFixerTest()
|
|
||||||
|
|
||||||
Execute(The default command should be correct):
|
|
||||||
AssertFixer
|
|
||||||
\ { 'read_temporary_file': 1,
|
|
||||||
\ 'command': ale#Escape('dhall') . ' format --inplace %t'
|
|
||||||
\ }
|
|
24
test/fixers/test_dhall_format_fixer_callback.vader
Normal file
24
test/fixers/test_dhall_format_fixer_callback.vader
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
Before:
|
||||||
|
Save g:ale_dhall_executable
|
||||||
|
Save g:ale_dhall_options
|
||||||
|
|
||||||
|
" Use an invalid global executable, so we don’t match it.
|
||||||
|
let g:ale_dhall_executable = 'odd-dhall'
|
||||||
|
let g:ale_dhall_options = '--ascii'
|
||||||
|
|
||||||
|
call ale#assert#SetUpFixerTest('dhall-format', 'dhall-format')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownFixerTest()
|
||||||
|
|
||||||
|
Execute(The dhall-format callback should return the correct options):
|
||||||
|
call ale#test#SetFilename('../dhall_files/testfile.dhall')
|
||||||
|
|
||||||
|
AssertFixer
|
||||||
|
\ {
|
||||||
|
\ 'command': ale#Escape('odd-dhall')
|
||||||
|
\ . ' --ascii'
|
||||||
|
\ . ' format'
|
||||||
|
\ . ' --inplace %t',
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\ }
|
24
test/fixers/test_dhall_freeze_fixer_callback.vader
Normal file
24
test/fixers/test_dhall_freeze_fixer_callback.vader
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
Before:
|
||||||
|
Save g:ale_dhall_executable
|
||||||
|
Save g:ale_dhall_options
|
||||||
|
|
||||||
|
" Use an invalid global executable, so we don’t match it.
|
||||||
|
let g:ale_dhall_executable = 'odd-dhall'
|
||||||
|
let g:ale_dhall_options = '--ascii'
|
||||||
|
let g:ale_dhall_freeze_options = '--all'
|
||||||
|
|
||||||
|
call ale#assert#SetUpFixerTest('dhall-freeze', 'dhall-freeze')
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#assert#TearDownFixerTest()
|
||||||
|
|
||||||
|
Execute(The dhall-freeze callback should return the correct options):
|
||||||
|
AssertFixer
|
||||||
|
\ {
|
||||||
|
\ 'command': ale#Escape('odd-dhall')
|
||||||
|
\ . ' --ascii'
|
||||||
|
\ . ' freeze'
|
||||||
|
\ . ' --all'
|
||||||
|
\ . ' --inplace %t',
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\ }
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue