Before: runtime ale_linters/nim/nimcheck.vim After: call ale#linter#Reset() Execute(Parsing nim errors should work): silent file foobar.nim AssertEqual \ [ \ { \ 'lnum': 8, \ 'col': 8, \ 'text': 'use {.base.} for base methods; baseless methods are deprecated', \ 'code': 'UseBase', \ 'type': 'W', \ }, \ { \ 'lnum': 12, \ 'col': 2, \ 'text': 'identifier expected, but found ''a.barfoo''', \ 'type': 'E', \ }, \ { \ 'lnum': 2, \ 'col': 5, \ 'text': '''NotUsed'' is declared but not used', \ 'code': 'XDeclaredButNotUsed', \ 'type': 'W', \ }, \ { \ 'lnum': 12, \ 'col': 2, \ 'text': 'with : character', \ 'type': 'E', \ }, \ ], \ ale_linters#nim#nimcheck#Handle(bufnr(''), [ \ 'Line with wrong( format)', \ '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''', \ '/nested/folder/foobar.nim(2, 5) Hint: ''NotUsed'' is declared but not used [XDeclaredButNotUsed]', \ 'foobar.nim(12, 2) Error: with : character', \ ])