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:
parent
59b5644fb3
commit
9f3cdf8270
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
|
|
||||||
function! ale_linters#nim#nimcheck#Handle(buffer, lines) abort
|
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:pattern = '^\(.\+\.nim\)(\(\d\+\), \(\d\+\)) \(.\+\)'
|
||||||
let l:output = []
|
let l:output = []
|
||||||
|
|
||||||
@ -13,13 +14,22 @@ function! ale_linters#nim#nimcheck#Handle(buffer, lines) abort
|
|||||||
continue
|
continue
|
||||||
endif
|
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:line = l:match[2] + 0
|
||||||
let l:column = l:match[3] + 0
|
let l:column = l:match[3] + 0
|
||||||
let l:text = l:match[4]
|
let l:text = l:match[4]
|
||||||
let l:type = 'W'
|
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
|
if len(l:textmatch) > 0
|
||||||
let l:errortype = l:textmatch[1]
|
let l:errortype = l:textmatch[1]
|
||||||
|
@ -24,10 +24,18 @@ Execute(Parsing nim errors should work):
|
|||||||
\ 'text': 'Hint: ''NotUsed'' is declared but not used [XDeclaredButNotUsed]',
|
\ 'text': 'Hint: ''NotUsed'' is declared but not used [XDeclaredButNotUsed]',
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\ },
|
\ },
|
||||||
|
\ {
|
||||||
|
\ 'bufnr': 42,
|
||||||
|
\ 'lnum': 12,
|
||||||
|
\ 'col': 2,
|
||||||
|
\ 'text': 'Error: with : character',
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ },
|
||||||
\ ],
|
\ ],
|
||||||
\ ale_linters#nim#nimcheck#Handle(42, [
|
\ ale_linters#nim#nimcheck#Handle(42, [
|
||||||
\ 'Line with wrong( format)',
|
\ 'Line with wrong( format)',
|
||||||
\ 'foobar.nim(8, 8) Warning: use {.base.} for base methods; baseless methods are deprecated [UseBase]',
|
\ 'foobar.nim(8, 8) Warning: use {.base.} for base methods; baseless methods are deprecated [UseBase]',
|
||||||
\ 'foobar.nim(12, 2) Error: identifier expected, but found ''a.barfoo''',
|
\ 'foobar.nim(12, 2) Error: identifier expected, but found ''a.barfoo''',
|
||||||
\ '/nested/folder/foobar.nim(2, 5) Hint: ''NotUsed'' is declared but not used [XDeclaredButNotUsed]',
|
\ '/nested/folder/foobar.nim(2, 5) Hint: ''NotUsed'' is declared but not used [XDeclaredButNotUsed]',
|
||||||
|
\ 'foobar.nim(12, 2) Error: with : character',
|
||||||
\ ])
|
\ ])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user