mirror of
https://github.com/dense-analysis/ale.git
synced 2026-03-01 12:56:57 +08:00
Compare commits
73 Commits
neovim-lsp
...
ty-hax
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d3883392e | ||
|
|
fbaf6485d9 | ||
|
|
ca1da76d5e | ||
|
|
962a932ed4 | ||
|
|
395d9fa2aa | ||
|
|
5f286eb909 | ||
|
|
1f0f9ef28d | ||
|
|
e56b55b65d | ||
|
|
260c756a9b | ||
|
|
86d8ada5cb | ||
|
|
de2d3da738 | ||
|
|
b9d7f56471 | ||
|
|
6d8e4a641c | ||
|
|
d2f4090c33 | ||
|
|
59c6b4f7b0 | ||
|
|
21d5de18b2 | ||
|
|
ed26d1f1d9 | ||
|
|
9811114948 | ||
|
|
4217461c48 | ||
|
|
528e25954b | ||
|
|
b415dddf9f | ||
|
|
55acb6536e | ||
|
|
34d1fd266b | ||
|
|
84eae97bf2 | ||
|
|
9acafa8018 | ||
|
|
11cbd96667 | ||
|
|
ce1ee7c598 | ||
|
|
a083d58c7f | ||
|
|
3539f39d4d | ||
|
|
37e64b5caf | ||
|
|
822d9a1bf3 | ||
|
|
92dd497e6c | ||
|
|
6d7bc15d9a | ||
|
|
29f1ff2579 | ||
|
|
7df94447c1 | ||
|
|
c74b917648 | ||
|
|
206b414120 | ||
|
|
5dfd1fdb9a | ||
|
|
ac691b0b89 | ||
|
|
28573c8ada | ||
|
|
d6f1a47647 | ||
|
|
487d915984 | ||
|
|
c7f3ba9d41 | ||
|
|
295752ff3e | ||
|
|
3d68ec7857 | ||
|
|
e670c9781c | ||
|
|
0d1d0a9f81 | ||
|
|
c8890af8d4 | ||
|
|
9abe393961 | ||
|
|
4b1bf3ee8f | ||
|
|
edccdfa9ef | ||
|
|
9e49019a26 | ||
|
|
a0572359ae | ||
|
|
80ff84db84 | ||
|
|
c8c33e7217 | ||
|
|
5098dfd27e | ||
|
|
7cdaaa645d | ||
|
|
2f4a866591 | ||
|
|
f9de268816 | ||
|
|
1aaeb2cdae | ||
|
|
05e22db9a2 | ||
|
|
d0cdde7516 | ||
|
|
baaca9a5d7 | ||
|
|
aac34cd45a | ||
|
|
366de225fd | ||
|
|
22185c4c5c | ||
|
|
2883260ade | ||
|
|
090d31b79a | ||
|
|
067e74fee8 | ||
|
|
ff8fe94494 | ||
|
|
6433d31f47 | ||
|
|
f3f0b05240 | ||
|
|
add538213f |
@@ -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 ftp://ftp.vim.org/pub/vim/pc/vim80-586w32.zip `
|
Invoke-WebRequest https://github.com/dense-analysis/ale/releases/download/v4.0.0/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 ftp://ftp.vim.org/pub/vim/pc/vim80-586rt.zip `
|
Invoke-WebRequest https://github.com/dense-analysis/ale/releases/download/v4.0.0/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')
|
||||||
}
|
}
|
||||||
|
|||||||
1
.github/ISSUE_TEMPLATE/report-a-bug.md
vendored
1
.github/ISSUE_TEMPLATE/report-a-bug.md
vendored
@@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
name: Report a bug
|
name: Report a bug
|
||||||
labels: bug
|
labels: bug
|
||||||
|
type: Bug
|
||||||
about: Report a bug with ALE.
|
about: Report a bug with ALE.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
name: Suggest a new linter or fixer
|
name: Suggest a new linter or fixer
|
||||||
labels: new tool
|
labels: new tool
|
||||||
|
type: Task
|
||||||
about: Suggest a new tool ALE can officially integrate with.
|
about: Suggest a new tool ALE can officially integrate with.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
name: Suggest an improvement
|
name: Suggest an improvement
|
||||||
labels: enhancement
|
labels: enhancement
|
||||||
|
type: Feature
|
||||||
about: Suggest some way to improve ALE, or add a new feature.
|
about: Suggest some way to improve ALE, or add a new feature.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
"test"
|
"test"
|
||||||
],
|
],
|
||||||
"workspace.library": [
|
"workspace.library": [
|
||||||
"/usr/share/nvim/runtime/lua"
|
"/usr/share/nvim/runtime/lua",
|
||||||
|
"/opt/homebrew/share/nvim/runtime/lua"
|
||||||
],
|
],
|
||||||
"runtime.pathStrict": true,
|
"runtime.pathStrict": true,
|
||||||
"runtime.path": [
|
"runtime.path": [
|
||||||
|
|||||||
2
AGENTS.md
Normal file
2
AGENTS.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
- 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.
|
||||||
@@ -61,6 +61,14 @@ 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
|
||||||
|
|||||||
@@ -2,11 +2,44 @@
|
|||||||
" 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
|
||||||
@@ -103,28 +136,50 @@ 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:commands = {
|
let l:executable = ale_linters#ansible#ansible_lint#GetExecutable(a:buffer)
|
||||||
\ '>=6.0.0': '%e --nocolor -f json -x yaml %s',
|
|
||||||
\ '>=5.0.0': '%e --nocolor --parseable-severity -x yaml %s',
|
let l:exec_args = l:executable =~? '\(pipenv\|poetry\|uv\)$'
|
||||||
\ '<5.0.0': '%e --nocolor -p %t'
|
\ ? ' run ansible-lint'
|
||||||
|
\ : ''
|
||||||
|
|
||||||
|
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'] :
|
|
||||||
\ ale#semver#GTE(a:version, [5, 0]) ? l:commands['>=5.0.0'] :
|
let l:cmd_opts = ale#semver#GTE(a:version, [6, 0]) ? l:opts_map['>=6.0.0'] :
|
||||||
\ l:commands['<5.0.0']
|
\ ale#semver#GTE(a:version, [5, 0]) ? l:opts_map['>=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'),
|
||||||
\ 'command': {buffer -> ale#semver#RunWithVersionCheck(
|
\ 'cwd': function('ale_linters#ansible#ansible_lint#GetCwd'),
|
||||||
\ buffer,
|
\ 'command': function('ale_linters#ansible#ansible_lint#RunWithVersionCheck'),
|
||||||
\ 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,
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
" 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#linter#Define('asciidoc', {
|
call ale#handlers#redpen#DefineLinter('asciidoc')
|
||||||
\ 'name': 'redpen',
|
|
||||||
\ 'executable': 'redpen',
|
|
||||||
\ 'command': 'redpen -f asciidoc -r json %t',
|
|
||||||
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
|
|
||||||
\})
|
|
||||||
|
|||||||
43
ale_linters/bindzone/checkzone.vim
Normal file
43
ale_linters/bindzone/checkzone.vim
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
" Description: named-checkzone for bindzone
|
||||||
|
|
||||||
|
call ale#Set('bindzone_checkzone_executable', 'named-checkzone')
|
||||||
|
call ale#Set('bindzone_checkzone_options', '-c IN')
|
||||||
|
|
||||||
|
function! ale_linters#bindzone#checkzone#GetCommand(buffer) abort
|
||||||
|
return '%e' . ale#Pad(ale#Var(a:buffer, 'bindzone_checkzone_options'))
|
||||||
|
\ . ' example.com %t'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#bindzone#checkzone#Handle(buffer, lines) abort
|
||||||
|
let l:warning_pattern = '\vzone example.com/IN: (.+)$'
|
||||||
|
let l:error_pattern = '\v:(\d+): (.+)$'
|
||||||
|
let l:output = []
|
||||||
|
|
||||||
|
for l:match in ale#util#GetMatches(a:lines, l:error_pattern)
|
||||||
|
let l:lnum = l:match[1]
|
||||||
|
let l:text = l:match[2]
|
||||||
|
|
||||||
|
call add(l:output, {'text': l:text, 'lnum': l:lnum + 0, 'type': 'E'})
|
||||||
|
endfor
|
||||||
|
|
||||||
|
for l:match in ale#util#GetMatches(a:lines, l:warning_pattern)
|
||||||
|
let l:text = l:match[1]
|
||||||
|
|
||||||
|
" Ignore information messages
|
||||||
|
let l:scrub_match = matchlist(l:text, '\v(loaded serial|not loaded due to) ')
|
||||||
|
|
||||||
|
if empty(l:scrub_match)
|
||||||
|
call add(l:output, {'text': l:text, 'lnum': 0, 'type': 'W'})
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:output
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('bindzone', {
|
||||||
|
\ 'name': 'checkzone',
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'bindzone_checkzone_executable')},
|
||||||
|
\ 'command': function('ale_linters#bindzone#checkzone#GetCommand'),
|
||||||
|
\ 'callback': 'ale_linters#bindzone#checkzone#Handle',
|
||||||
|
\ 'read_buffer': 0,
|
||||||
|
\})
|
||||||
@@ -5,6 +5,14 @@ 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'))
|
||||||
@@ -17,26 +25,25 @@ 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' : (l:match[3] is# 'warning' ? 'W' : 'I'),
|
\ ? 'E'
|
||||||
\ 'text': StripAnsiCodes(l:match[5]),
|
\ : (l:match[3] is# 'warning' ? 'W' : 'I'),
|
||||||
\ 'code': l:match[4]
|
\ 'text': ale_linters#bitbake#oelint_adv#RemoveBranch(
|
||||||
\ })
|
\ 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',
|
||||||
|
|||||||
41
ale_linters/cloudformation/checkov.vim
Normal file
41
ale_linters/cloudformation/checkov.vim
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
" 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',
|
||||||
|
\})
|
||||||
@@ -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'))
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('css', {
|
call ale#linter#Define('css', {
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ function! ale_linters#dockerfile#hadolint#Handle(buffer, lines) abort
|
|||||||
if l:match[5] isnot# ''
|
if l:match[5] isnot# ''
|
||||||
let l:code = l:match[4] . l:match[5]
|
let l:code = l:match[4] . l:match[5]
|
||||||
let l:link = ' ( ' . l:domain . l:code . ' )'
|
let l:link = ' ( ' . l:domain . l:code . ' )'
|
||||||
let l:text = l:code . ': ' . l:detail
|
|
||||||
let l:detail = l:code . l:link . "\n\n" . l:detail
|
let l:detail = l:code . l:link . "\n\n" . l:detail
|
||||||
else
|
else
|
||||||
let l:type = 'E'
|
let l:type = 'E'
|
||||||
|
|||||||
12
ale_linters/elixir/expert.vim
Normal file
12
ale_linters/elixir/expert.vim
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
" 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'),
|
||||||
|
\})
|
||||||
47
ale_linters/fortran/fortitude.vim
Normal file
47
ale_linters/fortran/fortitude.vim
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
" 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,
|
||||||
|
\})
|
||||||
@@ -5,26 +5,38 @@ call ale#Set('go_golangci_lint_options', '')
|
|||||||
call ale#Set('go_golangci_lint_executable', 'golangci-lint')
|
call ale#Set('go_golangci_lint_executable', 'golangci-lint')
|
||||||
call ale#Set('go_golangci_lint_package', 1)
|
call ale#Set('go_golangci_lint_package', 1)
|
||||||
|
|
||||||
function! ale_linters#go#golangci_lint#GetCommand(buffer) abort
|
function! ale_linters#go#golangci_lint#GetExecutable(buffer) abort
|
||||||
|
let l:executable = ale#Var(a:buffer, 'go_golangci_lint_executable')
|
||||||
|
|
||||||
|
return l:executable
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#go#golangci_lint#GetCommand(buffer, version) abort
|
||||||
let l:filename = expand('#' . a:buffer . ':t')
|
let l:filename = expand('#' . a:buffer . ':t')
|
||||||
let l:options = ale#Var(a:buffer, 'go_golangci_lint_options')
|
let l:options = ale#Var(a:buffer, 'go_golangci_lint_options')
|
||||||
let l:lint_package = ale#Var(a:buffer, 'go_golangci_lint_package')
|
let l:lint_package = ale#Var(a:buffer, 'go_golangci_lint_package')
|
||||||
|
|
||||||
|
if ale#semver#GTE(a:version, [2, 0, 0])
|
||||||
|
let l:options = l:options
|
||||||
|
\ . ' --output.json.path stdout'
|
||||||
|
\ . ' --output.text.path stderr'
|
||||||
|
\ . ' --show-stats=0'
|
||||||
|
else
|
||||||
|
let l:options = l:options
|
||||||
|
\ . ' --out-format=json'
|
||||||
|
\ . ' --show-stats=0'
|
||||||
|
endif
|
||||||
|
|
||||||
if l:lint_package
|
if l:lint_package
|
||||||
return ale#go#EnvString(a:buffer)
|
return ale#go#EnvString(a:buffer)
|
||||||
\ . '%e run '
|
\ . '%e run '
|
||||||
\ . l:options
|
\ . l:options
|
||||||
\ . ' --out-format=json'
|
|
||||||
\ . ' --show-stats=0'
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ale#go#EnvString(a:buffer)
|
return ale#go#EnvString(a:buffer)
|
||||||
\ . '%e run '
|
\ . '%e run '
|
||||||
\ . ale#Escape(l:filename)
|
\ . ale#Escape(l:filename)
|
||||||
\ . ' ' . l:options
|
\ . ' ' . l:options
|
||||||
\ . ' --out-format=json'
|
|
||||||
\ . ' --show-stats=0'
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale_linters#go#golangci_lint#Handler(buffer, lines) abort
|
function! ale_linters#go#golangci_lint#Handler(buffer, lines) abort
|
||||||
@@ -58,9 +70,14 @@ endfunction
|
|||||||
|
|
||||||
call ale#linter#Define('go', {
|
call ale#linter#Define('go', {
|
||||||
\ 'name': 'golangci-lint',
|
\ 'name': 'golangci-lint',
|
||||||
\ 'executable': {b -> ale#Var(b, 'go_golangci_lint_executable')},
|
\ 'executable': function('ale_linters#go#golangci_lint#GetExecutable'),
|
||||||
\ 'cwd': '%s:h',
|
\ 'cwd': '%s:h',
|
||||||
\ 'command': function('ale_linters#go#golangci_lint#GetCommand'),
|
\ 'command': {buffer -> ale#semver#RunWithVersionCheck(
|
||||||
|
\ buffer,
|
||||||
|
\ ale_linters#go#golangci_lint#GetExecutable(buffer),
|
||||||
|
\ '%e --version',
|
||||||
|
\ function('ale_linters#go#golangci_lint#GetCommand'),
|
||||||
|
\ )},
|
||||||
\ 'callback': 'ale_linters#go#golangci_lint#Handler',
|
\ 'callback': 'ale_linters#go#golangci_lint#Handler',
|
||||||
\ 'lint_file': 1,
|
\ 'lint_file': 1,
|
||||||
\})
|
\})
|
||||||
|
|||||||
@@ -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 : '')
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('html', {
|
call ale#linter#Define('html', {
|
||||||
|
|||||||
34
ale_linters/html/superhtml.vim
Normal file
34
ale_linters/html/superhtml.vim
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
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',
|
||||||
|
\})
|
||||||
46
ale_linters/jinja/j2lint.vim
Normal file
46
ale_linters/jinja/j2lint.vim
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
" 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',
|
||||||
|
\})
|
||||||
28
ale_linters/lean/lake.vim
Normal file
28
ale_linters/lean/lake.vim
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
" Author: Benjamin Block <https://github.com/benjamindblock>
|
||||||
|
" Description: A language server for Lean 4.
|
||||||
|
|
||||||
|
function! ale_linters#lean#lake#GetProjectRoot(buffer) abort
|
||||||
|
let l:lakefile_toml = ale#path#FindNearestFile(a:buffer, 'lakefile.toml')
|
||||||
|
let l:lakefile_lean = ale#path#FindNearestFile(a:buffer, 'lakefile.lean')
|
||||||
|
|
||||||
|
if !empty(l:lakefile_toml)
|
||||||
|
return fnamemodify(l:lakefile_toml, ':p:h')
|
||||||
|
elseif !empty(l:lakefile_lean)
|
||||||
|
return fnamemodify(l:lakefile_lean, ':p:h')
|
||||||
|
else
|
||||||
|
return fnamemodify('', ':h')
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#Set('lean_lake_executable', 'lake')
|
||||||
|
call ale#Set('lean_lake_config', {})
|
||||||
|
|
||||||
|
call ale#linter#Define('lean', {
|
||||||
|
\ 'name': 'lake',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'language': 'lean',
|
||||||
|
\ 'lsp_config': {b -> ale#Var(b, 'lean_lake_config')},
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'lean_lake_executable')},
|
||||||
|
\ 'command': '%e serve',
|
||||||
|
\ 'project_root': function('ale_linters#lean#lake#GetProjectRoot'),
|
||||||
|
\})
|
||||||
@@ -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) . ' --stdin-filename %s'
|
return '%e' . ale#Pad(l:options) . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('less', {
|
call ale#linter#Define('less', {
|
||||||
|
|||||||
@@ -33,9 +33,8 @@ 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'))
|
||||||
\ . ale#Var(a:buffer, 'markdown_pymarkdown_options')
|
\ . ' scan-stdin'
|
||||||
\ . 'scan-stdin'
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale_linters#markdown#pymarkdown#Handle(buffer, lines) abort
|
function! ale_linters#markdown#pymarkdown#Handle(buffer, lines) abort
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
" 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#linter#Define('markdown', {
|
call ale#handlers#redpen#DefineLinter('markdown')
|
||||||
\ 'name': 'redpen',
|
|
||||||
\ 'executable': 'redpen',
|
|
||||||
\ 'command': 'redpen -f markdown -r json %t',
|
|
||||||
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
|
|
||||||
\})
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ function! ale_linters#nix#nix#Handle(buffer, lines) abort
|
|||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
\ 'lnum': l:result.line,
|
\ 'lnum': l:result.line,
|
||||||
\ 'col': l:result.column,
|
\ 'col': l:result.column,
|
||||||
\ 'text': l:result.raw_msg
|
\ 'text': substitute(l:result.raw_msg, '\e\[[0-9;]*m', '', 'g'),
|
||||||
\})
|
\})
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|||||||
49
ale_linters/perl/languageserver.vim
Normal file
49
ale_linters/perl/languageserver.vim
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
" 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'),
|
||||||
|
\ })
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
" 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')
|
||||||
@@ -17,7 +20,8 @@ endfunction
|
|||||||
call ale#linter#Define('php', {
|
call ale#linter#Define('php', {
|
||||||
\ 'name': 'phpactor',
|
\ 'name': 'phpactor',
|
||||||
\ 'lsp': 'stdio',
|
\ 'lsp': 'stdio',
|
||||||
\ 'executable': 'phpactor',
|
\ 'executable': {b -> ale#Var(b, 'php_phpactor_executable')},
|
||||||
\ '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'),
|
||||||
\})
|
\})
|
||||||
|
|||||||
@@ -27,6 +27,10 @@ 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'
|
||||||
@@ -83,6 +87,10 @@ 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
|
||||||
|
|
||||||
|
|||||||
57
ale_linters/python/pyrefly.vim
Normal file
57
ale_linters/python/pyrefly.vim
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
" Author: oliverralbertini <oliver.albertini@gmail.com>
|
||||||
|
" Description: A performant type-checker supporting LSP for Python 3 created by Facebook
|
||||||
|
|
||||||
|
call ale#Set('python_pyrefly_executable', 'pyrefly')
|
||||||
|
call ale#Set('python_pyrefly_use_global', get(g:, 'ale_use_global_executables', 0))
|
||||||
|
call ale#Set('python_pyrefly_auto_pipenv', 0)
|
||||||
|
call ale#Set('python_pyrefly_auto_poetry', 0)
|
||||||
|
call ale#Set('python_pyrefly_auto_uv', 0)
|
||||||
|
|
||||||
|
function! ale_linters#python#pyrefly#GetExecutable(buffer) abort
|
||||||
|
if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'python_pyrefly_auto_pipenv'))
|
||||||
|
\ && ale#python#PipenvPresent(a:buffer)
|
||||||
|
return 'pipenv'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (ale#Var(a:buffer, 'python_auto_poetry') || ale#Var(a:buffer, 'python_pyrefly_auto_poetry'))
|
||||||
|
\ && ale#python#PoetryPresent(a:buffer)
|
||||||
|
return 'poetry'
|
||||||
|
endif
|
||||||
|
|
||||||
|
if (ale#Var(a:buffer, 'python_auto_uv') || ale#Var(a:buffer, 'python_pyrefly_auto_uv'))
|
||||||
|
\ && ale#python#UvPresent(a:buffer)
|
||||||
|
return 'uv'
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ale#python#FindExecutable(a:buffer, 'python_pyrefly', ['pyrefly'])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#python#pyrefly#GetCommand(buffer) abort
|
||||||
|
let l:executable = ale_linters#python#pyrefly#GetExecutable(a:buffer)
|
||||||
|
let l:exec_args = [
|
||||||
|
\ ale#Escape(l:executable)
|
||||||
|
\ ]
|
||||||
|
\ + (l:executable =~? '\(pipenv\|poetry\|uv\)$' ? ['run', 'pyrefly'] : [])
|
||||||
|
\ + [
|
||||||
|
\ 'lsp',
|
||||||
|
\ ]
|
||||||
|
|
||||||
|
return join(l:exec_args, ' ')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale_linters#python#pyrefly#GetCwd(buffer) abort
|
||||||
|
" 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'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('python', {
|
||||||
|
\ 'name': 'pyrefly',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'executable': function('ale_linters#python#pyrefly#GetExecutable'),
|
||||||
|
\ 'command': function('ale_linters#python#pyrefly#GetCommand'),
|
||||||
|
\ 'project_root': function('ale#python#FindProjectRoot'),
|
||||||
|
\ 'completion_filter': 'ale#completion#python#CompletionItemFilter',
|
||||||
|
\ 'cwd': function('ale_linters#python#pyrefly#GetCwd'),
|
||||||
|
\})
|
||||||
@@ -34,6 +34,22 @@ 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.
|
||||||
@@ -72,20 +88,35 @@ function! ale_linters#python#ruff#Handle(buffer, lines) abort
|
|||||||
try
|
try
|
||||||
let l:item = json_decode(l:line)
|
let l:item = json_decode(l:line)
|
||||||
catch
|
catch
|
||||||
let l:item = v:null
|
" If we can't decode a line, skip it.
|
||||||
|
continue
|
||||||
endtry
|
endtry
|
||||||
|
|
||||||
if !empty(l:item)
|
if empty(l:item)
|
||||||
call add(l:output, {
|
continue
|
||||||
\ 'lnum': l:item.location.row,
|
|
||||||
\ 'col': l:item.location.column,
|
|
||||||
\ 'end_lnum': l:item.end_location.row,
|
|
||||||
\ 'end_col': l:item.end_location.column - 1,
|
|
||||||
\ 'code': l:item.code,
|
|
||||||
\ 'text': l:item.message,
|
|
||||||
\ 'type': l:item.code =~? '\vE\d+' ? 'E' : 'W',
|
|
||||||
\})
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if (l:item.code is# 'W291' || l:item.code is# 'W293')
|
||||||
|
\&& !ale#Var(a:buffer, 'warn_about_trailing_whitespace')
|
||||||
|
" Skip warnings for trailing whitespace if the option is off.
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
if l:item.code is# 'W391'
|
||||||
|
\&& !ale#Var(a:buffer, 'warn_about_trailing_blank_lines')
|
||||||
|
" Skip warnings for trailing blank lines if the option is off
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
call add(l:output, {
|
||||||
|
\ 'lnum': l:item.location.row,
|
||||||
|
\ 'col': l:item.location.column,
|
||||||
|
\ 'end_lnum': l:item.end_location.row,
|
||||||
|
\ 'end_col': l:item.end_location.column - 1,
|
||||||
|
\ 'code': l:item.code,
|
||||||
|
\ 'text': l:item.message,
|
||||||
|
\ 'type': l:item.code =~? '\vE\d+' ? 'E' : 'W',
|
||||||
|
\})
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
return l:output
|
return l:output
|
||||||
@@ -95,12 +126,7 @@ 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': {buffer -> ale#semver#RunWithVersionCheck(
|
\ 'command': function('ale_linters#python#ruff#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,
|
||||||
|
|||||||
81
ale_linters/python/ty.vim
Normal file
81
ale_linters/python/ty.vim
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
" 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',
|
||||||
|
\})
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
" 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#linter#Define('review', {
|
call ale#handlers#redpen#DefineLinter('review')
|
||||||
\ 'name': 'redpen',
|
|
||||||
\ 'executable': 'redpen',
|
|
||||||
\ 'command': 'redpen -f review -r json %t',
|
|
||||||
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
|
|
||||||
\})
|
|
||||||
|
|||||||
25
ale_linters/roc/roc_language_server.vim
Normal file
25
ale_linters/roc/roc_language_server.vim
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
" Author: Benjamin Block <https://github.com/benjamindblock>
|
||||||
|
" Description: A language server for Roc.
|
||||||
|
|
||||||
|
function! ale_linters#roc#roc_language_server#GetProjectRoot(buffer) abort
|
||||||
|
let l:roc_main_file = ale#path#FindNearestFile(a:buffer, 'main.roc')
|
||||||
|
|
||||||
|
if !empty(l:roc_main_file)
|
||||||
|
return fnamemodify(l:roc_main_file, ':p:h')
|
||||||
|
else
|
||||||
|
return fnamemodify('', ':h')
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#Set('roc_roc_language_server_executable', 'roc_language_server')
|
||||||
|
call ale#Set('roc_roc_language_server_config', {})
|
||||||
|
|
||||||
|
call ale#linter#Define('roc', {
|
||||||
|
\ 'name': 'roc_language_server',
|
||||||
|
\ 'lsp': 'stdio',
|
||||||
|
\ 'language': 'roc',
|
||||||
|
\ 'lsp_config': {b -> ale#Var(b, 'roc_roc_language_server_config')},
|
||||||
|
\ 'executable': {b -> ale#Var(b, 'roc_roc_language_server_executable')},
|
||||||
|
\ 'command': '%e',
|
||||||
|
\ 'project_root': function('ale_linters#roc#roc_language_server#GetProjectRoot'),
|
||||||
|
\})
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
" 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#linter#Define('rst', {
|
call ale#handlers#redpen#DefineLinter('rst')
|
||||||
\ 'name': 'redpen',
|
|
||||||
\ 'executable': 'redpen',
|
|
||||||
\ 'command': 'redpen -f rest -r json %t',
|
|
||||||
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
|
|
||||||
\})
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
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')
|
||||||
@@ -21,6 +22,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')}
|
||||||
\})
|
\})
|
||||||
|
|
||||||
|
|||||||
@@ -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 --stdin-filename %s',
|
\ 'command': '%e --no-color --stdin-filename %s',
|
||||||
\ 'callback': 'ale#handlers#css#HandleStyleLintFormat',
|
\ 'callback': 'ale#handlers#css#HandleStyleLintFormat',
|
||||||
\})
|
\})
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ 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',
|
||||||
|
|||||||
@@ -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'))
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('scss', {
|
call ale#linter#Define('scss', {
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ endfunction
|
|||||||
|
|
||||||
call ale#linter#Define('sh', {
|
call ale#linter#Define('sh', {
|
||||||
\ 'name': 'language_server',
|
\ 'name': 'language_server',
|
||||||
|
\ 'aliases': ['bash-language-server'],
|
||||||
\ 'lsp': 'stdio',
|
\ 'lsp': 'stdio',
|
||||||
\ 'executable': function('ale_linters#sh#language_server#GetExecutable'),
|
\ 'executable': function('ale_linters#sh#language_server#GetExecutable'),
|
||||||
\ 'command': function('ale_linters#sh#language_server#GetCommand'),
|
\ 'command': function('ale_linters#sh#language_server#GetCommand'),
|
||||||
|
|||||||
@@ -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'))
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('stylus', {
|
call ale#linter#Define('stylus', {
|
||||||
|
|||||||
@@ -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'
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('sugarss', {
|
call ale#linter#Define('sugarss', {
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
" 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#linter#Define('tex', {
|
call ale#handlers#redpen#DefineLinter('tex')
|
||||||
\ 'name': 'redpen',
|
|
||||||
\ 'executable': 'redpen',
|
|
||||||
\ 'command': 'redpen -f latex -r json %t',
|
|
||||||
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
|
|
||||||
\})
|
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
" 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#linter#Define('text', {
|
call ale#handlers#redpen#DefineLinter('text')
|
||||||
\ 'name': 'redpen',
|
|
||||||
\ 'executable': 'redpen',
|
|
||||||
\ 'command': 'redpen -f plain -r json %t',
|
|
||||||
\ 'callback': 'ale#handlers#redpen#HandleRedpenOutput',
|
|
||||||
\})
|
|
||||||
|
|||||||
51
ale_linters/toml/tombi.vim
Normal file
51
ale_linters/toml/tombi.vim
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
" 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'),
|
||||||
|
\})
|
||||||
@@ -9,7 +9,9 @@ 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
|
||||||
@@ -28,6 +30,7 @@ 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]),
|
||||||
|
|||||||
43
ale_linters/verilog/verible_ls.vim
Normal file
43
ale_linters/verilog/verible_ls.vim
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
" 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'),
|
||||||
|
\})
|
||||||
@@ -10,6 +10,7 @@ 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
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ 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',
|
||||||
\])
|
\])
|
||||||
|
|
||||||
|
|||||||
@@ -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,6 +93,7 @@ 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')
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ function! ale#fix#ApplyFixes(buffer, output) abort
|
|||||||
|
|
||||||
if !l:data.ignore_file_changed_errors
|
if !l:data.ignore_file_changed_errors
|
||||||
" no-custom-checks
|
" no-custom-checks
|
||||||
echoerr 'The file was changed before fixing finished'
|
echom 'The file was changed before fixing finished'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -192,6 +192,11 @@ 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'],
|
||||||
@@ -722,6 +727,36 @@ let s:default_registry = {
|
|||||||
\ 'suggested_filetypes': ['typst'],
|
\ 'suggested_filetypes': ['typst'],
|
||||||
\ 'description': 'A formatter for Typst files',
|
\ 'description': 'A formatter for Typst files',
|
||||||
\ },
|
\ },
|
||||||
|
\ 'roc_format': {
|
||||||
|
\ 'function': 'ale#fixers#roc_format#Fix',
|
||||||
|
\ 'suggested_filetypes': ['roc'],
|
||||||
|
\ 'description': 'Formats Roc files.',
|
||||||
|
\ },
|
||||||
|
\ 'roc_annotate': {
|
||||||
|
\ 'function': 'ale#fixers#roc_annotate#Fix',
|
||||||
|
\ 'suggested_filetypes': ['roc'],
|
||||||
|
\ '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.
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
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:apply = ale#Var(a:buffer, 'biome_fixer_apply_unsafe') ? '--write --unsafe' : '--write'
|
let l:unsafe = ale#Var(a:buffer, 'biome_fixer_apply_unsafe') ? ' --unsafe' : ''
|
||||||
|
|
||||||
return {
|
return {
|
||||||
\ 'read_temporary_file': 1,
|
\ 'command': ale#Escape(l:executable) . ' check '
|
||||||
\ 'command': ale#Escape(l:executable) . ' check ' . l:apply
|
\ . '--write --stdin-file-path %s' . l:unsafe
|
||||||
\ . (!empty(l:options) ? ' ' . l:options : '')
|
\ . (!empty(l:options) ? ' ' . l:options : '')
|
||||||
\ . ' %t'
|
|
||||||
\}
|
\}
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ function! ale#fixers#clangformat#Fix(buffer) abort
|
|||||||
let l:use_local_file = ale#Var(a:buffer, 'c_clangformat_use_local_file')
|
let l:use_local_file = ale#Var(a:buffer, 'c_clangformat_use_local_file')
|
||||||
|
|
||||||
if l:style_option isnot# ''
|
if l:style_option isnot# ''
|
||||||
let l:style_option = '-style=' . "'" . l:style_option . "'"
|
let l:style_option = '-style=' . ale#Escape(l:style_option)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if l:use_local_file
|
if l:use_local_file
|
||||||
|
|||||||
@@ -17,10 +17,11 @@ let s:variables = {
|
|||||||
\}
|
\}
|
||||||
|
|
||||||
function! ale#fixers#erlang_mode#Fix(buffer) abort
|
function! ale#fixers#erlang_mode#Fix(buffer) abort
|
||||||
let emacs_executable =
|
let l:emacs_executable =
|
||||||
\ ale#Var(a:buffer, 'erlang_erlang_mode_emacs_executable')
|
\ ale#Var(a:buffer, 'erlang_erlang_mode_emacs_executable')
|
||||||
|
|
||||||
let l:exprs = [
|
let l:exprs = [
|
||||||
|
\ '(setq enable-local-variables :safe)',
|
||||||
\ s:SetqDefault(a:buffer, s:variables),
|
\ s:SetqDefault(a:buffer, s:variables),
|
||||||
\ '(erlang-mode)',
|
\ '(erlang-mode)',
|
||||||
\ '(font-lock-fontify-region (point-min) (point-max))',
|
\ '(font-lock-fontify-region (point-min) (point-max))',
|
||||||
|
|||||||
@@ -1,32 +1,48 @@
|
|||||||
" Author: Ian Stapleton Cordasco <graffatcolmingov@gmail.com>
|
" Author: Ian Stapleton Cordasco <graffatcolmingov@gmail.com>
|
||||||
" Description: Run golangci-lint with the --fix flag to autofix some issues
|
" Description: Run golangci-lint with the --fix flag to autofix some issues
|
||||||
|
|
||||||
call ale#Set('go_golangci_lint_options', '')
|
call ale#Set('go_golangci_formatter_options', '')
|
||||||
call ale#Set('go_golangci_lint_executable', 'golangci-lint')
|
call ale#Set('go_golangci_formatter_executable', 'golangci-lint')
|
||||||
call ale#Set('go_golangci_lint_package', 1)
|
|
||||||
|
|
||||||
function! ale#fixers#golangci_lint#GetCommand(buffer) abort
|
function! ale#fixers#golangci_lint#GetExecutable(buffer) abort
|
||||||
|
let l:executable = ale#Var(a:buffer, 'go_golangci_formatter_executable')
|
||||||
|
|
||||||
|
return l:executable
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#fixers#golangci_lint#GetCommand(buffer, version) abort
|
||||||
let l:filename = expand('#' . a:buffer . ':t')
|
let l:filename = expand('#' . a:buffer . ':t')
|
||||||
let l:executable = ale#Var(a:buffer, 'go_golangci_lint_executable')
|
let l:executable = ale#fixers#golangci_lint#GetExecutable(a:buffer)
|
||||||
let l:options = ale#Var(a:buffer, 'go_golangci_lint_options') . ' --fix'
|
let l:options = ale#Var(a:buffer, 'go_golangci_formatter_options')
|
||||||
let l:package_mode = ale#Var(a:buffer, 'go_golangci_lint_package')
|
|
||||||
let l:env = ale#go#EnvString(a:buffer)
|
let l:env = ale#go#EnvString(a:buffer)
|
||||||
|
|
||||||
|
if ale#semver#GTE(a:version, [2, 0, 0])
|
||||||
if l:package_mode
|
|
||||||
return l:env . ale#Escape(l:executable)
|
return l:env . ale#Escape(l:executable)
|
||||||
\ . ' run '
|
\ . ' fmt --stdin '
|
||||||
\ . l:options
|
\ . l:options
|
||||||
|
else
|
||||||
|
return l:env . ale#Escape(l:executable)
|
||||||
|
\ . ' run --fix '
|
||||||
|
\ . l:options
|
||||||
|
\ . ' '
|
||||||
|
\ . ale#Escape(l:filename)
|
||||||
endif
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
return l:env . ale#Escape(l:executable)
|
function! ale#fixers#golangci_lint#GetCommandForVersion(buffer, version) abort
|
||||||
\ . ' run '
|
return {
|
||||||
\ . l:options
|
\ 'command': ale#fixers#golangci_lint#GetCommand(a:buffer, a:version)
|
||||||
\ . ' ' . ale#Escape(l:filename)
|
\}
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#fixers#golangci_lint#Fix(buffer) abort
|
function! ale#fixers#golangci_lint#Fix(buffer) abort
|
||||||
return {
|
let l:executable = ale#fixers#golangci_lint#GetExecutable(a:buffer)
|
||||||
\ 'command': ale#fixers#golangci_lint#GetCommand(a:buffer),
|
let l:command = ale#fixers#golangci_lint#GetExecutable(a:buffer) . ale#Pad('--version')
|
||||||
\}
|
|
||||||
|
return ale#semver#RunWithVersionCheck(
|
||||||
|
\ a:buffer,
|
||||||
|
\ l:executable,
|
||||||
|
\ l:command,
|
||||||
|
\ function('ale#fixers#golangci_lint#GetCommandForVersion'),
|
||||||
|
\)
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
15
autoload/ale/fixers/markdownlint.vim
Normal file
15
autoload/ale/fixers/markdownlint.vim
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
: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
|
||||||
|
|
||||||
21
autoload/ale/fixers/roc_annotate.vim
Normal file
21
autoload/ale/fixers/roc_annotate.vim
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
" Author: Benjamin Block <https://github.com/benjamindblock>
|
||||||
|
" Description: Official type annotation tool for Roc.
|
||||||
|
|
||||||
|
call ale#Set('roc_roc_annotate_executable', 'roc')
|
||||||
|
call ale#Set('roc_roc_annotate_options', '')
|
||||||
|
|
||||||
|
function! ale#fixers#roc_annotate#Fix(buffer) abort
|
||||||
|
let l:executable = ale#Var(a:buffer, 'roc_roc_annotate_executable')
|
||||||
|
let l:command = l:executable . ' format annotate'
|
||||||
|
let l:options = ale#Var(a:buffer, 'roc_roc_annotate_options')
|
||||||
|
|
||||||
|
if l:options isnot# ''
|
||||||
|
let l:command .= ' ' . l:options
|
||||||
|
endif
|
||||||
|
|
||||||
|
return {
|
||||||
|
\ 'command': l:command . ' %t',
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\}
|
||||||
|
endfunction
|
||||||
|
|
||||||
20
autoload/ale/fixers/roc_format.vim
Normal file
20
autoload/ale/fixers/roc_format.vim
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
" Author: Benjamin Block <https://github.com/benjamindblock>
|
||||||
|
" Description: Official formatter for Roc.
|
||||||
|
|
||||||
|
call ale#Set('roc_roc_format_executable', 'roc')
|
||||||
|
call ale#Set('roc_roc_format_options', '')
|
||||||
|
|
||||||
|
function! ale#fixers#roc_format#Fix(buffer) abort
|
||||||
|
let l:executable = ale#Var(a:buffer, 'roc_roc_format_executable')
|
||||||
|
let l:command = l:executable . ' format'
|
||||||
|
let l:options = ale#Var(a:buffer, 'roc_roc_format_options')
|
||||||
|
|
||||||
|
if l:options isnot# ''
|
||||||
|
let l:command .= ' ' . l:options
|
||||||
|
endif
|
||||||
|
|
||||||
|
return {
|
||||||
|
\ 'command': l:command . ' %t',
|
||||||
|
\ 'read_temporary_file': 1,
|
||||||
|
\}
|
||||||
|
endfunction
|
||||||
@@ -19,20 +19,34 @@ 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) abort
|
function! ale#fixers#rubocop#GetCommand(buffer, version) 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#Fix(buffer) abort
|
function! ale#fixers#rubocop#GetCommandForVersion(buffer, version) abort
|
||||||
return {
|
return {
|
||||||
\ 'command': ale#fixers#rubocop#GetCommand(a:buffer),
|
\ 'command': ale#fixers#rubocop#GetCommand(a:buffer, a:version),
|
||||||
\ '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
|
||||||
|
|||||||
@@ -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 --stdin-filename %s',
|
\ . ' --fix --stdin --no-color --stdin-filename %s',
|
||||||
\ 'read_temporary_file': 0,
|
\ 'read_temporary_file': 0,
|
||||||
\}
|
\}
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
22
autoload/ale/fixers/tombi_format.vim
Normal file
22
autoload/ale/fixers/tombi_format.vim
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
" 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
|
||||||
22
autoload/ale/fixers/tombi_lint.vim
Normal file
22
autoload/ale/fixers/tombi_lint.vim
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
" 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
|
||||||
42
autoload/ale/fixers/unimport.vim
Normal file
42
autoload/ale/fixers/unimport.vim
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
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
|
||||||
17
autoload/ale/fixers/verible_format.vim
Normal file
17
autoload/ale/fixers/verible_format.vim
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
" 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
|
||||||
@@ -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^Error:'
|
let l:exception_pattern = '\v^(Syntax)?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
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
" 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.
|
||||||
@@ -63,3 +65,14 @@ 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
|
||||||
|
|||||||
@@ -63,6 +63,12 @@ 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])
|
||||||
@@ -87,11 +93,17 @@ 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': 'SC' . l:error['code'],
|
\ 'code': l: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'],
|
||||||
\}
|
\}
|
||||||
|
|
||||||
@@ -107,7 +119,6 @@ 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')
|
||||||
@@ -135,11 +146,17 @@ 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:match[6],
|
\ 'code': l:code,
|
||||||
\ '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],
|
||||||
\}
|
\}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ let s:linters = {}
|
|||||||
" NOTE: Update the g:ale_linter_aliases documentation when modifying this.
|
" NOTE: Update the g:ale_linter_aliases documentation when modifying this.
|
||||||
let s:default_ale_linter_aliases = {
|
let s:default_ale_linter_aliases = {
|
||||||
\ 'Dockerfile': 'dockerfile',
|
\ 'Dockerfile': 'dockerfile',
|
||||||
|
\ 'bash': 'sh',
|
||||||
\ 'csh': 'sh',
|
\ 'csh': 'sh',
|
||||||
\ 'javascriptreact': ['javascript', 'jsx'],
|
\ 'javascriptreact': ['javascript', 'jsx'],
|
||||||
\ 'plaintex': 'tex',
|
\ 'plaintex': 'tex',
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -706,7 +706,7 @@ function! ale#lsp#Send(conn_id, message) abort
|
|||||||
throw 'LSP server not initialized yet!'
|
throw 'LSP server not initialized yet!'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:ale_use_neovim_lsp_api
|
if g:ale_use_neovim_lsp_api && !l:conn.is_tsserver
|
||||||
return luaeval('require("ale.lsp").send_message(_A)', {
|
return luaeval('require("ale.lsp").send_message(_A)', {
|
||||||
\ 'client_id': l:conn.client_id,
|
\ 'client_id': l:conn.client_id,
|
||||||
\ 'is_notification': a:message[0] == 1 ? v:true : v:false,
|
\ 'is_notification': a:message[0] == 1 ? v:true : v:false,
|
||||||
|
|||||||
@@ -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': substitute(l:diagnostic.message, '\(\r\n\|\n\|\r\)', ' ', 'g'),
|
\ 'text': l:diagnostic.message,
|
||||||
\ '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,
|
||||||
|
|||||||
@@ -62,6 +62,36 @@ 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.
|
||||||
@@ -115,20 +145,24 @@ endfunction
|
|||||||
|
|
||||||
" Return 1 if a path is an absolute path.
|
" Return 1 if a path is an absolute path.
|
||||||
function! ale#path#IsAbsolute(filename) abort
|
function! ale#path#IsAbsolute(filename) abort
|
||||||
if has('win32') && a:filename[:0] is# '\'
|
if has('win32')
|
||||||
return 1
|
return a:filename[:0] =~# '[\\/]' || a:filename[0:2] =~? '[A-Z]:[/\\]'
|
||||||
|
else
|
||||||
|
return a:filename[:0] is# '/'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Check for /foo and C:\foo, etc.
|
|
||||||
return a:filename[:0] is# '/' || a:filename[1:2] is# ':\'
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:temp_dir = ale#path#Simplify(fnamemodify(ale#util#Tempname(), ':h:h'))
|
let s:temp_dir = ale#path#Simplify(fnamemodify(ale#util#Tempname(), ':h:h'))
|
||||||
|
let s:resolved_temp_dir = resolve(s:temp_dir)
|
||||||
|
|
||||||
" Given a filename, return 1 if the file represents some temporary file
|
" Given a filename, return 1 if the file represents some temporary file
|
||||||
" created by Vim.
|
" created by Vim. If the temporary location is symlinked (e.g. macOS), some
|
||||||
|
" linters may report the resolved version of the path, so both are checked.
|
||||||
function! ale#path#IsTempName(filename) abort
|
function! ale#path#IsTempName(filename) abort
|
||||||
return ale#path#Simplify(a:filename)[:len(s:temp_dir) - 1] is# s:temp_dir
|
let l:filename = ale#path#Simplify(a:filename)
|
||||||
|
|
||||||
|
return l:filename[:len(s:temp_dir) - 1] is# s:temp_dir
|
||||||
|
\|| l:filename[:len(s:resolved_temp_dir) - 1] is# s:resolved_temp_dir
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Given a base directory, which must not have a trailing slash, and a
|
" Given a base directory, which must not have a trailing slash, and a
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ function! ale#python#FindProjectRootIni(buffer) abort
|
|||||||
" If you change this, update ale-python-root documentation.
|
" If you change this, update ale-python-root documentation.
|
||||||
if filereadable(l:path . '/MANIFEST.in')
|
if filereadable(l:path . '/MANIFEST.in')
|
||||||
\|| filereadable(l:path . '/setup.cfg')
|
\|| filereadable(l:path . '/setup.cfg')
|
||||||
\|| filereadable(l:path . '/pytest.ini')
|
|
||||||
\|| filereadable(l:path . '/tox.ini')
|
\|| filereadable(l:path . '/tox.ini')
|
||||||
\|| filereadable(l:path . '/.pyre_configuration.local')
|
\|| filereadable(l:path . '/.pyre_configuration.local')
|
||||||
\|| filereadable(l:path . '/mypy.ini')
|
\|| filereadable(l:path . '/mypy.ini')
|
||||||
@@ -55,11 +54,12 @@ endfunction
|
|||||||
" Given a buffer number, find the project root directory for Python.
|
" Given a buffer number, find the project root directory for Python.
|
||||||
" The root directory is defined as the first directory found while searching
|
" The root directory is defined as the first directory found while searching
|
||||||
" upwards through paths, including the current directory, until a path
|
" upwards through paths, including the current directory, until a path
|
||||||
" containing an init file (one from MANIFEST.in, setup.cfg, pytest.ini,
|
" containing an configuration file is found. (See list above)
|
||||||
" tox.ini) is found. If it is not possible to find the project root directory
|
"
|
||||||
" via init file, then it will be defined as the first directory found
|
" If it is not possible to find the project root directory via configuration
|
||||||
" searching upwards through paths, including the current directory, until no
|
" file, then it will be defined as the first directory found searching upwards
|
||||||
" __init__.py files is found.
|
" through paths, including the current directory, until no __init__.py files
|
||||||
|
" is found.
|
||||||
function! ale#python#FindProjectRoot(buffer) abort
|
function! ale#python#FindProjectRoot(buffer) abort
|
||||||
let l:ini_root = ale#python#FindProjectRootIni(a:buffer)
|
let l:ini_root = ale#python#FindProjectRootIni(a:buffer)
|
||||||
|
|
||||||
@@ -200,7 +200,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 poetry environment is present.
|
" Detects whether a uv 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
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
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 = {}
|
||||||
|
|
||||||
@@ -67,17 +68,33 @@ 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': ale#util#ToResource(a:response_item.uri),
|
\ 'filename': l:filename,
|
||||||
\ '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': ale#util#ToResource(a:response_item.uri),
|
\ 'filename': l:filename,
|
||||||
\ 'line': a:response_item.range.start.line + 1,
|
\ 'line': l:line + 1,
|
||||||
\ 'column': a:response_item.range.start.character + 1,
|
\ 'column': l:col + 1,
|
||||||
|
\ 'match': l:line_text,
|
||||||
\}
|
\}
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
@@ -147,6 +164,7 @@ 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
|
||||||
|
|
||||||
@@ -165,6 +183,8 @@ 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
|
||||||
@@ -177,6 +197,10 @@ 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))])
|
||||||
|
|||||||
@@ -44,5 +44,39 @@ 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:
|
||||||
|
|||||||
@@ -20,5 +20,11 @@ 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:
|
||||||
|
|||||||
32
doc/ale-bindzone.txt
Normal file
32
doc/ale-bindzone.txt
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
===============================================================================
|
||||||
|
ALE BINDZone Integration *ale-bindzone-options*
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
checkzone *ale-bindzone-checkzone*
|
||||||
|
|
||||||
|
*ale-options.bindzone_checkzone_executable*
|
||||||
|
*g:ale_bindzone_checkzone_executable*
|
||||||
|
*b:ale_bindzone_checkzone_executable*
|
||||||
|
bindzone_checkzone_executable
|
||||||
|
g:ale_bindzone_checkzone_executable
|
||||||
|
Type: |String|
|
||||||
|
Default: `named-checkzone`
|
||||||
|
|
||||||
|
This variable can be changed to set the path to named-checkzone executable.
|
||||||
|
|
||||||
|
*ale-options.bindzone_checkzone_options*
|
||||||
|
*g:ale_bindzone_checkzone_options*
|
||||||
|
*b:ale_bindzone_checkzone_options*
|
||||||
|
bindzone_checkzone_options
|
||||||
|
g:ale_bindzone_checkzone_options
|
||||||
|
Type: |String|
|
||||||
|
Default: `-c IN`
|
||||||
|
|
||||||
|
This variable can be changed to add additional command-line arguments.
|
||||||
|
All available options can be found at:
|
||||||
|
|
||||||
|
https://bind9.readthedocs.io/en/stable/manpages.html#named-checkzone-zone-file-validation-tool
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
@@ -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', 'bin']`
|
Default: `['build', 'build/Debug', 'build/Release', '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
|
||||||
|
|||||||
@@ -41,5 +41,51 @@ 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:
|
||||||
|
|||||||
@@ -85,9 +85,11 @@ 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`, or `return`,
|
* Add a blank line before every `function`, `if`, `for`, `while`, `try`, or `return`,
|
||||||
which doesn't start a new level of indentation. This makes the logic in
|
which doesn't start a new level of indentation. When adding more code on the
|
||||||
your code easier to follow.
|
same indentation level, also add blank lines after every corresponding end
|
||||||
|
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
|
||||||
@@ -424,11 +426,11 @@ running tests. >
|
|||||||
|
|
||||||
Add-Type -A System.IO.Compression.FileSystem
|
Add-Type -A System.IO.Compression.FileSystem
|
||||||
|
|
||||||
Invoke-WebRequest ftp://ftp.vim.org/pub/vim/pc/vim80-586w32.zip -OutFile C:\vim.zip
|
Invoke-WebRequest https://github.com/dense-analysis/ale/releases/download/v4.0.0/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 ftp://ftp.vim.org/pub/vim/pc/vim80-586rt.zip -OutFile C:\rt.zip
|
Invoke-WebRequest https://github.com/dense-analysis/ale/releases/download/v4.0.0/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
|
||||||
|
|
||||||
|
|||||||
@@ -139,8 +139,28 @@ 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 currnetly no configuration options for lexical.
|
There are currently 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:
|
||||||
|
|||||||
@@ -2,6 +2,29 @@
|
|||||||
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*
|
||||||
|
|
||||||
@@ -63,6 +86,5 @@ 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:
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ g:ale_go_golangci_lint_options
|
|||||||
Default: `''`
|
Default: `''`
|
||||||
|
|
||||||
This variable can be changed to alter the command-line arguments to the
|
This variable can be changed to alter the command-line arguments to the
|
||||||
golangci-lint invocation.
|
golangci-lint run invocation.
|
||||||
|
|
||||||
*ale-options.go_golangci_lint_package*
|
*ale-options.go_golangci_lint_package*
|
||||||
*g:ale_go_golangci_lint_package*
|
*g:ale_go_golangci_lint_package*
|
||||||
@@ -157,6 +157,30 @@ g:ale_go_golangci_lint_package
|
|||||||
When set to `1`, the whole Go package will be checked instead of only the
|
When set to `1`, the whole Go package will be checked instead of only the
|
||||||
current file.
|
current file.
|
||||||
|
|
||||||
|
golangci_lint can also be user as a fixer to format go source files. In this
|
||||||
|
case the following configuration variables can be used to configure the
|
||||||
|
formatters:
|
||||||
|
|
||||||
|
*ale-options.go_golangci_formatter_executable*
|
||||||
|
*g:ale_go_golangci_formatter_executable*
|
||||||
|
*b:ale_go_golangci_formatter_executable*
|
||||||
|
go_golangci_formatter_executable
|
||||||
|
g:ale_go_golangci_formatter_executable
|
||||||
|
Type: |String|
|
||||||
|
Default: `'golangci-lint'`
|
||||||
|
|
||||||
|
The executable that will be run for golangci-lint.
|
||||||
|
|
||||||
|
*ale-options.go_golangci_formatter_options*
|
||||||
|
*g:ale_go_golangci_formatter_options*
|
||||||
|
*b:ale_go_golangci_formatter_options*
|
||||||
|
go_golangci_formatter_options
|
||||||
|
g:ale_go_golangci_formatter_options
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This variable can be changed to alter the command-line arguments to the
|
||||||
|
golangci-lint fmt invocation.
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
golangserver *ale-go-golangserver*
|
golangserver *ale-go-golangserver*
|
||||||
|
|||||||
@@ -206,6 +206,24 @@ 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*
|
||||||
|
|
||||||
@@ -265,6 +283,12 @@ 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*
|
||||||
|
|
||||||
|
|||||||
@@ -8,5 +8,9 @@ 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:
|
||||||
|
|||||||
29
doc/ale-lean.txt
Normal file
29
doc/ale-lean.txt
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
===============================================================================
|
||||||
|
ALE Lean Integration *ale-lean-options*
|
||||||
|
*ale-integration-lean*
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
Integration Information
|
||||||
|
|
||||||
|
Currently, the only supported LSP for Lean 4 is lake.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
lake *ale-lean-lake*
|
||||||
|
|
||||||
|
g:ale_lean_lake_executable *g:ale_lean_lake_executable*
|
||||||
|
*b:ale_lean_lake_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'lake'`
|
||||||
|
|
||||||
|
This variable can be modified to change the executable path for `lake`.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_lean_lake_config *g:ale_lean_lake_config*
|
||||||
|
*b:ale_lean_lake_config*
|
||||||
|
Type: |Dictionary|
|
||||||
|
Default: `{}`
|
||||||
|
|
||||||
|
Dictionary with configuration settings for lake.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
@@ -49,17 +49,22 @@ 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_lua_language_server_config*
|
*ale-options.lua_language_server_config*
|
||||||
*g:ale_lua_lua_language_server_config*
|
*g:ale_lua_language_server_config*
|
||||||
*b:ale_lua_lua_language_server_config*
|
*b:ale_lua_language_server_config*
|
||||||
lua_lua_language_server_config
|
lua_language_server_config
|
||||||
g:ale_lua_lua_language_server_config
|
g:ale_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*
|
||||||
|
|||||||
@@ -225,5 +225,11 @@ 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:
|
||||||
|
|||||||
@@ -35,6 +35,42 @@ 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*
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,36 @@ 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*
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ ALE will look for configuration files with the following filenames. >
|
|||||||
|
|
||||||
MANIFEST.in
|
MANIFEST.in
|
||||||
setup.cfg
|
setup.cfg
|
||||||
pytest.ini
|
|
||||||
tox.ini
|
tox.ini
|
||||||
.pyre_configuration.local
|
.pyre_configuration.local
|
||||||
mypy.ini
|
mypy.ini
|
||||||
@@ -81,6 +80,7 @@ ALE will look for configuration files with the following filenames. >
|
|||||||
poetry.lock
|
poetry.lock
|
||||||
pyproject.toml
|
pyproject.toml
|
||||||
.tool-versions
|
.tool-versions
|
||||||
|
uv.lock
|
||||||
<
|
<
|
||||||
|
|
||||||
The first directory containing any of the files named above will be used.
|
The first directory containing any of the files named above will be used.
|
||||||
@@ -1465,7 +1465,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` `pyls'`.
|
Set this to `'poetry'` to invoke `'poetry` `run` `pylsp'`.
|
||||||
|
|
||||||
*ale-options.python_pylsp_use_global*
|
*ale-options.python_pylsp_use_global*
|
||||||
*g:ale_python_pylsp_use_global*
|
*g:ale_python_pylsp_use_global*
|
||||||
@@ -1616,6 +1616,69 @@ g:ale_python_pyre_auto_uv
|
|||||||
executable.
|
executable.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
pyrefly *ale-python-pyrefly*
|
||||||
|
|
||||||
|
`pyrefly` will be run from a detected project root, per |ale-python-root|.
|
||||||
|
|
||||||
|
*ale-options.python_pyrefly_executable*
|
||||||
|
*g:ale_python_pyrefly_executable*
|
||||||
|
*b:ale_python_pyrefly_executable*
|
||||||
|
python_pyrefly_executable
|
||||||
|
g:ale_python_pyrefly_executable
|
||||||
|
Type: |String|
|
||||||
|
Default: `'pyrefly'`
|
||||||
|
|
||||||
|
See |ale-integrations-local-executables|
|
||||||
|
|
||||||
|
Set this to `'pipenv'` to invoke `'pipenv` `run` `pyrefly'`.
|
||||||
|
Set this to `'poetry'` to invoke `'poetry` `run` `pyrefly'`.
|
||||||
|
Set this to `'uv'` to invoke `'uv` `run` `pyrefly'`.
|
||||||
|
|
||||||
|
*ale-options.python_pyrefly_use_global*
|
||||||
|
*g:ale_python_pyrefly_use_global*
|
||||||
|
*b:ale_python_pyrefly_use_global*
|
||||||
|
python_pyrefly_use_global
|
||||||
|
g:ale_python_pyrefly_use_global
|
||||||
|
Type: |Number|
|
||||||
|
Default: `get(g:, 'ale_use_global_executables', 0)`
|
||||||
|
|
||||||
|
See |ale-integrations-local-executables|
|
||||||
|
|
||||||
|
*ale-options.python_pyrefly_auto_pipenv*
|
||||||
|
*g:ale_python_pyrefly_auto_pipenv*
|
||||||
|
*b:ale_python_pyrefly_auto_pipenv*
|
||||||
|
python_pyrefly_auto_pipenv
|
||||||
|
g:ale_python_pyrefly_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_pyrefly_auto_poetry*
|
||||||
|
*g:ale_python_pyrefly_auto_poetry*
|
||||||
|
*b:ale_python_pyrefly_auto_poetry*
|
||||||
|
python_pyrefly_auto_poetry
|
||||||
|
g:ale_python_pyrefly_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_pyrefly_auto_uv*
|
||||||
|
*g:ale_python_pyrefly_auto_uv*
|
||||||
|
*b:ale_python_pyrefly_auto_uv*
|
||||||
|
python_pyrefly_auto_uv
|
||||||
|
g:ale_python_pyrefly_auto_uv
|
||||||
|
Type: |Number|
|
||||||
|
Default: `0`
|
||||||
|
|
||||||
|
Set the executable to `uv` if true. This is overridden by a manually-set
|
||||||
|
executable.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
pyright *ale-python-pyright*
|
pyright *ale-python-pyright*
|
||||||
|
|
||||||
@@ -2043,6 +2106,92 @@ 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*
|
||||||
|
|
||||||
|
|||||||
79
doc/ale-roc.txt
Normal file
79
doc/ale-roc.txt
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
===============================================================================
|
||||||
|
ALE Roc Integration *ale-roc-options*
|
||||||
|
*ale-integration-roc*
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
roc_language_server *ale-roc-roc-language-server*
|
||||||
|
|
||||||
|
*ale-options.roc_roc_language_server_executable*
|
||||||
|
*g:ale_roc_roc_language_server_executable*
|
||||||
|
*b:ale_roc_roc_language_server_executable*
|
||||||
|
roc_roc_language_server_executable
|
||||||
|
g:ale_roc_roc_language_server_executable
|
||||||
|
Type: |String|
|
||||||
|
Default: `'roc_language_server'`
|
||||||
|
|
||||||
|
This variable can be modified to change the executable path for
|
||||||
|
`roc_language_server`.
|
||||||
|
|
||||||
|
*ale-options.roc_roc_language_server_config*
|
||||||
|
*g:ale_roc_roc_language_server_config*
|
||||||
|
*b:ale_roc_roc_language_server_config*
|
||||||
|
roc_roc_language_server_config
|
||||||
|
g:ale_roc_roc_language_server_config
|
||||||
|
Type: |Dictionary|
|
||||||
|
Default: `{}`
|
||||||
|
|
||||||
|
Dictionary with configuration settings for roc_language_server.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
roc_format *ale-roc-roc-format*
|
||||||
|
|
||||||
|
*ale-options.roc_roc_format_executable*
|
||||||
|
*g:ale_roc_roc_format_executable*
|
||||||
|
*b:ale_roc_roc_format_executable*
|
||||||
|
roc_roc_format_executable
|
||||||
|
g:ale_roc_roc_format_executable
|
||||||
|
Type: |String|
|
||||||
|
Default: `'roc'`
|
||||||
|
|
||||||
|
This variable can be modified to change the executable path for `roc`.
|
||||||
|
|
||||||
|
*ale-options.roc_roc_format_options*
|
||||||
|
*g:ale_roc_roc_format_options*
|
||||||
|
*b:ale_roc_roc_format_options*
|
||||||
|
roc_roc_format_options
|
||||||
|
g:ale_roc_roc_format_options
|
||||||
|
Type: String
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
Additional flags for `roc format`.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
roc_annotate *ale-roc-roc-annotate*
|
||||||
|
|
||||||
|
*ale-options.roc_roc_annotate_executable*
|
||||||
|
*g:ale_roc_roc_annotate_executable*
|
||||||
|
*b:ale_roc_roc_annotate_executable*
|
||||||
|
roc_roc_annotate_executable
|
||||||
|
g:ale_roc_roc_annotate_executable
|
||||||
|
Type: |String|
|
||||||
|
Default: `'roc'`
|
||||||
|
|
||||||
|
This variable can be modified to change the executable path for `roc`.
|
||||||
|
|
||||||
|
*ale-options.roc_roc_annotate_options*
|
||||||
|
*g:ale_roc_roc_annotate_options*
|
||||||
|
*b:ale_roc_roc_annotate_options*
|
||||||
|
roc_roc_annotate_options
|
||||||
|
g:ale_roc_roc_annotate_options
|
||||||
|
Type: String
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
Additional flags for `roc format annotate`.
|
||||||
|
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
@@ -267,6 +267,23 @@ 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*
|
||||||
|
|||||||
@@ -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-analyze are enabled by default. To switch to using rustc
|
Only cargo and rust-analyzer are enabled by default. To switch to using
|
||||||
instead of cargo, configure |b:ale_linters| in your ftplugin file
|
rustc 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.
|
||||||
|
|||||||
@@ -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`, `.bloop` or `.metals`. If the project root is elsewhere, you
|
`build.sc`, `build.mill`, `.bloop` or `.metals`. If the project root is elsewhere,
|
||||||
can override the project root directory.
|
you can override the project root directory.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ Notes:
|
|||||||
* `bibclean`
|
* `bibclean`
|
||||||
* Bicep
|
* Bicep
|
||||||
* `bicep`
|
* `bicep`
|
||||||
|
* Bindzone
|
||||||
|
* `checkzone` (named-checkzone)
|
||||||
* BitBake
|
* BitBake
|
||||||
* `oelint-adv`
|
* `oelint-adv`
|
||||||
* Bourne Shell
|
* Bourne Shell
|
||||||
@@ -119,6 +121,7 @@ Notes:
|
|||||||
* `joker`
|
* `joker`
|
||||||
* CloudFormation
|
* CloudFormation
|
||||||
* `cfn-python-lint`
|
* `cfn-python-lint`
|
||||||
|
* `checkov`
|
||||||
* CMake
|
* CMake
|
||||||
* `cmake-format`
|
* `cmake-format`
|
||||||
* `cmake-lint`
|
* `cmake-lint`
|
||||||
@@ -177,6 +180,7 @@ Notes:
|
|||||||
* `dialyxir`
|
* `dialyxir`
|
||||||
* `dogma`!!
|
* `dogma`!!
|
||||||
* `elixir-ls`
|
* `elixir-ls`
|
||||||
|
* `expert`
|
||||||
* `lexical`
|
* `lexical`
|
||||||
* `mix`!!
|
* `mix`!!
|
||||||
* Elm
|
* Elm
|
||||||
@@ -203,6 +207,7 @@ Notes:
|
|||||||
* `fish` (-n flag)
|
* `fish` (-n flag)
|
||||||
* `fish_indent`
|
* `fish_indent`
|
||||||
* Fortran
|
* Fortran
|
||||||
|
* `fortitude`
|
||||||
* `gcc`
|
* `gcc`
|
||||||
* `language_server`
|
* `language_server`
|
||||||
* Fountain
|
* Fountain
|
||||||
@@ -285,6 +290,7 @@ Notes:
|
|||||||
* `prettier`
|
* `prettier`
|
||||||
* `proselint`
|
* `proselint`
|
||||||
* `rustywind`
|
* `rustywind`
|
||||||
|
* `superhtml`
|
||||||
* `tidy`
|
* `tidy`
|
||||||
* `write-good`
|
* `write-good`
|
||||||
* HTML Angular
|
* HTML Angular
|
||||||
@@ -332,6 +338,7 @@ Notes:
|
|||||||
* `xo`
|
* `xo`
|
||||||
* Jinja
|
* Jinja
|
||||||
* djlint
|
* djlint
|
||||||
|
* j2lint
|
||||||
* JSON
|
* JSON
|
||||||
* `VSCode JSON language server`
|
* `VSCode JSON language server`
|
||||||
* `biome`
|
* `biome`
|
||||||
@@ -370,6 +377,8 @@ Notes:
|
|||||||
* `textlint`
|
* `textlint`
|
||||||
* `vale`
|
* `vale`
|
||||||
* `write-good`
|
* `write-good`
|
||||||
|
* Lean 4
|
||||||
|
* `lake`
|
||||||
* Less
|
* Less
|
||||||
* `lessc`
|
* `lessc`
|
||||||
* `prettier`
|
* `prettier`
|
||||||
@@ -467,6 +476,7 @@ Notes:
|
|||||||
* Pawn
|
* Pawn
|
||||||
* `uncrustify`
|
* `uncrustify`
|
||||||
* Perl
|
* Perl
|
||||||
|
* `languageserver`
|
||||||
* `perl -c`
|
* `perl -c`
|
||||||
* `perl-critic`
|
* `perl-critic`
|
||||||
* `perltidy`
|
* `perltidy`
|
||||||
@@ -541,11 +551,13 @@ Notes:
|
|||||||
* `pylint`!!
|
* `pylint`!!
|
||||||
* `pylsp`
|
* `pylsp`
|
||||||
* `pyre`
|
* `pyre`
|
||||||
|
* `pyrefly`
|
||||||
* `pyright`
|
* `pyright`
|
||||||
* `refurb`
|
* `refurb`
|
||||||
* `reorder-python-imports`
|
* `reorder-python-imports`
|
||||||
* ruff
|
* ruff
|
||||||
* ruff-format
|
* ruff-format
|
||||||
|
* `ty`
|
||||||
* `unimport`
|
* `unimport`
|
||||||
* `vulture`!!
|
* `vulture`!!
|
||||||
* `yapf`
|
* `yapf`
|
||||||
@@ -584,6 +596,10 @@ Notes:
|
|||||||
* `write-good`
|
* `write-good`
|
||||||
* Robot
|
* Robot
|
||||||
* `rflint`
|
* `rflint`
|
||||||
|
* Roc
|
||||||
|
* roc_annotate
|
||||||
|
* roc_format
|
||||||
|
* roc_language_server
|
||||||
* RPM spec
|
* RPM spec
|
||||||
* `rpmlint`
|
* `rpmlint`
|
||||||
* Ruby
|
* Ruby
|
||||||
@@ -689,6 +705,7 @@ Notes:
|
|||||||
* `thriftcheck`
|
* `thriftcheck`
|
||||||
* TOML
|
* TOML
|
||||||
* `dprint`
|
* `dprint`
|
||||||
|
* `tombi`
|
||||||
* TypeScript
|
* TypeScript
|
||||||
* `biome`
|
* `biome`
|
||||||
* `cspell`
|
* `cspell`
|
||||||
@@ -713,6 +730,7 @@ Notes:
|
|||||||
* `hdl-checker`
|
* `hdl-checker`
|
||||||
* `iverilog`
|
* `iverilog`
|
||||||
* slang
|
* slang
|
||||||
|
* `verible`
|
||||||
* `verilator`
|
* `verilator`
|
||||||
* `vlog`
|
* `vlog`
|
||||||
* `xvlog`
|
* `xvlog`
|
||||||
|
|||||||
@@ -111,5 +111,11 @@ 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:
|
||||||
|
|||||||
@@ -51,5 +51,11 @@ 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:
|
||||||
|
|||||||
@@ -8,5 +8,70 @@ 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:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ALE Verilog/SystemVerilog Integration *ale-verilog-options*
|
|||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
ALE can use seven different linters for Verilog HDL:
|
ALE can use eight different linters for Verilog HDL:
|
||||||
|
|
||||||
HDL Checker
|
HDL Checker
|
||||||
Using `hdl_checker --lsp`
|
Using `hdl_checker --lsp`
|
||||||
@@ -14,6 +14,9 @@ ALE can use seven 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`
|
||||||
|
|
||||||
@@ -35,6 +38,12 @@ 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
|
||||||
|
|
||||||
@@ -70,18 +79,84 @@ iverilog *ale-verilog-iverilog*
|
|||||||
===============================================================================
|
===============================================================================
|
||||||
slang *ale-verilog-slang*
|
slang *ale-verilog-slang*
|
||||||
|
|
||||||
*ale-options.verilog_slang_option*
|
*ale-options.verilog_slang_options*
|
||||||
*g:ale_verilog_slang_option*
|
*g:ale_verilog_slang_options*
|
||||||
*b:ale_verilog_slang_options*
|
*b:ale_verilog_slang_options*
|
||||||
verilog_slang_option
|
verilog_slang_options
|
||||||
g:ale_verilog_slang_option
|
g:ale_verilog_slang_options
|
||||||
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*
|
||||||
|
|||||||
68
doc/ale.txt
68
doc/ale.txt
@@ -30,7 +30,8 @@ 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 Other Linter/Fixer Options........|ale-other-integration-options|
|
7.5 Options for redpen................|ale-redpen-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|
|
||||||
@@ -1192,13 +1193,13 @@ g:ale_detail_to_floating_preview
|
|||||||
*b:ale_disable_lsp*
|
*b:ale_disable_lsp*
|
||||||
disable_lsp
|
disable_lsp
|
||||||
g:ale_disable_lsp
|
g:ale_disable_lsp
|
||||||
Type: |Number| OR |String|
|
Type: |Boolean| OR |Number| OR |String|
|
||||||
Default: `'auto'`
|
Default: `'auto'`
|
||||||
|
|
||||||
When this option is set to `'auto'`, ALE will automatically disable linters
|
When this option is set to `'auto'`, ALE will automatically disable linters
|
||||||
that it detects as having already been configured with the `nvim-lspconfig`
|
that it detects as having already been configured with the `nvim-lspconfig`
|
||||||
plugin. When this option is set to `1`, ALE ignores all linters powered by
|
plugin. When this option is set to `true` or `1`, ALE ignores all linters
|
||||||
LSP, and also `tsserver`.
|
powered by LSP, and also `tsserver`.
|
||||||
|
|
||||||
Any linters that are disabled will also not be usable for LSP functionality
|
Any linters that are disabled will also not be usable for LSP functionality
|
||||||
other than just linting.
|
other than just linting.
|
||||||
@@ -1735,6 +1736,7 @@ g:ale_linter_aliases
|
|||||||
|
|
||||||
{
|
{
|
||||||
\ 'Dockerfile': 'dockerfile',
|
\ 'Dockerfile': 'dockerfile',
|
||||||
|
\ 'bash': 'sh',
|
||||||
\ 'csh': 'sh',
|
\ 'csh': 'sh',
|
||||||
\ 'javascriptreact': ['javascript', 'jsx'],
|
\ 'javascriptreact': ['javascript', 'jsx'],
|
||||||
\ 'plaintex': 'tex',
|
\ 'plaintex': 'tex',
|
||||||
@@ -2268,6 +2270,16 @@ 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
|
||||||
@@ -3320,7 +3332,24 @@ g:ale_writegood_use_global
|
|||||||
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
7.6. Other Linter/Fixer Options *ale-other-integration-options*
|
7.6. Options for redpen *ale-redpen-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.
|
||||||
@@ -3341,6 +3370,7 @@ 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|
|
||||||
@@ -3360,6 +3390,8 @@ documented in additional help files.
|
|||||||
bicep...................................|ale-bicep-options|
|
bicep...................................|ale-bicep-options|
|
||||||
bicep.................................|ale-bicep-bicep|
|
bicep.................................|ale-bicep-bicep|
|
||||||
az_bicep..............................|ale-bicep-az_bicep|
|
az_bicep..............................|ale-bicep-az_bicep|
|
||||||
|
bindzone................................|ale-bindzone-options|
|
||||||
|
checkzone.............................|ale-bindzone-checkzone|
|
||||||
bitbake.................................|ale-bitbake-options|
|
bitbake.................................|ale-bitbake-options|
|
||||||
oelint-adv............................|ale-bitbake-oelint_adv|
|
oelint-adv............................|ale-bitbake-oelint_adv|
|
||||||
c.......................................|ale-c-options|
|
c.......................................|ale-c-options|
|
||||||
@@ -3387,6 +3419,7 @@ 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|
|
||||||
@@ -3457,6 +3490,7 @@ 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|
|
||||||
@@ -3477,6 +3511,7 @@ 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|
|
||||||
@@ -3552,7 +3587,9 @@ 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|
|
||||||
@@ -3600,6 +3637,7 @@ 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|
|
||||||
@@ -3631,6 +3669,8 @@ documented in additional help files.
|
|||||||
cspell................................|ale-latex-cspell|
|
cspell................................|ale-latex-cspell|
|
||||||
write-good............................|ale-latex-write-good|
|
write-good............................|ale-latex-write-good|
|
||||||
textlint..............................|ale-latex-textlint|
|
textlint..............................|ale-latex-textlint|
|
||||||
|
lean....................................|ale-lean-options|
|
||||||
|
lake..................................|ale-lean-lake|
|
||||||
less....................................|ale-less-options|
|
less....................................|ale-less-options|
|
||||||
lessc.................................|ale-less-lessc|
|
lessc.................................|ale-less-lessc|
|
||||||
prettier..............................|ale-less-prettier|
|
prettier..............................|ale-less-prettier|
|
||||||
@@ -3660,6 +3700,7 @@ 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|
|
||||||
@@ -3714,6 +3755,7 @@ 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|
|
||||||
@@ -3722,6 +3764,7 @@ 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|
|
||||||
@@ -3783,11 +3826,13 @@ documented in additional help files.
|
|||||||
pylint................................|ale-python-pylint|
|
pylint................................|ale-python-pylint|
|
||||||
pylsp.................................|ale-python-pylsp|
|
pylsp.................................|ale-python-pylsp|
|
||||||
pyre..................................|ale-python-pyre|
|
pyre..................................|ale-python-pyre|
|
||||||
|
pyrefly...............................|ale-python-pyrefly|
|
||||||
pyright...............................|ale-python-pyright|
|
pyright...............................|ale-python-pyright|
|
||||||
refurb................................|ale-python-refurb|
|
refurb................................|ale-python-refurb|
|
||||||
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|
|
||||||
@@ -3817,6 +3862,10 @@ documented in additional help files.
|
|||||||
write-good............................|ale-restructuredtext-write-good|
|
write-good............................|ale-restructuredtext-write-good|
|
||||||
robot...................................|ale-robot-options|
|
robot...................................|ale-robot-options|
|
||||||
rflint................................|ale-robot-rflint|
|
rflint................................|ale-robot-rflint|
|
||||||
|
roc.....................................|ale-roc-options|
|
||||||
|
roc_language_server...................|ale-roc-roc-language-server|
|
||||||
|
roc_format............................|ale-roc-roc-format|
|
||||||
|
roc_annotate..........................|ale-roc-roc-annotate|
|
||||||
ruby....................................|ale-ruby-options|
|
ruby....................................|ale-ruby-options|
|
||||||
brakeman..............................|ale-ruby-brakeman|
|
brakeman..............................|ale-ruby-brakeman|
|
||||||
cspell................................|ale-ruby-cspell|
|
cspell................................|ale-ruby-cspell|
|
||||||
@@ -3906,6 +3955,7 @@ 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|
|
||||||
@@ -3913,11 +3963,13 @@ 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|
|
||||||
@@ -3940,6 +3992,8 @@ 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|
|
||||||
@@ -4032,10 +4086,14 @@ 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.
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user