Compare commits

..

1 Commits

Author SHA1 Message Date
Andrew Wray
0b0f8d91bc Prefer ale_root setting for project roots 2025-06-25 20:50:15 +01:00
152 changed files with 357 additions and 2754 deletions

View File

@@ -41,10 +41,10 @@ install:
- ps: >- - ps: >-
if (!(Test-Path -Path C:\vim)){ if (!(Test-Path -Path C:\vim)){
Add-Type -A System.IO.Compression.FileSystem Add-Type -A System.IO.Compression.FileSystem
Invoke-WebRequest https://github.com/dense-analysis/ale/releases/download/v4.0.0/vim80-586w32.zip ` Invoke-WebRequest ftp://ftp.vim.org/pub/vim/pc/vim80-586w32.zip `
-OutFile C:\vim.zip -OutFile C:\vim.zip
[IO.Compression.ZipFile]::ExtractToDirectory('C:\vim.zip', 'C:\vim') [IO.Compression.ZipFile]::ExtractToDirectory('C:\vim.zip', 'C:\vim')
Invoke-WebRequest https://github.com/dense-analysis/ale/releases/download/v4.0.0/vim80-586rt.zip ` Invoke-WebRequest ftp://ftp.vim.org/pub/vim/pc/vim80-586rt.zip `
-OutFile C:\rt.zip -OutFile C:\rt.zip
[IO.Compression.ZipFile]::ExtractToDirectory('C:\rt.zip', 'C:\vim') [IO.Compression.ZipFile]::ExtractToDirectory('C:\rt.zip', 'C:\vim')
} }

View File

@@ -1,2 +0,0 @@
- For `doc/ale-*.txt` help docs, right-align Vim help tags (`*...*`) to the right margin so tag lines meet ALE's alignment check.
- Keep integration/tool headings in ALE docs sorted in the expected order (alphabetical within each section), and update the corresponding table of contents entries in `doc/ale.txt` when adding/removing headings.

View File

@@ -61,14 +61,6 @@ linting and fixing of code in Vim. ALE offers the following.
* Windows support * Windows support
* Well-integrated with other plugins * Well-integrated with other plugins
## Sponsorship
If you would like to donate to Dense Analysis to say thank you for ALE, please
consider visiting our [Sponsorship page](https://denseanalysis.org/sponsors/).
Funds will be used to pay for our hosting fees and research. Whilst visiting our
site, please feel free to make use of our educational resources and other
recommended tools.
## Supported Languages and Tools ## Supported Languages and Tools
ALE supports a wide variety of languages and tools. See the ALE supports a wide variety of languages and tools. See the

View File

@@ -2,44 +2,11 @@
" Description: ansible-lint for ansible-yaml files " Description: ansible-lint for ansible-yaml files
call ale#Set('ansible_ansible_lint_executable', 'ansible-lint') call ale#Set('ansible_ansible_lint_executable', 'ansible-lint')
call ale#Set('ansible_ansible_lint_auto_pipenv', 0)
call ale#Set('ansible_ansible_lint_auto_poetry', 0)
call ale#Set('ansible_ansible_lint_auto_uv', 0)
call ale#Set('ansible_ansible_lint_change_directory', 1)
function! ale_linters#ansible#ansible_lint#GetExecutable(buffer) abort function! ale_linters#ansible#ansible_lint#GetExecutable(buffer) abort
if (ale#Var(a:buffer, 'python_auto_pipenv')
\ || ale#Var(a:buffer, 'ansible_ansible_lint_auto_pipenv'))
\ && ale#python#PipenvPresent(a:buffer)
return 'pipenv'
endif
if (ale#Var(a:buffer, 'python_auto_poetry')
\ || ale#Var(a:buffer, 'ansible_ansible_lint_auto_poetry'))
\ && ale#python#PoetryPresent(a:buffer)
return 'poetry'
endif
if (ale#Var(a:buffer, 'python_auto_uv')
\ || ale#Var(a:buffer, 'ansible_ansible_lint_auto_uv'))
\ && ale#python#UvPresent(a:buffer)
return 'uv'
endif
return ale#Var(a:buffer, 'ansible_ansible_lint_executable') return ale#Var(a:buffer, 'ansible_ansible_lint_executable')
endfunction endfunction
function! ale_linters#ansible#ansible_lint#GetCwd(buffer) abort
if ale#Var(a:buffer, 'ansible_ansible_lint_change_directory')
" Run from project root if found, else from buffer dir.
let l:project_root = ale#python#FindProjectRoot(a:buffer)
return !empty(l:project_root) ? l:project_root : '%s:h'
endif
return ''
endfunction
function! ale_linters#ansible#ansible_lint#Handle(buffer, version, lines) abort function! ale_linters#ansible#ansible_lint#Handle(buffer, version, lines) abort
for l:line in a:lines[:10] for l:line in a:lines[:10]
if match(l:line, '^Traceback') >= 0 if match(l:line, '^Traceback') >= 0
@@ -136,50 +103,28 @@ function! ale_linters#ansible#ansible_lint#Handle(buffer, version, lines) abort
endfunction endfunction
function! ale_linters#ansible#ansible_lint#GetCommand(buffer, version) abort function! ale_linters#ansible#ansible_lint#GetCommand(buffer, version) abort
let l:executable = ale_linters#ansible#ansible_lint#GetExecutable(a:buffer) let l:commands = {
\ '>=6.0.0': '%e --nocolor -f json -x yaml %s',
let l:exec_args = l:executable =~? '\(pipenv\|poetry\|uv\)$' \ '>=5.0.0': '%e --nocolor --parseable-severity -x yaml %s',
\ ? ' run ansible-lint' \ '<5.0.0': '%e --nocolor -p %t'
\ : ''
let l:opts_map = {
\ '>=6.0.0': ' --nocolor -f json -x yaml %s',
\ '>=5.0.0': ' --nocolor --parseable-severity -x yaml %s',
\ '<5.0.0': ' --nocolor -p %t'
\} \}
let l:command = ale#semver#GTE(a:version, [6, 0]) ? l:commands['>=6.0.0'] :
let l:cmd_opts = ale#semver#GTE(a:version, [6, 0]) ? l:opts_map['>=6.0.0'] : \ ale#semver#GTE(a:version, [5, 0]) ? l:commands['>=5.0.0'] :
\ ale#semver#GTE(a:version, [5, 0]) ? l:opts_map['>=5.0.0'] : \ l:commands['<5.0.0']
\ l:opts_map['<5.0.0']
let l:command = ale#Escape(l:executable) . l:exec_args . l:cmd_opts
return l:command return l:command
endfunction endfunction
function! ale_linters#ansible#ansible_lint#RunWithVersionCheck(buffer) abort
let l:executable = ale_linters#ansible#ansible_lint#GetExecutable(a:buffer)
let l:exec_args = l:executable =~? '\(pipenv\|poetry\|uv\)$'
\ ? ' run ansible-lint'
\ : ''
let l:command = ale#Escape(l:executable) . l:exec_args . ' --version'
return ale#semver#RunWithVersionCheck(
\ a:buffer,
\ l:executable,
\ l:command,
\ function('ale_linters#ansible#ansible_lint#GetCommand'),
\)
endfunction
call ale#linter#Define('ansible', { call ale#linter#Define('ansible', {
\ 'name': 'ansible_lint', \ 'name': 'ansible_lint',
\ 'aliases': ['ansible', 'ansible-lint'], \ 'aliases': ['ansible', 'ansible-lint'],
\ 'executable': function('ale_linters#ansible#ansible_lint#GetExecutable'), \ 'executable': function('ale_linters#ansible#ansible_lint#GetExecutable'),
\ 'cwd': function('ale_linters#ansible#ansible_lint#GetCwd'), \ 'command': {buffer -> ale#semver#RunWithVersionCheck(
\ 'command': function('ale_linters#ansible#ansible_lint#RunWithVersionCheck'), \ buffer,
\ ale_linters#ansible#ansible_lint#GetExecutable(buffer),
\ '%e --version',
\ function('ale_linters#ansible#ansible_lint#GetCommand'),
\ )},
\ 'lint_file': 1, \ 'lint_file': 1,
\ 'callback': {buffer, lines -> ale#semver#RunWithVersionCheck( \ 'callback': {buffer, lines -> ale#semver#RunWithVersionCheck(
\ buffer, \ buffer,

View File

@@ -1,4 +1,9 @@
" Author: rhysd https://rhysd.github.io " Author: rhysd https://rhysd.github.io
" Description: Redpen, a proofreading tool (http://redpen.cc) " Description: Redpen, a proofreading tool (http://redpen.cc)
call ale#handlers#redpen#DefineLinter('asciidoc') call ale#linter#Define('asciidoc', {
\ 'name': 'redpen',
\ 'executable': 'redpen',
\ 'command': 'redpen -f asciidoc -r json %t',
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
\})

View File

@@ -5,14 +5,6 @@ call ale#Set('bitbake_oelint_adv_executable', 'oelint-adv')
call ale#Set('bitbake_oelint_adv_options', '') call ale#Set('bitbake_oelint_adv_options', '')
call ale#Set('bitbake_oelint_adv_config', '.oelint.cfg') call ale#Set('bitbake_oelint_adv_config', '.oelint.cfg')
function! ale_linters#bitbake#oelint_adv#StripAnsiCodes(line) abort
return substitute(a:line, '\e\[[0-9;]\+[mK]', '', 'g')
endfunction
function! ale_linters#bitbake#oelint_adv#RemoveBranch(line) abort
return substitute(a:line, ' \[branch:.*', '', 'g')
endfunction
function! ale_linters#bitbake#oelint_adv#Command(buffer) abort function! ale_linters#bitbake#oelint_adv#Command(buffer) abort
let l:config_file = ale#path#FindNearestFile(a:buffer, let l:config_file = ale#path#FindNearestFile(a:buffer,
\ ale#Var(a:buffer, 'bitbake_oelint_adv_config')) \ ale#Var(a:buffer, 'bitbake_oelint_adv_config'))
@@ -25,25 +17,26 @@ function! ale_linters#bitbake#oelint_adv#Command(buffer) abort
endfunction endfunction
function! ale_linters#bitbake#oelint_adv#Handle(buffer, lines) abort function! ale_linters#bitbake#oelint_adv#Handle(buffer, lines) abort
let l:pattern = '\v^(.{-}):(.{-}):(.{-}):(.{-}):(.{-})$' let l:pattern = '\v^(.+):(.+):(.+):(.+):(.+)$'
let l:output = [] let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern) for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, { call add(l:output, {
\ 'lnum': str2nr(l:match[2]), \ 'lnum': str2nr(l:match[2]),
\ 'type': l:match[3] is# 'error' \ 'type': l:match[3] is# 'error'
\ ? 'E' \ ? 'E' : (l:match[3] is# 'warning' ? 'W' : 'I'),
\ : (l:match[3] is# 'warning' ? 'W' : 'I'), \ 'text': StripAnsiCodes(l:match[5]),
\ 'text': ale_linters#bitbake#oelint_adv#RemoveBranch( \ 'code': l:match[4]
\ ale_linters#bitbake#oelint_adv#StripAnsiCodes(l:match[5]) \ })
\ ),
\ 'code': l:match[4],
\})
endfor endfor
return l:output return l:output
endfunction endfunction
function! StripAnsiCodes(line) abort
return substitute(a:line, '\e\[[0-9;]\+[mK]', '', 'g')
endfunction
call ale#linter#Define('bitbake', { call ale#linter#Define('bitbake', {
\ 'name': 'oelint_adv', \ 'name': 'oelint_adv',
\ 'output_stream': 'both', \ 'output_stream': 'both',

View File

@@ -1,41 +0,0 @@
" Author: J. Handsel <jennpbc@posteo.net>, Thyme-87 <thyme-87@posteo.me>
" Description: use checkov for providing warnings for cloudformation via ale
call ale#Set('cloudformation_checkov_executable', 'checkov')
call ale#Set('cloudformation_checkov_options', '')
function! ale_linters#cloudformation#checkov#GetExecutable(buffer) abort
return ale#Var(a:buffer, 'cloudformation_checkov_executable')
endfunction
function! ale_linters#cloudformation#checkov#GetCommand(buffer) abort
return '%e ' . '-f %t -o json --quiet --framework cloudformation ' . ale#Var(a:buffer, 'cloudformation_checkov_options')
endfunction
function! ale_linters#cloudformation#checkov#Handle(buffer, lines) abort
let l:output = []
let l:results = get(get(ale#util#FuzzyJSONDecode(a:lines, {}), 'results', []), 'failed_checks', [])
for l:violation in l:results
call add(l:output, {
\ 'filename': l:violation['file_path'],
\ 'lnum': l:violation['file_line_range'][0],
\ 'end_lnum': l:violation['file_line_range'][1],
\ 'text': l:violation['check_name'] . ' [' . l:violation['check_id'] . ']',
\ 'detail': l:violation['check_id'] . ': ' . l:violation['check_name'] . "\n" .
\ 'For more information, see: '. l:violation['guideline'],
\ 'type': 'W',
\ })
endfor
return l:output
endfunction
call ale#linter#Define('cloudformation', {
\ 'name': 'checkov',
\ 'output_stream': 'stdout',
\ 'executable': function('ale_linters#cloudformation#checkov#GetExecutable'),
\ 'command': function('ale_linters#cloudformation#checkov#GetCommand'),
\ 'callback': 'ale_linters#cloudformation#checkov#Handle',
\})

View File

@@ -6,7 +6,7 @@ call ale#Set('css_stylelint_use_global', get(g:, 'ale_use_global_executables', 0
function! ale_linters#css#stylelint#GetCommand(buffer) abort function! ale_linters#css#stylelint#GetCommand(buffer) abort
return '%e ' . ale#Pad(ale#Var(a:buffer, 'css_stylelint_options')) return '%e ' . ale#Pad(ale#Var(a:buffer, 'css_stylelint_options'))
\ . ' --no-color --stdin-filename %s' \ . ' --stdin-filename %s'
endfunction endfunction
call ale#linter#Define('css', { call ale#linter#Define('css', {

View File

@@ -1,12 +0,0 @@
" Author: Paul Monson <pmonson711@pm.me>
" Description: Expert integration (https://github.com/elixir-lang/expert)
call ale#Set('elixir_expert_executable', 'expert')
call ale#linter#Define('elixir', {
\ 'name': 'expert',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'elixir_expert_executable')},
\ 'command': '%e',
\ 'project_root': function('ale#handlers#elixir#FindMixUmbrellaRoot'),
\})

View File

@@ -1,47 +0,0 @@
" Author: gomfol12
" Desciption: A linter for fortran using fortitude.
call ale#Set('fortran_fortitude_executable', 'fortitude')
call ale#Set('fortran_fortitude_options', '')
let s:severity_map = {
\ 'E': 'E',
\ 'C': 'W',
\ 'OB': 'I',
\ 'MOD': 'I',
\ 'S': 'I',
\ 'PORT': 'I',
\ 'FORT': 'I',
\}
function! ale_linters#fortran#fortitude#Handle(buffer, lines) abort
let l:output = []
for l:error in ale#util#FuzzyJSONDecode(a:lines, [])
let l:prefix = matchstr(l:error['code'], '^\a\+')
let l:type = get(s:severity_map, l:prefix, 'I')
call add(l:output, {
\ 'lnum': l:error['location']['row'],
\ 'end_lnum': l:error['end_location']['row'],
\ 'col': l:error['location']['column'],
\ 'end_col': l:error['end_location']['column'],
\ 'text': l:error['message'],
\ 'type': l:type,
\ 'code': l:error['code'],
\})
endfor
return l:output
endfunction
call ale#linter#Define('fortran', {
\ 'name': 'fortitude',
\ 'output_stream': 'stdout',
\ 'executable': {b -> ale#Var(b, 'fortran_fortitude_executable')},
\ 'command': {b ->
\ '%e' . ' check --output-format json' . ale#Pad(ale#Var(b, 'fortran_fortitude_options')) . ' %s'
\ },
\ 'callback': 'ale_linters#fortran#fortitude#Handle',
\ 'lint_file': 1,
\})

View File

@@ -16,7 +16,7 @@ function! ale_linters#html#stylelint#GetCommand(buffer) abort
return ale#Escape(l:executable) return ale#Escape(l:executable)
\ . (!empty(l:options) ? ' ' . l:options : '') \ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' --no-color --stdin-filename %s' \ . ' --stdin-filename %s'
endfunction endfunction
call ale#linter#Define('html', { call ale#linter#Define('html', {

View File

@@ -1,34 +0,0 @@
call ale#Set('html_superhtml_executable', 'superhtml')
call ale#Set('html_superhtml_use_global', get(g:, 'ale_use_global_executables', 0))
function! ale_linters#html#superhtml#GetCommand(buffer) abort
return '%e check --stdin'
endfunction
function! ale_linters#html#superhtml#Handle(buffer, lines) abort
let l:output = []
let l:pattern = '^\(.*\):\(\d\+\):\(\d\+\): \(.*\)$'
for l:line in a:lines
let l:match = matchlist(l:line, l:pattern)
if !empty(l:match)
call add(l:output, {
\ 'lnum': str2nr(l:match[2]),
\ 'col': str2nr(l:match[3]),
\ 'text': l:match[4],
\ 'type': 'E'
\})
endif
endfor
return l:output
endfunction
call ale#linter#Define('html', {
\ 'name': 'superhtml',
\ 'executable': {b -> ale#Var(b, 'html_superhtml_executable')},
\ 'command': function('ale_linters#html#superhtml#GetCommand'),
\ 'output_stream': 'stderr',
\ 'callback': 'ale_linters#html#superhtml#Handle',
\})

View File

@@ -1,46 +0,0 @@
" Description: linter for jinja using j2lint
call ale#Set('jinja_j2lint_executable', 'j2lint')
call ale#Set('jinja_j2lint_options', '')
call ale#Set('jinja_j2lint_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('jinja_j2lint_auto_pipenv', 0)
call ale#Set('jinja_j2lint_auto_poetry', 0)
call ale#Set('jinja_j2lint_auto_uv', 0)
function! ale_linters#jinja#j2lint#GetExecutable(buffer) abort
if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'jinja_j2lint_auto_pipenv'))
\ && ale#python#PipenvPresent(a:buffer)
return 'pipenv'
endif
if (ale#Var(a:buffer, 'python_auto_poetry') || ale#Var(a:buffer, 'jinja_j2lint_auto_poetry'))
\ && ale#python#PoetryPresent(a:buffer)
return 'poetry'
endif
if (ale#Var(a:buffer, 'python_auto_uv') || ale#Var(a:buffer, 'jinja_j2lint_auto_uv'))
\ && ale#python#UvPresent(a:buffer)
return 'uv'
endif
return ale#python#FindExecutable(a:buffer, 'jinja_j2lint', ['j2lint'])
endfunction
function! ale_linters#jinja#j2lint#GetCommand(buffer) abort
let l:executable = ale_linters#jinja#j2lint#GetExecutable(a:buffer)
let l:exec_args = l:executable =~? 'pipenv\|poetry\|uv$'
\ ? ' run j2lint'
\ : ''
return ale#Escape(l:executable) . l:exec_args
\ . ale#Pad(ale#Var(a:buffer, 'jinja_j2lint_options'))
\ . ' %t'
endfunction
call ale#linter#Define('jinja', {
\ 'name': 'j2lint',
\ 'executable': function('ale_linters#jinja#j2lint#GetExecutable'),
\ 'command': function('ale_linters#jinja#j2lint#GetCommand'),
\ 'callback': 'ale#handlers#unix#HandleAsError',
\})

View File

@@ -7,7 +7,7 @@ call ale#Set('less_stylelint_use_global', get(g:, 'ale_use_global_executables',
function! ale_linters#less#stylelint#GetCommand(buffer) abort function! ale_linters#less#stylelint#GetCommand(buffer) abort
let l:options = ale#Var(a:buffer, 'less_stylelint_options') let l:options = ale#Var(a:buffer, 'less_stylelint_options')
return '%e' . ale#Pad(l:options) . ' --no-color --stdin-filename %s' return '%e' . ale#Pad(l:options) . ' --stdin-filename %s'
endfunction endfunction
call ale#linter#Define('less', { call ale#linter#Define('less', {

View File

@@ -33,8 +33,9 @@ function! ale_linters#markdown#pymarkdown#GetCommand(buffer) abort
\ : '' \ : ''
return ale#Escape(l:executable) . l:exec_args return ale#Escape(l:executable) . l:exec_args
\ . ale#Pad(ale#Var(a:buffer, 'markdown_pymarkdown_options')) \ . ' '
\ . ' scan-stdin' \ . ale#Var(a:buffer, 'markdown_pymarkdown_options')
\ . 'scan-stdin'
endfunction endfunction
function! ale_linters#markdown#pymarkdown#Handle(buffer, lines) abort function! ale_linters#markdown#pymarkdown#Handle(buffer, lines) abort

View File

@@ -1,4 +1,9 @@
" Author: rhysd https://rhysd.github.io " Author: rhysd https://rhysd.github.io
" Description: Redpen, a proofreading tool (http://redpen.cc) " Description: Redpen, a proofreading tool (http://redpen.cc)
call ale#handlers#redpen#DefineLinter('markdown') call ale#linter#Define('markdown', {
\ 'name': 'redpen',
\ 'executable': 'redpen',
\ 'command': 'redpen -f markdown -r json %t',
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
\})

View File

@@ -1,49 +0,0 @@
" Authors: ophirr33 <coghlan.ty@gmail.com>, rymdbar <https://rymdbar.x20.se/>
" Description: Perl::LanguageServer for perl, from cpan.org
" This should have the same value as in perl.vim
call ale#Set('perl_perl_executable', 'perl')
" Please note that perl_perl_options does not exist here.
function! ale_linters#perl#languageserver#GetProjectRoot(buffer) abort
" Makefile.PL, https://perldoc.perl.org/ExtUtils::MakeMaker
" Build.PL, https://metacpan.org/pod/Module::Build
" dist.ini, https://metacpan.org/pod/Dist::Zilla
let l:potential_roots = [ 'Makefile.PL', 'Build.PL', 'dist.ini' ]
for l:root in l:potential_roots
let l:project_root = ale#path#FindNearestFile(a:buffer, l:root)
if !empty(l:project_root)
return fnamemodify(l:project_root . '/', ':p:h:h')
endif
endfor
let l:project_root = ale#path#FindNearestFileOrDirectory(a:buffer, '.git')
if !empty(l:project_root)
return fnamemodify(l:project_root . '/', ':p:h:h')
endif
return fnamemodify(expand('#' . a:buffer . ':p:h'), ':p:h')
endfunction
call ale#Set('perl_languageserver_config', {})
function! s:get_lsp_config(buffer) abort
" This tool doesn't kick in unless workspace/didChangeConfiguration is
" called, thus this function returning a fallback dict when there is no
" config.
let l:lsp_config = ale#Var(a:buffer, 'perl_languageserver_config')
return empty(l:lsp_config) ? { 'perl': { 'enable': 1 } } : l:lsp_config
endfunction
call ale#linter#Define('perl', {
\ 'name': 'languageserver',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'perl_perl_executable')},
\ 'command': '%e -MPerl::LanguageServer -ePerl::LanguageServer::run',
\ 'lsp_config': {b -> s:get_lsp_config(b)},
\ 'project_root': function('ale_linters#perl#languageserver#GetProjectRoot'),
\ })

