" Author: rhysd https://rhysd.github.io " Description: Redpen, a proofreading tool (http://redpen.cc) function! ale_linters#markdown#redpen#HandleErrors(buffer, lines) abort " Only one file was passed to redpen. So response array has only one " element. let l:res = json_decode(join(a:lines))[0] let l:output = [] for l:err in l:res.errors let l:item = { \ 'text': l:err.message . ' (' . l:err.validator . ')', \ 'type': 'W', \} if has_key(l:err, 'startPosition') let l:item.lnum = l:err.startPosition.lineNum let l:item.col = l:err.startPosition.offset if has_key(l:err, 'endPosition') let l:item.end_lnum = l:err.endPosition.lineNum let l:item.end_col = l:err.endPosition.offset endif else let l:item.lnum = l:err.lineNum let l:item.col = l:err.sentenceStartColumnNum + 1 endif call add(l:output, l:item) endfor return l:output endfunction call ale#linter#Define('markdown', { \ 'name': 'redpen', \ 'executable': 'redpen', \ 'command': 'redpen -r json %t', \ 'callback': 'ale_linters#markdown#redpen#HandleErrors', \})