diff options
Diffstat (limited to 'autoload/prettier/bridge/parser.vim')
| -rw-r--r-- | autoload/prettier/bridge/parser.vim | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/autoload/prettier/bridge/parser.vim b/autoload/prettier/bridge/parser.vim new file mode 100644 index 0000000..eb23210 --- /dev/null +++ b/autoload/prettier/bridge/parser.vim @@ -0,0 +1,28 @@ +function! prettier#bridge#parser#onError(out) abort + let l:errors = [] + + for l:line in a:out + " matches: + " file.ext: SyntaxError: Unexpected token (2:8)sd + " stdin: SyntaxError: Unexpected token (2:8) + " [error] file.ext: SyntaxError: Unexpected token (2:8) + let l:match = matchlist(l:line, '^.*: \(.*\) (\(\d\{1,}\):\(\d\{1,}\)*)') + if !empty(l:match) + call add(l:errors, { 'bufnr': bufnr('%'), + \ 'text': l:match[1], + \ 'lnum': l:match[2], + \ 'col': l:match[3] }) + endif + endfor + + if len(l:errors) + let l:winnr = winnr() + call setqflist(l:errors, 'r') + botright copen + if !g:prettier#quickfix_auto_focus + " Return the cursor back to the main buffer. + exe l:winnr . 'wincmd w' + endif + return 1 + endif +endfunction |
