Added missing commits

pull/507/head
Amir Salihefendic 4 years ago
parent f50b2142bc
commit bf7b5985f1
  1. 9
      sources_non_forked/ale/ale_linters/asciidoc/textlint.vim
  2. 57
      sources_non_forked/ale/ale_linters/crystal/ameba.vim
  3. 26
      sources_non_forked/ale/ale_linters/cypher/cypher_lint.vim
  4. 68
      sources_non_forked/ale/ale_linters/python/bandit.vim
  5. 92
      sources_non_forked/ale/ale_linters/python/pylama.vim
  6. 33
      sources_non_forked/ale/ale_linters/racket/raco.vim
  7. 9
      sources_non_forked/ale/ale_linters/rst/textlint.vim
  8. 21
      sources_non_forked/ale/ale_linters/sugarss/stylelint.vim
  9. 9
      sources_non_forked/ale/ale_linters/tex/textlint.vim
  10. 36
      sources_non_forked/ale/ale_linters/verilog/vlog.vim
  11. 35
      sources_non_forked/ale/ale_linters/verilog/xvlog.vim
  12. 37
      sources_non_forked/ale/ale_linters/vhdl/ghdl.vim
  13. 38
      sources_non_forked/ale/ale_linters/vhdl/vcom.vim
  14. 37
      sources_non_forked/ale/ale_linters/vhdl/xvhdl.vim
  15. 43
      sources_non_forked/ale/autoload/ale/args.vim
  16. 18
      sources_non_forked/ale/autoload/ale/fixers/cmakeformat.vim
  17. 9
      sources_non_forked/ale/autoload/ale/fixers/ktlint.vim
  18. 15
      sources_non_forked/ale/autoload/ale/fixers/textlint.vim
  19. 45
      sources_non_forked/ale/autoload/ale/handlers/ktlint.vim
  20. 8
      sources_non_forked/ale/autoload/ale/handlers/tsserver.vim
  21. 31
      sources_non_forked/ale/doc/ale-sugarss.txt
  22. 464
      sources_non_forked/ale/doc/ale-supported-languages-and-tools.txt
  23. 92
      sources_non_forked/ale/doc/ale-vhdl.txt
  24. 473
      sources_non_forked/ale/supported-tools.md
  25. 30
      sources_non_forked/ctrlp.vim/LICENSE
  26. 84
      sources_non_forked/vim-gitgutter/autoload/gitgutter/fold.vim
  27. 93
      sources_non_forked/vim-go/autoload/go/auto.vim
  28. 16
      sources_non_forked/vim-snippets/snippets/phoenix.snippets

@ -0,0 +1,9 @@
" Author: TANIGUCHI Masaya <ta2gch@gmail.com>
" Description: textlint for AsciiDoc files
call ale#linter#Define('asciidoc', {
\ 'name': 'textlint',
\ 'executable': function('ale#handlers#textlint#GetExecutable'),
\ 'command': function('ale#handlers#textlint#GetCommand'),
\ 'callback': 'ale#handlers#textlint#HandleTextlintOutput',
\})

@ -0,0 +1,57 @@
" Author: Harrison Bachrach - https://github.com/HarrisonB
" Description: Ameba, a linter for crystal files
call ale#Set('crystal_ameba_executable', 'bin/ameba')
function! ale_linters#crystal#ameba#GetCommand(buffer) abort
let l:executable = ale#Var(a:buffer, 'crystal_ameba_executable')
return ale#Escape(l:executable)
\ . ' --format json '
\ . ale#Escape(expand('#' . a:buffer . ':p'))
endfunction
" Handle output from ameba
function! ale_linters#crystal#ameba#HandleAmebaOutput(buffer, lines) abort
if len(a:lines) == 0
return []
endif
let l:errors = ale#util#FuzzyJSONDecode(a:lines[0], {})
if !has_key(l:errors, 'summary')
\|| l:errors['summary']['issues_count'] == 0
\|| empty(l:errors['sources'])
return []
endif
let l:output = []
for l:error in l:errors['sources'][0]['issues']
let l:start_col = str2nr(l:error['location']['column'])
let l:end_col = str2nr(l:error['end_location']['column'])
if !l:end_col
let l:end_col = l:start_col + 1
endif
call add(l:output, {
\ 'lnum': str2nr(l:error['location']['line']),
\ 'col': l:start_col,
\ 'end_col': l:end_col,
\ 'code': l:error['rule_name'],
\ 'text': l:error['message'],
\ 'type': 'W',
\})
endfor
return l:output
endfunction
call ale#linter#Define('crystal', {
\ 'name': 'ameba',
\ 'executable': {b -> ale#Var(b, 'crystal_ameba_executable')},
\ 'command': function('ale_linters#crystal#ameba#GetCommand'),
\ 'callback': 'ale_linters#crystal#ameba#HandleAmebaOutput',
\ 'lint_file': 1,
\})

@ -0,0 +1,26 @@
" Author: Francisco Lopes <francisco@oblita.com>
" Description: Linting for Neo4j's Cypher
function! ale_linters#cypher#cypher_lint#Handle(buffer, lines) abort
let l:pattern = '\v^([a-zA-Z]?:?[^:]+):(\d+):(\d+): (.*)$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[2] + 0,
\ 'col': l:match[3] + 0,
\ 'text': l:match[4],
\ 'type': 'E',
\})
endfor
return l:output
endfunction
call ale#linter#Define('cypher', {
\ 'name': 'cypher_lint',
\ 'executable': 'cypher-lint',
\ 'command': 'cypher-lint',
\ 'output_stream': 'stderr',
\ 'callback': 'ale_linters#cypher#cypher_lint#Handle',
\})