View File

@@ -1,9 +1,6 @@
" Author: Arizard <https://github.com/Arizard> " Author: Arizard <https://github.com/Arizard>
" Description: PHPactor integration for ALE " Description: PHPactor integration for ALE
call ale#Set('php_phpactor_executable', 'phpactor')
call ale#Set('php_phpactor_init_options', {})
" Copied from langserver.vim " Copied from langserver.vim
function! ale_linters#php#phpactor#GetProjectRoot(buffer) abort function! ale_linters#php#phpactor#GetProjectRoot(buffer) abort
let l:composer_path = ale#path#FindNearestFile(a:buffer, 'composer.json') let l:composer_path = ale#path#FindNearestFile(a:buffer, 'composer.json')
@@ -20,8 +17,7 @@ endfunction
call ale#linter#Define('php', { call ale#linter#Define('php', {
\ 'name': 'phpactor', \ 'name': 'phpactor',
\ 'lsp': 'stdio', \ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'php_phpactor_executable')}, \ 'executable': 'phpactor',
\ 'command': '%e language-server', \ 'command': '%e language-server',
\ 'initialization_options': {b -> ale#Var(b, 'php_phpactor_init_options')},
\ 'project_root': function('ale_linters#php#phpactor#GetProjectRoot'), \ 'project_root': function('ale_linters#php#phpactor#GetProjectRoot'),
\}) \})

View File

@@ -27,10 +27,6 @@ function! ale_linters#php#phpstan#GetCommand(buffer, version) abort
let l:level = ale#Var(a:buffer, 'php_phpstan_level') let l:level = ale#Var(a:buffer, 'php_phpstan_level')
if type(l:level) is v:t_number
let l:level = string(l:level)
endif
if empty(l:level) && empty(ale_linters#php#phpstan#FindConfigFile(a:buffer)) if empty(l:level) && empty(ale_linters#php#phpstan#FindConfigFile(a:buffer))
" if no configuration file is found, then use 4 as a default level " if no configuration file is found, then use 4 as a default level
let l:level = '4' let l:level = '4'
@@ -87,10 +83,6 @@ function! ale_linters#php#phpstan#FindConfigFile(buffer) abort
let l:result = ale#path#FindNearestFile(a:buffer, 'phpstan.neon.dist') let l:result = ale#path#FindNearestFile(a:buffer, 'phpstan.neon.dist')
endif endif
if empty(l:result)
let l:result = ale#path#FindNearestFile(a:buffer, 'phpstan.dist.neon')
endif
return l:result return l:result
endfunction endfunction

View File

@@ -36,7 +36,7 @@ function! ale_linters#python#pylsp#GetCwd(buffer) abort
\ 'name': 'pylsp', \ 'name': 'pylsp',
\ 'project_root': function('ale#python#FindProjectRoot'), \ 'project_root': function('ale#python#FindProjectRoot'),
\} \}
let l:root = ale#lsp_linter#FindProjectRoot(a:buffer, l:fake_linter) let l:root = ale#linter#GetRoot(a:buffer, l:fake_linter)
return !empty(l:root) ? l:root : v:null return !empty(l:root) ? l:root : v:null
endfunction endfunction

View File

@@ -13,7 +13,7 @@ function! ale_linters#python#pyright#GetCwd(buffer) abort
\ 'name': 'pyright', \ 'name': 'pyright',
\ 'project_root': function('ale#python#FindProjectRoot'), \ 'project_root': function('ale#python#FindProjectRoot'),
\} \}
let l:root = ale#lsp_linter#FindProjectRoot(a:buffer, l:fake_linter) let l:root = ale#linter#GetRoot(a:buffer, l:fake_linter)
return !empty(l:root) ? l:root : v:null return !empty(l:root) ? l:root : v:null
endfunction endfunction

View File

@@ -34,22 +34,6 @@ function! ale_linters#python#ruff#GetExecutable(buffer) abort
return ale#python#FindExecutable(a:buffer, 'python_ruff', ['ruff']) return ale#python#FindExecutable(a:buffer, 'python_ruff', ['ruff'])
endfunction endfunction
function! ale_linters#python#ruff#RunWithVersionCheck(buffer) abort
let l:executable = ale_linters#python#ruff#GetExecutable(a:buffer)
let l:exec_args = l:executable =~? '\(pipenv\|poetry\|uv\)$'
\ ? ' run ruff'
\ : ''
let l:command = ale#Escape(l:executable) . l:exec_args . ' --version'
return ale#semver#RunWithVersionCheck(
\ a:buffer,
\ l:executable,
\ l:command,
\ function('ale_linters#python#ruff#GetCommand'),
\)
endfunction
function! ale_linters#python#ruff#GetCwd(buffer) abort function! ale_linters#python#ruff#GetCwd(buffer) abort
if ale#Var(a:buffer, 'python_ruff_change_directory') if ale#Var(a:buffer, 'python_ruff_change_directory')
" Run from project root if found, else from buffer dir. " Run from project root if found, else from buffer dir.
@@ -92,10 +76,6 @@ function! ale_linters#python#ruff#Handle(buffer, lines) abort
continue continue
endtry endtry
if empty(l:item)
continue
endif
if (l:item.code is# 'W291' || l:item.code is# 'W293') if (l:item.code is# 'W291' || l:item.code is# 'W293')
\&& !ale#Var(a:buffer, 'warn_about_trailing_whitespace') \&& !ale#Var(a:buffer, 'warn_about_trailing_whitespace')
" Skip warnings for trailing whitespace if the option is off. " Skip warnings for trailing whitespace if the option is off.
@@ -126,7 +106,12 @@ call ale#linter#Define('python', {
\ 'name': 'ruff', \ 'name': 'ruff',
\ 'executable': function('ale_linters#python#ruff#GetExecutable'), \ 'executable': function('ale_linters#python#ruff#GetExecutable'),
\ 'cwd': function('ale_linters#python#ruff#GetCwd'), \ 'cwd': function('ale_linters#python#ruff#GetCwd'),
\ 'command': function('ale_linters#python#ruff#RunWithVersionCheck'), \ 'command': {buffer -> ale#semver#RunWithVersionCheck(
\ buffer,
\ ale_linters#python#ruff#GetExecutable(buffer),
\ '%e --version',
\ function('ale_linters#python#ruff#GetCommand'),
\ )},
\ 'callback': 'ale_linters#python#ruff#Handle', \ 'callback': 'ale_linters#python#ruff#Handle',
\ 'output_stream': 'both', \ 'output_stream': 'both',
\ 'read_buffer': 1, \ 'read_buffer': 1,

View File

@@ -1,81 +0,0 @@
" Description: ty as linter for python files
call ale#Set('python_ty_executable', 'ty')
call ale#Set('python_ty_options', '')
call ale#Set('python_ty_use_global', get(g:, 'ale_use_global_executables', 1))
call ale#Set('python_ty_change_directory', 1)
call ale#Set('python_ty_auto_pipenv', 0)
call ale#Set('python_ty_auto_poetry', 0)
call ale#Set('python_ty_auto_uv', 0)
function! ale_linters#python#ty#GetExecutable(buffer) abort
if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'python_ty_auto_pipenv'))
\ && ale#python#PipenvPresent(a:buffer)
return 'pipenv'
endif
if (ale#Var(a:buffer, 'python_auto_poetry') || ale#Var(a:buffer, 'python_ty_auto_poetry'))
\ && ale#python#PoetryPresent(a:buffer)
return 'poetry'
endif
if (ale#Var(a:buffer, 'python_auto_uv') || ale#Var(a:buffer, 'python_ty_auto_uv'))
\ && ale#python#UvPresent(a:buffer)
return 'uv'
endif
return ale#python#FindExecutable(a:buffer, 'python_ty', ['ty'])
endfunction
function! ale_linters#python#ty#GetCwd(buffer) abort
if ale#Var(a:buffer, 'python_ty_change_directory')
" Run from project root if found, else from buffer dir.
let l:project_root = ale#python#FindProjectRoot(a:buffer)
return !empty(l:project_root) ? l:project_root : '%s:h'
endif
return ''
endfunction
function! ale_linters#python#ty#GetCommand(buffer) abort
let l:executable = ale_linters#python#ty#GetExecutable(a:buffer)
let l:exec_args = l:executable =~? '\(pipenv\|poetry\|uv\)$' ? ' run ty ' : ''
let l:exec_args = l:exec_args . ' check --output-format gitlab '
return ale#Escape(l:executable) . l:exec_args . ale#Pad(ale#Var(a:buffer, 'python_ty_options')) . ' %s'
endfunction
function! ale_linters#python#ty#Handle(buffer, lines) abort
let l:output = []
let l:items = json_decode(join(a:lines, ''))
if empty(l:items)
return l:output
endif
for l:item in l:items
call add(l:output, {
\ 'lnum': l:item.location.positions.begin.line,
\ 'col': l:item.location.positions.begin.column,
\ 'end_lnum': l:item.location.positions.end.line,
\ 'end_col': l:item.location.positions.end.column,
\ 'code': l:item.check_name,
\ 'text': l:item.description,
\ 'type': l:item.severity =~? 'major' ? 'E' : 'W',
\})
endfor
return l:output
endfunction
call ale#linter#Define('python', {
\ 'name': 'ty',
\ 'executable': function('ale_linters#python#ty#GetExecutable'),
\ 'cwd': function('ale_linters#python#ty#GetCwd'),
\ 'command': function('ale_linters#python#ty#GetCommand'),
\ 'callback': 'ale_linters#python#ty#Handle',
\ 'output_stream': 'stdout',
\})

View File

@@ -1,4 +1,9 @@
" Author: rhysd https://rhysd.github.io " Author: rhysd https://rhysd.github.io
" Description: Redpen, a proofreading tool (http://redpen.cc) " Description: Redpen, a proofreading tool (http://redpen.cc)
call ale#handlers#redpen#DefineLinter('review') call ale#linter#Define('review', {
\ 'name': 'redpen',
\ 'executable': 'redpen',
\ 'command': 'redpen -f review -r json %t',
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
\})

View File

@@ -1,4 +1,9 @@
" Author: rhysd https://rhysd.github.io " Author: rhysd https://rhysd.github.io
" Description: Redpen, a proofreading tool (http://redpen.cc) " Description: Redpen, a proofreading tool (http://redpen.cc)
call ale#handlers#redpen#DefineLinter('rst') call ale#linter#Define('rst', {
\ 'name': 'redpen',
\ 'executable': 'redpen',
\ 'command': 'redpen -f rest -r json %t',
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
\})

View File

@@ -1,7 +1,6 @@
call ale#Set('ruby_sorbet_executable', 'srb') call ale#Set('ruby_sorbet_executable', 'srb')
call ale#Set('ruby_sorbet_options', '') call ale#Set('ruby_sorbet_options', '')
call ale#Set('ruby_sorbet_enable_watchman', 0) call ale#Set('ruby_sorbet_enable_watchman', 0)
call ale#Set('ruby_sorbet_initialization_options', { 'highlightUntyped': v:false })
function! ale_linters#ruby#sorbet#GetCommand(buffer) abort function! ale_linters#ruby#sorbet#GetCommand(buffer) abort
let l:executable = ale#Var(a:buffer, 'ruby_sorbet_executable') let l:executable = ale#Var(a:buffer, 'ruby_sorbet_executable')
@@ -22,6 +21,6 @@ call ale#linter#Define('ruby', {
\ 'language': 'ruby', \ 'language': 'ruby',
\ 'executable': {b -> ale#Var(b, 'ruby_sorbet_executable')}, \ 'executable': {b -> ale#Var(b, 'ruby_sorbet_executable')},
\ 'command': function('ale_linters#ruby#sorbet#GetCommand'), \ 'command': function('ale_linters#ruby#sorbet#GetCommand'),
\ 'project_root': function('ale#ruby#FindProjectRoot'), \ 'project_root': function('ale#ruby#FindProjectRoot')
\ 'initialization_options': {b -> ale#Var(b, 'ruby_sorbet_initialization_options')}
\}) \})

View File

@@ -9,6 +9,6 @@ call ale#linter#Define('sass', {
\ 'executable': {b -> ale#path#FindExecutable(b, 'sass_stylelint', [ \ 'executable': {b -> ale#path#FindExecutable(b, 'sass_stylelint', [
\ 'node_modules/.bin/stylelint', \ 'node_modules/.bin/stylelint',
\ ])}, \ ])},
\ 'command': '%e --no-color --stdin-filename %s', \ 'command': '%e --stdin-filename %s',
\ 'callback': 'ale#handlers#css#HandleStyleLintFormat', \ 'callback': 'ale#handlers#css#HandleStyleLintFormat',
\}) \})

View File

@@ -13,7 +13,6 @@ function! ale_linters#scala#metals#GetProjectRoot(buffer) abort
let l:potential_roots = [ let l:potential_roots = [
\ 'build.sc', \ 'build.sc',
\ 'build.mill',
\ 'build.sbt', \ 'build.sbt',
\ '.bloop', \ '.bloop',
\ '.metals', \ '.metals',

View File

@@ -6,7 +6,7 @@ call ale#Set('scss_stylelint_use_global', get(g:, 'ale_use_global_executables',
function! ale_linters#scss#stylelint#GetCommand(buffer) abort function! ale_linters#scss#stylelint#GetCommand(buffer) abort
return '%e ' . ale#Pad(ale#Var(a:buffer, 'scss_stylelint_options')) return '%e ' . ale#Pad(ale#Var(a:buffer, 'scss_stylelint_options'))
\ . ' --no-color --stdin-filename %s' \ . ' --stdin-filename %s'
endfunction endfunction
call ale#linter#Define('scss', { call ale#linter#Define('scss', {

View File

@@ -7,7 +7,7 @@ call ale#Set('stylus_stylelint_use_global', get(g:, 'ale_use_global_executables'
function! ale_linters#stylus#stylelint#GetCommand(buffer) abort function! ale_linters#stylus#stylelint#GetCommand(buffer) abort
return '%e' return '%e'
\ . ale#Pad(ale#Var(a:buffer, 'stylus_stylelint_options')) \ . ale#Pad(ale#Var(a:buffer, 'stylus_stylelint_options'))
\ . ' --no-color --stdin-filename %s' \ . ' --stdin-filename %s'
endfunction endfunction
call ale#linter#Define('stylus', { call ale#linter#Define('stylus', {

View File

@@ -8,7 +8,7 @@ call ale#Set('sugarss_stylelint_use_global', get(g:, 'ale_use_global_executables
function! ale_linters#sugarss#stylelint#GetCommand(buffer) abort function! ale_linters#sugarss#stylelint#GetCommand(buffer) abort
return '%e ' . ale#Pad(ale#Var(a:buffer, 'sugarss_stylelint_options')) return '%e ' . ale#Pad(ale#Var(a:buffer, 'sugarss_stylelint_options'))
\ . ' --syntax=sugarss' \ . ' --syntax=sugarss'
\ . ' --no-color --stdin-filename %s' \ . ' --stdin-filename %s'
endfunction endfunction
call ale#linter#Define('sugarss', { call ale#linter#Define('sugarss', {

View File

@@ -1,4 +1,9 @@
" Author: rhysd https://rhysd.github.io " Author: rhysd https://rhysd.github.io
" Description: Redpen, a proofreading tool (http://redpen.cc) " Description: Redpen, a proofreading tool (http://redpen.cc)
call ale#handlers#redpen#DefineLinter('tex') call ale#linter#Define('tex', {
\ 'name': 'redpen',
\ 'executable': 'redpen',
\ 'command': 'redpen -f latex -r json %t',
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
\})

View File

@@ -1,4 +1,9 @@
" Author: rhysd https://rhysd.github.io " Author: rhysd https://rhysd.github.io
" Description: Redpen, a proofreading tool (http://redpen.cc) " Description: Redpen, a proofreading tool (http://redpen.cc)
call ale#handlers#redpen#DefineLinter('text') call ale#linter#Define('text', {
\ 'name': 'redpen',
\ 'executable': 'redpen',
\ 'command': 'redpen -f plain -r json %t',
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
\})

View File

@@ -1,51 +0,0 @@
" Author: Ben Boeckel <github@me.benboeckel.net>
" Description: TOML Formatter / Linter / Language Server
call ale#Set('toml_tombi_executable', 'tombi')
call ale#Set('toml_tombi_lsp_options', '')
call ale#Set('toml_tombi_online', 0)
function! ale_linters#toml#tombi#GetCommand(buffer) abort
let l:offline = ''
if !ale#Var(a:buffer, 'toml_tombi_online')
let l:offline = '--offline'
endif
return '%e lsp'
\ . ale#Pad(l:offline)
\ . ale#Pad(ale#Var(a:buffer, 'toml_tombi_lsp_options'))
endfunction
function! ale_linters#toml#tombi#GetProjectRoot(buffer) abort
" Try to find nearest tombi.toml
let l:tombiconfig_file = ale#path#FindNearestFile(a:buffer, 'tombi.toml')
if !empty(l:tombiconfig_file)
return fnamemodify(l:tombiconfig_file . '/', ':p:h:h')
endif
" Try to find nearest pyproject.toml
let l:pyproject_file = ale#path#FindNearestFile(a:buffer, 'pyproject.toml')
if !empty(l:pyproject_file)
return fnamemodify(l:pyproject_file . '/', ':p:h:h')
endif
" Try to find nearest `git` directory
let l:gitdir = ale#path#FindNearestFile(a:buffer, '.git')
if !empty(l:gitdir)
return fnamemodify(l:gitdir . '/', ':p:h:h')
endif
return ''
endfunction
call ale#linter#Define('toml', {
\ 'name': 'tombi',
\ 'lsp': 'stdio',
\ 'executable': {b -> ale#Var(b, 'toml_tombi_executable')},
\ 'command': function('ale_linters#toml#tombi#GetCommand'),
\ 'project_root': function('ale_linters#toml#tombi#GetProjectRoot'),
\})

View File

