Before: let b:tmp = has('win32') ? substitute($TMP, '\\', '\\\\', 'g') : $TMPDIR runtime ale_linters/elm/make.vim After: unlet! b:tmp unlet! g:config_error_lines call ale#linter#Reset() Execute(The elm-make handler should parse lines correctly): AssertEqual \ [ \ { \ 'lnum': 404, \ 'col': 1, \ 'end_lnum': 408, \ 'end_col': 18, \ 'type': 'E', \ 'text': 'TYPE MISMATCH', \ 'detail': "error details 1 styled details" \ }, \ { \ 'lnum': 406, \ 'col': 5, \ 'end_lnum': 407, \ 'end_col': 17, \ 'type': 'E', \ 'text': 'TYPE MISMATCH', \ 'detail': "error details 2", \ }, \ { \ 'lnum': 406, \ 'col': 5, \ 'end_lnum': 406, \ 'end_col': 93, \ 'type': 'E', \ 'text': 'TYPE MISMATCH', \ 'detail': "error details 3", \ }, \ ], \ ale_linters#elm#make#Handle(347, [ \ '{ \ "type":"compile-errors", \ "errors": [ \ { \ "path": "' . b:tmp . 'Module.elm", \ "problems": [ \ { \ "title": "TYPE MISMATCH", \ "message": ["error details 1 ", { "string": "styled details" }], \ "region": { "start": { "line": 404, "column":1 }, "end": { "line":408, "column":18} } \ }, \ { \ "title": "TYPE MISMATCH", \ "message": ["error details 2"], \ "region": { "start": {"line": 406, "column": 5}, "end": {"line": 407, "column": 17} } \ }, \ { \ "title": "TYPE MISMATCH", \ "message": ["error details 3"], \ "region": { "start": { "line": 406, "column": 5}, "end": {"line": 406, "column":93 } } \ } \ ] \ } \ ] \ }' \ ]) Execute(The elm-make handler should put an error on the first line if a line cannot be parsed): AssertEqual \ [ \ { \ 'lnum': 404, \ 'col': 1, \ 'end_lnum': 408, \ 'end_col': 18, \ 'type': 'E', \ 'text': 'TYPE MISMATCH', \ 'detail': "error details 1 styled details" \ }, \ { \ 'lnum': 1, \ 'type': 'E', \ 'text': 'Not JSON', \ 'detail': "Not JSON\nAlso not JSON", \ }, \ ], \ ale_linters#elm#make#Handle(347, [ \ '{ \ "type":"compile-errors", \ "errors": [ \ { \ "path": "' . b:tmp . 'Module.elm", \ "problems": [ \ { \ "title": "TYPE MISMATCH", \ "message": ["error details 1 ", { "string": "styled details" }], \ "region": { "start": { "line": 404, "column":1 }, "end": { "line":408, "column":18} } \ } \ ] \ } \ ] \ }', \ "Not JSON", \ "Also not JSON", \ ])