mirror of https://github.com/amix/vimrc.git
parent
46f1a1bd52
commit
587a185a98
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for AsciiDoc files |
||||
|
||||
call ale#linter#Define('asciidoc', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('asciidoc') |
||||
|
@ -0,0 +1,29 @@ |
||||
" Author: Andrey Melentyev <andrey.melentyev@protonmail.com> |
||||
" Description: Clangd language server |
||||
|
||||
call ale#Set('c_clangd_executable', 'clangd') |
||||
call ale#Set('c_clangd_options', '') |
||||
|
||||
function! ale_linters#c#clangd#GetProjectRoot(buffer) abort |
||||
let l:project_root = ale#path#FindNearestFile(a:buffer, 'compile_commands.json') |
||||
return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : '' |
||||
endfunction |
||||
|
||||
function! ale_linters#c#clangd#GetExecutable(buffer) abort |
||||
return ale#Var(a:buffer, 'c_clangd_executable') |
||||
endfunction |
||||
|
||||
function! ale_linters#c#clangd#GetCommand(buffer) abort |
||||
let l:executable = ale_linters#c#clangd#GetExecutable(a:buffer) |
||||
let l:options = ale#Var(a:buffer, 'c_clangd_options') |
||||
|
||||
return ale#Escape(l:executable) . (!empty(l:options) ? ' ' . l:options : '') |
||||
endfunction |
||||
|
||||
call ale#linter#Define('c', { |
||||
\ 'name': 'clangd', |
||||
\ 'lsp': 'stdio', |
||||
\ 'executable_callback': 'ale_linters#c#clangd#GetExecutable', |
||||
\ 'command_callback': 'ale_linters#c#clangd#GetCommand', |
||||
\ 'project_root_callback': 'ale_linters#c#clangd#GetProjectRoot', |
||||
\}) |
@ -0,0 +1,32 @@ |
||||
" Author: Ben Falconer <ben@falconers.me.uk>, jtalowell <jtalowell@protonmail.com> |
||||
" Description: A language server for C |
||||
|
||||
call ale#Set('c_cquery_executable', 'cquery') |
||||
call ale#Set('c_cquery_cache_directory', expand('~/.cache/cquery')) |
||||
|
||||
function! ale_linters#c#cquery#GetProjectRoot(buffer) abort |
||||
let l:project_root = ale#path#FindNearestFile(a:buffer, 'compile_commands.json') |
||||
return !empty(l:project_root) ? fnamemodify(l:project_root, ':h') : '' |
||||
endfunction |
||||
|
||||
function! ale_linters#c#cquery#GetExecutable(buffer) abort |
||||
return ale#Var(a:buffer, 'c_cquery_executable') |
||||
endfunction |
||||
|
||||
function! ale_linters#c#cquery#GetCommand(buffer) abort |
||||
let l:executable = ale_linters#c#cquery#GetExecutable(a:buffer) |
||||
return ale#Escape(l:executable) |
||||
endfunction |
||||
|
||||
function! ale_linters#c#cquery#GetInitializationOptions(buffer) abort |
||||
return {'cacheDirectory': ale#Var(a:buffer, 'c_cquery_cache_directory')} |
||||
endfunction |
||||
|
||||
call ale#linter#Define('c', { |
||||
\ 'name': 'cquery', |
||||
\ 'lsp': 'stdio', |
||||
\ 'executable_callback': 'ale_linters#c#cquery#GetExecutable', |
||||
\ 'command_callback': 'ale_linters#c#cquery#GetCommand', |
||||
\ 'project_root_callback': 'ale_linters#c#cquery#GetProjectRoot', |
||||
\ 'initialization_options_callback': 'ale_linters#c#cquery#GetInitializationOptions', |
||||
\}) |
@ -0,0 +1,27 @@ |
||||
" Author: unpairedbracket ben.spiers22@gmail.com |
||||
" Description: A language server for fortran |
||||
|
||||
call ale#Set('fortran_language_server_executable', 'fortls') |
||||
call ale#Set('fortran_language_server_use_global', get(g:, 'ale_use_global_executables', 0)) |
||||
|
||||
function! ale_linters#fortran#language_server#GetExecutable(buffer) abort |
||||
return ale#Var(a:buffer, 'fortran_language_server_executable') |
||||
endfunction |
||||
|
||||
function! ale_linters#fortran#language_server#GetCommand(buffer) abort |
||||
return ale#Escape(ale_linters#fortran#language_server#GetExecutable(a:buffer)) |
||||
endfunction |
||||
|
||||
function! ale_linters#fortran#language_server#GetProjectRoot(buffer) abort |
||||
let l:fortls_file = ale#path#FindNearestFile(a:buffer, '.fortls') |
||||
|
||||
return !empty(l:fortls_file) ? fnamemodify(l:fortls_file, ':h') : '' |
||||
endfunction |
||||
|
||||
call ale#linter#Define('fortran', { |
||||
\ 'name': 'language_server', |
||||
\ 'lsp': 'stdio', |
||||
\ 'executable_callback': 'ale_linters#fortran#language_server#GetExecutable', |
||||
\ 'command_callback': 'ale_linters#fortran#language_server#GetCommand', |
||||
\ 'project_root_callback': 'ale_linters#fortran#language_server#GetProjectRoot', |
||||
\}) |
@ -0,0 +1,19 @@ |
||||
" Author: Eric Wolf <ericwolf42@gmail.com> |
||||
" Description: ghc for Haskell files called with cabal exec |
||||
|
||||
call ale#Set('haskell_cabal_ghc_options', '-fno-code -v0') |
||||
|
||||
function! ale_linters#haskell#cabal_ghc#GetCommand(buffer) abort |
||||
return 'cabal exec -- ghc ' |
||||
\ . ale#Var(a:buffer, 'haskell_cabal_ghc_options') |
||||
\ . ' %t' |
||||
endfunction |
||||
|
||||
call ale#linter#Define('haskell', { |
||||
\ 'name': 'cabal_ghc', |
||||
\ 'aliases': ['cabal-ghc'], |
||||
\ 'output_stream': 'stderr', |
||||
\ 'executable': 'cabal', |
||||
\ 'command_callback': 'ale_linters#haskell#cabal_ghc#GetCommand', |
||||
\ 'callback': 'ale#handlers#haskell#HandleGHCFormat', |
||||
\}) |
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for vim Help files |
||||
|
||||
call ale#linter#Define('help', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('help') |
||||
|
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for nroff files |
||||
" Description: write-good for html files |
||||
|
||||
call ale#linter#Define('html', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('html') |
||||
|
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for Markdown files |
||||
|
||||
call ale#linter#Define('markdown', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('markdown') |
||||
|
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for nroff files |
||||
|
||||
call ale#linter#Define('nroff', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('nroff') |
||||
|
@ -1,9 +1,4 @@ |
||||
" Author: Cian Butler https://github.com/butlerx |
||||
" Description: write-good for PO files |
||||
|
||||
call ale#linter#Define('po', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('po') |
||||
|
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for Pod files |
||||
|
||||
call ale#linter#Define('pod', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('pod') |
||||
|
@ -0,0 +1,85 @@ |
||||
" Author: Yauheni Kirylau <actionless.loveless@gmail.com> |
||||
" Description: vulture linting for python files |
||||
|
||||
call ale#Set('python_vulture_executable', 'vulture') |
||||
call ale#Set('python_vulture_options', '') |
||||
call ale#Set('python_vulture_use_global', get(g:, 'ale_use_global_executables', 0)) |
||||
call ale#Set('python_vulture_change_directory', 1) |
||||
|
||||
|
||||
" The directory to change to before running vulture |
||||
function! s:GetDir(buffer) abort |
||||
let l:project_root = ale#python#FindProjectRoot(a:buffer) |
||||
|
||||
return !empty(l:project_root) |
||||
\ ? l:project_root |
||||
\ : expand('#' . a:buffer . ':p:h') |
||||
endfunction |
||||
|
||||
|
||||
function! ale_linters#python#vulture#GetExecutable(buffer) abort |
||||
return ale#python#FindExecutable(a:buffer, 'python_vulture', ['vulture']) |
||||
endfunction |
||||
|
||||
|
||||
function! ale_linters#python#vulture#GetCommand(buffer) abort |
||||
let l:change_dir = ale#Var(a:buffer, 'python_vulture_change_directory') |
||||
\ ? ale#path#CdString(s:GetDir(a:buffer)) |
||||
\ : '' |
||||
|
||||
let l:executable = ale_linters#python#vulture#GetExecutable(a:buffer) |
||||
|
||||
let l:exec_args = l:executable =~? 'pipenv$' |
||||
\ ? ' run vulture' |
||||
\ : '' |
||||
|
||||
let l:lint_dest = ale#Var(a:buffer, 'python_vulture_change_directory') |
||||
\ ? ' .' |
||||
\ : ' %s' |
||||
|
||||
return l:change_dir |
||||
\ . ale#Escape(l:executable) . l:exec_args |
||||
\ . ' ' |
||||
\ . ale#Var(a:buffer, 'python_vulture_options') |
||||
\ . l:lint_dest |
||||
endfunction |
||||
|
||||
|
||||
function! ale_linters#python#vulture#Handle(buffer, lines) abort |
||||
for l:line in a:lines[:10] |
||||
if match(l:line, '^Traceback') >= 0 |
||||
return [{ |
||||
\ 'lnum': 1, |
||||
\ 'text': 'An exception was thrown. See :ALEDetail', |
||||
\ 'detail': join(a:lines, "\n"), |
||||
\}] |
||||
endif |
||||
endfor |
||||
|
||||
" Matches patterns line the following: |
||||
let l:pattern = '\v^([a-zA-Z]?:?[^:]+):(\d+): (.*)$' |
||||
let l:output = [] |
||||
let l:dir = s:GetDir(a:buffer) |
||||
|
||||
for l:match in ale#util#GetMatches(a:lines, l:pattern) |
||||
let l:abspath = ale#path#GetAbsPath(l:dir, l:match[1]) |
||||
let l:item = { |
||||
\ 'filename': l:abspath, |
||||
\ 'lnum': l:match[2] + 0, |
||||
\ 'text': l:match[3], |
||||
\ 'type': 'W', |
||||
\} |
||||
call add(l:output, l:item) |
||||
endfor |
||||
|
||||
return l:output |
||||
endfunction |
||||
|
||||
|
||||
call ale#linter#Define('python', { |
||||
\ 'name': 'vulture', |
||||
\ 'executable_callback': 'ale_linters#python#vulture#GetExecutable', |
||||
\ 'command_callback': 'ale_linters#python#vulture#GetCommand', |
||||
\ 'callback': 'ale_linters#python#vulture#Handle', |
||||
\ 'lint_file': 1, |
||||
\}) |
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for reStructuredText files |
||||
|
||||
call ale#linter#Define('rst', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('rst') |
||||
|
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for TeX files |
||||
|
||||
call ale#linter#Define('tex', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('tex') |
||||
|
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for Texinfo files |
||||
|
||||
call ale#linter#Define('texinfo', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('texinfo') |
||||
|
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for text files |
||||
|
||||
call ale#linter#Define('text', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('text') |
||||
|
@ -1,9 +1,4 @@ |
||||
" Author: Sumner Evans <sumner.evans98@gmail.com> |
||||
" Description: write-good for XHTML files |
||||
|
||||
call ale#linter#Define('xhtml', { |
||||
\ 'name': 'write-good', |
||||
\ 'executable_callback': 'ale#handlers#writegood#GetExecutable', |
||||
\ 'command_callback': 'ale#handlers#writegood#GetCommand', |
||||
\ 'callback': 'ale#handlers#writegood#Handle', |
||||
\}) |
||||
call ale#handlers#writegood#DefineLinter('xhtml') |
||||
|