@@ -9,9 +9,7 @@ endif
" --lint-only " --lint-only
function! ale_linters#verilog#slang#GetCommand(buffer) abort function! ale_linters#verilog#slang#GetCommand(buffer) abort
return 'slang -Weverything ' return 'slang -Weverything '
\ . '--diag-abs-paths '
\ . '-I%s:h ' \ . '-I%s:h '
\ . '-y%s:h '
\ . ale#Var(a:buffer, 'verilog_slang_options') .' ' \ . ale#Var(a:buffer, 'verilog_slang_options') .' '
\ . '%t' \ . '%t'
endfunction endfunction
@@ -30,7 +28,6 @@ function! ale_linters#verilog#slang#Handle(buffer, lines) abort
for l:match in ale#util#GetMatches(a:lines, l:pattern) for l:match in ale#util#GetMatches(a:lines, l:pattern)
let l:item = { let l:item = {
\ 'filename': l:match[1],
\ 'lnum': str2nr(l:match[2]), \ 'lnum': str2nr(l:match[2]),
\ 'type': (l:match[4] is# 'error') ? 'E' : 'W', \ 'type': (l:match[4] is# 'error') ? 'E' : 'W',
\ 'text': s:RemoveUnicodeQuotes(l:match[5]), \ 'text': s:RemoveUnicodeQuotes(l:match[5]),

View File

@@ -1,43 +0,0 @@
" Author: Nicolas Derumigny <https://github.com/nicolasderumigny>
" Description: Verible LSP for verilog
call ale#Set('verilog_verible_ls_options', '--rules_config_search')
call ale#Set('verilog_verible_ls_rules', '')
call ale#Set('verilog_verible_ls_executable', 'verible-verilog-ls')
call ale#Set('verilog_verible_ls_config', {})
function! ale_linters#verilog#verible_ls#GetProjectRoot(buffer) abort
let l:git_dir = ale#path#FindNearestFile(a:buffer, 'verible.filelist')
if !empty(l:git_dir)
return fnamemodify(l:git_dir, ':p:h')
else
return fnamemodify('', ':h')
endif
endfunction
function! ale_linters#verilog#verible_ls#GetCommand(buffer) abort
let l:command = ale#Escape(ale#Var(a:buffer, 'verilog_verible_ls_executable'))
let l:options = ale#Var(a:buffer, 'verilog_verible_ls_options')
let l:rules = ale#Var(a:buffer, 'verilog_verible_ls_rules')
if l:options isnot# ''
let l:command .= ' ' . l:options
endif
if l:rules isnot# ''
let l:command .= ' --rules=' . l:rules
endif
return l:command
endfunction
call ale#linter#Define('verilog', {
\ 'name': 'verible_ls',
\ 'lsp': 'stdio',
\ 'lsp_config': {b -> ale#Var(b, 'verilog_verible_ls_config')},
\ 'executable': {b -> ale#Var(b, 'verilog_verible_ls_executable')},
\ 'command': function('ale_linters#verilog#verible_ls#GetCommand') ,
\ 'project_root': function('ale_linters#verilog#verible_ls#GetProjectRoot'),
\})

View File

@@ -10,7 +10,6 @@ function! ale_linters#verilog#verilator#GetCommand(buffer) abort
" the path to the current file is systematically added to the search path " the path to the current file is systematically added to the search path
return 'verilator --lint-only -Wall -Wno-DECLFILENAME ' return 'verilator --lint-only -Wall -Wno-DECLFILENAME '
\ . '-I%s:h ' \ . '-I%s:h '
\ . '-y %s:h '
\ . ale#Var(a:buffer, 'verilog_verilator_options') .' ' \ . ale#Var(a:buffer, 'verilog_verilator_options') .' '
\ . '%t' \ . '%t'
endfunction endfunction

View File

@@ -216,7 +216,7 @@ endfunction
function! ale#assert#LSPProject(expected_root) abort function! ale#assert#LSPProject(expected_root) abort
let l:buffer = bufnr('') let l:buffer = bufnr('')
let l:linter = s:GetLinter() let l:linter = s:GetLinter()
let l:root = ale#lsp_linter#FindProjectRoot(l:buffer, l:linter) let l:root = ale#linter#GetRoot(l:buffer, l:linter)
AssertEqual a:expected_root, l:root AssertEqual a:expected_root, l:root
endfunction endfunction

View File

@@ -12,8 +12,6 @@ let g:__ale_c_project_filenames = ['.git/HEAD', 'configure', 'Makefile', 'CMakeL
let g:ale_c_build_dir_names = get(g:, 'ale_c_build_dir_names', [ let g:ale_c_build_dir_names = get(g:, 'ale_c_build_dir_names', [
\ 'build', \ 'build',
\ 'build/Debug',
\ 'build/Release',
\ 'bin', \ 'bin',
\]) \])

View File

@@ -23,7 +23,7 @@ function! ale#cursor#TruncatedEcho(original_message) abort
" Change tabs to spaces. " Change tabs to spaces.
let l:message = substitute(l:message, "\t", ' ', 'g') let l:message = substitute(l:message, "\t", ' ', 'g')
" Remove any newlines in the message. " Remove any newlines in the message.
let l:message = substitute(l:message, "\n", ' ', 'g') let l:message = substitute(l:message, "\n", '', 'g')
" Convert indentation groups into single spaces for better legibility when " Convert indentation groups into single spaces for better legibility when
" put on a single line " put on a single line
let l:message = substitute(l:message, ' \+', ' ', 'g') let l:message = substitute(l:message, ' \+', ' ', 'g')
@@ -93,7 +93,6 @@ function! ale#cursor#EchoCursorWarning(...) abort
if !empty(l:loc) if !empty(l:loc)
let l:format = ale#Var(l:buffer, 'echo_msg_format') let l:format = ale#Var(l:buffer, 'echo_msg_format')
let l:msg = ale#GetLocItemMessage(l:loc, l:format) let l:msg = ale#GetLocItemMessage(l:loc, l:format)
call ale#cursor#TruncatedEcho(l:msg) call ale#cursor#TruncatedEcho(l:msg)
let l:info.echoed = 1 let l:info.echoed = 1
elseif get(l:info, 'echoed') elseif get(l:info, 'echoed')

View File

@@ -192,11 +192,6 @@ let s:default_registry = {
\ 'suggested_filetypes': ['python'], \ 'suggested_filetypes': ['python'],
\ 'description': 'Tidy Python imports with pyflyby.', \ 'description': 'Tidy Python imports with pyflyby.',
\ }, \ },
\ 'unimport': {
\ 'function': 'ale#fixers#unimport#Fix',
\ 'suggested_filetypes': ['python'],
\ 'description': 'unimport fixer',
\ },
\ 'importjs': { \ 'importjs': {
\ 'function': 'ale#fixers#importjs#Fix', \ 'function': 'ale#fixers#importjs#Fix',
\ 'suggested_filetypes': ['javascript'], \ 'suggested_filetypes': ['javascript'],
@@ -737,26 +732,6 @@ let s:default_registry = {
\ 'suggested_filetypes': ['roc'], \ 'suggested_filetypes': ['roc'],
\ 'description': 'Annotates all top-level definitions in Roc files.', \ 'description': 'Annotates all top-level definitions in Roc files.',
\ }, \ },
\ 'tombi_format': {
\ 'function': 'ale#fixers#tombi_format#Fix',
\ 'suggested_filetypes': ['toml'],
\ 'description': 'Formats TOML files',
\ },
\ 'tombi_lint': {
\ 'function': 'ale#fixers#tombi_lint#Fix',
\ 'suggested_filetypes': ['toml'],
\ 'description': 'Lints TOML files',
\ },
\ 'verible_format': {
\ 'function': 'ale#fixers#verible_format#Fix',
\ 'suggested_filetypes': ['verilog'],
\ 'description': 'Formats verilog files using verible.',
\ },
\ 'markdownlint': {
\ 'function': 'ale#fixers#markdownlint#Fix',
\ 'suggested_filetypes': ['markdown'],
\ 'description': 'Fix markdown files with markdownlint.',
\ },
\} \}
" Reset the function registry to the default entries. " Reset the function registry to the default entries.

View File

@@ -1,11 +1,12 @@
function! ale#fixers#biome#Fix(buffer) abort function! ale#fixers#biome#Fix(buffer) abort
let l:executable = ale#handlers#biome#GetExecutable(a:buffer) let l:executable = ale#handlers#biome#GetExecutable(a:buffer)
let l:options = ale#Var(a:buffer, 'biome_options') let l:options = ale#Var(a:buffer, 'biome_options')
let l:unsafe = ale#Var(a:buffer, 'biome_fixer_apply_unsafe') ? ' --unsafe' : '' let l:apply = ale#Var(a:buffer, 'biome_fixer_apply_unsafe') ? '--write --unsafe' : '--write'
return { return {
\ 'command': ale#Escape(l:executable) . ' check ' \ 'read_temporary_file': 1,
\ . '--write --stdin-file-path %s' . l:unsafe \ 'command': ale#Escape(l:executable) . ' check ' . l:apply
\ . (!empty(l:options) ? ' ' . l:options : '') \ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' %t'
\} \}
endfunction endfunction

View File

@@ -1,15 +0,0 @@
:scriptencoding utf-8
call ale#Set('markdownlint_executable', 'markdownlint')
call ale#Set('markdownlint_options', '--fix')
function! ale#fixers#markdownlint#Fix(buffer) abort
let l:executable = ale#Var(a:buffer, 'markdownlint_executable')
let l:options = ale#Var(a:buffer, 'markdownlint_options')
return {
\ 'command': ale#Escape(l:executable)
\ . ' ' . l:options,
\}
endfunction

View File

@@ -19,34 +19,20 @@ function! ale#fixers#rubocop#PostProcess(buffer, output) abort
return a:output[l:line :] return a:output[l:line :]
endfunction endfunction
function! ale#fixers#rubocop#GetCommand(buffer, version) abort function! ale#fixers#rubocop#GetCommand(buffer) abort
let l:executable = ale#Var(a:buffer, 'ruby_rubocop_executable') let l:executable = ale#Var(a:buffer, 'ruby_rubocop_executable')
let l:options = ale#Var(a:buffer, 'ruby_rubocop_options') let l:options = ale#Var(a:buffer, 'ruby_rubocop_options')
let l:auto_correct_all = ale#Var(a:buffer, 'ruby_rubocop_auto_correct_all') let l:auto_correct_all = ale#Var(a:buffer, 'ruby_rubocop_auto_correct_all')
let l:editor_mode = ale#semver#GTE(a:version, [1, 61, 0])
return ale#ruby#EscapeExecutable(l:executable, 'rubocop') return ale#ruby#EscapeExecutable(l:executable, 'rubocop')
\ . (!empty(l:options) ? ' ' . l:options : '') \ . (!empty(l:options) ? ' ' . l:options : '')
\ . (l:auto_correct_all ? ' --auto-correct-all' : ' --auto-correct') \ . (l:auto_correct_all ? ' --auto-correct-all' : ' --auto-correct')
\ . (l:editor_mode ? ' --editor-mode' : '')
\ . ' --force-exclusion --stdin %s' \ . ' --force-exclusion --stdin %s'
endfunction endfunction
function! ale#fixers#rubocop#GetCommandForVersion(buffer, version) abort function! ale#fixers#rubocop#Fix(buffer) abort
return { return {
\ 'command': ale#fixers#rubocop#GetCommand(a:buffer, a:version), \ 'command': ale#fixers#rubocop#GetCommand(a:buffer),
\ 'process_with': 'ale#fixers#rubocop#PostProcess' \ 'process_with': 'ale#fixers#rubocop#PostProcess'
\} \}
endfunction endfunction
function! ale#fixers#rubocop#Fix(buffer) abort
let l:executable = ale#Var(a:buffer, 'ruby_rubocop_executable')
let l:command = l:executable . ale#Pad('--version')
return ale#semver#RunWithVersionCheck(
\ a:buffer,
\ l:executable,
\ l:command,
\ function('ale#fixers#rubocop#GetCommandForVersion'),
\)
endfunction

View File

@@ -20,7 +20,7 @@ function! ale#fixers#stylelint#Fix(buffer) abort
\ 'cwd': '%s:h', \ 'cwd': '%s:h',
\ 'command': ale#node#Executable(a:buffer, l:executable) \ 'command': ale#node#Executable(a:buffer, l:executable)
\ . ale#Pad(l:options) \ . ale#Pad(l:options)
\ . ' --fix --stdin --no-color --stdin-filename %s', \ . ' --fix --stdin --stdin-filename %s',
\ 'read_temporary_file': 0, \ 'read_temporary_file': 0,
\} \}
endfunction endfunction

View File

@@ -1,22 +0,0 @@
" Author: Ben Boeckel <github@me.benboeckel.net>
" Description: Integration of tombi formatting with ALE.
call ale#Set('toml_tombi_executable', 'tombi')
call ale#Set('toml_tombi_format_options', '')
call ale#Set('toml_tombi_online', 0)
function! ale#fixers#tombi_format#Fix(buffer) abort
let l:executable = ale#Var(a:buffer, 'toml_tombi_executable')
let l:offline = ''
if !ale#Var(a:buffer, 'toml_tombi_online')
let l:offline = '--offline'
endif
return {
\ 'command': ale#Escape(l:executable)
\ . ' format'
\ . ale#Pad(l:offline)
\ . ale#Pad(ale#Var(a:buffer, 'toml_tombi_format_options')),
\}
endfunction

View File

@@ -1,22 +0,0 @@
" Author: Ben Boeckel <github@me.benboeckel.net>
" Description: Integration of tombi linting with ALE.
call ale#Set('toml_tombi_executable', 'tombi')
call ale#Set('toml_tombi_lint_options', '')
call ale#Set('toml_tombi_online', 0)
function! ale#fixers#tombi_lint#Fix(buffer) abort
let l:executable = ale#Var(a:buffer, 'toml_tombi_executable')
let l:offline = ''
if !ale#Var(a:buffer, 'toml_tombi_online')
let l:offline = '--offline'
endif
return {
\ 'command': ale#Escape(l:executable)
\ . ' lint'
\ . ale#Pad(l:offline)
\ . ale#Pad(ale#Var(a:buffer, 'toml_tombi_lint_options')),
\}
endfunction

View File