@ -0,0 +1,68 @@
" Author: Martino Pilia <martino.pilia@gmail.com>
" Description: bandit linting for python files
call ale#Set('python_bandit_executable', 'bandit')
call ale#Set('python_bandit_options', '')
call ale#Set('python_bandit_use_config', 1)
call ale#Set('python_bandit_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('python_bandit_auto_pipenv', 0)
function! ale_linters#python#bandit#GetExecutable(buffer) abort
if (
\ ale#Var(a:buffer, 'python_auto_pipenv')
\ || ale#Var(a:buffer, 'python_bandit_auto_pipenv')
\) && ale#python#PipenvPresent(a:buffer)
return 'pipenv'
endif
return ale#python#FindExecutable(a:buffer, 'python_bandit', ['bandit'])
endfunction
function! ale_linters#python#bandit#GetCommand(buffer) abort
let l:executable = ale_linters#python#bandit#GetExecutable(a:buffer)
let l:flags = ' --format custom'
\ . ' --msg-template "{line}:{test_id}:{severity}:{msg}" '
if ale#Var(a:buffer, 'python_bandit_use_config')
let l:config_path = ale#path#FindNearestFile(a:buffer, '.bandit')
if !empty(l:config_path)
let l:flags = ' --ini ' . ale#Escape(l:config_path) . l:flags
endif
endif
let l:exec_args = l:executable =~? 'pipenv$'
\ ? ' run bandit'
\ : ''
return ale#Escape(l:executable) . l:exec_args
\ . l:flags
\ . ale#Pad(ale#Var(a:buffer, 'python_bandit_options'))
\ . ' -'
endfunction
function! ale_linters#python#bandit#Handle(buffer, lines) abort
" Custom format defined in GetCommand via --msg-template
let l:pattern = '\v^([0-9]+):(B[0-9]+):([A-Z]+):(.*)$'
let l:severity = {'LOW': 'I', 'MEDIUM': 'W', 'HIGH': 'E'}
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'bufnr': a:buffer,
\ 'lnum': str2nr(l:match[1]),
\ 'code': l:match[2],
\ 'type': l:severity[l:match[3]],
\ 'text': l:match[4],
\})
endfor
return l:output
endfunction
call ale#linter#Define('python', {
\ 'name': 'bandit',
\ 'executable': function('ale_linters#python#bandit#GetExecutable'),
\ 'command': function('ale_linters#python#bandit#GetCommand'),
\ 'callback': 'ale_linters#python#bandit#Handle',
\})

@ -0,0 +1,92 @@
" Author: Kevin Locke <kevin@kevinlocke.name>
" Description: pylama for python files
call ale#Set('python_pylama_executable', 'pylama')
call ale#Set('python_pylama_options', '')
call ale#Set('python_pylama_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('python_pylama_auto_pipenv', 0)
call ale#Set('python_pylama_change_directory', 1)
function! ale_linters#python#pylama#GetExecutable(buffer) abort
if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'python_pylama_auto_pipenv'))
\ && ale#python#PipenvPresent(a:buffer)
return 'pipenv'
endif
return ale#python#FindExecutable(a:buffer, 'python_pylama', ['pylama'])
endfunction
function! ale_linters#python#pylama#GetCommand(buffer) abort
let l:cd_string = ''
if ale#Var(a:buffer, 'python_pylama_change_directory')
" Pylama loads its configuration from the current directory only, and
" applies file masks using paths relative to the current directory.
" Run from project root, if found, otherwise buffer dir.
let l:project_root = ale#python#FindProjectRoot(a:buffer)
let l:cd_string = l:project_root isnot# ''
\ ? ale#path#CdString(l:project_root)
\ : ale#path#BufferCdString(a:buffer)
endif
let l:executable = ale_linters#python#pylama#GetExecutable(a:buffer)
let l:exec_args = l:executable =~? 'pipenv$'
\ ? ' run pylama'
\ : ''
" Note: Using %t to lint changes would be preferable, but many pylama
" checks use surrounding paths (e.g. C0103 module name, E0402 relative
" import beyond top, etc.). Neither is ideal.
return l:cd_string
\ . ale#Escape(l:executable) . l:exec_args
\ . ale#Pad(ale#Var(a:buffer, 'python_pylama_options'))
\ . ' %s'
endfunction
function! ale_linters#python#pylama#Handle(buffer, lines) abort
if empty(a:lines)
return []
endif
let l:output = ale#python#HandleTraceback(a:lines, 1)
let l:pattern = '\v^.{-}:([0-9]+):([0-9]+): +%(([A-Z][0-9]+):? +)?(.*)$'
" First letter of error code is a pylint-compatible message type
" http://pylint.pycqa.org/en/latest/user_guide/output.html#source-code-analysis-section
" D is for Documentation (pydocstyle)
let l:pylint_type_to_ale_type = {
\ 'I': 'I',
\ 'R': 'W',
\ 'C': 'W',
\ 'W': 'W',
\ 'E': 'E',
\ 'F': 'E',
\ 'D': 'W',
\}
let l:pylint_type_to_ale_sub_type = {
\ 'R': 'style',
\ 'C': 'style',
\ 'D': 'style',
\}
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': str2nr(l:match[1]),
\ 'col': str2nr(l:match[2]),
\ 'code': l:match[3],
\ 'type': get(l:pylint_type_to_ale_type, l:match[3][0], 'W'),
\ 'sub_type': get(l:pylint_type_to_ale_sub_type, l:match[3][0], ''),
\ 'text': l:match[4],
\})
endfor
return l:output
endfunction
call ale#linter#Define('python', {
\ 'name': 'pylama',
\ 'executable': function('ale_linters#python#pylama#GetExecutable'),
\ 'command': function('ale_linters#python#pylama#GetCommand'),
\ 'callback': 'ale_linters#python#pylama#Handle',
\ 'lint_file': 1,
\})

@ -0,0 +1,33 @@
" Author: aqui18 <https://github.com/aqui18>
" Description: This file adds support for checking Racket code with raco.
" This is the same form of syntax-checking used by DrRacket as well. The
" downside is that it will only catch the first error, but none of the
" subsequent ones. This is due to how evaluation in Racket works.
function! ale_linters#racket#raco#Handle(buffer, lines) abort
" Matches patterns
" <file>:<line>:<column> <message>
" eg:
" info.rkt:4:0: infotab-module: not a well-formed definition
let l:pattern = '^\(\s\)\@!\(.\+\):\(\d\+\):\(\d\+\): \(.\+\)$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[3] + 0,
\ 'col': l:match[4] + 0,
\ 'type': 'E',
\ 'text': l:match[5],
\})
endfor
return l:output
endfunction
call ale#linter#Define('racket', {
\ 'name': 'raco',
\ 'executable': 'raco',
\ 'output_stream': 'stderr',
\ 'command': 'raco expand %s',
\ 'callback': 'ale_linters#racket#raco#Handle',
\})

@ -0,0 +1,9 @@
" Author: hokorobi <hokorobi.hokorobi@gmail.com>
" Description: textlint, a proofreading tool (https://textlint.github.io/)
call ale#linter#Define('rst', {
\ 'name': 'textlint',
\ 'executable': function('ale#handlers#textlint#GetExecutable'),
\ 'command': function('ale#handlers#textlint#GetCommand'),
\ 'callback': 'ale#handlers#textlint#HandleTextlintOutput',
\})

