From 0e986359377ee1da1c2f5ec14155fd3a6bc548f0 Mon Sep 17 00:00:00 2001 From: Zoltan Kalmar Date: Fri, 7 Oct 2016 17:28:44 +0200 Subject: Add basic scala support using scalac (#56) * Add basic scala support using scalac * Convert if to a ternary expression * Better bounds check * Code formatting * Mention Scala in the documentation --- ale_linters/scala/scalac.vim | 58 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 ale_linters/scala/scalac.vim (limited to 'ale_linters/scala/scalac.vim') 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', +\}) -- cgit v1.2.3