30 lines
990 B
VimL
30 lines
990 B
VimL
" Author: Cian Butler https://github.com/butlerx
|
|
" 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', {
|
|
\ 'name': 'msgfmt',
|
|
\ 'executable': 'msgfmt',
|
|
\ 'output_stream': 'stderr',
|
|
\ 'command': 'msgfmt --statistics --output-file=- %t',
|
|
\ 'callback': 'ale_linters#po#msgfmt#Handle',
|
|
\})
|