Fix problems with nim check (#404)

* Fix problems with nim check

- Multi file errors are not shown in the same buffer
- Fixes parsing of error type that contain ':'

* Remove redundant fnameescape
This commit is contained in:
baabelfish
2017-03-22 11:11:32 +02:00
committed by w0rp
parent 59b5644fb3
commit 9f3cdf8270
2 changed files with 20 additions and 2 deletions

View File

@@ -3,6 +3,7 @@
function! ale_linters#nim#nimcheck#Handle(buffer, lines) abort
let l:buffer_filename = fnamemodify(bufname(a:buffer), ':p:t')
let l:pattern = '^\(.\+\.nim\)(\(\d\+\), \(\d\+\)) \(.\+\)'
let l:output = []
@@ -13,13 +14,22 @@ function! ale_linters#nim#nimcheck#Handle(buffer, lines) abort
continue
endif
let l:buffer = l:match[1] + 0
" Only show errors of the current buffer
" NOTE: Checking filename only is OK because nim enforces unique
" module names.
let l:temp_buffer_filename = fnamemodify(l:match[1], ':p:t')
if l:buffer_filename !=# '' && l:temp_buffer_filename !=# l:buffer_filename
continue
endif
let l:line = l:match[2] + 0
let l:column = l:match[3] + 0
let l:text = l:match[4]
let l:type = 'W'
let l:textmatch = matchlist(l:match[4], '\(.*\):')
" Extract error type from message of type 'Error: Some error message'
let l:textmatch = matchlist(l:match[4], '^\(.\{-}\): .\+$')
if len(l:textmatch) > 0
let l:errortype = l:textmatch[1]