Merge pull request #138 from neersighted/dotft
Add support for dot-seperate linters, improve linter tests
This commit is contained in:
commit
89d8f2a0bc
@ -1,12 +1,6 @@
|
||||
" Author: Bjorn Neergaard <bjorn@neersighted.com>
|
||||
" Description: ansible-lint for ansible-yaml files
|
||||
|
||||
if exists('g:loaded_ale_linters_ansible_ansiblelint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_ansible_ansiblelint = 1
|
||||
|
||||
call ale#linter#Define('ansible', {
|
||||
\ 'name': 'ansible',
|
||||
\ 'executable': 'ansible',
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: Bart Libert <bart.libert@gmail.com>
|
||||
" Description: cppcheck linter for c files
|
||||
|
||||
if exists('g:loaded_ale_linters_c_cppcheck')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_c_cppcheck = 1
|
||||
|
||||
" Set this option to change the cppcheck options
|
||||
if !exists('g:ale_c_cppcheck_options')
|
||||
let g:ale_c_cppcheck_options = '--enable=style'
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>
|
||||
" Description: gcc linter for c files
|
||||
|
||||
if exists('g:loaded_ale_linters_c_gcc')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_c_gcc = 1
|
||||
|
||||
" Set this option to change the GCC options for warnings for C.
|
||||
if !exists('g:ale_c_gcc_options')
|
||||
" let g:ale_c_gcc_options = '-Wall'
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: KabbAmine - https://github.com/KabbAmine
|
||||
" Description: Coffee for checking coffee files
|
||||
|
||||
if exists('g:loaded_ale_linters_coffee_coffee')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_coffee_coffee = 1
|
||||
|
||||
call ale#linter#Define('coffee', {
|
||||
\ 'name': 'coffee',
|
||||
\ 'executable': 'coffee',
|
||||
@ -14,4 +8,3 @@ call ale#linter#Define('coffee', {
|
||||
\ 'output_stream': 'stderr',
|
||||
\ 'callback': 'ale#handlers#HandleGCCFormat',
|
||||
\})
|
||||
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: Prashanth Chandra https://github.com/prashcr
|
||||
" Description: coffeelint linter for coffeescript files
|
||||
|
||||
if exists('g:loaded_ale_linters_coffee_coffeelint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_coffee_coffeelint = 1
|
||||
|
||||
function! ale_linters#coffee#coffeelint#Handle(buffer, lines)
|
||||
" Matches patterns like the following:
|
||||
"
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: Bart Libert <bart.libert@gmail.com>
|
||||
" Description: cppcheck linter for cpp files
|
||||
|
||||
if exists('g:loaded_ale_linters_cpp_cppcheck')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_cpp_cppcheck = 1
|
||||
|
||||
" Set this option to change the cppcheck options
|
||||
if !exists('g:ale_cpp_cppcheck_options')
|
||||
let g:ale_cpp_cppcheck_options = '--enable=style'
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: geam <mdelage@student.42.fr>
|
||||
" Description: gcc linter for cpp files
|
||||
|
||||
if exists('g:loaded_ale_linters_cpp_gcc')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_cpp_gcc = 1
|
||||
|
||||
" Set this option to change the GCC options for warnings for C.
|
||||
if !exists('g:ale_cpp_gcc_options')
|
||||
" added c++14 standard support
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>
|
||||
" Description: This file adds support for checking CSS code with csslint.
|
||||
|
||||
if exists('g:loaded_ale_linters_css_csslint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_css_csslint = 1
|
||||
|
||||
call ale#linter#Define('css', {
|
||||
\ 'name': 'csslint',
|
||||
\ 'executable': 'csslint',
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>
|
||||
" Description: "dmd for D files"
|
||||
|
||||
if exists('g:loaded_ale_linters_d_dmd')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_d_dmd = 1
|
||||
|
||||
" A function for finding the dmd-wrapper script in the Vim runtime paths
|
||||
function! s:FindWrapperScript()
|
||||
for l:parent in split(&runtimepath, ',')
|
||||
|
@ -1,11 +1,5 @@
|
||||
" Author: hauleth - https://github.com/haulethe
|
||||
|
||||
if exists('g:loaded_ale_linters_elixir_credo')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_elixir_credo = 1
|
||||
|
||||
function! ale_linters#elixir#credo#Handle(buffer, lines)
|
||||
" Matches patterns line the following:
|
||||
"
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>
|
||||
" Description: gcc for Fortran files
|
||||
|
||||
if exists('g:loaded_ale_linters_fortran_gcc')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_fortran_gcc = 1
|
||||
|
||||
" Set this option to change the GCC options for warnings for Fortran.
|
||||
if !exists('g:ale_fortran_gcc_options')
|
||||
let g:ale_fortran_gcc_options = '-Wall'
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: neersighted <bjorn@neersighted.com>
|
||||
" Description: gofmt for Go files
|
||||
|
||||
if exists('g:loaded_ale_linters_go_gofmt')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_go_gofmt = 1
|
||||
|
||||
call ale#linter#Define('go', {
|
||||
\ 'name': 'gofmt',
|
||||
\ 'output_stream': 'stderr',
|
||||
@ -14,4 +8,3 @@ call ale#linter#Define('go', {
|
||||
\ 'command': g:ale#util#stdin_wrapper . ' .go gofmt -e',
|
||||
\ 'callback': 'ale#handlers#HandleUnixFormatAsError',
|
||||
\})
|
||||
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: neersighted <bjorn@neersighted.com>
|
||||
" Description: golint for Go files
|
||||
|
||||
if exists('g:loaded_ale_linters_go_golint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_go_golint = 1
|
||||
|
||||
call ale#linter#Define('go', {
|
||||
\ 'name': 'golint',
|
||||
\ 'executable': 'golint',
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: neersighted <bjorn@neersighted.com>
|
||||
" Description: go vet for Go files
|
||||
|
||||
if exists('g:loaded_ale_linters_go_govet')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_go_govet = 1
|
||||
|
||||
call ale#linter#Define('go', {
|
||||
\ 'name': 'go vet',
|
||||
\ 'output_stream': 'stderr',
|
||||
@ -14,4 +8,3 @@ call ale#linter#Define('go', {
|
||||
\ 'command': g:ale#util#stdin_wrapper . ' .go go vet',
|
||||
\ 'callback': 'ale#handlers#HandleUnixFormatAsError',
|
||||
\})
|
||||
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>
|
||||
" Description: ghc for Haskell files
|
||||
|
||||
if exists('g:loaded_ale_linters_haskell_ghc')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_haskell_ghc = 1
|
||||
|
||||
call ale#linter#Define('haskell', {
|
||||
\ 'name': 'ghc',
|
||||
\ 'output_stream': 'stderr',
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: jparoz <jesse.paroz@gmail.com>
|
||||
" Description: hlint for Haskell files
|
||||
|
||||
if exists('g:loaded_ale_linters_haskell_hlint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_haskell_hlint = 1
|
||||
|
||||
function! ale_linters#haskell#hlint#Handle(buffer, lines)
|
||||
let l:errors = json_decode(join(a:lines, ''))
|
||||
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: KabbAmine <amine.kabb@gmail.com>
|
||||
" Description: HTMLHint for checking html files
|
||||
|
||||
if exists('g:loaded_ale_linters_html_htmlhint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_html_htmlhint = 1
|
||||
|
||||
call ale#linter#Define('html', {
|
||||
\ 'name': 'htmlhint',
|
||||
\ 'executable': 'htmlhint',
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: KabbAmine <amine.kabb@gmail.com>
|
||||
" Description: This file adds support for checking HTML code with tidy.
|
||||
|
||||
if exists('g:loaded_ale_linters_html_tidy')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_html_tidy = 1
|
||||
|
||||
" CLI options
|
||||
let g:ale_html_tidy_executable = get(g:, 'ale_html_tidy_executable', 'tidy')
|
||||
let g:ale_html_tidy_args = get(g:, 'ale_html_tidy_args', '-q -e -language en')
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>
|
||||
" Description: eslint for JavaScript files
|
||||
|
||||
if exists('g:loaded_ale_linters_javascript_eslint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_javascript_eslint = 1
|
||||
|
||||
let g:ale_javascript_eslint_executable =
|
||||
\ get(g:, 'ale_javascript_eslint_executable', 'eslint')
|
||||
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: Chris Kyrouac - https://github.com/fijshion
|
||||
" Description: jscs for JavaScript files
|
||||
|
||||
if exists('g:loaded_ale_linters_javascript_jscs')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_javascript_jscs = 1
|
||||
|
||||
call ale#linter#Define('javascript', {
|
||||
\ 'name': 'jscs',
|
||||
\ 'executable': 'jscs',
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: Chris Kyrouac - https://github.com/fijshion
|
||||
" Description: JSHint for Javascript files
|
||||
|
||||
if exists('g:loaded_ale_linters_javascript_jshint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_javascript_jshint = 1
|
||||
|
||||
let g:ale_javascript_jshint_executable =
|
||||
\ get(g:, 'ale_javascript_jshint_executable', 'jshint')
|
||||
|
||||
|
@ -1,11 +1,5 @@
|
||||
" Author: KabbAmine <amine.kabb@gmail.com>
|
||||
|
||||
if exists('g:loaded_ale_linters_json_jsonlint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_json_jsonlint = 1
|
||||
|
||||
function! ale_linters#json#jsonlint#Handle(buffer, lines)
|
||||
" Matches patterns like the following:
|
||||
" line 2, col 15, found: 'STRING' - expected: 'EOF', '}', ',', ']'.
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: Sol Bekic https://github.com/s-ol
|
||||
" Description: luacheck linter for lua files
|
||||
|
||||
if exists('g:loaded_ale_linters_lua_luacheck')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_lua_luacheck = 1
|
||||
|
||||
let g:ale_lua_luacheck_executable =
|
||||
\ get(g:, 'ale_lua_luacheck_executable', 'luacheck')
|
||||
|
||||
|
@ -1,11 +1,6 @@
|
||||
" Author: Vincent Lequertier <https://github.com/SkySymbol>
|
||||
" Description: This file adds support for checking perl syntax
|
||||
|
||||
if exists('g:loaded_ale_linters_perl_perlcritic')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_perl_perl = 1
|
||||
function! ale_linters#perl#perl#Handle(buffer, lines)
|
||||
let l:pattern = '\(.\+\) at \(.\+\) line \(\d\+\)'
|
||||
let l:output = []
|
||||
|
@ -1,11 +1,6 @@
|
||||
" Author: Vincent Lequertier <https://github.com/SkySymbol>
|
||||
" Description: This file adds support for checking perl with perl critic
|
||||
|
||||
if exists('g:loaded_ale_linters_perl_perlcritic')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_perl_perlcritic = 1
|
||||
function! ale_linters#perl#perlcritic#Handle(buffer, lines)
|
||||
let l:pattern = '\(.\+\) at \(.\+\) line \(\d\+\)'
|
||||
let l:output = []
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: Spencer Wood <https://github.com/scwood>
|
||||
" Description: This file adds support for checking PHP with php-cli
|
||||
|
||||
if exists('g:loaded_ale_linters_php_php')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_php_php = 1
|
||||
|
||||
function! ale_linters#php#php#Handle(buffer, lines)
|
||||
" Matches patterns like the following:
|
||||
"
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: jwilliams108 <https://github.com/jwilliams108>
|
||||
" Description: phpcs for PHP files
|
||||
|
||||
if exists('g:loaded_ale_linters_php_phpcs')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_php_phpcs = 1
|
||||
|
||||
function! ale_linters#php#phpcs#GetCommand(buffer)
|
||||
let l:command = 'phpcs -s --report=emacs --stdin-path=%s'
|
||||
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp - <devw0rp@gmail.com>
|
||||
" Description: pug-lint for checking Pug/Jade files.
|
||||
|
||||
if exists('g:loaded_ale_linters_pug_puglint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_pug_puglint = 1
|
||||
|
||||
call ale#linter#Define('pug', {
|
||||
\ 'name': 'puglint',
|
||||
\ 'executable': 'pug-lint',
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>
|
||||
" Description: flake8 for python files
|
||||
|
||||
if exists('g:loaded_ale_linters_python_flake8')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_python_flake8 = 1
|
||||
|
||||
call ale#linter#Define('python', {
|
||||
\ 'name': 'flake8',
|
||||
\ 'executable': 'flake8',
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: ynonp - https://github.com/ynonp
|
||||
" Description: rubocop for Ruby files
|
||||
|
||||
if exists('g:loaded_ale_linters_ruby_rubocop')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_ruby_rubocop = 1
|
||||
|
||||
function! ale_linters#ruby#rubocop#Handle(buffer, lines)
|
||||
" Matches patterns line the following:
|
||||
"
|
||||
|
@ -1,11 +1,5 @@
|
||||
" Author: KabbAmine - https://github.com/KabbAmine
|
||||
|
||||
if exists('g:loaded_ale_linters_sass_sasslint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_sass_sasslint = 1
|
||||
|
||||
call ale#linter#Define('sass', {
|
||||
\ 'name': 'sasslint',
|
||||
\ 'executable': 'sass-lint',
|
||||
|
@ -2,12 +2,6 @@
|
||||
" Author: Zoltan Kalmar - https://github.com/kalmiz
|
||||
" Description: Basic scala support using scalac
|
||||
|
||||
if exists('g:loaded_ale_linters_scala_scalac')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_scala_scalac = 1
|
||||
|
||||
function! ale_linters#scala#scalac#Handle(buffer, lines)
|
||||
" Matches patterns line the following:
|
||||
"
|
||||
|
@ -1,11 +1,5 @@
|
||||
" Author: KabbAmine - https://github.com/KabbAmine
|
||||
|
||||
if exists('g:loaded_ale_linters_scss_sasslint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_scss_sasslint = 1
|
||||
|
||||
call ale#linter#Define('scss', {
|
||||
\ 'name': 'sasslint',
|
||||
\ 'executable': 'sass-lint',
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>
|
||||
" Description: This file add scsslint support for SCSS support
|
||||
|
||||
if exists('g:loaded_ale_linters_scss_scsslint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_scss_scsslint = 1
|
||||
|
||||
function! ale_linters#scss#scsslint#Handle(buffer, lines)
|
||||
" Matches patterns like the following:
|
||||
"
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>
|
||||
" Description: Lints sh files using bash -n
|
||||
|
||||
if exists('g:loaded_ale_linters_sh_shell')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_sh_shell = 1
|
||||
|
||||
" This option can be changed to change the default shell when the shell
|
||||
" cannot be taken from the hashbang line.
|
||||
if !exists('g:ale_linters_sh_shell_default_shell')
|
||||
|
@ -2,12 +2,6 @@
|
||||
" Description: This file adds support for using the shellcheck linter with
|
||||
" shell scripts.
|
||||
|
||||
if exists('g:loaded_ale_linters_sh_shellcheck')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_sh_shellcheck = 1
|
||||
|
||||
" This global variable can be set with a string of comma-seperated error
|
||||
" codes to exclude from shellcheck. For example:
|
||||
"
|
||||
|
10
ale_linters/testft/testlinter.vim
Normal file
10
ale_linters/testft/testlinter.vim
Normal file
@ -0,0 +1,10 @@
|
||||
" Author: neersighted <bjorn@neersighted.com>
|
||||
" Description: dummy linter to use in tests
|
||||
|
||||
call ale#linter#Define('testft', {
|
||||
\ 'name': 'testlinter',
|
||||
\ 'output_stream': 'stdout',
|
||||
\ 'executable': 'testlinter',
|
||||
\ 'command': 'testlinter',
|
||||
\ 'callback': 'testCB',
|
||||
\})
|
@ -1,12 +1,6 @@
|
||||
" Author: Prashanth Chandra https://github.com/prashcr
|
||||
" Description: tslint for TypeScript files
|
||||
|
||||
if exists('g:loaded_ale_linters_typescript_tslint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_typescript_tslint = 1
|
||||
|
||||
function! ale_linters#typescript#tslint#Handle(buffer, lines)
|
||||
" Matches patterns like the following:
|
||||
"
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: Masahiro H https://github.com/mshr-h
|
||||
" Description: iverilog for verilog files
|
||||
|
||||
if exists('g:loaded_ale_linters_verilog_iverilog')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_verilog_iverilog = 1
|
||||
|
||||
function! ale_linters#verilog#iverilog#Handle(buffer, lines)
|
||||
" Look for lines like the following.
|
||||
"
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: Masahiro H https://github.com/mshr-h
|
||||
" Description: verilator for verilog files
|
||||
|
||||
if exists('g:loaded_ale_linters_verilog_verilator')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_verilog_verilator = 1
|
||||
|
||||
function! ale_linters#verilog#verilator#Handle(buffer, lines)
|
||||
" Look for lines like the following.
|
||||
"
|
||||
|
@ -1,12 +1,6 @@
|
||||
" Author: w0rp <devw0rp@gmail.com>, KabbAmine <amine.kabb@gmail.com>
|
||||
" Description: This file adds support for checking Vim code with Vint.
|
||||
|
||||
if exists('g:loaded_ale_linters_vim_vint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_vim_vint = 1
|
||||
|
||||
" This flag can be used to change enable/disable style issues.
|
||||
let g:ale_vim_vint_show_style_issues =
|
||||
\ get(g:, 'ale_vim_vint_show_style_issues', 1)
|
||||
|
@ -1,11 +1,5 @@
|
||||
" Author: KabbAmine <amine.kabb@gmail.com>
|
||||
|
||||
if exists('g:loaded_ale_linters_yaml_yamllint')
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_ale_linters_yaml_yamllint = 1
|
||||
|
||||
function! ale_linters#yaml#yamllint#Handle(buffer, lines)
|
||||
" Matches patterns line the following:
|
||||
" something.yaml:1:1: [warning] missing document start "---" (document-start)
|
||||
|
@ -7,7 +7,6 @@ let s:linters = {}
|
||||
" Default filetype aliaes.
|
||||
" The user defined aliases will be merged with this Dictionary.
|
||||
let s:default_ale_linter_aliases = {
|
||||
\ 'javascript.jsx': 'javascript',
|
||||
\ 'zsh': 'sh',
|
||||
\ 'csh': 'sh',
|
||||
\}
|
||||
@ -19,6 +18,11 @@ let s:default_ale_linters = {
|
||||
\ 'csh': ['shell'],
|
||||
\}
|
||||
|
||||
" Testing/debugging helper to unload all linters.
|
||||
function! ale#linter#Reset() abort
|
||||
let s:linters = {}
|
||||
endfunction
|
||||
|
||||
function! ale#linter#Define(filetype, linter) abort
|
||||
if !has_key(s:linters, a:filetype)
|
||||
let s:linters[a:filetype] = []
|
||||
@ -74,45 +78,52 @@ function! s:LoadLinters(filetype) abort
|
||||
return s:linters[a:filetype]
|
||||
endfunction
|
||||
|
||||
function! ale#linter#Get(original_filetype) abort
|
||||
" Try and get an aliased file type either from the user's Dictionary, or
|
||||
" our default Dictionary, otherwise use the filetype as-is.
|
||||
let l:filetype = get(
|
||||
\ g:ale_linter_aliases,
|
||||
\ a:original_filetype,
|
||||
\ get(
|
||||
\ s:default_ale_linter_aliases,
|
||||
\ a:original_filetype,
|
||||
\ a:original_filetype
|
||||
\ )
|
||||
\)
|
||||
|
||||
" Try and get a list of linters to run, using the original file type,
|
||||
" not the aliased filetype. We have some linters to limit by default,
|
||||
" and users may define their own list of linters to run.
|
||||
let l:linter_names = get(
|
||||
\ g:ale_linters,
|
||||
\ a:original_filetype,
|
||||
\ get(
|
||||
\ s:default_ale_linters,
|
||||
\ a:original_filetype,
|
||||
\ 'all'
|
||||
\ )
|
||||
\)
|
||||
|
||||
let l:all_linters = s:LoadLinters(l:filetype)
|
||||
function! ale#linter#Get(original_filetypes) abort
|
||||
let l:combined_linters = []
|
||||
|
||||
if type(l:linter_names) == type('') && l:linter_names ==# 'all'
|
||||
let l:combined_linters = l:all_linters
|
||||
elseif type(l:linter_names) == type([])
|
||||
" Select only the linters we or the user has specified.
|
||||
for l:linter in l:all_linters
|
||||
if index(l:linter_names, l:linter.name) >= 0
|
||||
call add(l:combined_linters, l:linter)
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
" Handle dot-seperated filetypes.
|
||||
for l:original_filetype in split(a:original_filetypes, '\.')
|
||||
" Try and get an aliased file type either from the user's Dictionary, or
|
||||
" our default Dictionary, otherwise use the filetype as-is.
|
||||
let l:filetype = get(
|
||||
\ g:ale_linter_aliases,
|
||||
\ l:original_filetype,
|
||||
\ get(
|
||||
\ s:default_ale_linter_aliases,
|
||||
\ l:original_filetype,
|
||||
\ l:original_filetype
|
||||
\ )
|
||||
\)
|
||||
|
||||
" Try and get a list of linters to run, using the original file type,
|
||||
" not the aliased filetype. We have some linters to limit by default,
|
||||
" and users may define their own list of linters to run.
|
||||
let l:linter_names = get(
|
||||
\ g:ale_linters,
|
||||
\ l:original_filetype,
|
||||
\ get(
|
||||
\ s:default_ale_linters,
|
||||
\ l:original_filetype,
|
||||
\ 'all'
|
||||
\ )
|
||||
\)
|
||||
|
||||
let l:all_linters = s:LoadLinters(l:filetype)
|
||||
let l:filetype_linters = []
|
||||
|
||||
if type(l:linter_names) == type('') && l:linter_names ==# 'all'
|
||||
let l:filetype_linters = l:all_linters
|
||||
elseif type(l:linter_names) == type([])
|
||||
" Select only the linters we or the user has specified.
|
||||
for l:linter in l:all_linters
|
||||
if index(l:linter_names, l:linter.name) >= 0
|
||||
call add(l:filetype_linters, l:linter)
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
call extend(l:combined_linters, l:filetype_linters)
|
||||
endfor
|
||||
|
||||
return l:combined_linters
|
||||
endfunction
|
||||
|
@ -130,7 +130,6 @@ g:ale_linter_aliases *g:ale_linter_aliases*
|
||||
following values: >
|
||||
|
||||
{
|
||||
\ 'javscript.jsx': 'javascript',
|
||||
\ 'zsh': 'sh',
|
||||
\ 'csh': 'sh',
|
||||
\}
|
||||
@ -616,6 +615,14 @@ ale#linter#Get(filetype) *ale#linter#Get()*
|
||||
Return all of linters configured for a given filetype as a |List| of
|
||||
|Dictionary| values in the format specified by |ale#linter#Define()|.
|
||||
|
||||
Filetypes may be dot-seperated to invoke linters for multiple filetypes:
|
||||
for instance, the filetype `javascript.jsx` will return linters for both the
|
||||
`javascript` and `jsx` filetype.
|
||||
|
||||
Aliases may be defined in as described in |g:ale_linter_aliases|. Aliases
|
||||
are applied after dot-seperated filetypes are broken up into their
|
||||
components.
|
||||
|
||||
|
||||
ale#statusline#Status() *ale#statusline#Status()*
|
||||
Return a formatted string that can be added to the statusline.
|
||||
|
@ -1,19 +1,43 @@
|
||||
Before:
|
||||
let g:testlinter1 = {'name': 'testlinter1', 'executable': 'testlinter1', 'command': 'testlinter1', 'callback': 'testCB1', 'output_stream': 'stdout'}
|
||||
let g:testlinter2 = {'name': 'testlinter2', 'executable': 'testlinter2', 'command': 'testlinter2', 'callback': 'testCB2', 'output_stream': 'stdout'}
|
||||
|
||||
call ale#linter#Reset()
|
||||
let g:ale_linters = {}
|
||||
let g:ale_linter_aliases = {}
|
||||
|
||||
After:
|
||||
let g:ale_linters = {}
|
||||
let g:ale_linter_aliases = {}
|
||||
Execute (Define a linter):
|
||||
call ale#linter#Define('testft', g:testlinter1)
|
||||
Then (Get the defined linter):
|
||||
AssertEqual [g:testlinter1], ale#linter#Get('testft')
|
||||
|
||||
Execute (Defaults should be correct):
|
||||
AssertEqual [{'output_stream': 'stdout', 'name': 'eslint', 'executable': 'eslint', 'command': 'eslint -f unix --stdin --stdin-filename %s', 'callback': 'ale_linters#javascript#eslint#Handle'}, {'output_stream': 'stdout', 'name': 'jscs', 'executable': 'jscs', 'command': 'jscs -r unix -n -', 'callback': 'ale#handlers#HandleUnixFormatAsError'}, {'output_stream': 'stdout', 'name': 'jshint', 'executable': 'jshint', 'command_callback': 'ale_linters#javascript#jshint#GetCommand', 'callback': 'ale#handlers#HandleUnixFormatAsError'}], ale#linter#Get('javascript')
|
||||
Execute (Define a couple linters, filtering one.):
|
||||
call ale#linter#Define('testft', g:testlinter1)
|
||||
call ale#linter#Define('testft', g:testlinter2)
|
||||
let g:ale_linters = {'testft': ['testlinter1']}
|
||||
Then (Only the configured linter should be returned):
|
||||
AssertEqual [g:testlinter1], ale#linter#Get('testft')
|
||||
|
||||
Execute (You should be able to select only a few linters):
|
||||
let g:ale_linters = {'javascript': ['eslint']}
|
||||
AssertEqual [{'output_stream': 'stdout', 'name': 'eslint', 'executable': 'eslint', 'command': 'eslint -f unix --stdin --stdin-filename %s', 'callback': 'ale_linters#javascript#eslint#Handle'}], ale#linter#Get('javascript')
|
||||
Execute (Define a linter for a filetype, and create a filetype alias):
|
||||
call ale#linter#Define('testft1', g:testlinter1)
|
||||
let g:ale_linter_aliases = {'testft2': 'testft1'}
|
||||
Then (Linters should be transparently aliased):
|
||||
AssertEqual [g:testlinter1], ale#linter#Get('testft2')
|
||||
|
||||
Execute (You should be able to alias filetypes and select different linters):
|
||||
let g:ale_linter_aliases = {'foobar': 'javascript'}
|
||||
let g:ale_linters = {'javascript': ['eslint'], 'foobar': ['jshint']}
|
||||
AssertEqual [{'output_stream': 'stdout', 'name': 'jshint', 'executable': 'jshint', 'command_callback': 'ale_linters#javascript#jshint#GetCommand', 'callback': 'ale#handlers#HandleUnixFormatAsError'}], ale#linter#Get('foobar')
|
||||
Execute (Define multiple linters, with filters and aliases):
|
||||
call ale#linter#Define('testft1', g:testlinter1)
|
||||
call ale#linter#Define('testft1', g:testlinter2)
|
||||
let g:ale_linters = {'testft1': ['testlinter1'], 'testft2': ['testlinter2']}
|
||||
let g:ale_linter_aliases = {'testft2': 'testft1'}
|
||||
Then (Linters should be transparently filtered and aliased):
|
||||
AssertEqual [g:testlinter1], ale#linter#Get('testft1')
|
||||
AssertEqual [g:testlinter2], ale#linter#Get('testft2')
|
||||
|
||||
Execute (Define multiple linters for different filetypes):
|
||||
call ale#linter#Define('testft1', g:testlinter1)
|
||||
call ale#linter#Define('testft2', g:testlinter2)
|
||||
Then (Linters for dot-seperated filetypes should be properly handled):
|
||||
AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1.testft2')
|
||||
|
||||
Execute (Try to load a linter from disk):
|
||||
AssertEqual [{'name': 'testlinter', 'output_stream': 'stdout', 'executable': 'testlinter', 'command': 'testlinter', 'callback': 'testCB'}], ale#linter#Get('testft')
|
||||
|
@ -52,7 +52,7 @@ Execute (Given some warnings):
|
||||
Then (Statusline is formatted to the users preference):
|
||||
AssertEqual '3W', ale#statusline#Status()
|
||||
|
||||
Execute (Given some warnings, and errors.):
|
||||
Execute (Given some warnings, and errors):
|
||||
call ale#statusline#Update(bufnr('%'), [{'type': 'E'}, {'type': 'W'}, {'type': 'W'}])
|
||||
|
||||
Then (Statusline is formatted to the users preference):
|
||||
|
Loading…
Reference in New Issue
Block a user