summaryrefslogtreecommitdiff
path: root/ale_linters/po/msgfmt.vim
diff options
context:
space:
mode:
Diffstat (limited to 'ale_linters/po/msgfmt.vim')
-rw-r--r--ale_linters/po/msgfmt.vim22
1 files changed, 21 insertions, 1 deletions
diff --git a/ale_linters/po/msgfmt.vim b/ale_linters/po/msgfmt.vim
index 578792bf..8279ccdc 100644
--- a/ale_linters/po/msgfmt.vim
+++ b/ale_linters/po/msgfmt.vim
@@ -1,10 +1,30 @@
" 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#handlers#unix#HandleAsWarning',
+\ 'callback': 'ale_linters#po#msgfmt#Handle',
\})