@ -0,0 +1,21 @@
" Author: toastal <toastal@protonmail.com>
" Description: `stylelint` linter for SugarSS files
call ale#Set('sugarss_stylelint_executable', 'stylelint')
call ale#Set('sugarss_stylelint_options', '')
call ale#Set('sugarss_stylelint_use_global', get(g:, 'ale_use_global_executables', 0))
function! ale_linters#sugarss#stylelint#GetCommand(buffer) abort
return '%e ' . ale#Pad(ale#Var(a:buffer, 'sugarss_stylelint_options'))
\ . ' --syntax=sugarss'
\ . ' --stdin-filename %s'
endfunction
call ale#linter#Define('sugarss', {
\ 'name': 'stylelint',
\ 'executable': {b -> ale#node#FindExecutable(b, 'sugarss_stylelint', [
\ 'node_modules/.bin/stylelint',
\ ])},
\ 'command': function('ale_linters#sugarss#stylelint#GetCommand'),
\ 'callback': 'ale#handlers#css#HandleStyleLintFormat',
\})

@ -0,0 +1,9 @@
" Author: TANIGUCHI Masaya <ta2gch@gmail.com>
" Description: textlint for LaTeX files
call ale#linter#Define('tex', {
\ 'name': 'textlint',
\ 'executable': function('ale#handlers#textlint#GetExecutable'),
\ 'command': function('ale#handlers#textlint#GetCommand'),
\ 'callback': 'ale#handlers#textlint#HandleTextlintOutput',
\})

@ -0,0 +1,36 @@
" Author: John Gentile <johncgentile17@gmail.com>
" Description: Adds support for Mentor Graphics Questa/ModelSim `vlog` Verilog compiler/checker
call ale#Set('verilog_vlog_executable', 'vlog')
" See `$ vlog -h` for more options
call ale#Set('verilog_vlog_options', '-quiet -lint')
function! ale_linters#verilog#vlog#GetCommand(buffer) abort
return '%e ' . ale#Pad(ale#Var(a:buffer, 'verilog_vlog_options')) . ' %t'
endfunction
function! ale_linters#verilog#vlog#Handle(buffer, lines) abort
"Matches patterns like the following:
"** Warning: add.v(7): (vlog-2623) Undefined variable: C.
"** Error: file.v(1): (vlog-13294) Identifier must be declared with a port mode: C.
let l:pattern = '^**\s\(\w*\):[a-zA-Z0-9\-\.\_\/ ]\+(\(\d\+\)):\s\+\(.*\)'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[2] + 0,
\ 'type': l:match[1] is? 'Error' ? 'E' : 'W',
\ 'text': l:match[3],
\})
endfor
return l:output
endfunction
call ale#linter#Define('verilog', {
\ 'name': 'vlog',
\ 'output_stream': 'stdout',
\ 'executable': {b -> ale#Var(b, 'verilog_vlog_executable')},
\ 'command': function('ale_linters#verilog#vlog#GetCommand'),
\ 'callback': 'ale_linters#verilog#vlog#Handle',
\})

@ -0,0 +1,35 @@
" Author: John Gentile <johncgentile17@gmail.com>
" Description: Adds support for Xilinx Vivado `xvlog` Verilog compiler/checker
call ale#Set('verilog_xvlog_executable', 'xvlog')
call ale#Set('verilog_xvlog_options', '')
function! ale_linters#verilog#xvlog#GetCommand(buffer) abort
return '%e ' . ale#Pad(ale#Var(a:buffer, 'verilog_xvlog_options')) . ' %t'
endfunction
function! ale_linters#verilog#xvlog#Handle(buffer, lines) abort
"Matches patterns like the following:
" ERROR: [VRFC 10-1412] syntax error near output [/path/to/file.v:5]
let l:pattern = '^ERROR:\s\+\(\[.*\)\[.*:\([0-9]\+\)\]'
let l:output = []
" NOTE: `xvlog` only prints 'INFO' and 'ERROR' messages
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[2] + 0,
\ 'type': 'E',
\ 'text': l:match[1],
\})
endfor
return l:output
endfunction
call ale#linter#Define('verilog', {
\ 'name': 'xvlog',
\ 'output_stream': 'stdout',
\ 'executable': {b -> ale#Var(b, 'verilog_xvlog_executable')},
\ 'command': function('ale_linters#verilog#xvlog#GetCommand'),
\ 'callback': 'ale_linters#verilog#xvlog#Handle',
\})

@ -0,0 +1,37 @@
" Author: John Gentile <johncgentile17@gmail.com>
" Description: Adds support for `ghdl` VHDL compiler/checker
call ale#Set('vhdl_ghdl_executable', 'ghdl')
" Compile w/VHDL-2008 support
call ale#Set('vhdl_ghdl_options', '--std=08')
function! ale_linters#vhdl#ghdl#GetCommand(buffer) abort
return '%e -s ' . ale#Pad(ale#Var(a:buffer, 'vhdl_ghdl_options')) . ' %t'
endfunction
function! ale_linters#vhdl#ghdl#Handle(buffer, lines) abort
" Look for 'error' lines like the following:
" dff_en.vhd:41:5:error: 'begin' is expected instead of 'if'
" /path/to/file.vhdl:12:8: no declaration for "i0"
let l:pattern = '^[a-zA-Z0-9\-\.\_\/ ]\+:\(\d\+\):\(\d\+\):\(.*\)'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[1] + 0,
\ 'col' : l:match[2] + 0,
\ 'text': l:match[3],
\ 'type': 'E',
\})
endfor
return l:output
endfunction
call ale#linter#Define('vhdl', {
\ 'name': 'ghdl',
\ 'output_stream': 'stderr',
\ 'executable': {b -> ale#Var(b, 'vhdl_ghdl_executable')},
\ 'command': function('ale_linters#vhdl#ghdl#GetCommand'),
\ 'callback': 'ale_linters#vhdl#ghdl#Handle',
\})

