mirror of https://github.com/dense-analysis/ale
#538 Set some end columns for some eslint problems
This commit is contained in:
parent
e2860f8a26
commit
3443994a52
|
@ -39,6 +39,13 @@ function! ale_linters#javascript#eslint#GetCommand(buffer) abort
|
||||||
\ . ' -f unix --stdin --stdin-filename %s'
|
\ . ' -f unix --stdin --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
let s:col_end_patterns = [
|
||||||
|
\ '\vParsing error: Unexpected token (.+) ',
|
||||||
|
\ '\v''(.+)'' is not defined.',
|
||||||
|
\ '\v%(Unexpected|Redundant use of) [''`](.+)[''`]',
|
||||||
|
\ '\vUnexpected (console) statement',
|
||||||
|
\]
|
||||||
|
|
||||||
function! ale_linters#javascript#eslint#Handle(buffer, lines) abort
|
function! ale_linters#javascript#eslint#Handle(buffer, lines) abort
|
||||||
let l:config_error_pattern = '\v^ESLint couldn''t find a configuration file'
|
let l:config_error_pattern = '\v^ESLint couldn''t find a configuration file'
|
||||||
\ . '|^Cannot read config file'
|
\ . '|^Cannot read config file'
|
||||||
|
@ -77,13 +84,18 @@ function! ale_linters#javascript#eslint#Handle(buffer, lines) abort
|
||||||
let l:text .= ' [' . l:match[4] . ']'
|
let l:text .= ' [' . l:match[4] . ']'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call add(l:output, {
|
let l:obj = {
|
||||||
\ 'bufnr': a:buffer,
|
|
||||||
\ 'lnum': l:match[1] + 0,
|
\ 'lnum': l:match[1] + 0,
|
||||||
\ 'col': l:match[2] + 0,
|
\ 'col': l:match[2] + 0,
|
||||||
\ 'text': l:text,
|
\ 'text': l:text,
|
||||||
\ 'type': l:type ==# 'Warning' ? 'W' : 'E',
|
\ 'type': l:type ==# 'Warning' ? 'W' : 'E',
|
||||||
\})
|
\}
|
||||||
|
|
||||||
|
for l:col_match in ale#util#GetMatches(l:text, s:col_end_patterns)
|
||||||
|
let l:obj.end_col = l:obj.col + len(l:col_match[1]) - 1
|
||||||
|
endfor
|
||||||
|
|
||||||
|
call add(l:output, l:obj)
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
return l:output
|
return l:output
|
||||||
|
|
|
@ -5,21 +5,18 @@ Execute(The eslint handler should parse lines correctly):
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ [
|
\ [
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 47,
|
\ 'lnum': 47,
|
||||||
\ 'col': 14,
|
\ 'col': 14,
|
||||||
\ 'text': 'Missing trailing comma. [Warning/comma-dangle]',
|
\ 'text': 'Missing trailing comma. [Warning/comma-dangle]',
|
||||||
\ 'type': 'W',
|
\ 'type': 'W',
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 56,
|
\ 'lnum': 56,
|
||||||
\ 'col': 41,
|
\ 'col': 41,
|
||||||
\ 'text': 'Missing semicolon. [Error/semi]',
|
\ 'text': 'Missing semicolon. [Error/semi]',
|
||||||
\ 'type': 'E',
|
\ 'type': 'E',
|
||||||
\ },
|
\ },
|
||||||
\ {
|
\ {
|
||||||
\ 'bufnr': 347,
|
|
||||||
\ 'lnum': 13,
|
\ 'lnum': 13,
|
||||||
\ 'col': 3,
|
\ 'col': 3,
|
||||||
\ 'text': 'Parsing error: Unexpected token',
|
\ 'text': 'Parsing error: Unexpected token',
|
||||||
|
@ -117,3 +114,58 @@ Execute(The eslint handler should print a message for invalid configuration sett
|
||||||
\ 'detail': join(g:config_error_lines, "\n"),
|
\ 'detail': join(g:config_error_lines, "\n"),
|
||||||
\ }],
|
\ }],
|
||||||
\ ale_linters#javascript#eslint#Handle(347, g:config_error_lines[:])
|
\ ale_linters#javascript#eslint#Handle(347, g:config_error_lines[:])
|
||||||
|
|
||||||
|
Execute(The eslint handler should output end_col values where appropriate):
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 4,
|
||||||
|
\ 'col': 3,
|
||||||
|
\ 'end_col': 15,
|
||||||
|
\ 'text': 'Parsing error: Unexpected token ''some string'' [Error]',
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ },
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 70,
|
||||||
|
\ 'col': 3,
|
||||||
|
\ 'end_col': 5,
|
||||||
|
\ 'text': '''foo'' is not defined. [Error/no-undef]',
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ },
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 71,
|
||||||
|
\ 'col': 2,
|
||||||
|
\ 'end_col': 6,
|
||||||
|
\ 'text': 'Unexpected `await` inside a loop. [Error/no-await-in-loop]',
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ },
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 72,
|
||||||
|
\ 'col': 6,
|
||||||
|
\ 'end_col': 10,
|
||||||
|
\ 'text': 'Redundant use of `await` on a return value. [Error/no-return-await]',
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ },
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 73,
|
||||||
|
\ 'col': 4,
|
||||||
|
\ 'end_col': 10,
|
||||||
|
\ 'text': 'Unexpected console statement [Error/no-console]',
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ },
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 74,
|
||||||
|
\ 'col': 4,
|
||||||
|
\ 'end_col': 11,
|
||||||
|
\ 'text': 'Unexpected ''debugger'' statement. [Error/no-debugger]',
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ },
|
||||||
|
\ ],
|
||||||
|
\ ale_linters#javascript#eslint#Handle(347, [
|
||||||
|
\ 'app.js:4:3: Parsing error: Unexpected token ''some string'' [Error]',
|
||||||
|
\ 'app.js:70:3: ''foo'' is not defined. [Error/no-undef]',
|
||||||
|
\ 'app.js:71:2: Unexpected `await` inside a loop. [Error/no-await-in-loop]',
|
||||||
|
\ 'app.js:72:6: Redundant use of `await` on a return value. [Error/no-return-await]',
|
||||||
|
\ 'app.js:73:4: Unexpected console statement [Error/no-console]',
|
||||||
|
\ 'app.js:74:4: Unexpected ''debugger'' statement. [Error/no-debugger]',
|
||||||
|
\ ])
|
||||||
|
|
Loading…
Reference in New Issue