diff options
Diffstat (limited to 'ale_linters')
-rw-r--r-- | ale_linters/php/php.vim | 2 | ||||
-rw-r--r-- | ale_linters/pyrex/cython.vim | 45 | ||||
-rw-r--r-- | ale_linters/scala/scalac.vim | 58 |
3 files changed, 104 insertions, 1 deletions
diff --git a/ale_linters/php/php.vim b/ale_linters/php/php.vim index 4b4b1720..cc875e9c 100644 --- a/ale_linters/php/php.vim +++ b/ale_linters/php/php.vim @@ -39,7 +39,7 @@ endfunction call ALEAddLinter('php', { \ 'name': 'php', \ 'executable': 'php', -\ 'output_stream': 'stderr', +\ 'output_stream': 'both', \ 'command': 'php -l --', \ 'callback': 'ale_linters#php#php#Handle', \}) diff --git a/ale_linters/pyrex/cython.vim b/ale_linters/pyrex/cython.vim new file mode 100644 index 00000000..a0175ab4 --- /dev/null +++ b/ale_linters/pyrex/cython.vim @@ -0,0 +1,45 @@ +" Author: w0rp <devw0rp@gmail.com> +" Description: cython syntax checking for cython files. + +function! ale_linters#pyrex#cython#Handle(buffer, lines) + " Matches patterns line the following: + " + " test.pyx:13:25: Expected ':', found 'NEWLINE' + let pattern = '^.\+:\(\d\+\):\(\d\+\): \(.\+\)$' + let output = [] + + for line in a:lines + let l:match = matchlist(line, pattern) + + if len(l:match) == 0 + continue + endif + + if l:match[3] =~# 'is not a valid module name$' + " Skip invalid module name errors. + continue + endif + + call add(output, { + \ 'bufnr': a:buffer, + \ 'lnum': l:match[1] + 0, + \ 'vcol': 0, + \ 'col': l:match[2] + 0, + \ 'text': l:match[3], + \ 'type': 'E', + \ 'nr': -1, + \}) + endfor + + return output +endfunction + +call ALEAddLinter('pyrex', { +\ 'name': 'cython', +\ 'output_stream': 'stderr', +\ 'executable': 'cython', +\ 'command': g:ale#util#stdin_wrapper +\ . ' .pyx cython --warning-extra -o ' +\ . g:ale#util#nul_file, +\ 'callback': 'ale_linters#pyrex#cython#Handle', +\}) diff --git a/ale_linters/scala/scalac.vim b/ale_linters/scala/scalac.vim new file mode 100644 index 00000000..d5a75493 --- /dev/null +++ b/ale_linters/scala/scalac.vim @@ -0,0 +1,58 @@ +" vim: set et: +" Author: Zoltan Kalmar - https://github.com/kalmiz +" Description: Basic scala support using scalac + +if exists('g:loaded_ale_linters_scala_scalac') + finish +endif + +let g:loaded_ale_linters_scala_scalac = 1 + +function! ale_linters#scala#scalac#Handle(buffer, lines) + " Matches patterns line the following: + " + " /var/folders/5q/20rgxx3x1s34g3m14n5bq0x80000gn/T/vv6pSsy/0:26: error: expected class or object definition + let pattern = '^.\+:\(\d\+\): \(\w\+\): \(.\+\)' + let output = [] + let ln = 0 + + for line in a:lines + let ln = ln + 1 + let l:match = matchlist(line, pattern) + + if len(l:match) == 0 + continue + endif + + let text = l:match[3] + let type = l:match[2] == 'error' ? 'E' : 'W' + let col = 0 + if ln + 1 < len(a:lines) + let col = stridx(a:lines[ln + 1], '^') + if col == -1 + let col = 0 + endif + endif + + " vcol is Needed to indicate that the column is a character. + call add(output, { + \ 'bufnr': a:buffer, + \ 'lnum': l:match[1] + 0, + \ 'vcol': 0, + \ 'col': col + 1, + \ 'text': text, + \ 'type': type, + \ 'nr': -1, + \}) + endfor + + return output +endfunction + +call ALEAddLinter('scala', { +\ 'name': 'scalac', +\ 'executable': 'scalac', +\ 'output_stream': 'stderr', +\ 'command': g:ale#util#stdin_wrapper . ' .scala scalac -Ystop-after:parser', +\ 'callback': 'ale_linters#scala#scalac#Handle', +\}) |