@ -0,0 +1,38 @@
" Author: John Gentile <johncgentile17@gmail.com>
" Description: Adds support for Mentor Graphics Questa/ModelSim `vcom` VHDL compiler/checker
call ale#Set('vhdl_vcom_executable', 'vcom')
" Use VHDL-2008. See `$ vcom -h` for more options
call ale#Set('vhdl_vcom_options', '-2008 -quiet -lint')
function! ale_linters#vhdl#vcom#GetCommand(buffer) abort
return '%e ' . ale#Pad(ale#Var(a:buffer, 'vhdl_vcom_options')) . ' %t'
endfunction
function! ale_linters#vhdl#vcom#Handle(buffer, lines) abort
"Matches patterns like the following:
"** Warning: ../path/to/file.vhd(218): (vcom-1236) Shared variables must be of a protected type.
"** Error: tb_file.vhd(73): (vcom-1136) Unknown identifier "aresetn".
"** Error: tb_file.vhd(73): Bad resolution function (STD_LOGIC) for type (error).
"** Error: tb_file.vhd(73): near ":": (vcom-1576) expecting ';' or ')'.
let l:pattern = '^**\s\(\w*\):[a-zA-Z0-9\-\.\_\/ ]\+(\(\d\+\)):\s\+\(.*\)'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[2] + 0,
\ 'type': l:match[1] is? 'Error' ? 'E' : 'W',
\ 'text': l:match[3],
\})
endfor
return l:output
endfunction
call ale#linter#Define('vhdl', {
\ 'name': 'vcom',
\ 'output_stream': 'stdout',
\ 'executable': {b -> ale#Var(b, 'vhdl_vcom_executable')},
\ 'command': function('ale_linters#vhdl#vcom#GetCommand'),
\ 'callback': 'ale_linters#vhdl#vcom#Handle',
\})

@ -0,0 +1,37 @@
" Author: John Gentile <johncgentile17@gmail.com>
" Description: Adds support for Xilinx Vivado `xvhdl` VHDL compiler/checker
call ale#Set('vhdl_xvhdl_executable', 'xvhdl')
" Use VHDL-2008. See `$ xvhdl -h` for more options
call ale#Set('vhdl_xvhdl_options', '--2008')
function! ale_linters#vhdl#xvhdl#GetCommand(buffer) abort
return '%e ' . ale#Pad(ale#Var(a:buffer, 'vhdl_xvhdl_options')) . ' %t'
endfunction
function! ale_linters#vhdl#xvhdl#Handle(buffer, lines) abort
"Matches patterns like the following:
" ERROR: [VRFC 10-91] aresetn is not declared [/path/to/file.vhd:17]
" ERROR: [VRFC 10-91] m_axis_tx_tdata is not declared [/home/user/tx_data.vhd:128]
let l:pattern = '^ERROR:\s\+\(\[.*\)\[.*:\([0-9]\+\)\]'
let l:output = []
" NOTE: `xvhdl` only prints 'INFO' and 'ERROR' messages
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[2] + 0,
\ 'type': 'E',
\ 'text': l:match[1],
\})
endfor
return l:output
endfunction
call ale#linter#Define('vhdl', {
\ 'name': 'xvhdl',
\ 'output_stream': 'stdout',
\ 'executable': {b -> ale#Var(b, 'vhdl_xvhdl_executable')},
\ 'command': function('ale_linters#vhdl#xvhdl#GetCommand'),
\ 'callback': 'ale_linters#vhdl#xvhdl#Handle',
\})

@ -0,0 +1,43 @@
" Author: w0rp <devw0rp@gmail.com>
" Description: This module implements a function for parsing arguments for
" commands.
" Given a list of valid arguments like ['foo', 'bar'] and a string to parse,
" parse the arguments from the string and return [parsed_args, remainder].
"
" Arguments must be prefixed in the string with a single minus (-), and a
" double minus (--) denotes the end of arguments.
function! ale#args#Parse(arg_list, string) abort
let l:parsed = {}
let l:end_of_args = 0
let l:word_list = split(a:string, ' ')
let l:index = 0
while l:index < len(l:word_list)
let l:word = l:word_list[l:index]
if l:word[:0] is# '-'
let l:index += 1
if l:word is# '--'
break
endif
let l:arg = l:word[1:]
if index(a:arg_list, l:arg) >= 0
let l:parsed[l:arg] = ''
else
throw 'Invalid argument: ' . l:word
endif
elseif l:word is# ''
let l:index += 1
else
break
endif
endwhile
let l:new_string = join(l:word_list[l:index :], ' ')
return [l:parsed, l:new_string]
endfunction

@ -0,0 +1,18 @@
" Author: Attila Maczak <attila@maczak.hu>
" Description: Integration of cmakeformat with ALE.
call ale#Set('cmake_cmakeformat_executable', 'cmake-format')
call ale#Set('cmake_cmakeformat_options', '')
function! ale#fixers#cmakeformat#Fix(buffer) abort
let l:executable = ale#Var(a:buffer, 'cmake_cmakeformat_executable')
let l:options = ale#Var(a:buffer, 'cmake_cmakeformat_options')
return {
\ 'command': ale#Escape(l:executable)
\ . ' -i '
\ . (empty(l:options) ? '' : ' ' . l:options)
\ . ' %t',
\ 'read_temporary_file': 1,
\}
endfunction

@ -0,0 +1,9 @@
" Author: Michael Phillips <michaeljoelphillips@gmail.com>
" Description: Fix Kotlin files with ktlint.
function! ale#fixers#ktlint#Fix(buffer) abort
return {
\ 'command': ale#handlers#ktlint#GetCommand(a:buffer) . ' --format',
\ 'read_temporary_file': 1,
\}
endfunction

@ -0,0 +1,15 @@
" Author: TANIGUCHI Masaya <ta2gch@gmail.com>
" Description: Integration of textlint with ALE.
function! ale#fixers#textlint#Fix(buffer) abort
let l:executable = ale#handlers#textlint#GetExecutable(a:buffer)
let l:options = ale#Var(a:buffer, 'textlint_options')
return {
\ 'command': ale#Escape(l:executable)
\ . ' --fix'
\ . (empty(l:options) ? '' : ' ' . l:options)
\ . ' %t',
\ 'read_temporary_file': 1,
\}
endfunction