@@ -1,42 +0,0 @@
call ale#Set('python_unimport_executable', 'unimport')
call ale#Set('python_unimport_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('python_unimport_options', '')
call ale#Set('python_unimport_auto_pipenv', 0)
call ale#Set('python_unimport_auto_poetry', 0)
call ale#Set('python_unimport_auto_uv', 0)
function! ale#fixers#unimport#GetExecutable(buffer) abort
if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'python_unimport_auto_pipenv'))
\ && ale#python#PipenvPresent(a:buffer)
return 'pipenv'
endif
if (ale#Var(a:buffer, 'python_auto_poetry') || ale#Var(a:buffer, 'python_unimport_auto_poetry'))
\ && ale#python#PoetryPresent(a:buffer)
return 'poetry'
endif
if (ale#Var(a:buffer, 'python_auto_uv') || ale#Var(a:buffer, 'python_unimport_auto_uv'))
\ && ale#python#UvPresent(a:buffer)
return 'uv'
endif
return ale#python#FindExecutable(a:buffer, 'python_unimport', ['unimport'])
endfunction
function! ale#fixers#unimport#Fix(buffer) abort
let l:executable = ale#fixers#unimport#GetExecutable(a:buffer)
let l:cmd = [ale#Escape(l:executable)]
if l:executable =~? '\(pipenv\|poetry\|uv\)$'
call extend(l:cmd, ['run', 'unimport'])
endif
let l:options = ale#Var(a:buffer, 'python_unimport_options')
if !empty(l:options)
call add(l:cmd, l:options)
endif
return {'command': join(l:cmd, ' ')}
endfunction

View File

@@ -1,17 +0,0 @@
" Author: Nicolas Derumigny <https://github.com/nicolasderumigny>
" Description: verible formatter for verilog.
call ale#Set('verilog_verible_format_executable', 'verible-verilog-format')
call ale#Set('verilog_verible_format_options', '')
function! ale#fixers#verible_format#Fix(buffer) abort
let l:executable = ale#Escape(ale#Var(a:buffer, 'verilog_verible_format_executable'))
let l:command = l:executable
let l:options = ale#Var(a:buffer, 'verilog_verible_format_options')
if l:options isnot# ''
let l:command .= ' ' . l:options
endif
return {'command': l:command . ' -'}
endfunction

View File

@@ -36,7 +36,7 @@ function! ale#handlers#css#HandleCSSLintFormat(buffer, lines) abort
endfunction endfunction
function! ale#handlers#css#HandleStyleLintFormat(buffer, lines) abort function! ale#handlers#css#HandleStyleLintFormat(buffer, lines) abort
let l:exception_pattern = '\v^(Syntax)?Error:' let l:exception_pattern = '\v^Error:'
for l:line in a:lines[:10] for l:line in a:lines[:10]
if len(matchlist(l:line, l:exception_pattern)) > 0 if len(matchlist(l:line, l:exception_pattern)) > 0

View File

@@ -1,8 +1,6 @@
" Author: rhysd https://rhysd.github.io " Author: rhysd https://rhysd.github.io
" Description: Redpen, a proofreading tool (http://redpen.cc) " Description: Redpen, a proofreading tool (http://redpen.cc)
call ale#Set('redpen_options', '')
function! ale#handlers#redpen#HandleRedpenOutput(buffer, lines) abort function! ale#handlers#redpen#HandleRedpenOutput(buffer, lines) abort
" Only one file was passed to redpen. So response array has only one " Only one file was passed to redpen. So response array has only one
" element. " element.
@@ -65,14 +63,3 @@ function! ale#handlers#redpen#HandleRedpenOutput(buffer, lines) abort
return l:output return l:output
endfunction endfunction
" Define the redpen linter for a given filetype.
function! ale#handlers#redpen#DefineLinter(filetype) abort
call ale#linter#Define(a:filetype, {
\ 'name': 'redpen',
\ 'executable': 'redpen',
\ 'command': {b -> 'redpen -f ' . a:filetype . ' -r json' . ale#Pad(ale#Var(b, 'redpen_options')) . ' %t'},
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
\})
endfunction

View File

@@ -63,12 +63,6 @@ function! ale#handlers#shellcheck#GetCommand(buffer, version) abort
\ . ' -f ' . l:format . ' -' \ . ' -f ' . l:format . ' -'
endfunction endfunction
function! s:ShouldIgnoreErrorCode(buffer, code) abort
" Skip warnings for trailing whitespace if the option is off.
return a:code is# 'SC1101'
\ && !ale#Var(a:buffer, 'warn_about_trailing_whitespace')
endfunction
function! s:HandleShellcheckJSON(buffer, lines) abort function! s:HandleShellcheckJSON(buffer, lines) abort
try try
let l:errors = json_decode(a:lines[0]) let l:errors = json_decode(a:lines[0])
@@ -93,17 +87,11 @@ function! s:HandleShellcheckJSON(buffer, lines) abort
let l:type = 'W' let l:type = 'W'
endif endif
let l:code = 'SC' . l:error['code']
if s:ShouldIgnoreErrorCode(a:buffer, l:code)
continue
endif
let l:item = { let l:item = {
\ 'lnum': l:error['line'], \ 'lnum': l:error['line'],
\ 'type': l:type, \ 'type': l:type,
\ 'text': l:error['message'], \ 'text': l:error['message'],
\ 'code': l:code, \ 'code': 'SC' . l:error['code'],
\ 'detail': l:error['message'] . "\n\nFor more information:\n https://www.shellcheck.net/wiki/SC" . l:error['code'], \ 'detail': l:error['message'] . "\n\nFor more information:\n https://www.shellcheck.net/wiki/SC" . l:error['code'],
\} \}
@@ -119,6 +107,7 @@ function! s:HandleShellcheckJSON(buffer, lines) abort
let l:item.end_lnum = l:error['endLine'] let l:item.end_lnum = l:error['endLine']
endif endif
" If the filename is something like <stdin>, <nofile> or -, then " If the filename is something like <stdin>, <nofile> or -, then
" this is an error for the file we checked. " this is an error for the file we checked.
if has_key(l:error, 'file') if has_key(l:error, 'file')
@@ -146,17 +135,11 @@ function! s:HandleShellcheckGCC(buffer, lines) abort
let l:type = 'W' let l:type = 'W'
endif endif
let l:code = l:match[6]
if s:ShouldIgnoreErrorCode(a:buffer, l:code)
continue
endif
let l:item = { let l:item = {
\ 'lnum': str2nr(l:match[2]), \ 'lnum': str2nr(l:match[2]),
\ 'type': l:type, \ 'type': l:type,
\ 'text': l:match[5], \ 'text': l:match[5],
\ 'code': l:code, \ 'code': l:match[6],
\ 'detail': l:match[5] . "\n\nFor more information:\n https://www.shellcheck.net/wiki/" . l:match[6], \ 'detail': l:match[5] . "\n\nFor more information:\n https://www.shellcheck.net/wiki/" . l:match[6],
\} \}

View File

@@ -447,3 +447,32 @@ function! ale#linter#GetAddress(buffer, linter) abort
return type(l:Address) is v:t_func ? l:Address(a:buffer) : l:Address return type(l:Address) is v:t_func ? l:Address(a:buffer) : l:Address
endfunction endfunction
" Get the project root for a linter.
" If |b:ale_root| or |g:ale_root| is set to either a String or a Dict mapping
" linter names to roots or callbacks, return that value immediately. When no
" value is available, fall back to the linter-specific configuration.
function! ale#linter#GetRoot(buffer, linter) abort
let l:buffer_ale_root = getbufvar(a:buffer, 'ale_root', {})
if type(l:buffer_ale_root) is v:t_string
return l:buffer_ale_root
endif
if has_key(l:buffer_ale_root, a:linter.name)
let l:Root = l:buffer_ale_root[a:linter.name]
return type(l:Root) is v:t_func ? l:Root(a:buffer) : l:Root
endif
if has_key(g:ale_root, a:linter.name)
let l:Root = g:ale_root[a:linter.name]
return type(l:Root) is v:t_func ? l:Root(a:buffer) : l:Root
endif
if has_key(a:linter, 'project_root')
let l:Root = a:linter.project_root
return type(l:Root) is v:t_func ? l:Root(a:buffer) : l:Root
endif
return ''
endfunction

View File

@@ -531,7 +531,7 @@ function! ale#lsp#StartProgram(conn_id, executable, command) abort
if g:ale_use_neovim_lsp_api && !l:conn.is_tsserver if g:ale_use_neovim_lsp_api && !l:conn.is_tsserver
" For Windows from 'cmd /s/c "foo bar"' we need 'foo bar' " For Windows from 'cmd /s/c "foo bar"' we need 'foo bar'
let l:lsp_cmd = has('win32') && type(a:command) is v:t_string let l:lsp_cmd = has('win32') && type(a:command) is v:t_string
\ ? ['cmd', '/s/c', a:command[10:-2]] \ ? ['cmd', '/s/c/', a:command[10:-2]]
\ : a:command \ : a:command
" Always call lsp.start, which will either create or re-use a " Always call lsp.start, which will either create or re-use a

View File

@@ -28,7 +28,7 @@ function! ale#lsp#response#ReadDiagnostics(diagnostics) abort
for l:diagnostic in a:diagnostics for l:diagnostic in a:diagnostics
let l:severity = get(l:diagnostic, 'severity', 0) let l:severity = get(l:diagnostic, 'severity', 0)
let l:loclist_item = { let l:loclist_item = {
\ 'text': l:diagnostic.message, \ 'text': substitute(l:diagnostic.message, '\(\r\n\|\n\|\r\)', ' ', 'g'),
\ 'type': 'E', \ 'type': 'E',
\ 'lnum': l:diagnostic.range.start.line + 1, \ 'lnum': l:diagnostic.range.start.line + 1,
\ 'col': l:diagnostic.range.start.character + 1, \ 'col': l:diagnostic.range.start.character + 1,

View File

@@ -296,44 +296,6 @@ function! ale#lsp_linter#GetConfig(buffer, linter) abort
return {} return {}
endfunction endfunction
function! ale#lsp_linter#FindProjectRoot(buffer, linter) abort
let l:buffer_ale_root = getbufvar(a:buffer, 'ale_root', {})
if type(l:buffer_ale_root) is v:t_string
return l:buffer_ale_root
endif
" Try to get a buffer-local setting for the root
if has_key(l:buffer_ale_root, a:linter.name)
let l:Root = l:buffer_ale_root[a:linter.name]
if type(l:Root) is v:t_func
return l:Root(a:buffer)
else
return l:Root
endif
endif
" Try to get a global setting for the root
if has_key(g:ale_root, a:linter.name)
let l:Root = g:ale_root[a:linter.name]
if type(l:Root) is v:t_func
return l:Root(a:buffer)
else
return l:Root
endif
endif
" Fall back to the linter-specific configuration
if has_key(a:linter, 'project_root')
let l:Root = a:linter.project_root
return type(l:Root) is v:t_func ? l:Root(a:buffer) : l:Root
endif
return ale#util#GetFunction(a:linter.project_root_callback)(a:buffer)
endfunction
" This function is accessible so tests can call it. " This function is accessible so tests can call it.
function! ale#lsp_linter#OnInit(linter, details, Callback) abort function! ale#lsp_linter#OnInit(linter, details, Callback) abort
@@ -504,7 +466,7 @@ endfunction
function! ale#lsp_linter#StartLSP(buffer, linter, Callback) abort function! ale#lsp_linter#StartLSP(buffer, linter, Callback) abort
let l:command = '' let l:command = ''
let l:address = '' let l:address = ''
let l:root = ale#lsp_linter#FindProjectRoot(a:buffer, a:linter) let l:root = ale#linter#GetRoot(a:buffer, a:linter)
if empty(l:root) && a:linter.lsp isnot# 'tsserver' if empty(l:root) && a:linter.lsp isnot# 'tsserver'
" If there's no project root, then we can't check files with LSP, " If there's no project root, then we can't check files with LSP,

View File

@@ -62,36 +62,6 @@ function! ale#path#FindNearestDirectory(buffer, directory_name) abort
return '' return ''
endfunction endfunction
" Given a buffer and a filename, find the nearest file or directory by
" searching upwards through the paths relative to the given buffer.
function! ale#path#FindNearestFileOrDirectory(buffer, filename) abort
let l:buffer_filename = fnamemodify(bufname(a:buffer), ':p')
let l:buffer_filename = fnameescape(l:buffer_filename)
let l:relative_path_file = findfile(a:filename, l:buffer_filename . ';')
let l:relative_path_dir = finddir(a:filename, l:buffer_filename . ';')
" If we find both a file and directory, choose the shorter response by
" making the longer one empty instead.
if !empty(l:relative_path_file) && !empty(l:relative_path_dir)
if strlen(l:relative_path_file) > strlen(l:relative_path_dir)
let l:relative_path_dir = ''
else
let l:relative_path_file = ''
endif
endif
if !empty(l:relative_path_file)
return fnamemodify(l:relative_path_file, ':p')
endif
if !empty(l:relative_path_dir)
return fnamemodify(l:relative_path_dir, ':p')
endif
return ''
endfunction
" Given a buffer, a string to search for, and a global fallback for when " Given a buffer, a string to search for, and a global fallback for when
" the search fails, look for a file in parent paths, and if that fails, " the search fails, look for a file in parent paths, and if that fails,
" use the global fallback path instead. " use the global fallback path instead.

View File

@@ -61,6 +61,12 @@ endfunction
" through paths, including the current directory, until no __init__.py files " through paths, including the current directory, until no __init__.py files
" is found. " is found.
function! ale#python#FindProjectRoot(buffer) abort function! ale#python#FindProjectRoot(buffer) abort
let l:root = ale#linter#GetRoot(a:buffer, {'name': 'python'})
if !empty(l:root)
return l:root
endif
let l:ini_root = ale#python#FindProjectRootIni(a:buffer) let l:ini_root = ale#python#FindProjectRootIni(a:buffer)
if !empty(l:ini_root) if !empty(l:ini_root)
@@ -200,7 +206,7 @@ function! ale#python#PoetryPresent(buffer) abort
return findfile('poetry.lock', expand('#' . a:buffer . ':p:h') . ';') isnot# '' return findfile('poetry.lock', expand('#' . a:buffer . ':p:h') . ';') isnot# ''
endfunction endfunction
" Detects whether a uv environment is present. " Detects whether a poetry environment is present.
function! ale#python#UvPresent(buffer) abort function! ale#python#UvPresent(buffer) abort
return findfile('uv.lock', expand('#' . a:buffer . ':p:h') . ';') isnot# '' return findfile('uv.lock', expand('#' . a:buffer . ':p:h') . ';') isnot# ''
endfunction endfunction

View File

@@ -1,5 +1,4 @@
let g:ale_default_navigation = get(g:, 'ale_default_navigation', 'buffer') let g:ale_default_navigation = get(g:, 'ale_default_navigation', 'buffer')
let g:ale_references_show_contents = get(g:, 'ale_references_show_contents', 1)
let s:references_map = {} let s:references_map = {}
@@ -68,33 +67,17 @@ function! ale#references#HandleTSServerResponse(conn_id, response) abort
endfunction endfunction
function! ale#references#FormatLSPResponseItem(response_item, options) abort function! ale#references#FormatLSPResponseItem(response_item, options) abort
let l:line_text = ''
let l:line= a:response_item.range.start.line
let l:col = a:response_item.range.start.character
let l:filename = ale#util#ToResource(a:response_item.uri)
if get(a:options, 'show_contents') == 1
try
let l:line_text = substitute(readfile(l:filename)[l:line], '^\s*\(.\{-}\)\s*$', '\1', '')
catch
" This happens in tests
endtry
endif
if get(a:options, 'open_in') is# 'quickfix' if get(a:options, 'open_in') is# 'quickfix'
return { return {
\ 'filename': l:filename, \ 'filename': ale#util#ToResource(a:response_item.uri),
\ 'lnum': a:response_item.range.start.line + 1, \ 'lnum': a:response_item.range.start.line + 1,
\ 'col': a:response_item.range.start.character + 1, \ 'col': a:response_item.range.start.character + 1,
\ 'text': l:line_text,
\} \}
else else
return { return {
\ 'filename': l:filename, \ 'filename': ale#util#ToResource(a:response_item.uri),
\ 'line': l:line + 1, \ 'line': a:response_item.range.start.line + 1,
\ 'column': l:col + 1, \ 'column': a:response_item.range.start.character + 1,
\ 'match': l:line_text,
\} \}
endif endif
endfunction endfunction
@@ -164,7 +147,6 @@ function! s:OnReady(line, column, options, linter, lsp_details) abort
let s:references_map[l:request_id] = { let s:references_map[l:request_id] = {
\ 'use_relative_paths': has_key(a:options, 'use_relative_paths') ? a:options.use_relative_paths : 0, \ 'use_relative_paths': has_key(a:options, 'use_relative_paths') ? a:options.use_relative_paths : 0,
\ 'open_in': get(a:options, 'open_in', 'current-buffer'), \ 'open_in': get(a:options, 'open_in', 'current-buffer'),
\ 'show_contents': a:options.show_contents,
\} \}
endfunction endfunction
@@ -183,8 +165,6 @@ function! ale#references#Find(...) abort
let l:options.open_in = 'vsplit' let l:options.open_in = 'vsplit'
elseif l:option is? '-quickfix' elseif l:option is? '-quickfix'
let l:options.open_in = 'quickfix' let l:options.open_in = 'quickfix'
elseif l:option is? '-contents'
let l:options.show_contents = 1
endif endif
endfor endfor
endif endif
@@ -197,10 +177,6 @@ function! ale#references#Find(...) abort
endif endif
endif endif
if !has_key(l:options, 'show_contents')
let l:options.show_contents = ale#Var(bufnr(''), 'references_show_contents')
endif
let l:buffer = bufnr('') let l:buffer = bufnr('')
let [l:line, l:column] = getpos('.')[1:2] let [l:line, l:column] = getpos('.')[1:2]
let l:column = min([l:column, len(getline(l:line))]) let l:column = min([l:column, len(getline(l:line))])

View File

@@ -44,39 +44,5 @@ g:ale_ansible_ansible_lint_executable
This variable can be changed to modify the executable used for ansible-lint. This variable can be changed to modify the executable used for ansible-lint.
*ale-options.ansible_ansible_lint_auto_pipenv*
*g:ale_ansible_ansible_lint_auto_pipenv*
*b:ale_ansible_ansible_lint_auto_pipenv*
ansible_ansible_lint_auto_pipenv
g:ale_ansible_ansible_lint_auto_pipenv
Type: |Number|
Default: `0`
Detect whether the file is inside a pipenv, and set the executable to `pipenv`
if true. This is overridden by a manually-set executable.
*ale-options.ansible_ansible_lint_auto_poetry*
*g:ale_ansible_ansible_lint_auto_poetry*
*b:ale_ansible_ansible_lint_auto_poetry*
ansible_ansible_lint_auto_poetry
g:ale_ansible_ansible_lint_auto_poetry
Type: |Number|
Default: `0`
Detect whether the file is inside a poetry, and set the executable to `poetry`
if true. This is overridden by a manually-set executable.
*ale-options.ansible_ansible_lint_auto_uv*
*g:ale_ansible_ansible_lint_auto_uv*
*b:ale_ansible_ansible_lint_auto_uv*
ansible_ansible_lint_auto_uv
g:ale_ansible_ansible_lint_auto_uv
Type: |Number|
Default: `0`
Set the executable to `uv` if true. This is overridden by a manually-set
executable.
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -20,11 +20,5 @@ textlint *ale-asciidoc-textlint*
See |ale-text-textlint| See |ale-text-textlint|
===============================================================================
redpen *ale-asciidoc-redpen*
See |ale-redpen-options|
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -26,7 +26,7 @@ g:ale_c_always_make
c_build_dir_names c_build_dir_names
g:ale_c_build_dir_names g:ale_c_build_dir_names
Type: |List| Type: |List|
Default: `['build', 'build/Debug', 'build/Release', 'bin']` Default: `['build', 'bin']`
A list of directory names to be used when searching upwards from C files A list of directory names to be used when searching upwards from C files
to discover compilation databases with. For directory named `'foo'`, ALE to discover compilation databases with. For directory named `'foo'`, ALE

View File

@@ -41,51 +41,5 @@ Just put the following in `ftdetect/cloudformation.vim`: >
This will get both cloudformation and yaml linters to work on any file with This will get both cloudformation and yaml linters to work on any file with
`.template.yaml` extension. `.template.yaml` extension.
===============================================================================
checkov *ale-cloudformation-checkov*
*ale-options.cloudformation_checkov_executable*
*g:ale_cloudformation_checkov_executable*
*b:ale_cloudformation_checkov_executable*
cloudformation_checkov_executable
g:ale_cloudformation_checkov_executable
Type: |String|
Default: `'checkov'`
This variable can be changed to use a different executable for checkov.
*ale-options.cloudformation_checkov_options*
*g:ale_cloudformation_checkov_options*
*b:ale_cloudformation_checkov_options*
cloudformation_checkov_options
g:ale_cloudformation_checkov_options
Type: |String|
Default: `''`
This variable can be changed to set additional options for checkov.
-------------------------------------------------------------------------------
Configuration
To get chekov to work with cloudformation files (rather than general yaml
files) we must set the buffer |filetype| to `yaml.cloudformation`. This
causes ALE to lint the file with linters configured for cloudformation and
YAML files.
One option is to put the following in `ftdetect/cloudformation.vim`: >
au BufRead,BufNewFile *.template.yaml set filetype=yaml.cloudformation
This will get both cloudformation and yaml linters to work on any file with
`.template.yaml` extension.
Another option is to check for the presence of 'AWSTemplateFormatVersion' in
the yaml file: >
au BufRead,BufNewFile *.yaml,*.yml if search('AWSTemplateFormatVersion', 'nw') | set filetype=yaml.cloudformation | endif
<
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -85,11 +85,9 @@ The following general coding standards should be adhered to for Vim code.
* Try to keep lines no longer than 80 characters, but this isn't an absolute * Try to keep lines no longer than 80 characters, but this isn't an absolute
requirement. requirement.
* Use 4 spaces for every level of indentation in Vim code. * Use 4 spaces for every level of indentation in Vim code.
* Add a blank line before every `function`, `if`, `for`, `while`, `try`, or `return`, * Add a blank line before every `function`, `if`, `for`, `while`, or `return`,
which doesn't start a new level of indentation. When adding more code on the which doesn't start a new level of indentation. This makes the logic in
same indentation level, also add blank lines after every corresponding end your code easier to follow.
for those mentioned keywords. This makes the logic in your code easier to
follow.
* End every file with a trailing newline character, but not with extra blank * End every file with a trailing newline character, but not with extra blank
lines. Remove trailing whitespace from the ends of lines. lines. Remove trailing whitespace from the ends of lines.
* Write the full names of commands instead of abbreviations. For example, write * Write the full names of commands instead of abbreviations. For example, write
@@ -426,11 +424,11 @@ running tests. >
Add-Type -A System.IO.Compression.FileSystem Add-Type -A System.IO.Compression.FileSystem
Invoke-WebRequest https://github.com/dense-analysis/ale/releases/download/v4.0.0/vim80-586w32.zip -OutFile C:\vim.zip Invoke-WebRequest ftp://ftp.vim.org/pub/vim/pc/vim80-586w32.zip -OutFile C:\vim.zip
[IO.Compression.ZipFile]::ExtractToDirectory('C:\vim.zip', 'C:\vim') [IO.Compression.ZipFile]::ExtractToDirectory('C:\vim.zip', 'C:\vim')
rm C:\vim.zip rm C:\vim.zip
Invoke-WebRequest https://github.com/dense-analysis/ale/releases/download/v4.0.0/vim80-586rt.zip -OutFile C:\rt.zip Invoke-WebRequest ftp://ftp.vim.org/pub/vim/pc/vim80-586rt.zip -OutFile C:\rt.zip
[IO.Compression.ZipFile]::ExtractToDirectory('C:\rt.zip', 'C:\vim') [IO.Compression.ZipFile]::ExtractToDirectory('C:\rt.zip', 'C:\vim')
rm C:\rt.zip rm C:\rt.zip

View File

@@ -139,28 +139,8 @@ g:ale_elixir_lexical_release
For example, set release to: `/home/projects/lexical/_build/dev/rel/lexical` For example, set release to: `/home/projects/lexical/_build/dev/rel/lexical`
There are currently no configuration options for lexical. There are currnetly no configuration options for lexical.
===============================================================================
expert *ale-elixir-expert*
Expert (https://github.com/elixir-lang/expert)
*ale-options.elixir_expert_executable*
*g:ale_elixir_expert_executable*
*b:ale_elixir_expert_executable*
elixir_expert_executable
g:ale_elixir_expert_executable
Type: |String|
Default: `/usr/bin/elixir-expert`
Location of the expert executable.
For example, set release to:
`/home/projects/expert/apps/expert/burrito_out/expert_linux_amd64`
There are currently no configuration options for expert.
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -2,29 +2,6 @@
ALE Fortran Integration *ale-fortran-options* ALE Fortran Integration *ale-fortran-options*
===============================================================================
fortitude *ale-fortran-fortitude*
*ale-options.fortran_fortitude_executable*
*g:fortran_fortitude_executable*
*b:fortran_fortitude_executable*
fortran_fortitude_executable
g:fortran_fortitude_executable
Type: |String|
Default: 'fortitude'
This variable can be changed to modify the executable used for fortitude.
*ale-options.fortran_fortitude_options*
*g:fortran_fortitude_options*
*b:fortran_fortitude_options*
fortran_fortitude_options
g:fortran_fortitude_options
Type: |String|
Default: ''
This variable can be changed to modify options given to fortitude check.
=============================================================================== ===============================================================================
gcc *ale-fortran-gcc* gcc *ale-fortran-gcc*
@@ -86,5 +63,6 @@ g:ale_fortran_language_server_use_global
See |ale-integrations-local-executables| See |ale-integrations-local-executables|
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -206,24 +206,6 @@ g:ale_html_stylelint_use_global
See |ale-integrations-local-executables| See |ale-integrations-local-executables|
===============================================================================
superhtml *ale-html-superhtml*
g:ale_html_superhtml_executable *g:ale_html_superhtml_executable*
*b:ale_html_superhtml_executable*
Type: |String|
Default: `'superhtml'`
This variable can be changed to use a different executable for superhtml.
g:ale_html_superhtml_use_global *g:ale_html_superhtml_use_global*
*b:ale_html_superhtml_use_global*
Type: |Number|
Default: `get(g:, 'ale_use_global_executables', 0)`
See |ale-integrations-local-executables|
=============================================================================== ===============================================================================
tidy *ale-html-tidy* tidy *ale-html-tidy*
@@ -283,12 +265,6 @@ g:ale_html_tidy_use_global
See |ale-integrations-local-executables| See |ale-integrations-local-executables|
===============================================================================
ty *ale-html-ty*
`ty` is a Python type checker. See |ale-python-ty| for configuration options.
=============================================================================== ===============================================================================
vscodehtml *ale-html-vscode* vscodehtml *ale-html-vscode*

View File

@@ -8,9 +8,5 @@ djlint *ale-jinja-djlint*
See |ale-html-djlint| See |ale-html-djlint|
===============================================================================
j2lint *ale-jinja-j2lint*
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -49,22 +49,17 @@ g:ale_lua_language_server_executable
If you have compiled the language server yourself in `/some/path`, the path If you have compiled the language server yourself in `/some/path`, the path
will be `'/some/path/bin/lua-language-server'`. will be `'/some/path/bin/lua-language-server'`.
*ale-options.lua_language_server_config* *ale-options.lua_lua_language_server_config*
*g:ale_lua_language_server_config* *g:ale_lua_lua_language_server_config*
*b:ale_lua_language_server_config* *b:ale_lua_lua_language_server_config*
lua_language_server_config lua_lua_language_server_config
g:ale_lua_language_server_config g:ale_lua_lua_language_server_config
Type: |Dictionary| Type: |Dictionary|
Default: `{}` Default: `{}`
Dictionary containing configuration settings that will be passed to the Dictionary containing configuration settings that will be passed to the
language server. language server.
For available configuration parameters, see `Settings` on the luals wiki:
https://luals.github.io/wiki/settings/
=============================================================================== ===============================================================================
luac *ale-lua-luac* luac *ale-lua-luac*

View File

@@ -225,11 +225,5 @@ write-good *ale-markdown-write-good*
See |ale-write-good-options| See |ale-write-good-options|
===============================================================================
redpen *ale-markdown-redpen*
See |ale-redpen-options|
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -35,42 +35,6 @@ g:ale_perl_perl_options
invocation. invocation.
===============================================================================
perl language server *ale-perl-languageserver*
perl_perl_executable
g:ale_perl_perl_executable
Type: |String|
Default: `'perl'`
The language server will use the same variable as |ale-perl-perl| to launch
the perl executable with the Perl::LanguageServer module.
*ale-options.perl_languageserver_config*
*g:ale_perl_languageserver_config*
*b:ale_perl_languageserver_config*
perl_languageserver_config
g:ale_perl_languageserver_config
Type: |Dictionary|
Default: `'{}'`
This variable can be changed to customize the lsp_config (sent as a
workspace/didChangeConfiguration command).
For example: >
let g:ale_perl_languageserver_config = {
\ 'perl': {
\ 'fileFilter': [''],
\ 'logLevel': 2,
\ 'logFile': '/tmp/plls-log.txt',
\ 'perlInc': ['/usr/share/perl5/', '/usr/local/share/perl5/' ],
\ },
\}
<
For all available options and explanations, visit
https://metacpan.org/pod/Perl::LanguageServer#Extension-Settings
=============================================================================== ===============================================================================
perlcritic *ale-perl-perlcritic* perlcritic *ale-perl-perlcritic*

View File

@@ -78,36 +78,6 @@ g:ale_php_phan_use_client
instead of the phan standalone. instead of the phan standalone.
===============================================================================
phpactor *ale-php-phpactor*
*ale-options.php_phpactor_executable*
*g:ale_php_phpactor_executable*
*b:ale_php_phpactor_executable*
php_phpactor_executable
g:ale_php_phpactor_executable
Type: |String|
Default: `'phpactor'`
This variable sets executable used for phpactor.
php_phpactor_init_options
g:ale_php_phpactor_init_options
Type: |Dictionary|
Default: `'{}'`
This variable can be changed to customize the LSP initialization_options.
For example: >
let g:ale_php_phpactor_init_options = {
\ 'language_server_phpstan.enabled': v:false,
\ 'language_server_psalm.enabled': v:false,
\ 'worse_reflection.stub_dir': '%application_root%/.php-stubs'
\}
<
For all available options and explanations, visit
https://phpactor.readthedocs.io/en/master/reference/configuration.html
=============================================================================== ===============================================================================
phpcbf *ale-php-phpcbf* phpcbf *ale-php-phpcbf*

View File

@@ -55,6 +55,9 @@ For some linters, ALE will search for a Python project root by looking at the
files in directories on or above where a file being checked is. ALE applies files in directories on or above where a file being checked is. ALE applies
the following methods, in order: the following methods, in order:
If |g:ale_root| or |b:ale_root| provides a value, that value is used as the
project root instead and the searching described below is skipped.
1. Find the first directory containing a common Python configuration file. 1. Find the first directory containing a common Python configuration file.
2. If no configuration file can be found, use the first directory which does 2. If no configuration file can be found, use the first directory which does
not contain a readable file named `__init__.py`. not contain a readable file named `__init__.py`.
@@ -1465,7 +1468,7 @@ g:ale_python_pylsp_executable
See |ale-integrations-local-executables| See |ale-integrations-local-executables|
Set this to `'pipenv'` to invoke `'pipenv` `run` `pylsp'`. Set this to `'pipenv'` to invoke `'pipenv` `run` `pylsp'`.
Set this to `'poetry'` to invoke `'poetry` `run` `pylsp'`. Set this to `'poetry'` to invoke `'poetry` `run` `pyls'`.
*ale-options.python_pylsp_use_global* *ale-options.python_pylsp_use_global*
*g:ale_python_pylsp_use_global* *g:ale_python_pylsp_use_global*
@@ -2106,92 +2109,6 @@ g:ale_python_ruff_format_auto_uv
executable. executable.
===============================================================================
ty *ale-python-ty*
`ty` will be run from a detected project root, per |ale-python-root|.
*ale-options.python_ty_change_directory*
*g:ale_python_ty_change_directory*
*b:ale_python_ty_change_directory*
python_ty_change_directory
g:ale_python_ty_change_directory
Type: |Number|
Default: `1`
If set to `1`, `ty` will be run from a detected project root, per
|ale-python-root|. If no project root is detected, `ty` will be run from the
buffer's directory.
*ale-options.python_ty_executable*
*g:ale_python_ty_executable*
*b:ale_python_ty_executable*
python_ty_executable
g:ale_python_ty_executable
Type: |String|
Default: `'ty'`
See |ale-integrations-local-executables|
Set this to `'pipenv'` to invoke `'pipenv` `run` `ty` `check'`.
Set this to `'poetry'` to invoke `'poetry` `run` `ty` `check'`.
Set this to `'uv'` to invoke `'uv` `run` `ty` `check'`.
*ale-options.python_ty_options*
*g:ale_python_ty_options*
*b:ale_python_ty_options*
python_ty_options
g:ale_python_ty_options
Type: |String|
Default: `''`
This variable can be changed to add command-line arguments to the ty
invocation.
*ale-options.python_ty_use_global*
*g:ale_python_ty_use_global*
*b:ale_python_ty_use_global*
python_ty_use_global
g:ale_python_ty_use_global
Type: |Number|
Default: `get(g:, 'ale_use_global_executables', 1)`
See |ale-integrations-local-executables|
*ale-options.python_ty_auto_pipenv*
*g:ale_python_ty_auto_pipenv*
*b:ale_python_ty_auto_pipenv*
python_ty_auto_pipenv
g:ale_python_ty_auto_pipenv
Type: |Number|
Default: `0`
Detect whether the file is inside a pipenv, and set the executable to `pipenv`
if true. This is overridden by a manually-set executable.
*ale-options.python_ty_auto_poetry*
*g:ale_python_ty_auto_poetry*
*b:ale_python_ty_auto_poetry*
python_ty_auto_poetry
g:ale_python_ty_auto_poetry
Type: |Number|
Default: `0`
Detect whether the file is inside a poetry, and set the executable to `poetry`
if true. This is overridden by a manually-set executable.
*ale-options.python_ty_auto_uv*
*g:ale_python_ty_auto_uv*
*b:ale_python_ty_auto_uv*
python_ty_auto_uv
g:ale_python_ty_auto_uv
Type: |Number|
Default: `0`
Set the executable to `uv` if true. This is overridden by a manually-set
executable.
=============================================================================== ===============================================================================
unimport *ale-python-unimport* unimport *ale-python-unimport*

View File

@@ -267,23 +267,6 @@ g:ale_ruby_sorbet_enable_watchman
to files from outside of vim. Defaults to disable watchman because it to files from outside of vim. Defaults to disable watchman because it
requires watchman to be installed separately from sorbet. requires watchman to be installed separately from sorbet.
*ale-options.ruby_sorbet_initialization_options*
*g:ale_ruby_sorbet_initialization_options*
*b:ale_ruby_sorbet_initialization_options*
ruby_sorbet_initialization_options
g:ale_ruby_sorbet_initialization_options
Type: |Dictionary|
Default: `{ 'highlightUntyped': v:false }`
This variable can be changed to modify initialization options provided to
the Sorbet language server. By default, a minimal object with defaults is
provided to ensure proper LSP initialization.
Setting this variable to a an empty object will cause sorbet LSP to
fail during initialization.
See https://sorbet.org/docs/lsp#initialize-request for available options.
=============================================================================== ===============================================================================
standardrb *ale-ruby-standardrb* standardrb *ale-ruby-standardrb*

View File

@@ -33,8 +33,8 @@ Integration Information
5. rustfmt -- If you have `rustfmt` installed, you can use it as a fixer to 5. rustfmt -- If you have `rustfmt` installed, you can use it as a fixer to
consistently reformat your Rust code. consistently reformat your Rust code.
Only cargo and rust-analyzer are enabled by default. To switch to using Only cargo and rust-analyze are enabled by default. To switch to using rustc
rustc instead of cargo, configure |b:ale_linters| in your ftplugin file instead of cargo, configure |b:ale_linters| in your ftplugin file
appropriately: > appropriately: >
" See the help text for the option for more information. " See the help text for the option for more information.

View File

@@ -33,8 +33,8 @@ g:ale_scala_metals_project_root
Default: `''` Default: `''`
By default the project root is found by searching upwards for `build.sbt`, By default the project root is found by searching upwards for `build.sbt`,
`build.sc`, `build.mill`, `.bloop` or `.metals`. If the project root is elsewhere, `build.sc`, `.bloop` or `.metals`. If the project root is elsewhere, you
you can override the project root directory. can override the project root directory.
=============================================================================== ===============================================================================

View File

@@ -121,7 +121,6 @@ Notes:
* `joker` * `joker`
* CloudFormation * CloudFormation
* `cfn-python-lint` * `cfn-python-lint`
* `checkov`
* CMake * CMake
* `cmake-format` * `cmake-format`
* `cmake-lint` * `cmake-lint`
@@ -180,7 +179,6 @@ Notes:
* `dialyxir` * `dialyxir`
* `dogma`!! * `dogma`!!
* `elixir-ls` * `elixir-ls`
* `expert`
* `lexical` * `lexical`
* `mix`!! * `mix`!!
* Elm * Elm
@@ -207,7 +205,6 @@ Notes:
* `fish` (-n flag) * `fish` (-n flag)
* `fish_indent` * `fish_indent`
* Fortran * Fortran
* `fortitude`
* `gcc` * `gcc`
* `language_server` * `language_server`
* Fountain * Fountain
@@ -290,7 +287,6 @@ Notes:
* `prettier` * `prettier`
* `proselint` * `proselint`
* `rustywind` * `rustywind`
* `superhtml`
* `tidy` * `tidy`
* `write-good` * `write-good`
* HTML Angular * HTML Angular
@@ -338,7 +334,6 @@ Notes:
* `xo` * `xo`
* Jinja * Jinja
* djlint * djlint
* j2lint
* JSON * JSON
* `VSCode JSON language server` * `VSCode JSON language server`
* `biome` * `biome`
@@ -476,7 +471,6 @@ Notes:
* Pawn * Pawn
* `uncrustify` * `uncrustify`
* Perl * Perl
* `languageserver`
* `perl -c` * `perl -c`
* `perl-critic` * `perl-critic`
* `perltidy` * `perltidy`
@@ -557,7 +551,6 @@ Notes:
* `reorder-python-imports` * `reorder-python-imports`
* ruff * ruff
* ruff-format * ruff-format
* `ty`
* `unimport` * `unimport`
* `vulture`!! * `vulture`!!
* `yapf` * `yapf`
@@ -705,7 +698,6 @@ Notes:
* `thriftcheck` * `thriftcheck`
* TOML * TOML
* `dprint` * `dprint`
* `tombi`
* TypeScript * TypeScript
* `biome` * `biome`
* `cspell` * `cspell`
@@ -730,7 +722,6 @@ Notes:
* `hdl-checker` * `hdl-checker`
* `iverilog` * `iverilog`
* slang * slang
* `verible`
* `verilator` * `verilator`
* `vlog` * `vlog`
* `xvlog` * `xvlog`

View File

@@ -111,11 +111,5 @@ g:ale_tex_texlab_config
let g:ale_tex_texlab_config = {"build":{"onSave":v:true}} let g:ale_tex_texlab_config = {"build":{"onSave":v:true}}
< <
===============================================================================
redpen *ale-tex-redpen*
See |ale-redpen-options|
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -51,11 +51,5 @@ write-good *ale-text-write-good*
See |ale-write-good-options| See |ale-write-good-options|
===============================================================================
redpen *ale-text-redpen*
See |ale-redpen-options|
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -8,70 +8,5 @@ dprint *ale-toml-dprint*
See |ale-dprint-options| and https://dprint.dev/plugins/toml See |ale-dprint-options| and https://dprint.dev/plugins/toml
===============================================================================
tombi *ale-toml-tombi*
`'tombi'` is a TOML formatter, linter, and language server.
*ale-options.toml_tombi_executable*
*g:ale_toml_tombi_executable*
*b:ale_toml_tombi_executable*
toml_tombi_executable
g:ale_toml_tombi_executable
Type: |String|
Default: `'tombi'`
This variable can be modified to change the executable path for
`tombi`.
*ale-options.toml_tombi_online*
*g:ale_toml_tombi_online*
*b:ale_toml_tombi_online*
toml_tombi_online
g:ale_toml_tombi_online
Type: |Boolean|
Default: `1`
This variable can be modified allow fetching remote schemas when using
`tombi`.
*ale-options.toml_tombi_lsp_options*
*g:ale_toml_tombi_lsp_options*
*b:ale_toml_tombi_lsp_options*
toml_tombi_lsp_options
g:ale_toml_tombi_lsp_options
Type: |String|
Default: `''`
This variable can be modified to provide options when using `tombi` as an
LSP server.
*ale-options.toml_tombi_format_options*
*g:ale_toml_tombi_format_options*
*b:ale_toml_tombi_format_options*
toml_tombi_format_options
g:ale_toml_tombi_format_options
Type: |String|
Default: `''`
This variable can be modified to provide options when using `tombi` as a
formatter.
*ale-options.toml_tombi_lint_options*
*g:ale_toml_tombi_lint_options*
*b:ale_toml_tombi_lint_options*
toml_tombi_lint_options
g:ale_toml_tombi_lint_options
Type: |String|
Default: `''`
This variable can be modified to provide options when using `tombi` as a
linter.
=============================================================================== ===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@@ -3,7 +3,7 @@ ALE Verilog/SystemVerilog Integration *ale-verilog-options*
=============================================================================== ===============================================================================
ALE can use eight different linters for Verilog HDL: ALE can use seven different linters for Verilog HDL:
HDL Checker HDL Checker
Using `hdl_checker --lsp` Using `hdl_checker --lsp`
@@ -14,9 +14,6 @@ ALE can use eight different linters for Verilog HDL:
slang: slang:
Using `slang -Weverything` Using `slang -Weverything`
verible_ls
Using `verible-verilog-ls`
verilator verilator
Using `verilator --lint-only -Wall` Using `verilator --lint-only -Wall`
@@ -38,12 +35,6 @@ defining 'g:ale_linters' variable: >
\ let g:ale_linters = {'systemverilog' : ['verilator'],} \ let g:ale_linters = {'systemverilog' : ['verilator'],}
< <
===============================================================================
ALE can use one fixer for Verilog HDL:
verible_fomat
Using `verible-verilog-format`
=============================================================================== ===============================================================================
General notes General notes
@@ -79,84 +70,18 @@ iverilog *ale-verilog-iverilog*
=============================================================================== ===============================================================================
slang *ale-verilog-slang* slang *ale-verilog-slang*
*ale-options.verilog_slang_options* *ale-options.verilog_slang_option*
*g:ale_verilog_slang_options* *g:ale_verilog_slang_option*
*b:ale_verilog_slang_options* *b:ale_verilog_slang_options*
verilog_slang_options verilog_slang_option
g:ale_verilog_slang_options g:ale_verilog_slang_option
Type: |String| Type: |String|
Default: `''` Default: `''`
This variable can be changed to modify 'slang' command arguments. This variable can be changed to modify 'slang' command arguments.
===============================================================================
verible_ls *ale-verilog-verible-ls*
*ale-config.verilog_verible_ls_executable*
*g:ale_verilog_verible_ls_executable*
*b:ale_verilog_verible_ls_executable*
verilog_verible_ls_executable
g:ale_verilog_verible_ls_executable
Type: |String|
Default: `'verible-verilog-ls'`
This variable can be modifies to change the executable path for `verible_ls`
*ale-config.verilog_verible_ls_config*
*g:ale_verilog_verible_ls_config*
*b:ale_verilog_verible_ls_config*
verilog_verible_ls_config
g:ale_verilog_verible_ls_config
Type: |Dictionary|
Default: `{}`
Dictionary with configuration settings for `verible_ls`
*ale-config.verilog_verible_ls_options*
*g:ale_verilog_verible_ls_options*
*b:ale_verilog_verible_ls_options*
verilog_verible_ls_options
g:ale_verilog_verible_ls_options
Type: |String|
Default: `'--rules_config_search'`
Additional flags for `verible_ls`
*ale-config.verilog_verible_ls_rules*
*g:ale_verilog_verible_ls_rules*
*b:ale_verilog_verible_ls_rules*
verilog_verible_ls_rules
g:ale_verilog_verible_ls_rules
Type: |String|
Default: `''`
Additional rules applied by `verible_ls`
=============================================================================== ===============================================================================
verible_format *ale-verilog-verible-format*
*ale-config.verilog_verible_format_executable*
*g:ale_verilog_verible_format_executable*
*b:ale_verilog_verible_format_executable*
verilog_verible_format_executable
g:ale_verilog_verible_format_executable
Type: |String|
Default: `'verible-verilog-format'`
This variable can be modifies to change the executable path for
`verible_format`
*ale-config.verilog_verible_format_options*
*g:ale_verilog_verible_format_options*
*b:ale_verilog_verible_format_options*
verilog_verible_format_options
g:ale_verilog_verible_format_options
Type: |String|
Default: `''`
Additional flags for `verible_format`
===============================================================================
verilator *ale-verilog-verilator* verilator *ale-verilog-verilator*
*ale-options.verilog_verilator_options* *ale-options.verilog_verilator_options*

View File

@@ -30,8 +30,7 @@ CONTENTS *ale-contents*
7.2 Options for cspell................|ale-cspell-options| 7.2 Options for cspell................|ale-cspell-options|
7.3 Options for languagetool..........|ale-languagetool-options| 7.3 Options for languagetool..........|ale-languagetool-options|
7.4 Options for write-good............|ale-write-good-options| 7.4 Options for write-good............|ale-write-good-options|
7.5 Options for redpen................|ale-redpen-options| 7.5 Other Linter/Fixer Options........|ale-other-integration-options|
7.6 Other Linter/Fixer Options........|ale-other-integration-options|
8. Commands/Keybinds....................|ale-commands| 8. Commands/Keybinds....................|ale-commands|
9. API..................................|ale-api| 9. API..................................|ale-api|
10. Special Thanks......................|ale-special-thanks| 10. Special Thanks......................|ale-special-thanks|
@@ -2270,16 +2269,6 @@ g:ale_popup_menu_enabled
This setting must be set to `true` or `1` before ALE is loaded for this This setting must be set to `true` or `1` before ALE is loaded for this
behavior to be enabled. See |ale-lint-settings-on-startup|. behavior to be enabled. See |ale-lint-settings-on-startup|.
*ale-options.references_show_contents*
*g:ale_references_show_contents*
references_show_contents
g:ale_references_show_contents
Type: |Boolean| or |Number|
Default: true
If set to `true` or `1`, matches found by `:ALEFindReferences` will be
shown with a preview of the matching line.
*ale-options.rename_tsserver_find_in_comments* *ale-options.rename_tsserver_find_in_comments*
*g:ale_rename_tsserver_find_in_comments* *g:ale_rename_tsserver_find_in_comments*
rename_tsserver_find_in_comments rename_tsserver_find_in_comments
@@ -2308,17 +2297,18 @@ g:ale_root
Type: |Dictionary| or |String| Type: |Dictionary| or |String|
Default: `{}` Default: `{}`
This option is used to determine the project root for a linter. If the value This option is used to determine the project root for a linter. When set to a
is a |Dictionary|, it maps a linter to either a |String| containing the |String| it will be used for all linters. When set to a |Dictionary|, the
project root or a |Funcref| to call to look up the root. The |Funcref| is keys are linter names and the values are either |Strings| containing project
provided the buffer number as its argument. roots or |Funcref|s which are passed the buffer number.
The buffer-specific variable may additionally be a string containing the The buffer-specific variable may additionally be a |String| containing the
project root itself. project root itself.
If neither variable yields a result, a linter-specific function is invoked to If a value can be found from either variable, ALE uses it directly and skips
detect a project root. If this, too, yields no result, and the linter is an searching for a project root. If no value is found, a linter-specific
LSP linter, it will not run. function is invoked to detect a project root. If this, too, yields no result
and the linter is an LSP linter, it will not run.
*ale-options.save_hidden* *ale-options.save_hidden*
*g:ale_save_hidden* *g:ale_save_hidden*
@@ -3332,24 +3322,7 @@ g:ale_writegood_use_global
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
7.6. Options for redpen *ale-redpen-options* 7.6. Other Linter/Fixer Options *ale-other-integration-options*
The options for `redpen` are shared between all filetypes, so options can
be configured once.
*ale-options.redpen_options*
*g:ale_redpen_options*
*b:ale_redpen_options*
redpen_options
g:ale_redpen_options
Type: |String|
Default: `''`
This variable can be set to pass additional options to redpen.
-------------------------------------------------------------------------------
7.7. Other Linter/Fixer Options *ale-other-integration-options*
ALE supports a very wide variety of tools. Other linter or fixer options are ALE supports a very wide variety of tools. Other linter or fixer options are
documented in additional help files. documented in additional help files.
@@ -3370,7 +3343,6 @@ documented in additional help files.
cspell................................|ale-asciidoc-cspell| cspell................................|ale-asciidoc-cspell|
write-good............................|ale-asciidoc-write-good| write-good............................|ale-asciidoc-write-good|
textlint..............................|ale-asciidoc-textlint| textlint..............................|ale-asciidoc-textlint|
redpen................................|ale-asciidoc-redpen|
asm.....................................|ale-asm-options| asm.....................................|ale-asm-options|
gcc...................................|ale-asm-gcc| gcc...................................|ale-asm-gcc|
llvm_mc...............................|ale-asm-llvm_mc| llvm_mc...............................|ale-asm-llvm_mc|
@@ -3419,7 +3391,6 @@ documented in additional help files.
joker.................................|ale-clojure-joker| joker.................................|ale-clojure-joker|
cloudformation..........................|ale-cloudformation-options| cloudformation..........................|ale-cloudformation-options|
cfn-python-lint.......................|ale-cloudformation-cfn-python-lint| cfn-python-lint.......................|ale-cloudformation-cfn-python-lint|
checkov...............................|ale-cloudformation-checkov|
cmake...................................|ale-cmake-options| cmake...................................|ale-cmake-options|
cmakelint.............................|ale-cmake-cmakelint| cmakelint.............................|ale-cmake-cmakelint|
cmake-lint............................|ale-cmake-cmake-lint| cmake-lint............................|ale-cmake-cmake-lint|
@@ -3490,7 +3461,6 @@ documented in additional help files.
credo.................................|ale-elixir-credo| credo.................................|ale-elixir-credo|
cspell................................|ale-elixir-cspell| cspell................................|ale-elixir-cspell|
lexical...............................|ale-elixir-lexical| lexical...............................|ale-elixir-lexical|
expert................................|ale-elixir-expert|
elm.....................................|ale-elm-options| elm.....................................|ale-elm-options|
elm-format............................|ale-elm-elm-format| elm-format............................|ale-elm-elm-format|
elm-ls................................|ale-elm-elm-ls| elm-ls................................|ale-elm-elm-ls|
@@ -3511,7 +3481,6 @@ documented in additional help files.
fish....................................|ale-fish-options| fish....................................|ale-fish-options|
fish_indent...........................|ale-fish-fish_indent| fish_indent...........................|ale-fish-fish_indent|
fortran.................................|ale-fortran-options| fortran.................................|ale-fortran-options|
fortitude.............................|ale-fortran-fortitude|
gcc...................................|ale-fortran-gcc| gcc...................................|ale-fortran-gcc|
language_server.......................|ale-fortran-language-server| language_server.......................|ale-fortran-language-server|
fountain................................|ale-fountain-options| fountain................................|ale-fountain-options|
@@ -3587,9 +3556,7 @@ documented in additional help files.
prettier..............................|ale-html-prettier| prettier..............................|ale-html-prettier|
rustywind.............................|ale-html-rustywind| rustywind.............................|ale-html-rustywind|
stylelint.............................|ale-html-stylelint| stylelint.............................|ale-html-stylelint|
superhtml.............................|ale-html-superhtml|
tidy..................................|ale-html-tidy| tidy..................................|ale-html-tidy|
ty....................................|ale-html-ty|
vscodehtml............................|ale-html-vscode| vscodehtml............................|ale-html-vscode|
write-good............................|ale-html-write-good| write-good............................|ale-html-write-good|
html angular template...................|ale-htmlangular-options| html angular template...................|ale-htmlangular-options|
@@ -3637,7 +3604,6 @@ documented in additional help files.
xo....................................|ale-javascript-xo| xo....................................|ale-javascript-xo|
jinja...................................|ale-jinja-options| jinja...................................|ale-jinja-options|
djlint................................|ale-jinja-djlint| djlint................................|ale-jinja-djlint|
j2lint................................|ale-jinja-j2lint|
json....................................|ale-json-options| json....................................|ale-json-options|
biome.................................|ale-json-biome| biome.................................|ale-json-biome|
clang-format..........................|ale-json-clangformat| clang-format..........................|ale-json-clangformat|
@@ -3700,7 +3666,6 @@ documented in additional help files.
remark-lint...........................|ale-markdown-remark-lint| remark-lint...........................|ale-markdown-remark-lint|
textlint..............................|ale-markdown-textlint| textlint..............................|ale-markdown-textlint|
write-good............................|ale-markdown-write-good| write-good............................|ale-markdown-write-good|
redpen................................|ale-markdown-redpen|
mercury.................................|ale-mercury-options| mercury.................................|ale-mercury-options|
mmc...................................|ale-mercury-mmc| mmc...................................|ale-mercury-mmc|
nasm....................................|ale-nasm-options| nasm....................................|ale-nasm-options|
@@ -3755,7 +3720,6 @@ documented in additional help files.
uncrustify............................|ale-pawn-uncrustify| uncrustify............................|ale-pawn-uncrustify|
perl....................................|ale-perl-options| perl....................................|ale-perl-options|
perl..................................|ale-perl-perl| perl..................................|ale-perl-perl|
perl language server..................|ale-perl-languageserver|
perlcritic............................|ale-perl-perlcritic| perlcritic............................|ale-perl-perlcritic|
perltidy..............................|ale-perl-perltidy| perltidy..............................|ale-perl-perltidy|
perl6...................................|ale-perl6-options| perl6...................................|ale-perl6-options|
@@ -3764,7 +3728,6 @@ documented in additional help files.
cspell................................|ale-php-cspell| cspell................................|ale-php-cspell|
langserver............................|ale-php-langserver| langserver............................|ale-php-langserver|
phan..................................|ale-php-phan| phan..................................|ale-php-phan|
phpactor..............................|ale-php-phpactor|
phpcbf................................|ale-php-phpcbf| phpcbf................................|ale-php-phpcbf|
phpcs.................................|ale-php-phpcs| phpcs.................................|ale-php-phpcs|
phpmd.................................|ale-php-phpmd| phpmd.................................|ale-php-phpmd|
@@ -3832,7 +3795,6 @@ documented in additional help files.
reorder-python-imports................|ale-python-reorder_python_imports| reorder-python-imports................|ale-python-reorder_python_imports|
ruff..................................|ale-python-ruff| ruff..................................|ale-python-ruff|
ruff-format...........................|ale-python-ruff-format| ruff-format...........................|ale-python-ruff-format|
ty....................................|ale-python-ty|
unimport..............................|ale-python-unimport| unimport..............................|ale-python-unimport|
vulture...............................|ale-python-vulture| vulture...............................|ale-python-vulture|
yapf..................................|ale-python-yapf| yapf..................................|ale-python-yapf|
@@ -3955,7 +3917,6 @@ documented in additional help files.
lacheck...............................|ale-tex-lacheck| lacheck...............................|ale-tex-lacheck|
latexindent...........................|ale-tex-latexindent| latexindent...........................|ale-tex-latexindent|
texlab................................|ale-tex-texlab| texlab................................|ale-tex-texlab|
redpen................................|ale-tex-redpen|
texinfo.................................|ale-texinfo-options| texinfo.................................|ale-texinfo-options|
cspell................................|ale-texinfo-cspell| cspell................................|ale-texinfo-cspell|
write-good............................|ale-texinfo-write-good| write-good............................|ale-texinfo-write-good|
@@ -3963,13 +3924,11 @@ documented in additional help files.
cspell................................|ale-text-cspell| cspell................................|ale-text-cspell|
textlint..............................|ale-text-textlint| textlint..............................|ale-text-textlint|
write-good............................|ale-text-write-good| write-good............................|ale-text-write-good|
redpen................................|ale-text-redpen|
thrift..................................|ale-thrift-options| thrift..................................|ale-thrift-options|
thrift................................|ale-thrift-thrift| thrift................................|ale-thrift-thrift|
thriftcheck...........................|ale-thrift-thriftcheck| thriftcheck...........................|ale-thrift-thriftcheck|
toml....................................|ale-toml-options| toml....................................|ale-toml-options|
dprint................................|ale-toml-dprint| dprint................................|ale-toml-dprint|
tombi.................................|ale-toml-tombi|
typescript..............................|ale-typescript-options| typescript..............................|ale-typescript-options|
biome.................................|ale-typescript-biome| biome.................................|ale-typescript-biome|
cspell................................|ale-typescript-cspell| cspell................................|ale-typescript-cspell|
@@ -3992,8 +3951,6 @@ documented in additional help files.
hdl-checker...........................|ale-verilog-hdl-checker| hdl-checker...........................|ale-verilog-hdl-checker|
iverilog..............................|ale-verilog-iverilog| iverilog..............................|ale-verilog-iverilog|
slang.................................|ale-verilog-slang| slang.................................|ale-verilog-slang|
verible_ls............................|ale-verilog-verible-ls|
verible_format........................|ale-verilog-verible-format|
verilator.............................|ale-verilog-verilator| verilator.............................|ale-verilog-verilator|
vlog..................................|ale-verilog-vlog| vlog..................................|ale-verilog-vlog|
xvlog.................................|ale-verilog-xvlog| xvlog.................................|ale-verilog-xvlog|
@@ -4086,14 +4043,10 @@ documented in additional help files.
`:ALEFindReferences -split` - Open the location in a horizontal split. `:ALEFindReferences -split` - Open the location in a horizontal split.
`:ALEFindReferences -vsplit` - Open the location in a vertical split. `:ALEFindReferences -vsplit` - Open the location in a vertical split.
`:ALEFindReferences -quickfix` - Put the locations into quickfix list. `:ALEFindReferences -quickfix` - Put the locations into quickfix list.
`:ALEFindReferences -contents` - Show line contents for matches.
The default method used for navigating to a new location can be changed The default method used for navigating to a new location can be changed
by modifying |g:ale_default_navigation|. by modifying |g:ale_default_navigation|.
The default behaviour on whether to show line content for matches can
be changed by modifying |g:ale_references_show_contents|.
You can add `-relative` to the command to view results with relatives paths, You can add `-relative` to the command to view results with relatives paths,
instead of absolute paths. This option has no effect if `-quickfix` is used. instead of absolute paths. This option has no effect if `-quickfix` is used.

View File

@@ -1,28 +0,0 @@
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"app_exit": "<leader>q"
},
"permission": {
"bash": {
"*": "deny",
"ls *": "allow",
"grep *": "allow",
"rg *": "allow",
"git diff *": "allow",
"git show *": "allow",
"git status *": "allow",
"git log *": "allow",
"git blame *": "allow",
"git reflog show *": "allow",
"./run-tests *": "allow"
},
"read": {
"*": "allow"
},
"edit": {
"*": "allow",
"opencode.json": "deny"
}
}
}

View File

@@ -1,5 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# shellcheck disable=SC2317
DOCKER=${DOCKER:-docker} DOCKER=${DOCKER:-docker}
export DOCKER export DOCKER
# Author: w0rp <devw0rp@gmail.com> # Author: w0rp <devw0rp@gmail.com>

View File

@@ -14,16 +14,15 @@ formatting.
**Legend** **Legend**
| Key | Definition | | Key | Definition |
| -------------- | ----------------------------------------------------------------- | | ------------- | ----------------------------------------------------------------- |
|:speech_balloon:| Language Server Protocol (LSP) | | :floppy_disk: | May only run on files on disk (see: `help ale-lint-file-linters` |
| :floppy_disk: | May only run on files on disk (see: `help ale-lint-file-linters` | | :warning: | Disabled by default |
| :warning: | Disabled by default |
--- ---
* Ada * Ada
* [ada_language_server](https://github.com/AdaCore/ada_language_server) :speech_balloon: * [ada_language_server](https://github.com/AdaCore/ada_language_server)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [gcc](https://gcc.gnu.org) * [gcc](https://gcc.gnu.org)
* [gnatpp](https://docs.adacore.com/gnat_ugn-docs/html/gnat_ugn/gnat_ugn/gnat_utility_programs.html#the-gnat-pretty-printer-gnatpp) :floppy_disk: * [gnatpp](https://docs.adacore.com/gnat_ugn-docs/html/gnat_ugn/gnat_ugn/gnat_utility_programs.html#the-gnat-pretty-printer-gnatpp) :floppy_disk:
@@ -33,13 +32,13 @@ formatting.
* API Blueprint * API Blueprint
* [drafter](https://github.com/apiaryio/drafter) * [drafter](https://github.com/apiaryio/drafter)
* APKBUILD * APKBUILD
* [apkbuild-fixer](https://gitlab.alpinelinux.org/Leo/atools) :speech_balloon: * [apkbuild-fixer](https://gitlab.alpinelinux.org/Leo/atools)
* [apkbuild-lint](https://gitlab.alpinelinux.org/Leo/atools) :speech_balloon: * [apkbuild-lint](https://gitlab.alpinelinux.org/Leo/atools)
* [secfixes-check](https://gitlab.alpinelinux.org/Leo/atools) :speech_balloon: * [secfixes-check](https://gitlab.alpinelinux.org/Leo/atools)
* AsciiDoc * AsciiDoc
* [alex](https://github.com/get-alex/alex) * [alex](https://github.com/get-alex/alex)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [languagetool](https://languagetool.org/) :floppy_disk: :speech_balloon: * [languagetool](https://languagetool.org/) :floppy_disk:
* [proselint](http://proselint.com/) * [proselint](http://proselint.com/)
* [redpen](http://redpen.cc/) * [redpen](http://redpen.cc/)
* [textlint](https://textlint.github.io/) * [textlint](https://textlint.github.io/)
@@ -65,11 +64,11 @@ formatting.
* Bats * Bats
* [shellcheck](https://www.shellcheck.net/) * [shellcheck](https://www.shellcheck.net/)
* Bazel * Bazel
* [buildifier](https://github.com/bazelbuild/buildtools) :speech_balloon: * [buildifier](https://github.com/bazelbuild/buildtools)
* BibTeX * BibTeX
* [bibclean](http://ftp.math.utah.edu/pub/bibclean/) * [bibclean](http://ftp.math.utah.edu/pub/bibclean/)
* Bicep * Bicep
* [bicep](https://github.com/Azure/bicep) :floppy_disk: :speech_balloon: * [bicep](https://github.com/Azure/bicep) :floppy_disk:
* Bindzone * Bindzone
* [checkzone](https://bind9.readthedocs.io/en/stable/manpages.html#named-checkzone-zone-file-validation-tool) * [checkzone](https://bind9.readthedocs.io/en/stable/manpages.html#named-checkzone-zone-file-validation-tool)
* BitBake * BitBake
@@ -80,15 +79,15 @@ formatting.
* [shfmt](https://github.com/mvdan/sh) * [shfmt](https://github.com/mvdan/sh)
* C * C
* [astyle](http://astyle.sourceforge.net/) * [astyle](http://astyle.sourceforge.net/)
* [ccls](https://github.com/MaskRay/ccls) :speech_balloon: * [ccls](https://github.com/MaskRay/ccls)
* [clang](http://clang.llvm.org/) * [clang](http://clang.llvm.org/)
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html) * [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
* [clangcheck](http://clang.llvm.org/docs/ClangCheck.html) :floppy_disk: * [clangcheck](http://clang.llvm.org/docs/ClangCheck.html) :floppy_disk:
* [clangd](https://clang.llvm.org/extra/clangd.html) :speech_balloon: * [clangd](https://clang.llvm.org/extra/clangd.html)
* [clangtidy](http://clang.llvm.org/extra/clang-tidy/) :floppy_disk: * [clangtidy](http://clang.llvm.org/extra/clang-tidy/) :floppy_disk:
* [cppcheck](http://cppcheck.sourceforge.net) * [cppcheck](http://cppcheck.sourceforge.net)
* [cpplint](https://github.com/cpplint/cpplint) * [cpplint](https://github.com/cpplint/cpplint)
* [cquery](https://github.com/cquery-project/cquery) :speech_balloon: * [cquery](https://github.com/cquery-project/cquery)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [flawfinder](https://www.dwheeler.com/flawfinder/) * [flawfinder](https://www.dwheeler.com/flawfinder/)
* [gcc](https://gcc.gnu.org/) * [gcc](https://gcc.gnu.org/)
@@ -103,22 +102,22 @@ formatting.
* [uncrustify](https://github.com/uncrustify/uncrustify) * [uncrustify](https://github.com/uncrustify/uncrustify)
* C++ (filetype cpp) * C++ (filetype cpp)
* [astyle](http://astyle.sourceforge.net/) * [astyle](http://astyle.sourceforge.net/)
* [ccls](https://github.com/MaskRay/ccls) :speech_balloon: * [ccls](https://github.com/MaskRay/ccls)
* [clang](http://clang.llvm.org/) * [clang](http://clang.llvm.org/)
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html) * [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
* [clangcheck](http://clang.llvm.org/docs/ClangCheck.html) :floppy_disk: * [clangcheck](http://clang.llvm.org/docs/ClangCheck.html) :floppy_disk:
* [clangd](https://clang.llvm.org/extra/clangd.html) :speech_balloon: * [clangd](https://clang.llvm.org/extra/clangd.html)
* [clangtidy](http://clang.llvm.org/extra/clang-tidy/) :floppy_disk: * [clangtidy](http://clang.llvm.org/extra/clang-tidy/) :floppy_disk:
* [clazy](https://github.com/KDE/clazy) :floppy_disk: * [clazy](https://github.com/KDE/clazy) :floppy_disk:
* [cppcheck](http://cppcheck.sourceforge.net) * [cppcheck](http://cppcheck.sourceforge.net)
* [cpplint](https://github.com/google/styleguide/tree/gh-pages/cpplint) :floppy_disk: * [cpplint](https://github.com/google/styleguide/tree/gh-pages/cpplint) :floppy_disk:
* [cquery](https://github.com/cquery-project/cquery) :speech_balloon: * [cquery](https://github.com/cquery-project/cquery)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [flawfinder](https://www.dwheeler.com/flawfinder/) * [flawfinder](https://www.dwheeler.com/flawfinder/)
* [gcc](https://gcc.gnu.org/) * [gcc](https://gcc.gnu.org/)
* [uncrustify](https://github.com/uncrustify/uncrustify) * [uncrustify](https://github.com/uncrustify/uncrustify)
* C3 * C3
* [c3lsp](https://github.com/pherrymason/c3-lsp) :speech_balloon: * [c3lsp](https://github.com/pherrymason/c3-lsp)
* Cairo * Cairo
* [scarb](https://docs.swmansion.com/scarb/) :floppy_disk: * [scarb](https://docs.swmansion.com/scarb/) :floppy_disk:
* [starknet](https://starknet.io/docs) * [starknet](https://starknet.io/docs)
@@ -131,7 +130,6 @@ formatting.
* [joker](https://github.com/candid82/joker) * [joker](https://github.com/candid82/joker)
* CloudFormation * CloudFormation
* [cfn-python-lint](https://github.com/awslabs/cfn-python-lint) * [cfn-python-lint](https://github.com/awslabs/cfn-python-lint)
* [checkov](https://github.com/bridgecrewio/checkov)
* CMake * CMake
* [cmake-format](https://github.com/cheshirekow/cmake_format) * [cmake-format](https://github.com/cheshirekow/cmake_format)
* [cmake-lint](https://github.com/cheshirekow/cmake_format) * [cmake-lint](https://github.com/cheshirekow/cmake_format)
@@ -154,7 +152,7 @@ formatting.
* [cucumber](https://cucumber.io/) * [cucumber](https://cucumber.io/)
* CUDA * CUDA
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html) * [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
* [clangd](https://clang.llvm.org/extra/clangd.html) :speech_balloon: * [clangd](https://clang.llvm.org/extra/clangd.html)
* [nvcc](http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html) :floppy_disk: * [nvcc](http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html) :floppy_disk:
* Cypher * Cypher
* [cypher-lint](https://github.com/cleishm/libcypher-parser) * [cypher-lint](https://github.com/cleishm/libcypher-parser)
@@ -189,9 +187,8 @@ formatting.
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) :warning: * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) :warning:
* [dialyxir](https://github.com/jeremyjh/dialyxir) * [dialyxir](https://github.com/jeremyjh/dialyxir)
* [dogma](https://github.com/lpil/dogma) :floppy_disk: * [dogma](https://github.com/lpil/dogma) :floppy_disk:
* [elixir-ls](https://github.com/elixir-lsp/elixir-ls) :warning: :speech_balloon: * [elixir-ls](https://github.com/elixir-lsp/elixir-ls) :warning:
* [expert](https://github.com/elixir-lang/expert) :warning: :speech_balloon: * [lexical](https://github.com/lexical-lsp/lexical) :warning:
* [lexical](https://github.com/lexical-lsp/lexical) :warning: :speech_balloon:
* [mix](https://hexdocs.pm/mix/Mix.html) :warning: :floppy_disk: * [mix](https://hexdocs.pm/mix/Mix.html) :warning: :floppy_disk:
* Elm * Elm
* [elm-format](https://github.com/avh4/elm-format) * [elm-format](https://github.com/avh4/elm-format)
@@ -209,17 +206,16 @@ formatting.
* [SyntaxErl](https://github.com/ten0s/syntaxerl) * [SyntaxErl](https://github.com/ten0s/syntaxerl)
* [dialyzer](http://erlang.org/doc/man/dialyzer.html) :floppy_disk: * [dialyzer](http://erlang.org/doc/man/dialyzer.html) :floppy_disk:
* [elvis](https://github.com/inaka/elvis) :floppy_disk: * [elvis](https://github.com/inaka/elvis) :floppy_disk:
* [erlang-mode](https://www.erlang.org/doc/apps/tools/erlang_mode_chapter.html) (The Erlang mode for Emacs) :speech_balloon: * [erlang-mode](https://www.erlang.org/doc/apps/tools/erlang_mode_chapter.html) (The Erlang mode for Emacs)
* [erlang_ls](https://github.com/erlang-ls/erlang_ls) :speech_balloon: * [erlang_ls](https://github.com/erlang-ls/erlang_ls)
* [erlc](http://erlang.org/doc/man/erlc.html) * [erlc](http://erlang.org/doc/man/erlc.html)
* [erlfmt](https://github.com/WhatsApp/erlfmt) * [erlfmt](https://github.com/WhatsApp/erlfmt)
* Fish * Fish
* fish [-n flag](https://linux.die.net/man/1/fish) * fish [-n flag](https://linux.die.net/man/1/fish)
* [fish_indent](https://fishshell.com/docs/current/cmds/fish_indent.html) * [fish_indent](https://fishshell.com/docs/current/cmds/fish_indent.html)
* Fortran * Fortran
* [fortitude](https://github.com/PlasmaFAIR/fortitude)
* [gcc](https://gcc.gnu.org/) * [gcc](https://gcc.gnu.org/)
* [language_server](https://github.com/hansec/fortran-language-server) :speech_balloon: * [language_server](https://github.com/hansec/fortran-language-server)
* Fountain * Fountain
* [proselint](http://proselint.com/) * [proselint](http://proselint.com/)
* FusionScript * FusionScript
@@ -227,11 +223,11 @@ formatting.
* Git Commit Messages * Git Commit Messages
* [gitlint](https://github.com/jorisroovers/gitlint) * [gitlint](https://github.com/jorisroovers/gitlint)
* Gleam * Gleam
* [gleam_format](https://github.com/gleam-lang/gleam) :speech_balloon: * [gleam_format](https://github.com/gleam-lang/gleam)
* [gleamlsp](https://github.com/gleam-lang/gleam) :speech_balloon: * [gleamlsp](https://github.com/gleam-lang/gleam)
* GLSL * GLSL
* [glslang](https://github.com/KhronosGroup/glslang) * [glslang](https://github.com/KhronosGroup/glslang)
* [glslls](https://github.com/svenstaro/glsl-language-server) :speech_balloon: * [glslls](https://github.com/svenstaro/glsl-language-server)
* Go * Go
* [bingo](https://github.com/saibing/bingo) :warning: * [bingo](https://github.com/saibing/bingo) :warning:
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) :warning: * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) :warning:
@@ -240,15 +236,15 @@ formatting.
* [go vet](https://golang.org/cmd/vet/) :floppy_disk: * [go vet](https://golang.org/cmd/vet/) :floppy_disk:
* [gofmt](https://golang.org/cmd/gofmt/) * [gofmt](https://golang.org/cmd/gofmt/)
* [gofumpt](https://github.com/mvdan/gofumpt) * [gofumpt](https://github.com/mvdan/gofumpt)
* [goimports](https://godoc.org/golang.org/x/tools/cmd/goimports) :warning: :speech_balloon: * [goimports](https://godoc.org/golang.org/x/tools/cmd/goimports) :warning:
* [golangci-lint](https://github.com/golangci/golangci-lint) :warning: :floppy_disk: * [golangci-lint](https://github.com/golangci/golangci-lint) :warning: :floppy_disk:
* [golangserver](https://github.com/sourcegraph/go-langserver) :warning: * [golangserver](https://github.com/sourcegraph/go-langserver) :warning:
* [golines](https://github.com/segmentio/golines) * [golines](https://github.com/segmentio/golines)
* [gopls](https://github.com/golang/tools/blob/master/gopls/README.md) :speech_balloon: * [gopls](https://github.com/golang/go/wiki/gopls)
* [gosimple](https://staticcheck.io/changes/2019.2/#deprecated) :warning: :floppy_disk: :speech_balloon: * [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: :speech_balloon: * [gotype](https://godoc.org/golang.org/x/tools/cmd/gotype) :warning: :floppy_disk:
* [revive](https://github.com/mgechev/revive) :warning: :floppy_disk: * [revive](https://github.com/mgechev/revive) :warning: :floppy_disk:
* [staticcheck](https://github.com/dominikh/go-tools/tree/master/cmd/staticcheck) :warning: :floppy_disk: :speech_balloon: * [staticcheck](https://github.com/dominikh/go-tools/tree/master/cmd/staticcheck) :warning: :floppy_disk:
* Go HTML Templates * Go HTML Templates
* [djlint](https://djlint.com/) * [djlint](https://djlint.com/)
* GraphQL * GraphQL
@@ -260,21 +256,21 @@ formatting.
* Hack * Hack
* [hack](http://hacklang.org/) * [hack](http://hacklang.org/)
* [hackfmt](https://github.com/facebook/hhvm/tree/master/hphp/hack/hackfmt) * [hackfmt](https://github.com/facebook/hhvm/tree/master/hphp/hack/hackfmt)
* [hhast](https://github.com/hhvm/hhast) :warning: (see `:help ale-integration-hack`) :speech_balloon: * [hhast](https://github.com/hhvm/hhast) :warning: (see `:help ale-integration-hack`)
* Haml * Haml
* [haml-lint](https://github.com/brigade/haml-lint) * [haml-lint](https://github.com/brigade/haml-lint)
* Handlebars * Handlebars
* [djlint](https://djlint.com/) * [djlint](https://djlint.com/)
* [ember-template-lint](https://github.com/rwjblue/ember-template-lint) * [ember-template-lint](https://github.com/rwjblue/ember-template-lint)
* Haskell * Haskell
* [brittany](https://github.com/lspitzner/brittany) :speech_balloon: * [brittany](https://github.com/lspitzner/brittany)
* [cabal-ghc](https://www.haskell.org/cabal/) * [cabal-ghc](https://www.haskell.org/cabal/)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [floskell](https://github.com/ennocramer/floskell) * [floskell](https://github.com/ennocramer/floskell)
* [fourmolu](https://github.com/fourmolu/fourmolu) * [fourmolu](https://github.com/fourmolu/fourmolu)
* [ghc](https://www.haskell.org/ghc/) * [ghc](https://www.haskell.org/ghc/)
* [ghc-mod](https://github.com/DanielG/ghc-mod) * [ghc-mod](https://github.com/DanielG/ghc-mod)
* [hdevtools](https://hackage.haskell.org/package/hdevtools) :speech_balloon: * [hdevtools](https://hackage.haskell.org/package/hdevtools)
* [hfmt](https://github.com/danstiner/hfmt) * [hfmt](https://github.com/danstiner/hfmt)
* [hie](https://github.com/haskell/haskell-ide-engine) * [hie](https://github.com/haskell/haskell-ide-engine)
* [hindent](https://hackage.haskell.org/package/hindent) * [hindent](https://hackage.haskell.org/package/hindent)
@@ -300,7 +296,6 @@ formatting.
* [prettier](https://github.com/prettier/prettier) * [prettier](https://github.com/prettier/prettier)
* [proselint](http://proselint.com/) * [proselint](http://proselint.com/)
* [rustywind](https://github.com/avencera/rustywind) * [rustywind](https://github.com/avencera/rustywind)
* [superhtml](https://github.com/kristoff-it/superhtml)
* [tidy](http://www.html-tidy.org/) * [tidy](http://www.html-tidy.org/)
* [write-good](https://github.com/btford/write-good) * [write-good](https://github.com/btford/write-good)
* HTML Angular * HTML Angular
@@ -324,10 +319,10 @@ formatting.
* [checkstyle](http://checkstyle.sourceforge.net) :floppy_disk: * [checkstyle](http://checkstyle.sourceforge.net) :floppy_disk:
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html) * [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [eclipselsp](https://github.com/eclipse/eclipse.jdt.ls) :speech_balloon: * [eclipselsp](https://github.com/eclipse/eclipse.jdt.ls)
* [google-java-format](https://github.com/google/google-java-format) * [google-java-format](https://github.com/google/google-java-format)
* [javac](http://www.oracle.com/technetwork/java/javase/downloads/index.html) * [javac](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
* [javalsp](https://github.com/georgewfraser/vscode-javac) :speech_balloon: * [javalsp](https://github.com/georgewfraser/vscode-javac)
* [uncrustify](https://github.com/uncrustify/uncrustify) * [uncrustify](https://github.com/uncrustify/uncrustify)
* JavaScript * JavaScript
* [biome](https://biomejs.dev/) * [biome](https://biomejs.dev/)
@@ -337,7 +332,7 @@ formatting.
* [dprint](https://dprint.dev/) * [dprint](https://dprint.dev/)
* [eslint](http://eslint.org/) * [eslint](http://eslint.org/)
* [fecs](http://fecs.baidu.com/) * [fecs](http://fecs.baidu.com/)
* [flow](https://flowtype.org/) :speech_balloon: * [flow](https://flowtype.org/)
* [jscs](https://jscs-dev.github.io/) * [jscs](https://jscs-dev.github.io/)
* [jshint](http://jshint.com/) * [jshint](http://jshint.com/)
* [prettier](https://github.com/prettier/prettier) * [prettier](https://github.com/prettier/prettier)
@@ -348,7 +343,6 @@ formatting.
* [xo](https://github.com/sindresorhus/xo) * [xo](https://github.com/sindresorhus/xo)
* Jinja * Jinja
* [djlint](https://djlint.com/) * [djlint](https://djlint.com/)
* [j2lint](https://github.com/aristanetworks/j2lint/)
* JSON * JSON
* [VSCode JSON language server](https://github.com/hrsh7th/vscode-langservers-extracted) * [VSCode JSON language server](https://github.com/hrsh7th/vscode-langservers-extracted)
* [biome](https://biomejs.dev/) * [biome](https://biomejs.dev/)
@@ -368,8 +362,8 @@ formatting.
* [biome](https://biomejs.dev/) * [biome](https://biomejs.dev/)
* [eslint](http://eslint.org/) :warning: * [eslint](http://eslint.org/) :warning:
* Jsonnet * Jsonnet
* [jsonnet-lint](https://jsonnet.org/learning/tools.html) :speech_balloon: * [jsonnet-lint](https://jsonnet.org/learning/tools.html)
* [jsonnetfmt](https://jsonnet.org/learning/tools.html) :speech_balloon: * [jsonnetfmt](https://jsonnet.org/learning/tools.html)
* Julia * Julia
* [languageserver](https://github.com/JuliaEditorSupport/LanguageServer.jl) * [languageserver](https://github.com/JuliaEditorSupport/LanguageServer.jl)
* Kotlin * Kotlin
@@ -383,7 +377,7 @@ formatting.
* [lacheck](https://www.ctan.org/pkg/lacheck) * [lacheck](https://www.ctan.org/pkg/lacheck)
* [proselint](http://proselint.com/) * [proselint](http://proselint.com/)
* [redpen](http://redpen.cc/) * [redpen](http://redpen.cc/)
* [texlab](https://texlab.netlify.com) :speech_balloon: * [texlab](https://texlab.netlify.com)
* [textlint](https://textlint.github.io/) * [textlint](https://textlint.github.io/)
* [vale](https://github.com/ValeLint/vale) * [vale](https://github.com/ValeLint/vale)
* [write-good](https://github.com/btford/write-good) * [write-good](https://github.com/btford/write-good)
@@ -398,7 +392,7 @@ formatting.
* Lua * Lua
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [lua-format](https://github.com/Koihik/LuaFormatter) * [lua-format](https://github.com/Koihik/LuaFormatter)
* [lua-language-server](https://github.com/LuaLS/lua-language-server) :speech_balloon: * [lua-language-server](https://github.com/LuaLS/lua-language-server)
* [luac](https://www.lua.org/manual/5.1/luac.html) * [luac](https://www.lua.org/manual/5.1/luac.html)
* [luacheck](https://github.com/mpeterv/luacheck) * [luacheck](https://github.com/mpeterv/luacheck)
* [luafmt](https://github.com/trixnz/lua-fmt) * [luafmt](https://github.com/trixnz/lua-fmt)
@@ -406,7 +400,7 @@ formatting.
* [stylua](https://github.com/johnnymorganz/stylua) * [stylua](https://github.com/johnnymorganz/stylua)
* Mail * Mail
* [alex](https://github.com/get-alex/alex) * [alex](https://github.com/get-alex/alex)
* [languagetool](https://languagetool.org/) :floppy_disk: :speech_balloon: * [languagetool](https://languagetool.org/) :floppy_disk:
* [proselint](http://proselint.com/) * [proselint](http://proselint.com/)
* [vale](https://github.com/ValeLint/vale) * [vale](https://github.com/ValeLint/vale)
* Make * Make
@@ -414,9 +408,9 @@ formatting.
* Markdown * Markdown
* [alex](https://github.com/get-alex/alex) * [alex](https://github.com/get-alex/alex)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [languagetool](https://languagetool.org/) :floppy_disk: :speech_balloon: * [languagetool](https://languagetool.org/) :floppy_disk:
* [markdownlint](https://github.com/DavidAnson/markdownlint) :floppy_disk: * [markdownlint](https://github.com/DavidAnson/markdownlint) :floppy_disk:
* [marksman](https://github.com/artempyanykh/marksman) :speech_balloon: * [marksman](https://github.com/artempyanykh/marksman)
* [mdl](https://github.com/mivok/markdownlint) * [mdl](https://github.com/mivok/markdownlint)
* [pandoc](https://pandoc.org) * [pandoc](https://pandoc.org)
* [prettier](https://github.com/prettier/prettier) * [prettier](https://github.com/prettier/prettier)
@@ -428,7 +422,7 @@ formatting.
* [vale](https://github.com/ValeLint/vale) * [vale](https://github.com/ValeLint/vale)
* [write-good](https://github.com/btford/write-good) * [write-good](https://github.com/btford/write-good)
* MATLAB * MATLAB
* [mlint](https://www.mathworks.com/help/matlab/ref/mlint.html) :speech_balloon: * [mlint](https://www.mathworks.com/help/matlab/ref/mlint.html)
* Mercury * Mercury
* [mmc](http://mercurylang.org) :floppy_disk: * [mmc](http://mercurylang.org) :floppy_disk:
* NASM * NASM
@@ -437,7 +431,7 @@ formatting.
* [nickel_format](https://github.com/tweag/nickel#formatting) * [nickel_format](https://github.com/tweag/nickel#formatting)
* Nim * Nim
* [nim check](https://nim-lang.org/docs/nimc.html) :floppy_disk: * [nim check](https://nim-lang.org/docs/nimc.html) :floppy_disk:
* [nimlsp](https://github.com/PMunch/nimlsp) :speech_balloon: * [nimlsp](https://github.com/PMunch/nimlsp)
* nimpretty * nimpretty
* nix * nix
* [alejandra](https://github.com/kamadorueda/alejandra) * [alejandra](https://github.com/kamadorueda/alejandra)
@@ -445,7 +439,7 @@ formatting.
* [nix-instantiate](http://nixos.org/nix/manual/#sec-nix-instantiate) * [nix-instantiate](http://nixos.org/nix/manual/#sec-nix-instantiate)
* [nixfmt](https://github.com/serokell/nixfmt) * [nixfmt](https://github.com/serokell/nixfmt)
* [nixpkgs-fmt](https://github.com/nix-community/nixpkgs-fmt) * [nixpkgs-fmt](https://github.com/nix-community/nixpkgs-fmt)
* [rnix-lsp](https://github.com/nix-community/rnix-lsp) :speech_balloon: * [rnix-lsp](https://github.com/nix-community/rnix-lsp)
* [statix](https://github.com/nerdypepper/statix) * [statix](https://github.com/nerdypepper/statix)
* nroff * nroff
* [alex](https://github.com/get-alex/alex) * [alex](https://github.com/get-alex/alex)
@@ -454,24 +448,24 @@ formatting.
* Nunjucks * Nunjucks
* [djlint](https://djlint.com/) * [djlint](https://djlint.com/)
* Objective-C * Objective-C
* [ccls](https://github.com/MaskRay/ccls) :speech_balloon: * [ccls](https://github.com/MaskRay/ccls)
* [clang](http://clang.llvm.org/) * [clang](http://clang.llvm.org/)
* [clang-format](https://clang.llvm.org/docs/ClangFormat.html) * [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
* [clangd](https://clang.llvm.org/extra/clangd.html) :speech_balloon: * [clangd](https://clang.llvm.org/extra/clangd.html)
* [uncrustify](https://github.com/uncrustify/uncrustify) * [uncrustify](https://github.com/uncrustify/uncrustify)
* Objective-C++ * Objective-C++
* [clang](http://clang.llvm.org/) * [clang](http://clang.llvm.org/)
* [clangd](https://clang.llvm.org/extra/clangd.html) :speech_balloon: * [clangd](https://clang.llvm.org/extra/clangd.html)
* [uncrustify](https://github.com/uncrustify/uncrustify) * [uncrustify](https://github.com/uncrustify/uncrustify)
* OCaml * OCaml
* [dune](https://dune.build/) * [dune](https://dune.build/)
* [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-ocaml-merlin` for configuration instructions * [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-ocaml-merlin` for configuration instructions
* [ocamlformat](https://github.com/ocaml-ppx/ocamlformat) * [ocamlformat](https://github.com/ocaml-ppx/ocamlformat)
* [ocamllsp](https://github.com/ocaml/ocaml-lsp) :speech_balloon: * [ocamllsp](https://github.com/ocaml/ocaml-lsp)
* [ocp-indent](https://github.com/OCamlPro/ocp-indent) * [ocp-indent](https://github.com/OCamlPro/ocp-indent)
* [ols](https://github.com/freebroccolo/ocaml-language-server) :speech_balloon: * [ols](https://github.com/freebroccolo/ocaml-language-server)
* Odin * Odin
* [ols](https://github.com/DanielGavin/ols) :speech_balloon: * [ols](https://github.com/DanielGavin/ols)
* OpenApi * OpenApi
* [ibm_validator](https://github.com/IBM/openapi-validator) * [ibm_validator](https://github.com/IBM/openapi-validator)
* [prettier](https://github.com/prettier/prettier) * [prettier](https://github.com/prettier/prettier)
@@ -482,11 +476,10 @@ formatting.
* Packer (HCL) * Packer (HCL)
* [packer-fmt-fixer](https://github.com/hashicorp/packer) * [packer-fmt-fixer](https://github.com/hashicorp/packer)
* Pascal * Pascal
* [ptop](https://www.freepascal.org/tools/ptop.var) :speech_balloon: * [ptop](https://www.freepascal.org/tools/ptop.var)
* Pawn * Pawn
* [uncrustify](https://github.com/uncrustify/uncrustify) * [uncrustify](https://github.com/uncrustify/uncrustify)
* Perl * Perl
* [languageserver](https://metacpan.org/pod/Perl::LanguageServer)
* [perl -c](https://perl.org/) :warning: * [perl -c](https://perl.org/) :warning:
* [perl-critic](https://metacpan.org/pod/Perl::Critic) * [perl-critic](https://metacpan.org/pod/Perl::Critic)
* [perltidy](https://metacpan.org/pod/distribution/Perl-Tidy/bin/perltidy) * [perltidy](https://metacpan.org/pod/distribution/Perl-Tidy/bin/perltidy)
@@ -494,12 +487,12 @@ formatting.
* [perl6 -c](https://perl6.org) :warning: * [perl6 -c](https://perl6.org) :warning:
* PHP * PHP
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [intelephense](https://github.com/bmewburn/intelephense-docs) :speech_balloon: * [intelephense](https://github.com/bmewburn/intelephense-docs)
* [langserver](https://github.com/felixfbecker/php-language-server) :speech_balloon: * [langserver](https://github.com/felixfbecker/php-language-server)
* [phan](https://github.com/phan/phan) see `:help ale-php-phan` to instructions :speech_balloon: * [phan](https://github.com/phan/phan) see `:help ale-php-phan` to instructions
* [php -l](https://secure.php.net/) * [php -l](https://secure.php.net/)
* [php-cs-fixer](https://cs.symfony.com) * [php-cs-fixer](https://cs.symfony.com)
* [phpactor](https://github.com/phpactor/phpactor) :speech_balloon: * [phpactor](https://github.com/phpactor/phpactor)
* [phpcbf](https://github.com/squizlabs/PHP_CodeSniffer) * [phpcbf](https://github.com/squizlabs/PHP_CodeSniffer)
* [phpcs](https://github.com/squizlabs/PHP_CodeSniffer) * [phpcs](https://github.com/squizlabs/PHP_CodeSniffer)
* [phpmd](https://phpmd.org) * [phpmd](https://phpmd.org)
@@ -537,7 +530,7 @@ formatting.
* [puppet](https://puppet.com) * [puppet](https://puppet.com)
* [puppet-lint](https://puppet-lint.com) * [puppet-lint](https://puppet-lint.com)
* PureScript * PureScript
* [purescript-language-server](https://github.com/nwolverson/purescript-language-server) :speech_balloon: * [purescript-language-server](https://github.com/nwolverson/purescript-language-server)
* [purs-tidy](https://github.com/natefaubion/purescript-tidy) * [purs-tidy](https://github.com/natefaubion/purescript-tidy)
* [purty](https://gitlab.com/joneshf/purty) * [purty](https://gitlab.com/joneshf/purty)
* Python * Python
@@ -559,35 +552,34 @@ formatting.
* [pyflyby](https://github.com/deshaw/pyflyby) :warning: * [pyflyby](https://github.com/deshaw/pyflyby) :warning:
* [pylama](https://github.com/klen/pylama) :floppy_disk: * [pylama](https://github.com/klen/pylama) :floppy_disk:
* [pylint](https://www.pylint.org/) :floppy_disk: * [pylint](https://www.pylint.org/) :floppy_disk:
* [pylsp](https://github.com/python-lsp/python-lsp-server) :warning: :speech_balloon: * [pylsp](https://github.com/python-lsp/python-lsp-server) :warning:
* [pyre](https://github.com/facebook/pyre-check) :warning: * [pyre](https://github.com/facebook/pyre-check) :warning:
* [pyrefly](https://github.com/facebook/pyrefly) :warning: :speech_balloon: * [pyrefly](https://github.com/facebook/pyrefly) :warning:
* [pyright](https://github.com/microsoft/pyright) :speech_balloon: * [pyright](https://github.com/microsoft/pyright)
* [refurb](https://github.com/dosisod/refurb) :floppy_disk: * [refurb](https://github.com/dosisod/refurb) :floppy_disk:
* [reorder-python-imports](https://github.com/asottile/reorder_python_imports) * [reorder-python-imports](https://github.com/asottile/reorder_python_imports)
* [ruff](https://github.com/charliermarsh/ruff) * [ruff](https://github.com/charliermarsh/ruff)
* [ruff-format](https://docs.astral.sh/ruff/formatter/) * [ruff-format](https://docs.astral.sh/ruff/formatter/)
* [ty](https://github.com/astral-sh/ty) :warning:
* [unimport](https://github.com/hakancelik96/unimport) * [unimport](https://github.com/hakancelik96/unimport)
* [vulture](https://github.com/jendrikseipp/vulture) :warning: :floppy_disk: * [vulture](https://github.com/jendrikseipp/vulture) :warning: :floppy_disk:
* [yapf](https://github.com/google/yapf) * [yapf](https://github.com/google/yapf)
* QML * QML
* [qmlfmt](https://github.com/jesperhh/qmlfmt) * [qmlfmt](https://github.com/jesperhh/qmlfmt)
* [qmllint](https://github.com/qt/qtdeclarative/tree/5.11/tools/qmllint) :speech_balloon: * [qmllint](https://github.com/qt/qtdeclarative/tree/5.11/tools/qmllint)
* R * R
* [languageserver](https://github.com/REditorSupport/languageserver) * [languageserver](https://github.com/REditorSupport/languageserver)
* [lintr](https://github.com/jimhester/lintr) * [lintr](https://github.com/jimhester/lintr)
* [styler](https://github.com/r-lib/styler) * [styler](https://github.com/r-lib/styler)
* Racket * Racket
* [racket-langserver](https://github.com/jeapostrophe/racket-langserver/tree/master) :speech_balloon: * [racket-langserver](https://github.com/jeapostrophe/racket-langserver/tree/master)
* [raco](https://docs.racket-lang.org/raco/) * [raco](https://docs.racket-lang.org/raco/)
* [raco_fmt](https://docs.racket-lang.org/fmt/) * [raco_fmt](https://docs.racket-lang.org/fmt/)
* Re:VIEW * Re:VIEW
* [redpen](http://redpen.cc/) * [redpen](http://redpen.cc/)
* ReasonML * ReasonML
* [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-reasonml-ols` for configuration instructions * [merlin](https://github.com/the-lambda-church/merlin) see `:help ale-reasonml-ols` for configuration instructions
* [ols](https://github.com/freebroccolo/ocaml-language-server) :speech_balloon: * [ols](https://github.com/freebroccolo/ocaml-language-server)
* [reason-language-server](https://github.com/jaredly/reason-language-server) :speech_balloon: * [reason-language-server](https://github.com/jaredly/reason-language-server)
* [refmt](https://github.com/reasonml/reason-cli) * [refmt](https://github.com/reasonml/reason-cli)
* Rego * Rego
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
@@ -611,7 +603,7 @@ formatting.
* [roc_format](https://github.com/roc-lang/roc) * [roc_format](https://github.com/roc-lang/roc)
* [roc_language_server](https://github.com/roc-lang/roc) * [roc_language_server](https://github.com/roc-lang/roc)
* RPM spec * RPM spec
* [rpmlint](https://github.com/rpm-software-management/rpmlint) :warning: (see `:help ale-integration-spec`) :speech_balloon: * [rpmlint](https://github.com/rpm-software-management/rpmlint) :warning: (see `:help ale-integration-spec`)
* Ruby * Ruby
* [brakeman](http://brakemanscanner.org/) :floppy_disk: * [brakeman](http://brakemanscanner.org/) :floppy_disk:
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
@@ -624,13 +616,13 @@ formatting.
* [ruby](https://www.ruby-lang.org) * [ruby](https://www.ruby-lang.org)
* [rubyfmt](https://github.com/fables-tales/rubyfmt) * [rubyfmt](https://github.com/fables-tales/rubyfmt)
* [rufo](https://github.com/ruby-formatter/rufo) * [rufo](https://github.com/ruby-formatter/rufo)
* [solargraph](https://solargraph.org) :speech_balloon: * [solargraph](https://solargraph.org)
* [sorbet](https://github.com/sorbet/sorbet) :speech_balloon: * [sorbet](https://github.com/sorbet/sorbet)
* [standardrb](https://github.com/testdouble/standard) * [standardrb](https://github.com/testdouble/standard)
* [steep](https://github.com/soutaro/steep) * [steep](https://github.com/soutaro/steep)
* [syntax_tree](https://github.com/ruby-syntax-tree/syntax_tree) * [syntax_tree](https://github.com/ruby-syntax-tree/syntax_tree)
* Rust * Rust
* [cargo](https://github.com/rust-lang/cargo) :floppy_disk: (see `:help ale-integration-rust` for configuration instructions) :speech_balloon: * [cargo](https://github.com/rust-lang/cargo) :floppy_disk: (see `:help ale-integration-rust` for configuration instructions)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [rls](https://github.com/rust-lang-nursery/rls) :warning: * [rls](https://github.com/rust-lang-nursery/rls) :warning:
* [rust-analyzer](https://github.com/rust-analyzer/rust-analyzer) :warning: * [rust-analyzer](https://github.com/rust-analyzer/rust-analyzer) :warning:
@@ -643,8 +635,8 @@ formatting.
* [stylelint](https://github.com/stylelint/stylelint) * [stylelint](https://github.com/stylelint/stylelint)
* Scala * Scala
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [fsc](https://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/tools/fsc.html) :speech_balloon: * [fsc](https://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/tools/fsc.html)
* [metals](https://scalameta.org/metals/) :speech_balloon: * [metals](https://scalameta.org/metals/)
* [sbtserver](https://www.scala-sbt.org/1.x/docs/sbt-server.html) * [sbtserver](https://www.scala-sbt.org/1.x/docs/sbt-server.html)
* [scalac](http://scala-lang.org) * [scalac](http://scala-lang.org)
* [scalafmt](https://scalameta.org/scalafmt/) * [scalafmt](https://scalameta.org/scalafmt/)
@@ -677,11 +669,11 @@ formatting.
* [stylelint](https://github.com/stylelint/stylelint) * [stylelint](https://github.com/stylelint/stylelint)
* Svelte * Svelte
* [prettier](https://github.com/prettier/prettier) * [prettier](https://github.com/prettier/prettier)
* [svelteserver](https://github.com/sveltejs/language-tools/tree/master/packages/language-server) :speech_balloon: * [svelteserver](https://github.com/sveltejs/language-tools/tree/master/packages/language-server)
* Swift * Swift
* [Apple swift-format](https://github.com/apple/swift-format) * [Apple swift-format](https://github.com/apple/swift-format)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [sourcekit-lsp](https://github.com/apple/sourcekit-lsp) :speech_balloon: * [sourcekit-lsp](https://github.com/apple/sourcekit-lsp)
* [swiftformat](https://github.com/nicklockwood/SwiftFormat) * [swiftformat](https://github.com/nicklockwood/SwiftFormat)
* [swiftlint](https://github.com/realm/SwiftLint) * [swiftlint](https://github.com/realm/SwiftLint)
* systemd * systemd
@@ -692,8 +684,8 @@ formatting.
* [checkov](https://github.com/bridgecrewio/checkov) * [checkov](https://github.com/bridgecrewio/checkov)
* [terraform](https://github.com/hashicorp/terraform) * [terraform](https://github.com/hashicorp/terraform)
* [terraform-fmt-fixer](https://github.com/hashicorp/terraform) * [terraform-fmt-fixer](https://github.com/hashicorp/terraform)
* [terraform-ls](https://github.com/hashicorp/terraform-ls) :speech_balloon: * [terraform-ls](https://github.com/hashicorp/terraform-ls)
* [terraform-lsp](https://github.com/juliosueiras/terraform-lsp) :speech_balloon: * [terraform-lsp](https://github.com/juliosueiras/terraform-lsp)
* [tflint](https://github.com/wata727/tflint) * [tflint](https://github.com/wata727/tflint)
* [tfsec](https://github.com/aquasecurity/tfsec) * [tfsec](https://github.com/aquasecurity/tfsec)
* Texinfo * Texinfo
@@ -704,7 +696,7 @@ formatting.
* Text * Text
* [alex](https://github.com/get-alex/alex) :warning: * [alex](https://github.com/get-alex/alex) :warning:
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [languagetool](https://languagetool.org/) :floppy_disk: :speech_balloon: * [languagetool](https://languagetool.org/) :floppy_disk:
* [proselint](http://proselint.com/) :warning: * [proselint](http://proselint.com/) :warning:
* [redpen](http://redpen.cc/) :warning: * [redpen](http://redpen.cc/) :warning:
* [textlint](https://textlint.github.io/) :warning: * [textlint](https://textlint.github.io/) :warning:
@@ -715,7 +707,6 @@ formatting.
* [thriftcheck](https://github.com/pinterest/thriftcheck) * [thriftcheck](https://github.com/pinterest/thriftcheck)
* TOML * TOML
* [dprint](https://dprint.dev) * [dprint](https://dprint.dev)
* [tombi](https://tombi-toml.github.io/tombi/)
* TypeScript * TypeScript
* [biome](https://biomejs.dev/) * [biome](https://biomejs.dev/)
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
@@ -740,17 +731,16 @@ formatting.
* [hdl-checker](https://pypi.org/project/hdl-checker) * [hdl-checker](https://pypi.org/project/hdl-checker)
* [iverilog](https://github.com/steveicarus/iverilog) * [iverilog](https://github.com/steveicarus/iverilog)
* [slang](https://github.com/MikePopoloski/slang) * [slang](https://github.com/MikePopoloski/slang)
* [verible](https://github.com/chipsalliance/verible/tree/master)
* [verilator](http://www.veripool.org/projects/verilator/wiki/Intro) * [verilator](http://www.veripool.org/projects/verilator/wiki/Intro)
* [vlog](https://www.mentor.com/products/fv/questa/) * [vlog](https://www.mentor.com/products/fv/questa/)
* [xvlog](https://www.xilinx.com/products/design-tools/vivado.html) :speech_balloon: * [xvlog](https://www.xilinx.com/products/design-tools/vivado.html)
* [yosys](http://www.clifford.at/yosys/) :floppy_disk: * [yosys](http://www.clifford.at/yosys/) :floppy_disk:
* VHDL * VHDL
* [ghdl](https://github.com/ghdl/ghdl) * [ghdl](https://github.com/ghdl/ghdl)
* [vcom](https://www.mentor.com/products/fv/questa/) * [vcom](https://www.mentor.com/products/fv/questa/)
* [xvhdl](https://www.xilinx.com/products/design-tools/vivado.html) :speech_balloon: * [xvhdl](https://www.xilinx.com/products/design-tools/vivado.html)
* Vim * Vim
* [vimls](https://github.com/iamcco/vim-language-server) :speech_balloon: * [vimls](https://github.com/iamcco/vim-language-server)
* [vint](https://github.com/Kuniwak/vint) * [vint](https://github.com/Kuniwak/vint)
* Vim help * Vim help
* [alex](https://github.com/get-alex/alex) :warning: * [alex](https://github.com/get-alex/alex) :warning:
@@ -759,7 +749,7 @@ formatting.
* Vue * Vue
* [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell) * [cspell](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell)
* [prettier](https://github.com/prettier/prettier) * [prettier](https://github.com/prettier/prettier)
* [vls](https://github.com/vuejs/vetur/tree/master/server) :speech_balloon: * [vls](https://github.com/vuejs/vetur/tree/master/server)
* [volar](https://github.com/johnsoncodehk/volar) * [volar](https://github.com/johnsoncodehk/volar)
* WGSL * WGSL
* [naga](https://github.com/gfx-rs/naga) * [naga](https://github.com/gfx-rs/naga)
@@ -776,14 +766,14 @@ formatting.
* [gitlablint](https://github.com/elijah-roberts/gitlab-lint) * [gitlablint](https://github.com/elijah-roberts/gitlab-lint)
* [prettier](https://github.com/prettier/prettier) * [prettier](https://github.com/prettier/prettier)
* [spectral](https://github.com/stoplightio/spectral) * [spectral](https://github.com/stoplightio/spectral)
* [swaglint](https://github.com/byCedric/swaglint) :warning: :speech_balloon: * [swaglint](https://github.com/byCedric/swaglint) :warning:
* [yaml-language-server](https://github.com/redhat-developer/yaml-language-server) :speech_balloon: * [yaml-language-server](https://github.com/redhat-developer/yaml-language-server)
* [yamlfix](https://lyz-code.github.io/yamlfix) * [yamlfix](https://lyz-code.github.io/yamlfix)
* [yamlfmt](https://github.com/google/yamlfmt) * [yamlfmt](https://github.com/google/yamlfmt)
* [yamllint](https://yamllint.readthedocs.io/) * [yamllint](https://yamllint.readthedocs.io/)
* [yq](https://github.com/mikefarah/yq) * [yq](https://github.com/mikefarah/yq)
* YANG * YANG
* [yang-lsp](https://github.com/theia-ide/yang-lsp) :speech_balloon: * [yang-lsp](https://github.com/theia-ide/yang-lsp)
* Yara * Yara
* [yls](https://github.com/avast/yls) * [yls](https://github.com/avast/yls)
* Zeek * Zeek
@@ -791,4 +781,4 @@ formatting.
* Zig * Zig
* [zigfmt](https://github.com/ziglang/zig) * [zigfmt](https://github.com/ziglang/zig)
* [zlint](https://github.com/DonIsaac/zlint) * [zlint](https://github.com/DonIsaac/zlint)
* [zls](https://github.com/zigtools/zls) :speech_balloon: * [zls](https://github.com/zigtools/zls)

View File

@@ -15,8 +15,9 @@ Execute(The default biome command should be correct):
AssertFixer AssertFixer
\ { \ {
\ 'read_temporary_file': 1,
\ 'command': ale#Escape('biome') \ 'command': ale#Escape('biome')
\ . ' check --write --stdin-file-path %s' \ . ' check --write %t'
\ } \ }
Execute(Unsafe fixes can be applied via an option): Execute(Unsafe fixes can be applied via an option):
@@ -25,8 +26,9 @@ Execute(Unsafe fixes can be applied via an option):
AssertFixer AssertFixer
\ { \ {
\ 'read_temporary_file': 1,
\ 'command': ale#Escape('biome') \ 'command': ale#Escape('biome')
\ . ' check --write --stdin-file-path %s --unsafe' \ . ' check --write --unsafe %t'
\ } \ }
Execute(The fixer should accept options): Execute(The fixer should accept options):
@@ -35,6 +37,7 @@ Execute(The fixer should accept options):
AssertFixer AssertFixer
\ { \ {
\ 'read_temporary_file': 1,
\ 'command': ale#Escape('biome') \ 'command': ale#Escape('biome')
\ . ' check --write --stdin-file-path %s --foobar', \ . ' check --write --foobar %t',
\ } \ }

View File

@@ -1,17 +0,0 @@
Before:
call ale#assert#SetUpFixerTest('markdown', 'markdownlint')
After:
call ale#assert#TearDownFixerTest()
Execute:
AssertFixer {
\ 'command': ale#Escape('markdownlint') . ' --fix',
\}
Execute:
let g:ale_markdownlint_executable = 'custom_markdownlint'
AssertFixer {
\ 'command': ale#Escape('custom_markdownlint') . ' --fix',
\}

View File

@@ -1,47 +1,53 @@
Before: Before:
call ale#assert#SetUpFixerTest('ruby', 'rubocop') Save g:ale_ruby_rubocop_executable
Save g:ale_ruby_rubocop_options
" Use an invalid global executable, so we don't match it.
let g:ale_ruby_rubocop_executable = 'xxxinvalid'
let g:ale_ruby_rubocop_options = ''
call ale#test#SetDirectory('/testplugin/test/fixers')
After: After:
call ale#assert#TearDownFixerTest() Restore
call ale#test#RestoreDirectory()
Execute(The rubocop callback should return the correct default values): Execute(The rubocop callback should return the correct default values):
call ale#test#SetFilename('../test-files/ruby/dummy.rb') call ale#test#SetFilename('../test-files/ruby/dummy.rb')
GivenCommandOutput ['1.61.0'] AssertEqual
AssertFixer
\ { \ {
\ 'process_with': 'ale#fixers#rubocop#PostProcess', \ 'process_with': 'ale#fixers#rubocop#PostProcess',
\ 'command': ale#Escape(g:ale_ruby_rubocop_executable) \ 'command': ale#Escape(g:ale_ruby_rubocop_executable)
\ . ' --auto-correct --editor-mode --force-exclusion --stdin %s', \ . ' --auto-correct --force-exclusion --stdin %s',
\ } \ },
\ ale#fixers#rubocop#Fix(bufnr(''))
Execute(The rubocop callback should include custom rubocop options): Execute(The rubocop callback should include custom rubocop options):
let g:ale_ruby_rubocop_options = '--except Lint/Debugger' let g:ale_ruby_rubocop_options = '--except Lint/Debugger'
call ale#test#SetFilename('../test-files/ruby/with_config/dummy.rb') call ale#test#SetFilename('../test-files/ruby/with_config/dummy.rb')
GivenCommandOutput ['1.61.0'] AssertEqual
AssertFixer
\ { \ {
\ 'process_with': 'ale#fixers#rubocop#PostProcess', \ 'process_with': 'ale#fixers#rubocop#PostProcess',
\ 'command': ale#Escape(g:ale_ruby_rubocop_executable) \ 'command': ale#Escape(g:ale_ruby_rubocop_executable)
\ . ' --except Lint/Debugger' \ . ' --except Lint/Debugger'
\ . ' --auto-correct --editor-mode --force-exclusion --stdin %s', \ . ' --auto-correct --force-exclusion --stdin %s',
\ } \ },
\ ale#fixers#rubocop#Fix(bufnr(''))
Execute(The rubocop callback should use auto-correct-all option when set): Execute(The rubocop callback should use auto-correct-all option when set):
let g:ale_ruby_rubocop_auto_correct_all = 1 let g:ale_ruby_rubocop_auto_correct_all = 1
call ale#test#SetFilename('../test-files/ruby/with_config/dummy.rb') call ale#test#SetFilename('../test-files/ruby/with_config/dummy.rb')
GivenCommandOutput ['1.61.0'] AssertEqual
AssertFixer
\ { \ {
\ 'process_with': 'ale#fixers#rubocop#PostProcess', \ 'process_with': 'ale#fixers#rubocop#PostProcess',
\ 'command': ale#Escape(g:ale_ruby_rubocop_executable) \ 'command': ale#Escape(g:ale_ruby_rubocop_executable)
\ . ' --auto-correct-all --editor-mode --force-exclusion --stdin %s' \ . ' --auto-correct-all --force-exclusion --stdin %s'
\ } \ },
\ ale#fixers#rubocop#Fix(bufnr(''))
Execute(The rubocop post-processor should remove diagnostics content): Execute(The rubocop post-processor should remove diagnostics content):
AssertEqual AssertEqual
@@ -81,16 +87,3 @@ Execute(The rubocop post-processor should remove diagnostics content):
\ ' ''forrest'',', \ ' ''forrest'',',
\ ' ''run'']', \ ' ''run'']',
\ ]) \ ])
Execute(The rubocop callback should not use editor-mode option with older versions):
call ale#test#SetFilename('../test-files/ruby/with_config/dummy.rb')
GivenCommandOutput ['1.59.0']
AssertFixer
\ {
\ 'process_with': 'ale#fixers#rubocop#PostProcess',
\ 'command': ale#Escape(g:ale_ruby_rubocop_executable)
\ . ' --auto-correct --force-exclusion --stdin %s'
\ }

View File

@@ -17,7 +17,7 @@ Execute(The stylelint callback should return the correct default values):
\ 'cwd': '%s:h', \ 'cwd': '%s:h',
\ 'command': (has('win32') ? 'node.exe ' : '') \ 'command': (has('win32') ? 'node.exe ' : '')
\ . ale#Escape(ale#path#Simplify(g:dir . '/../test-files/eslint/react-app/node_modules/stylelint/bin/stylelint.js')) \ . ale#Escape(ale#path#Simplify(g:dir . '/../test-files/eslint/react-app/node_modules/stylelint/bin/stylelint.js'))
\ . ' --fix --stdin --no-color --stdin-filename %s', \ . ' --fix --stdin --stdin-filename %s',
\ } \ }
Execute(The stylelint callback should include custom stylelint options): Execute(The stylelint callback should include custom stylelint options):
@@ -30,5 +30,5 @@ Execute(The stylelint callback should include custom stylelint options):
\ 'cwd': '%s:h', \ 'cwd': '%s:h',
\ 'command': (has('win32') ? 'node.exe ' : '') \ 'command': (has('win32') ? 'node.exe ' : '')
\ . ale#Escape(ale#path#Simplify(g:dir . '/../test-files/eslint/react-app/node_modules/stylelint/bin/stylelint.js')) \ . ale#Escape(ale#path#Simplify(g:dir . '/../test-files/eslint/react-app/node_modules/stylelint/bin/stylelint.js'))
\ . ' --cache --fix --stdin --no-color --stdin-filename %s', \ . ' --cache --fix --stdin --stdin-filename %s',
\ } \ }

View File

@@ -1,34 +0,0 @@
Before:
Save g:ale_toml_tombi_executable
Save g:ale_toml_tombi_format_options
Save g:ale_toml_tombi_online
" Use an invalid global executable, so we don't match it.
let g:ale_toml_tombi_executable = 'xxxinvalid'
let g:ale_toml_tombi_format_options = ''
call ale#test#SetDirectory('/testplugin/test/fixers')
After:
Restore
call ale#test#RestoreDirectory()
Execute(The tombi format callback should return the correct default values):
AssertEqual
\ {'command': ale#Escape('xxxinvalid') . ' format --offline'},
\ ale#fixers#tombi_format#Fix(bufnr(''))
Execute(The tombi format callback should obey `toml_tombi_online`):
let g:ale_toml_tombi_online = 1
AssertEqual
\ {'command': ale#Escape('xxxinvalid') . ' lint'},
\ ale#fixers#tombi_lint#Fix(bufnr(''))
Execute(The tombi format callback should include custom options):
let g:ale_toml_tombi_format_options = "--no-cache"
AssertEqual
\ {'command': ale#Escape('xxxinvalid') . ' format --offline --no-cache'},
\ ale#fixers#tombi_format#Fix(bufnr(''))

View File

@@ -1,34 +0,0 @@
Before:
Save g:ale_toml_tombi_executable
Save g:ale_toml_tombi_lint_options
Save g:ale_toml_tombi_online
" Use an invalid global executable, so we don't match it.
let g:ale_toml_tombi_executable = 'xxxinvalid'
let g:ale_toml_tombi_lint_options = ''
call ale#test#SetDirectory('/testplugin/test/fixers')
After:
Restore
call ale#test#RestoreDirectory()
Execute(The tombi lint callback should return the correct default values):
AssertEqual
\ {'command': ale#Escape('xxxinvalid') . ' lint --offline'},
\ ale#fixers#tombi_lint#Fix(bufnr(''))
Execute(The tombi lint callback should obey `toml_tombi_online`):
let g:ale_toml_tombi_online = 1
AssertEqual
\ {'command': ale#Escape('xxxinvalid') . ' lint'},
\ ale#fixers#tombi_lint#Fix(bufnr(''))
Execute(The tombi lint callback should include custom options):
let g:ale_toml_tombi_lint_options = "--no-cache"
AssertEqual
\ {'command': ale#Escape('xxxinvalid') . ' lint --offline --no-cache'},
\ ale#fixers#tombi_lint#Fix(bufnr(''))

View File

@@ -1,47 +0,0 @@
Before:
call ale#assert#SetUpFixerTest('python', 'unimport')
let b:bin_dir = has('win32') ? 'Scripts' : 'bin'
After:
call ale#assert#TearDownFixerTest()
unlet! b:bin_dir
Execute(The unimport callback should return the correct default values):
call ale#test#SetFilename('../test-files/python/with_virtualenv/subdir/foo/bar.py')
AssertFixer
\ {
\ 'command': ale#Escape(ale#path#Simplify(g:dir . '/../test-files/python/with_virtualenv/env/' . b:bin_dir . '/unimport')),
\ }
Execute(Pipenv is detected when python_unimport_auto_pipenv is set):
let g:ale_python_unimport_auto_pipenv = 1
call ale#test#SetFilename('../test-files/python/pipenv/whatever.py')
AssertFixer
\ {
\ 'command': ale#Escape('pipenv') . ' run unimport'
\ }
Execute(Poetry is detected when python_unimport_auto_poetry is set):
let g:ale_python_unimport_auto_poetry = 1
call ale#test#SetFilename('../test-files/python/poetry/whatever.py')
AssertFixer
\ {
\ 'command': ale#Escape('poetry') . ' run unimport'
\ }
Execute(uv is detected when python_unimport_auto_uv is set):
let g:ale_python_unimport_auto_uv = 1
call ale#test#SetFilename('../test-files/python/uv/whatever.py')
AssertFixer
\ {
\ 'command': ale#Escape('uv') . ' run unimport'
\ }

View File

@@ -1,16 +0,0 @@
Before:
call ale#assert#SetUpFixerTest('verilog', 'verible_format')
After:
call ale#assert#TearDownFixerTest()
Execute(The verible format callback should return the correct default values):
AssertFixer {'command': ale#Escape('verible-verilog-format') .' -'}
Execute(The verible format callback should allow a custom executable):
let g:ale_verilog_verible_format_executable = 'foo/bar'
AssertFixer {'command': ale#Escape('foo/bar') . ' -'}
Execute(The verible format callback should allow custom options):
let g:ale_verilog_verible_format_options = '--foo --bar'
AssertFixer {'command': ale#Escape('verible-verilog-format') .' --foo --bar -'}

View File

@@ -7,27 +7,6 @@ After:
call ale#linter#Reset() call ale#linter#Reset()
Execute(The oelint_adv handler should handle warnings): Execute(The oelint_adv handler should handle warnings):
AssertEqual
\ [
\ {
\ 'lnum': 1234,
\ 'type': 'I',
\ 'code': 'oelint.var.suggestedvar.BUGTRACKER',
\ 'text': 'Variable ''BUGTRACKER'' should be set',
\ },
\ {
\ 'lnum': 17,
\ 'type': 'E',
\ 'code': 'oelint.var.mandatoryvar.DESCRIPTION',
\ 'text': 'Variable ''DESCRIPTION'' should be set',
\ },
\ ],
\ ale_linters#bitbake#oelint_adv#Handle(1, [
\ '/meta-x/recipes-y/example/example_1.0.bb:1234:info:oelint.var.suggestedvar.BUGTRACKER:Variable ''BUGTRACKER'' should be set [branch:true]',
\ 'example2_1.1.bb:17:error:oelint.var.mandatoryvar.DESCRIPTION:Variable ''DESCRIPTION'' should be set [branch:true]',
\ ])
Execute(The oelint_adv handler should handle warnings without branch message):
AssertEqual AssertEqual
\ [ \ [
\ { \ {

View File

@@ -1,86 +0,0 @@
Before:
runtime ale_linters/cloudformation/checkov.vim
call ale#test#SetFilename('sample.template.yaml')
After:
call ale#linter#Reset()
Execute(Handle output for no findings correctly):
AssertEqual
\ [],
\ ale_linters#cloudformation#checkov#Handle(bufnr(''), [
\'{',
\' "passed": 0,',
\' "failed": 0,',
\' "skipped": 0,',
\' "parsing_errors": 0,',
\' "resource_count": 0,',
\' "checkov_version": "3.2.415"',
\'}'
\])
Execute(Handle output for all tests passed):
AssertEqual
\ [],
\ ale_linters#cloudformation#checkov#Handle(bufnr(''), [
\'{',
\' "check_type": "cloudformation",',
\' "results": {',
\' "failed_checks": []',
\' },',
\' "summary": {',
\' "passed": 18,',
\' "failed": 0,',
\' "skipped": 0,',
\' "parsing_errors": 0,',
\' "resource_count": 3,',
\' "checkov_version": "3.2.415"',
\' }',
\'}'
\])
Execute(The JSON output of checkov should be handled correctly):
AssertEqual
\ [
\ {
\ 'filename': '/sample.template.yaml',
\ 'lnum': 57,
\ 'end_lnum': 79,
\ 'text': 'Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ) [CKV_AWS_116]',
\ 'detail': "CKV_AWS_116: Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)\n" .
\ 'For more information, see: https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-general-policies/ensure-that-aws-lambda-function-is-configured-for-a-dead-letter-queue-dlq',
\ 'type': 'W',
\ }
\ ],
\ ale_linters#cloudformation#checkov#Handle(bufnr(''), [
\'{',
\' "check_type": "cloudformation",',
\' "results": {',
\' "failed_checks": [',
\' {',
\' "check_id": "CKV_AWS_116",',
\' "bc_check_id": "BC_AWS_GENERAL_64",',
\' "check_name": "Ensure that AWS Lambda function is configured for a Dead Letter Queue(DLQ)",',
\' "check_result": {',
\' "result": "FAILED",',
\' "evaluated_keys": [',
\' "Properties/DeadLetterQueue/TargetArn"',
\' ]',
\' },',
\' "file_path": "/sample.template.yaml",',
\' "repo_file_path": "/sample.template.yaml",',
\' "file_line_range": [',
\' 57,',
\' 79',
\' ],',
\' "resource": "AWS::Serverless::Function.FunctionName",',
\' "evaluations": {},',
\' "check_class": "checkov.cloudformation.checks.resource.aws.LambdaDLQConfigured",',
\' "entity_tags": null,',
\' "resource_address": null,',
\' "guideline": "https://docs.prismacloud.io/en/enterprise-edition/policy-reference/aws-policies/aws-general-policies/ensure-that-aws-lambda-function-is-configured-for-a-dead-letter-queue-dlq"',
\' }',
\' ]',
\' }',
\'}'
\ ])

View File

@@ -1,59 +0,0 @@
Before:
runtime ale_linters/fortran/fortitude.vim
After:
call ale#linter#Reset()
Execute(Simple fortitude handler run):
AssertEqual
\ [
\ {
\ 'lnum': 3,
\ 'end_lnum': 3,
\ 'col': 5,
\ 'end_col': 18,
\ 'text': '''implicit none'' missing ''external''',
\ 'type': 'W',
\ 'code': 'C003',
\ },
\ {
\ 'col': 13,
\ 'end_col': 14,
\ 'end_lnum': 7,
\ 'lnum': 7,
\ 'text': 'Syntax error',
\ 'type': 'E',
\ 'code': 'E001',
\ },
\ ],
\ ale_linters#fortran#fortitude#Handle(bufnr(''), [
\ '[',
\ json_encode({
\ 'code': 'C003',
\ 'end_location': {'column': 18, 'row': 3},
\ 'filename': '/home/user/documents/somefortranfile.f90',
\ 'fix': {
\ 'applicability': 'unsafe',
\ 'edits': [
\ {
\ 'content': ' (type, external)',
\ 'end_location': {'column': 18, 'row': 3},
\ 'location': {'column': 18, 'row': 3},
\ },
\ ],
\ 'message': 'Add `(external)` to ''implicit none''',
\ },
\ 'location': {'column': 5, 'row': 3},
\ 'message': '''implicit none'' missing ''external'''
\ }),
\ ',',
\ json_encode({
\ 'code': 'E001',
\ 'end_location': {'column': 14, 'row': 7},
\ 'filename': '/home/user/documents/somefortranfile.f90',
\ 'fix': v:null,
\ 'location': {'column': 13, 'row': 7},
\ 'message': 'Syntax error',
\ }),
\ ']',
\ ])

View File

@@ -1,8 +1,8 @@
Before: Before:
Save g:ale_warn_about_trailing_whitespace runtime ale_linters/shell/shellcheck.vim
After: After:
Restore call ale#linter#Reset()
Execute(The shellcheck handler should handle basic errors or warnings <0.7.0): Execute(The shellcheck handler should handle basic errors or warnings <0.7.0):
AssertEqual AssertEqual
@@ -150,58 +150,3 @@ Execute(The shellcheck handler should handle info and style >=0.7.0):
\ ] \ ]
\ }' \ }'
\ ]) \ ])
Execute(shellcheck errors for trailing whitespace should show by default):
AssertEqual
\ [
\ {
\ 'lnum': 8,
\ 'col': 12,
\ 'code': 'SC1101',
\ 'end_lnum': 8,
\ 'type': 'E',
\ 'end_col': 11,
\ 'text': 'Delete trailing spaces after \ to break line (or use quotes for literal space).',
\ 'detail': 'Delete trailing spaces after \ to break line (or use quotes for literal space).' . "\n\nFor more information:\n https://www.shellcheck.net/wiki/" . 'SC1101',
\ },
\ ],
\ ale#handlers#shellcheck#Handle(bufnr(''), [0, 7, 0], [
\ '{
\ "comments": [
\ {
\ "file": "-",
\ "line": 8,
\ "endLine": 8,
\ "column": 12,
\ "endColumn": 12,
\ "level": "error",
\ "code":1101,
\ "message":"Delete trailing spaces after \\ to break line (or use quotes for literal space).",
\ "fix":null
\ }
\ ]
\ }',
\ ])
Execute(shellcheck errors for trailing whitepsace should be able to be silenced by ale_warn_about_trailing_whitespace):
let g:ale_warn_about_trailing_whitespace = 0
AssertEqual
\ [],
\ ale#handlers#shellcheck#Handle(bufnr(''), [0, 7, 0], [
\ '{
\ "comments": [
\ {
\ "file": "-",
\ "line": 8,
\ "endLine": 8,
\ "column": 12,
\ "endColumn": 12,
\ "level": "error",
\ "code":1101,
\ "message":"Delete trailing spaces after \\ to break line (or use quotes for literal space).",
\ "fix":null
\ }
\ ]
\ }',
\ ])

View File

@@ -8,14 +8,12 @@ Execute(The slang handler should parse lines correctly):
AssertEqual AssertEqual
\ [ \ [
\ { \ {
\ 'filename' : 'foo.sv',
\ 'lnum': 11, \ 'lnum': 11,
\ 'col': 1, \ 'col': 1,
\ 'type': 'W', \ 'type': 'W',
\ 'text': 'extra '';'' has no effect [-Wempty-member]', \ 'text': 'extra '';'' has no effect [-Wempty-member]',
\ }, \ },
\ { \ {
\ 'filename' : 'bar.sv',
\ 'lnum': 24, \ 'lnum': 24,
\ 'col': 12, \ 'col': 12,
\ 'type': 'E', \ 'type': 'E',
@@ -24,5 +22,5 @@ Execute(The slang handler should parse lines correctly):
\ ], \ ],
\ ale_linters#verilog#slang#Handle(bufnr(''), [ \ ale_linters#verilog#slang#Handle(bufnr(''), [
\ 'foo.sv:11:1: warning: extra '';'' has no effect [-Wempty-member]', \ 'foo.sv:11:1: warning: extra '';'' has no effect [-Wempty-member]',
\ 'bar.sv:24:12: error: cannot mix continuous and procedural assignments to variable ''data_o''', \ 'foo.sv:24:12: error: cannot mix continuous and procedural assignments to variable ''data_o''',
\ ]) \ ])

View File

@@ -41,26 +41,3 @@ Execute (stylelint should complain when no configuration file is used):
\ 'detail': join(g:error_lines, "\n"), \ 'detail': join(g:error_lines, "\n"),
\ }], \ }],
\ ale#handlers#css#HandleStyleLintFormat(347, g:error_lines[:]) \ ale#handlers#css#HandleStyleLintFormat(347, g:error_lines[:])
Execute (stylelint should complain but not blow up when SyntaxError is encountered):
let g:error_lines = [
\ 'SyntaxError: Unexpected token, expected "," (136:4)',
\ ' at constructor (/home/ts-project/node_modules/@babel/parser/lib/index.js:367:19)',
\ ' at TypeScriptParserMixin.raise (/home/ts-project/node_modules/@babel/parser/lib/index.js:6630:19)',
\ ' at TypeScriptParserMixin.unexpected (/home/ts-project/node_modules/@babel/parser/lib/index.js:6650:16)',
\ ' at TypeScriptParserMixin.expect (/home/ts-project/node_modules/@babel/parser/lib/index.js:6930:12)',
\ ' at TypeScriptParserMixin.tsParseDelimitedListWorker (/home/ts-project/node_modules/@babel/parser/lib/index.js:7932:14)',
\ ' at TypeScriptParserMixin.tsParseDelimitedList (/home/ts-project/node_modules/@babel/parser/lib/index.js:7909:25)',
\ ' at /home/ts-project/node_modules/@babel/parser/lib/index.js:9170:19',
\ ' at TypeScriptParserMixin.tsInTopLevelContext (/home/ts-project/node_modules/@babel/parser/lib/index.js:8834:14)',
\ ' at /home/ts-project/node_modules/@babel/parser/lib/index.js:9168:44',
\ ' at TypeScriptParserMixin.tsInType (/home/ts-project/node_modules/@babel/parser/lib/index.js:8841:14)',
\]
AssertEqual
\ [{
\ 'lnum': 1,
\ 'text': 'stylelint exception thrown (type :ALEDetail for more information)',
\ 'detail': join(g:error_lines, "\n"),
\ }],
\ ale#handlers#css#HandleStyleLintFormat(347, g:error_lines[:])

Some files were not shown because too many files have changed in this diff Show More