mirror of https://github.com/amix/vimrc.git
parent
f50b2142bc
commit
bf7b5985f1
@ -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/) |
||||