@ -0,0 +1,45 @@
" Author: Michael Phillips <michaeljoelphillips@gmail.com>
" Description: Handler functions for ktlint.
call ale#Set('kotlin_ktlint_executable', 'ktlint')
call ale#Set('kotlin_ktlint_rulesets', [])
call ale#Set('kotlin_ktlint_options', '')
function! ale#handlers#ktlint#GetCommand(buffer) abort
let l:executable = ale#Var(a:buffer, 'kotlin_ktlint_executable')
let l:options = ale#Var(a:buffer, 'kotlin_ktlint_options')
let l:rulesets = ale#handlers#ktlint#GetRulesets(a:buffer)
return ale#Escape(l:executable)
\ . (empty(l:options) ? '' : ' ' . l:options)
\ . (empty(l:rulesets) ? '' : ' ' . l:rulesets)
\ . ' %t'
endfunction
function! ale#handlers#ktlint#GetRulesets(buffer) abort
let l:rulesets = map(ale#Var(a:buffer, 'kotlin_ktlint_rulesets'), '''--ruleset '' . v:val')
return join(l:rulesets, ' ')
endfunction
function! ale#handlers#ktlint#Handle(buffer, lines) abort
let l:message_pattern = '^\(.*\):\([0-9]\+\):\([0-9]\+\):\s\+\(.*\)'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:message_pattern)
let l:line = l:match[2] + 0
let l:column = l:match[3] + 0
let l:text = l:match[4]
let l:type = l:text =~? 'not a valid kotlin file' ? 'E' : 'W'
call add(l:output, {
\ 'lnum': l:line,
\ 'col': l:column,
\ 'text': l:text,
\ 'type': l:type
\})
endfor
return l:output
endfunction

@ -0,0 +1,8 @@
" Author: Derek Sifford <dereksifford@gmail.com>
" Description: Handlers for tsserver
function! ale#handlers#tsserver#GetProjectRoot(buffer) abort
let l:tsconfig_file = ale#path#FindNearestFile(a:buffer, 'tsconfig.json')
return !empty(l:tsconfig_file) ? fnamemodify(l:tsconfig_file, ':h') : ''
endfunction

@ -0,0 +1,31 @@
===============================================================================
ALE SugarSS Integration *ale-sugarss-options*
===============================================================================
stylelint *ale-sugarss-stylelint*
g:ale_sugarss_stylelint_executable *g:ale_sugarss_stylelint_executable*
*b:ale_sugarss_stylelint_executable*
Type: |String|
Default: `'stylelint'`
See |ale-integrations-local-executables|
g:ale_sugarss_stylelint_options *g:ale_sugarss_stylelint_options*
*b:ale_sugarss_stylelint_options*
Type: |String|
Default: `''`
This variable can be set to pass additional options to stylelint.
g:ale_sugarss_stylelint_use_global *g:ale_sugarss_stylelint_use_global*
*b:ale_sugarss_stylelint_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:

