mirror of https://github.com/dense-analysis/ale
Fix #1584 - Make duplicate msgfmt messages easier to navigate
This commit is contained in:
parent
c23acb00e2
commit
c1da7866d0
|
@ -1,10 +1,30 @@
|
||||||
" Author: Cian Butler https://github.com/butlerx
|
" Author: Cian Butler https://github.com/butlerx
|
||||||
" Description: msgfmt for PO files
|
" Description: msgfmt for PO files
|
||||||
|
|
||||||
|
function! ale_linters#po#msgfmt#Handle(buffer, lines) abort
|
||||||
|
let l:results = ale#handlers#unix#HandleAsWarning(a:buffer, a:lines)
|
||||||
|
let l:index = 0
|
||||||
|
|
||||||
|
for l:item in l:results
|
||||||
|
if l:index > 0 && l:item.text =~? 'this is the location of the first definition'
|
||||||
|
let l:last_item = l:results[l:index - 1]
|
||||||
|
|
||||||
|
if l:last_item.text =~? 'duplicate message definition'
|
||||||
|
let l:last_item.text = 'duplicate of message at line ' . l:item.lnum
|
||||||
|
let l:item.text = 'first location of duplicate of message at line ' . l:last_item.lnum
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
let l:index += 1
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return l:results
|
||||||
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('po', {
|
call ale#linter#Define('po', {
|
||||||
\ 'name': 'msgfmt',
|
\ 'name': 'msgfmt',
|
||||||
\ 'executable': 'msgfmt',
|
\ 'executable': 'msgfmt',
|
||||||
\ 'output_stream': 'stderr',
|
\ 'output_stream': 'stderr',
|
||||||
\ 'command': 'msgfmt --statistics --output-file=- %t',
|
\ 'command': 'msgfmt --statistics --output-file=- %t',
|
||||||
\ 'callback': 'ale#handlers#unix#HandleAsWarning',
|
\ 'callback': 'ale_linters#po#msgfmt#Handle',
|
||||||
\})
|
\})
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
Before:
|
||||||
|
runtime ale_linters/po/msgfmt.vim
|
||||||
|
|
||||||
|
After:
|
||||||
|
call ale#linter#Reset()
|
||||||
|
|
||||||
|
Execute(Duplicate messages should be made easier to navigate):
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ {'lnum': 14, 'col': 0, 'type': 'W', 'text': 'some other thing'},
|
||||||
|
\ {'lnum': 1746, 'col': 0, 'type': 'W', 'text': 'duplicate of message at line 262'},
|
||||||
|
\ {'lnum': 262, 'col': 0, 'type': 'W', 'text': 'first location of duplicate of message at line 1746'},
|
||||||
|
\ {'lnum': 666, 'col': 0, 'type': 'W', 'text': 'duplicate message definition...'},
|
||||||
|
\ {'lnum': 888, 'col': 0, 'type': 'W', 'text': 'some other thing'},
|
||||||
|
\ {'lnum': 999, 'col': 0, 'type': 'W', 'text': '...this is the location of the first definition'},
|
||||||
|
\ ],
|
||||||
|
\ ale_linters#po#msgfmt#Handle(bufnr(''), [
|
||||||
|
\ '/tmp/v6GMUFf/16/foo.po:14: some other thing',
|
||||||
|
\ '/tmp/v6GMUFf/16/foo.po:1746: duplicate message definition...',
|
||||||
|
\ '/tmp/v6GMUFf/16/foo.po:262: ...this is the location of the first definition',
|
||||||
|
\ '/tmp/v6GMUFf/16/foo.po:666: duplicate message definition...',
|
||||||
|
\ '/tmp/v6GMUFf/16/foo.po:888: some other thing',
|
||||||
|
\ '/tmp/v6GMUFf/16/foo.po:999: ...this is the location of the first definition',
|
||||||
|
\ ])
|
Loading…
Reference in New Issue