Fix #469 - Remove Unicode quotes from GCC errors, which cause issues

This commit is contained in:
w0rp 2017-04-24 23:00:43 +01:00
parent 3345bf20ca
commit a25b55b954
3 changed files with 24 additions and 4 deletions

View File

@ -18,6 +18,14 @@ function! s:IsHeaderFile(filename) abort
return a:filename =~? '\v\.(h|hpp)$' return a:filename =~? '\v\.(h|hpp)$'
endfunction endfunction
function! s:RemoveUnicodeQuotes(text) abort
let l:text = a:text
let l:text = substitute(l:text, '[`´]', '''', 'g')
let l:text = substitute(l:text, '[“”]', '"', 'g')
return l:text
endfunction
function! ale#handlers#gcc#HandleGCCFormat(buffer, lines) abort function! ale#handlers#gcc#HandleGCCFormat(buffer, lines) abort
let l:include_pattern = '\v^(In file included | *)from ([^:]*):(\d+)' let l:include_pattern = '\v^(In file included | *)from ([^:]*):(\d+)'
let l:include_lnum = 0 let l:include_lnum = 0
@ -76,7 +84,7 @@ function! ale#handlers#gcc#HandleGCCFormat(buffer, lines) abort
\ 'lnum': l:match[2] + 0, \ 'lnum': l:match[2] + 0,
\ 'col': l:match[3] + 0, \ 'col': l:match[3] + 0,
\ 'type': l:match[4] =~# 'error' ? 'E' : 'W', \ 'type': l:match[4] =~# 'error' ? 'E' : 'W',
\ 'text': l:match[5], \ 'text': s:RemoveUnicodeQuotes(l:match[5]),
\}) \})
endif endif
endfor endfor

View File

@ -53,7 +53,7 @@ Execute (HandleGCCFormat should handle the correct lines of output):
\ 'lnum': 10, \ 'lnum': 10,
\ 'col': 27, \ 'col': 27,
\ 'type': 'E', \ 'type': 'E',
\ 'text': 'invalid operands to binary - (have int and char *)', \ 'text': 'invalid operands to binary - (have ''int'' and ''char *'')',
\ }, \ },
\ ], \ ],
\ ale#handlers#gcc#HandleGCCFormat(42, [ \ ale#handlers#gcc#HandleGCCFormat(42, [
@ -61,6 +61,18 @@ Execute (HandleGCCFormat should handle the correct lines of output):
\ '<stdin>:10:27: error: invalid operands to binary - (have int and char *)', \ '<stdin>:10:27: error: invalid operands to binary - (have int and char *)',
\ ]) \ ])
Execute (HandleGCCFormat should replace Unicode quotes):
AssertEqual
\ [
\ {
\ 'lnum': 8,
\ 'col': 5,
\ 'type': 'W',
\ 'text': "'''' \"\"",
\ },
\ ],
\ ale#handlers#gcc#HandleGCCFormat(42, ['<stdin>:8:5: warning: `´ “”'])
Execute (HandleUnixFormatAsError should handle some example lines of output): Execute (HandleUnixFormatAsError should handle some example lines of output):
AssertEqual AssertEqual
\ [ \ [

View File

@ -12,13 +12,13 @@ Execute(The vint handler should parse error messages correctly):
\ { \ {
\ 'lnum': 3, \ 'lnum': 3,
\ 'col': 17, \ 'col': 17,
\ 'text': 'Use robust operators `==#` or `==?` instead of `==` (see Google VimScript Style Guide (Matching))', \ 'text': 'Use robust operators ''==#'' or ''==?'' instead of ''=='' (see Google VimScript Style Guide (Matching))',
\ 'type': 'W', \ 'type': 'W',
\ }, \ },
\ { \ {
\ 'lnum': 3, \ 'lnum': 3,
\ 'col': 8, \ 'col': 8,
\ 'text': 'Make the scope explicit like `l:filename` (see Anti-pattern of vimrc (Scope of identifier))', \ 'text': 'Make the scope explicit like ''l:filename'' (see Anti-pattern of vimrc (Scope of identifier))',
\ 'type': 'W', \ 'type': 'W',
\ }, \ },
\ { \ {