@ -0,0 +1,464 @@
*ale-supported-languages-and-tools.txt* For Vim version 8.0.
*ale-supported-list*
ALE Supported Languages and Tools
===============================================================================
The following languages and tools are supported by ALE.
Notes:
`^` No linters for text or Vim help filetypes are enabled by default.
`!!` These linters check only files on disk. See |ale-lint-file-linters|
* Ada
* `gcc`
* Ansible
* `ansible-lint`
* API Blueprint
* `drafter`
* AsciiDoc
* `alex`!!
* `proselint`
* `redpen`
* `textlint`
* `vale`
* `write-good`
* ASM
* `gcc`
* Awk
* `gawk`
* Bash
* `language-server`
* `shell` (-n flag)
* `shellcheck`
* `shfmt`
* BibTeX
* `bibclean`
* Bourne Shell
* `shell` (-n flag)
* `shellcheck`
* `shfmt`
* C
* `ccls`
* `clang`
* `clangd`
* `clang-format`
* `clangtidy`!!
* `cppcheck`
* `cpplint`!!
* `cquery`
* `flawfinder`
* `gcc`
* `uncrustify`
* C#
* `mcs`
* `mcsc`!!
* `uncrustify`
* C++ (filetype cpp)
* `ccls`
* `clang`
* `clangcheck`!!
* `clangd`
* `clang-format`
* `clangtidy`!!
* `clazy`!!
* `cppcheck`
* `cpplint`!!
* `cquery`
* `flawfinder`
* `gcc`
* `uncrustify`
* Chef
* `foodcritic`
* Clojure
* `joker`
* CloudFormation
* `cfn-python-lint`
* CMake
* `cmake-format`
* `cmakelint`
* CoffeeScript
* `coffee`
* `coffeelint`
* Crystal
* `ameba`!!
* `crystal`!!
* CSS
* `csslint`
* `prettier`
* `stylelint`
* Cucumber
* `cucumber`
* CUDA
* `nvcc`!!
* Cypher
* `cypher-lint`
* Cython (pyrex filetype)
* `cython`
* D
* `dls`
* `dmd`
* `uncrustify`
* Dafny
* `dafny`!!
* Dart
* `dartanalyzer`!!
* `dartfmt`!!
* `language_server`
* Dockerfile
* `dockerfile_lint`
* `hadolint`
* Elixir
* `credo`
* `dialyxir`
* `dogma`
* `elixir-ls`
* `mix`!!
* Elm
* `elm-format`
* `elm-make`
* Erb
* `erb`
* `erubi`
* `erubis`
* `ruumba`
* Erlang
* `erlc`
* `SyntaxErl`
* Fish
* `fish` (-n flag)
* Fortran
* `gcc`
* `language_server`
* Fountain
* `proselint`
* FusionScript
* `fusion-lint`
* Git Commit Messages
* `gitlint`
* GLSL
* glslang
* `glslls`
* Go
* `bingo`
* `go build`!!
* `gofmt`
* `goimports`
* `golangci-lint`!!
* `golangserver`
* `golint`
* `gometalinter`!!
* `go mod`!!
* `gosimple`!!
* `gotype`!!
* `go vet`!!
* `staticcheck`!!
* GraphQL
* `eslint`
* `gqlint`
* `prettier`
* Hack
* `hack`
* `hackfmt`
* `hhast`
* Haml
* `haml-lint`
* Handlebars
* `ember-template-lint`
* Haskell
* `brittany`
* `cabal-ghc`
* `ghc`
* `ghc-mod`
* `hdevtools`
* `hfmt`
* `hie`
* `hlint`
* `stack-build`!!
* `stack-ghc`
* `stylish-haskell`
* HCL
* `terraform-fmt`
* HTML
* `alex`!!
* `HTMLHint`
* `prettier`
* `proselint`
* `tidy`
* `write-good`
* Idris
* `idris`
* ISPC
* `ispc`!!
* Java
* `checkstyle`
* `google-java-format`
* `javac`
* `javalsp`
* `PMD`
* `uncrustify`
* JavaScript
* `eslint`
* `flow`
* `jscs`
* `jshint`
* `prettier`
* `prettier-eslint`
* `prettier-standard`
* `standard`
* `tsserver`
* `xo`
* JSON
* `fixjson`
* `jq`
* `jsonlint`
* `prettier`
* Julia
* `languageserver`
* Kotlin
* `kotlinc`!!
* `ktlint`!!
* `languageserver`
* LaTeX (tex)
* `alex`!!
* `chktex`
* `lacheck`
* `proselint`
* `redpen`
* `textlint`
* `vale`
* `write-good`
* Less
* `lessc`
* `prettier`
* `stylelint`
* LLVM
* `llc`
* Lua
* `luac`
* `luacheck`
* Mail
* `alex`!!
* `proselint`
* `vale`
* Make
* `checkmake`
* Markdown
* `alex`!!
* `markdownlint`!!
* `mdl`
* `prettier`
* `proselint`
* `redpen`
* `remark-lint`
* `textlint`
* `vale`
* `write-good`
* MATLAB
* `mlint`
* Mercury
* `mmc`!!
* NASM
* `nasm`!!
* Nim
* `nim check`!!
* nix
* `nix-instantiate`
* nroff
* `alex`!!
* `proselint`
* `write-good`
* Objective-C
* `ccls`
* `clang`
* `clangd`
* `uncrustify`
* Objective-C++
* `clang`
* `clangd`
* `uncrustify`
* OCaml
* `merlin` (see |ale-ocaml-merlin|)
* `ocamlformat`
* `ols`
* Pawn
* `uncrustify`
* Perl
* `perl -c`
* `perl-critic`
* `perltidy`
* Perl6
* `perl6 -c`
* PHP
* `langserver`
* `phan`
* `phpcbf`
* `phpcs`
* `php-cs-fixer`
* `php -l`
* `phpmd`
* `phpstan`
* `psalm`!!
* PO
* `alex`!!
* `msgfmt`
* `proselint`
* `write-good`
* Pod
* `alex`!!
* `proselint`
* `write-good`
* Pony
* `ponyc`
* Prolog
* `swipl`
* proto
* `protoc-gen-lint`
* Pug
* `pug-lint`
* Puppet
* `languageserver`
* `puppet`
* `puppet-lint`
* Python
* `autopep8`
* `bandit`
* `black`
* `flake8`
* `isort`
* `mypy`
* `prospector`
* `pycodestyle`
* `pydocstyle`
* `pylama`!!
* `pylint`!!
* `pyls`
* `pyre`
* `vulture`!!
* `yapf`
* QML
* `qmlfmt`
* `qmllint`
* R
* `lintr`
* Racket
* `raco`
* ReasonML
* `merlin`
* `ols`
* `refmt`
* reStructuredText
* `alex`!!
* `proselint`
* `redpen`
* `rstcheck`
* `textlint`
* `vale`
* `write-good`
* Re:VIEW
* `redpen`
* RPM spec
* `rpmlint`
* Ruby
* `brakeman`
* `rails_best_practices`!!
* `reek`
* `rubocop`
* `ruby`
* `rufo`
* `solargraph`
* `standardrb`
* Rust
* `cargo`!!
* `rls`
* `rustc` (see |ale-integration-rust|)
* `rustfmt`
* Sass
* `sass-lint`
* `stylelint`
* Scala
* `fsc`
* `sbtserver`
* `scalac`
* `scalafmt`
* `scalastyle`
* SCSS
* `prettier`
* `sass-lint`
* `scss-lint`
* `stylelint`
* Slim
* `slim-lint`
* SML
* `smlnj`
* Solidity
* `solhint`
* `solium`
* SQL
* `sqlfmt`
* `sqlint`
* Stylus
* `stylelint`
* SugarSS
* `stylelint`
* Swift
* `swiftformat`
* `swiftlint`
* Tcl
* `nagelfar`!!
* Terraform
* `fmt`
* `tflint`
* Texinfo
* `alex`!!
* `proselint`
* `write-good`
* Text^
* `alex`!!
* `proselint`
* `redpen`
* `textlint`
* `vale`
* `write-good`
* Thrift
* `thrift`
* TypeScript
* `eslint`
* `prettier`
* `tslint`
* `tsserver`
* `typecheck`
* VALA
* `uncrustify`
* Verilog
* `iverilog`
* `verilator`
* `vlog`
* `xvlog`
* VHDL
* `ghdl`
* `vcom`
* `xvhdl`
* Vim
* `vint`
* Vim help^
* `alex`!!
* `proselint`
* `write-good`
* Vue
* `prettier`
* `vls`
* XHTML
* `alex`!!
* `proselint`
* `write-good`
* XML
* `xmllint`
* YAML
* `prettier`
* `swaglint`
* `yamllint`
* YANG
* `yang-lsp`

@ -0,0 +1,92 @@
===============================================================================
ALE VHDL Integration *ale-vhdl-options*
===============================================================================
ALE can use three different linters for VHDL:
iverilog:
Using `iverilog -t null -Wall`
ModelSim/Questa
Using `vcom -2008 -quiet -lint`
Vivado
Using `xvhdl --2008`
Note all linters default to VHDL-2008 support. This, and other options, can be
changed with each linter's respective option variable.
Linters/compilers that utilize a "work" directory for analyzing designs- such
as ModelSim and Vivado- can be passed the location of these directories as
part of their respective option strings listed below. This is useful for
holistic analysis of a file (e.g. a design with components, packages, or other
code defined external to the current file as part of a larger project) or
when wanting to simply pass an alternative location for the auto-generated
work directories (such as '/tmp') so as to not muddle the current directory.
Since these type of linters often use this work directory for holding compiled
design data as part of a single build process, they sometimes cannot handle
the frequent, asynchronous application launches when linting while text is
changing. This can happen in the form of hangs or crashes. To help prevent
this when using these linters, it may help to run linting less frequently; for
example, only when a file is saved.
===============================================================================
ghdl *ale-vhdl-ghdl*
g:ale_vhdl_ghdl_executable *g:ale_vhdl_ghdl_executable*
*b:ale_vhdl_ghdl_executable*
Type: |String|
Default: `'ghdl'`
This variable can be changed to the path to the 'ghdl' executable.
g:ale_vhdl_ghdl_options *g:ale_vhdl_ghdl_options*
*b:ale_vhdl_ghdl_options*
Type: |String|
Default: `'--std=08'`
This variable can be changed to modify the flags/options passed to 'ghdl'.
===============================================================================
vcom *ale-vhdl-vcom*
g:ale_vhdl_vcom_executable *g:ale_vhdl_vcom_executable*
*b:ale_vhdl_vcom_executable*
Type: |String|
Default: `'vcom'`
This variable can be changed to the path to the 'vcom' executable.
g:ale_vhdl_vcom_options *g:ale_vhdl_vcom_options*
*b:ale_vhdl_vcom_options*
Type: |String|
Default: `'-2008 -quiet -lint'`
This variable can be changed to modify the flags/options passed to 'vcom'.
===============================================================================
xvhdl *ale-vhdl-xvhdl*
g:ale_vhdl_xvhdl_executable *g:ale_vhdl_xvhdl_executable*
*b:ale_vhdl_xvhdl_executable*
Type: |String|
Default: `'xvhdl'`
This variable can be changed to the path to the 'xvhdl' executable.
g:ale_vhdl_xvhdl_options *g:ale_vhdl_xvhdl_options*
*b:ale_vhdl_xvhdl_options*
Type: |String|
Default: `'--2008'`
This variable can be changed to modify the flags/options passed to 'xvhdl'.
===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

