summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
Diffstat (limited to 'autoload')
-rw-r--r--autoload/ale/handlers/vale.vim36
1 files changed, 36 insertions, 0 deletions
diff --git a/autoload/ale/handlers/vale.vim b/autoload/ale/handlers/vale.vim
new file mode 100644
index 00000000..c8420572
--- /dev/null
+++ b/autoload/ale/handlers/vale.vim
@@ -0,0 +1,36 @@
+" Author: Johannes Wienke <languitar@semipol.de>
+" Description: output handler for the vale JSON format
+
+function! ale#handlers#vale#GetType(severity) abort
+ if a:severity is? 'warning'
+ return 'W'
+ endif
+
+ return 'E'
+endfunction
+
+function! ale#handlers#vale#Handle(buffer, lines) abort
+ try
+ let l:errors = json_decode(join(a:lines, ''))
+ catch
+ return []
+ endtry
+
+ if empty(l:errors)
+ return []
+ endif
+
+ let l:output = []
+ for l:error in l:errors[keys(l:errors)[0]]
+ call add(l:output, {
+ \ 'lnum': l:error['Line'],
+ \ 'col': l:error['Span'][0],
+ \ 'end_col': l:error['Span'][1],
+ \ 'code': l:error['Check'],
+ \ 'text': l:error['Message'],
+ \ 'type': ale#handlers#vale#GetType(l:error['Severity']),
+ \})
+ endfor
+
+ return l:output
+endfunction