aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/plugged/vim-airline/autoload/airline/extensions/po.vim
diff options
context:
space:
mode:
authorMarvin Borner2020-03-16 23:33:42 +0100
committerMarvin Borner2020-03-16 23:33:42 +0100
commit0e9ddbb0bf0cd34500155ea4b03de2e2a38d8ab2 (patch)
tree719da1c7fe5dabb872fe9ff1582c39b55ccd488e /.config/nvim/plugged/vim-airline/autoload/airline/extensions/po.vim
parente5d38956336ab1be954bdbd12808c5f98f8bd925 (diff)
Well I'm using Arch again
Diffstat (limited to '.config/nvim/plugged/vim-airline/autoload/airline/extensions/po.vim')
-rw-r--r--.config/nvim/plugged/vim-airline/autoload/airline/extensions/po.vim87
1 files changed, 87 insertions, 0 deletions
diff --git a/.config/nvim/plugged/vim-airline/autoload/airline/extensions/po.vim b/.config/nvim/plugged/vim-airline/autoload/airline/extensions/po.vim
new file mode 100644
index 0000000..8ec3b5c
--- /dev/null
+++ b/.config/nvim/plugged/vim-airline/autoload/airline/extensions/po.vim
@@ -0,0 +1,87 @@
+" MIT License. Copyright (c) 2013-2019 Bailey Ling, Christian Brabandt et al.
+" vim: et ts=2 sts=2 sw=2
+
+scriptencoding utf-8
+
+function! airline#extensions#po#shorten()
+ " Format and shorte the output of msgfmt
+ let b:airline_po_stats = substitute(get(b:, 'airline_po_stats', ''), ' \(message\|translation\)s*\.*', '', 'g')
+ let b:airline_po_stats = substitute(b:airline_po_stats, ', ', '/', 'g')
+ if exists("g:airline#extensions#po#displayed_limit")
+ let w:displayed_po_limit = g:airline#extensions#po#displayed_limit
+ if len(b:airline_po_stats) > w:displayed_po_limit - 1
+ let b:airline_po_stats = b:airline_po_stats[0:(w:displayed_po_limit - 2)].(&encoding==?'utf-8' ? '…' : '.'). ']'
+ endif
+ endif
+ if strlen(get(b:, 'airline_po_stats', '')) >= 30 && airline#util#winwidth() < 150
+ let fuzzy = ''
+ let untranslated = ''
+ let messages = ''
+ " Shorten [120 translated, 50 fuzzy, 4 untranslated] to [120T/50F/4U]
+ if b:airline_po_stats =~ 'fuzzy'
+ let fuzzy = substitute(b:airline_po_stats, '.*\(\d\+\) fuzzy.*', '\1F', '')
+ if fuzzy == '0F'
+ let fuzzy = ''
+ endif
+ endif
+ if b:airline_po_stats =~ 'untranslated'
+ let untranslated = substitute(b:airline_po_stats, '.*\(\d\+\) untranslated.*', '\1U', '')
+ if untranslated == '0U'
+ let untranslated = ''
+ endif
+ endif
+ let messages = substitute(b:airline_po_stats, '\(\d\+\) translated.*', '\1T', '')
+ let b:airline_po_stats = printf('%s%s%s', fuzzy, (empty(fuzzy) || empty(untranslated) ? '' : '/'), untranslated)
+ if strlen(b:airline_po_stats) < 8
+ let b:airline_po_stats = messages. (!empty(b:airline_po_stats) ? '/':''). b:airline_po_stats
+ endif
+ endif
+ let b:airline_po_stats = '['.b:airline_po_stats. ']'
+endfunction
+
+function! airline#extensions#po#on_winenter()
+ " only reset cache, if the window size changed
+ if get(b:, 'airline_winwidth', 0) != airline#util#winwidth()
+ let b:airline_winwidth = airline#util#winwidth()
+ " needs re-formatting
+ unlet! b:airline_po_stats
+ endif
+endfunction
+
+function! airline#extensions#po#apply(...)
+ if &ft ==# 'po'
+ call airline#extensions#prepend_to_section('z', '%{airline#extensions#po#stats()}')
+ " Also reset the cache variable, if a window has been split, e.g. the winwidth changed
+ autocmd airline BufWritePost * unlet! b:airline_po_stats
+ autocmd airline WinEnter * call airline#extensions#po#on_winenter()
+ endif
+endfunction
+
+function! airline#extensions#po#stats()
+ if exists('b:airline_po_stats') && !empty(b:airline_po_stats)
+ return b:airline_po_stats
+ endif
+
+ let cmd = 'msgfmt --statistics -o /dev/null -- '
+ if g:airline#init#vim_async
+ call airline#async#get_msgfmt_stat(cmd, expand('%:p'))
+ elseif has("nvim")
+ call airline#async#nvim_get_msgfmt_stat(cmd, expand('%:p'))
+ else
+ let airline_po_stats = system(cmd. shellescape(expand('%:p')))
+ if v:shell_error
+ return ''
+ endif
+ try
+ let b:airline_po_stats = split(airline_po_stats, '\n')[0]
+ catch
+ let b:airline_po_stats = ''
+ endtry
+ call airline#extensions#po#shorten()
+ endif
+ return get(b:, 'airline_po_stats', '')
+endfunction
+
+function! airline#extensions#po#init(ext)
+ call a:ext.add_statusline_func('airline#extensions#po#apply')
+endfunction