@ -0,0 +1,473 @@
# ALE Supported Languages and Tools
This plugin supports the following languages and tools. All available
tools will be run in combination, so they can be complementary.
<!--
Keep the table rows sorted alphabetically by the language name,
and the tools in the tools column sorted alphabetically by the tool
name. That seems to be the fairest way to arrange this table.
Remember to also update doc/ale.txt, which has a similar list with different
formatting.
-->
**Legend**
| Key | Definition |
| ------------- | -------------------------------- |
| :floppy_disk: | Only checked when saved to disk |
| :warning: | Disabled by default |
---
* Ada
* [gcc](https://gcc.gnu.org)
* Ansible
* [ansible-lint](https://github.com/willthames/ansible-lint)
* API Blueprint
* [drafter](https://github.com/apiaryio/drafter)
* AsciiDoc
* [alex](https://github.com/wooorm/alex) :floppy_disk:
* [proselint](http://proselint.com/)
* [redpen](http://redpen.cc/)
* [textlint](https://textlint.github.io/)
* [vale](https://github.com/ValeLint/vale)
* [write-good](https://github.com/btford/write-good)
* ASM
* [gcc](https://gcc.gnu.org)
* Awk
* [gawk](https://www.gnu.org/software/gawk/)
* Bash
* [language-server](https://github.com/mads-hartmann/bash-language-server)
* shell [-n flag](https://www.gnu.org/software/bash/manual/bash.html#index-set)
* [shellcheck](https://www.shellcheck.net/)
* [shfmt](https://github.com/mvdan/sh)
* BibTeX
* [bibclean](http://ftp.math.utah.edu/pub/bibclean/)
* Bourne Shell
* shell [-n flag](http://linux.die.net/man/1/sh)
* [shellcheck](https://www.shellcheck.net/)
* [shfmt](https://github.com/mvdan/sh)
* C
* [ccls](https://github.com/MaskRay/ccls)
* [clang](http://clang.llvm.org/)
* [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:
* [cppcheck](http://cppcheck.sourceforge.net)
* [cpplint](https://github.com/google/styleguide/tree/gh-pages/cpplint)
* [cquery](https://github.com/cquery-project/cquery)
* [flawfinder](https://www.dwheeler.com/flawfinder/)
* [gcc](https://gcc.gnu.org/)
* [uncrustify](https://github.com/uncrustify/uncrustify)
* C#
* [mcs](http://www.mono-project.com/docs/about-mono/languages/csharp/) see:`help ale-cs-mcs` for details
* [mcsc](http://www.mono-project.com/docs/about-mono/languages/csharp/) :floppy_disk: see:`help ale-cs-mcsc` for details and configuration
* [uncrustify](https://github.com/uncrustify/uncrustify)
* C++ (filetype cpp)
* [ccls](https://github.com/MaskRay/ccls)
* [clang](http://clang.llvm.org/)
* [clangcheck](http://clang.llvm.org/docs/ClangCheck.html) :floppy_disk:
* [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:
* [clazy](https://github.com/KDE/clazy) :floppy_disk:
* [cppcheck](http://cppcheck.sourceforge.net)
* [cpplint](https://github.com/google/styleguide/tree/gh-pages/cpplint) :floppy_disk:
* [cquery](https://github.com/cquery-project/cquery)
* [flawfinder](https://www.dwheeler.com/flawfinder/)
* [gcc](https://gcc.gnu.org/)
* [uncrustify](https://github.com/uncrustify/uncrustify)
* Chef
* [foodcritic](http://www.foodcritic.io/)
* Clojure
* [joker](https://github.com/candid82/joker)
* CloudFormation
* [cfn-python-lint](https://github.com/awslabs/cfn-python-lint)
* CMake
* [cmake-format](https://github.com/cheshirekow/cmake_format)
* [cmakelint](https://github.com/richq/cmake-lint)
* CoffeeScript
* [coffee](http://coffeescript.org/)
* [coffeelint](https://www.npmjs.com/package/coffeelint)
* Crystal
* [ameba](https://github.com/veelenga/ameba) :floppy_disk:
* [crystal](https://crystal-lang.org/) :floppy_disk:
* CSS
* [csslint](http://csslint.net/)
* [prettier](https://github.com/prettier/prettier)
* [stylelint](https://github.com/stylelint/stylelint)
* Cucumber
* [cucumber](https://cucumber.io/)
* CUDA
* [nvcc](http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html)
* Cypher
* [cypher-lint](https://github.com/cleishm/libcypher-parser)
* Cython (pyrex filetype)
* [cython](http://cython.org/)
* D
* [dls](https://github.com/d-language-server/dls)
* [dmd](https://dlang.org/dmd-linux.html)
* [uncrustify](https://github.com/uncrustify/uncrustify)
* Dafny
* [dafny](https://rise4fun.com/Dafny) :floppy_disk:
* Dart
* [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)
* [language_server](https://github.com/natebosch/dart_language_server)
* Dockerfile
* [dockerfile_lint](https://github.com/projectatomic/dockerfile_lint)
* [hadolint](https://github.com/hadolint/hadolint)
* Elixir
* [credo](https://github.com/rrrene/credo)
* [dialyxir](https://github.com/jeremyjh/dialyxir)
* [dogma](https://github.com/lpil/dogma)
* [elixir-ls](https://github.com/JakeBecker/elixir-ls)
* [mix](https://hexdocs.pm/mix/Mix.html) :warning: :floppy_disk:
* Elm
* [elm-format](https://github.com/avh4/elm-format)
* [elm-make](https://github.com/elm-lang/elm-make)
* Erb
* [erb](https://apidock.com/ruby/ERB)
* [erubi](https://github.com/jeremyevans/erubi)
* [erubis](https://github.com/kwatch/erubis)
* [ruumba](https://github.com/ericqweinstein/ruumba)
* Erlang
* [erlc](http://erlang.org/doc/man/erlc.html)
* [SyntaxErl](https://github.com/ten0s/syntaxerl)
* Fish
* fish [-n flag](https://linux.die.net/man/1/fish)
* Fortran
* [gcc](https://gcc.gnu.org/)
* [language_server](https://github.com/hansec/fortran-language-server)
* Fountain
* [proselint](http://proselint.com/)
* FusionScript
* [fusion-lint](https://github.com/RyanSquared/fusionscript)
* Git Commit Messages
* [gitlint](https://github.com/jorisroovers/gitlint)
* GLSL
* [glslang](https://github.com/KhronosGroup/glslang)
* [glslls](https://github.com/svenstaro/glsl-language-server)
* Go
* [bingo](https://github.com/saibing/bingo) :warning:
* [go build](https://golang.org/cmd/go/) :warning: :floppy_disk:
* [gofmt](https://golang.org/cmd/gofmt/)
* [goimports](https://godoc.org/golang.org/x/tools/cmd/goimports) :warning:
* [golangci-lint](https://github.com/golangci/golangci-lint) :warning: :floppy_disk:
* [golangserver](https://github.com/sourcegraph/go-langserver) :warning:
* [golint](https://godoc.org/github.com/golang/lint)
* [gometalinter](https://github.com/alecthomas/gometalinter) :warning: :floppy_disk:
* [go mod](https://golang.org/cmd/go/) :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:
* [go vet](https://golang.org/cmd/vet/) :floppy_disk:
* [staticcheck](https://github.com/dominikh/go-tools/tree/master/cmd/staticcheck) :warning: :floppy_disk:
* GraphQL
* [eslint](http://eslint.org/)
* [gqlint](https://github.com/happylinks/gqlint)
* [prettier](https://github.com/prettier/prettier)
* Hack
* [hack](http://hacklang.org/)
* [hackfmt](https://github.com/facebook/hhvm/tree/master/hphp/hack/hackfmt)
* [hhast](https://github.com/hhvm/hhast) :warning: (see `:help ale-integration-hack`)
* Haml
* [haml-lint](https://github.com/brigade/haml-lint)
* Handlebars
* [ember-template-lint](https://github.com/rwjblue/ember-template-lint)
* Haskell
* [brittany](https://github.com/lspitzner/brittany)
* [cabal-ghc](https://www.haskell.org/cabal/)
* [ghc](https://www.haskell.org/ghc/)
* [ghc-mod](https://github.com/DanielG/ghc-mod)
* [hdevtools](https://hackage.haskell.org/package/hdevtools)
* [hfmt](https://github.com/danstiner/hfmt)
* [hie](https://github.com/haskell/haskell-ide-engine)
* [hlint](https://hackage.haskell.org/package/hlint)
* [stack-build](https://haskellstack.org/) :floppy_disk:
* [stack-ghc](https://haskellstack.org/)
* [stylish-haskell](https://github.com/jaspervdj/stylish-haskell)
* HCL
* [terraform-fmt](https://github.com/hashicorp/terraform)
* HTML
* [alex](https://github.com/wooorm/alex) :floppy_disk:
* [HTMLHint](http://htmlhint.com/)
* [prettier](https://github.com/prettier/prettier)
* [proselint](http://proselint.com/)
* [tidy](http://www.html-tidy.org/)
* [write-good](https://github.com/btford/write-good)
* Idris
* [idris](http://www.idris-lang.org/)
* ISPC
* [ispc](https://ispc.github.io/) :floppy_disk:
* Java
* [checkstyle](http://checkstyle.sourceforge.net)
* [google-java-format](https://github.com/google/google-java-format)
* [javac](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
* [javalsp](https://github.com/georgewfraser/vscode-javac)
* [PMD](https://pmd.github.io/)
* [uncrustify](https://github.com/uncrustify/uncrustify)
* JavaScript
* [eslint](http://eslint.org/)
* [flow](https://flowtype.org/)
* [jscs](http://jscs.info/)
* [jshint](http://jshint.com/)
* [prettier](https://github.com/prettier/prettier)
* [prettier-eslint](https://github.com/prettier/prettier-eslint-cli)
* [prettier-standard](https://github.com/sheerun/prettier-standard)
* [standard](http://standardjs.com/)
* [tsserver](https://github.com/Microsoft/TypeScript/wiki/Standalone-Server-%28tsserver%29)
* [xo](https://github.com/sindresorhus/xo)
* JSON
* [fixjson](https://github.com/rhysd/fixjson)
* [jq](https://stedolan.github.io/jq/)
* [jsonlint](http://zaa.ch/jsonlint/)
* [prettier](https://github.com/prettier/prettier)
* Julia
* [languageserver](https://github.com/JuliaEditorSupport/LanguageServer.jl)
* Kotlin
* [kotlinc](https://kotlinlang.org) :floppy_disk:
* [ktlint](https://ktlint.github.io) :floppy_disk:
* [languageserver](https://github.com/fwcd/KotlinLanguageServer) see `:help ale-integration-kotlin` for configuration instructions
* LaTeX
* [alex](https://github.com/wooorm/alex) :floppy_disk:
* [chktex](http://www.nongnu.org/chktex/)
* [lacheck](https://www.ctan.org/pkg/lacheck)
* [proselint](http://proselint.com/)
* [redpen](http://redpen.cc/)
* [textlint](https://textlint.github.io/)
* [vale](https://github.com/ValeLint/vale)
* [write-good](https://github.com/btford/write-good)
* Less
* [lessc](https://www.npmjs.com/package/less)
* [prettier](https://github.com/prettier/prettier)
* [stylelint](https://github.com/stylelint/stylelint)
* LLVM
* [llc](https://llvm.org/docs/CommandGuide/llc.html)
* Lua
* [luac](https://www.lua.org/manual/5.1/luac.html)
* [luacheck](https://github.com/mpeterv/luacheck)
* Mail
* [alex](https://github.com/wooorm/alex) :floppy_disk:
* [proselint](http://proselint.com/)