From 5770e8befddd4e69101d3c5040e501a6be4adb71 Mon Sep 17 00:00:00 2001 From: eevan78 <27575106+eevan78@users.noreply.github.com> Date: Sat, 15 Aug 2020 02:39:25 +0400 Subject: [PATCH 1/4] Small improvements of po extension MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Fixed shortening of message. It was not showing more than one digit for fuzzy and untranslated strings. • Fixed case when starting translation (0 translated), and accomodated for some bigger po catalogs (more than 1000 strings) • Add support for Windows (I use it on Windows, it works fine with latest Vim. Didn't test Neovim or older Vim versions, though) • Add one extra space character to the right of the output string --- autoload/airline/extensions/po.vim | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/autoload/airline/extensions/po.vim b/autoload/airline/extensions/po.vim index 17d16470..d514f4e1 100644 --- a/autoload/airline/extensions/po.vim +++ b/autoload/airline/extensions/po.vim @@ -10,7 +10,7 @@ function! airline#extensions#po#shorten() 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' ? '…' : '.'). ']' + 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 @@ -19,24 +19,27 @@ function! airline#extensions#po#shorten() 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', '') + 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', '') + 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', '') + if messages == '0T' + let messages = '' + endif 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 + if strlen(b:airline_po_stats) < 10 + let b:airline_po_stats = messages. (!empty(b:airline_po_stats) && !empty(messages) ? '/':''). b:airline_po_stats endif endif - let b:airline_po_stats = '['.b:airline_po_stats. ']' + let b:airline_po_stats = '['.b:airline_po_stats. '] ' endfunction function! airline#extensions#po#on_winenter() @@ -62,7 +65,11 @@ function! airline#extensions#po#stats() return b:airline_po_stats endif - let cmd = 'msgfmt --statistics -o /dev/null -- ' + if g:airline#init#is_windows + let cmd = 'msgfmt --statistics -o NUL ' + else + let cmd = 'msgfmt --statistics -o /dev/null -- ' + endif if g:airline#init#vim_async call airline#async#get_msgfmt_stat(cmd, expand('%:p')) elseif has("nvim") From c78c1fb8701fdf76877a25e0b0748c3071f30fe1 Mon Sep 17 00:00:00 2001 From: eevan78 <27575106+eevan78@users.noreply.github.com> Date: Sat, 15 Aug 2020 02:43:58 +0400 Subject: [PATCH 2/4] Make keymap extension follow the iminsert option This small change makes keymap extension sensitive to in Insert mode. --- autoload/airline/extensions/keymap.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/airline/extensions/keymap.vim b/autoload/airline/extensions/keymap.vim index e8188cf0..957b97d4 100644 --- a/autoload/airline/extensions/keymap.vim +++ b/autoload/airline/extensions/keymap.vim @@ -9,7 +9,7 @@ endif function! airline#extensions#keymap#status() if (get(g:, 'airline#extensions#keymap#enabled', 1) && has('keymap')) - return printf('%s', (!empty(&keymap) ? (g:airline_symbols.keymap . ' '. &keymap) : '')) + return printf('%s', (!empty(&keymap) && &iminsert ? (g:airline_symbols.keymap . ' '. &keymap) : '')) else return '' endif From ad80550252e331610bc98d25e7302abb485f88c7 Mon Sep 17 00:00:00 2001 From: eevan78 <27575106+eevan78@users.noreply.github.com> Date: Sat, 15 Aug 2020 02:52:48 +0400 Subject: [PATCH 3/4] Initial Windows support for msgfmt For now, it is tested successfully on the latest Vim 8.2 running on Windows 10. Needs further change and testing for Neovim and older Vim versions. --- autoload/airline/async.vim | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/autoload/airline/async.vim b/autoload/airline/async.vim index 8b1678db..00cb26cc 100644 --- a/autoload/airline/async.vim +++ b/autoload/airline/async.vim @@ -153,9 +153,12 @@ if v:version >= 800 && has("job") endfunction function! airline#async#get_msgfmt_stat(cmd, file) - if g:airline#init#is_windows || !executable('msgfmt') - " no msgfmt on windows? + if !executable('msgfmt') + " no msgfmt return + endif + if g:airline#init#is_windows + let cmd = 'cmd /C ' . a:cmd. shellescape(a:file) else let cmd = ['sh', '-c', a:cmd. shellescape(a:file)] endif From c1134da741c8c62d3224467eed44692ddfd840ab Mon Sep 17 00:00:00 2001 From: eevan78 <27575106+eevan78@users.noreply.github.com> Date: Wed, 19 Aug 2020 11:00:39 +0400 Subject: [PATCH 4/4] Fix po.vim There is an extra '] ' in case when a display_limit is set. Also change messages == '0T' to messages ==# '0T' --- autoload/airline/extensions/po.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autoload/airline/extensions/po.vim b/autoload/airline/extensions/po.vim index d514f4e1..cce42abd 100644 --- a/autoload/airline/extensions/po.vim +++ b/autoload/airline/extensions/po.vim @@ -10,7 +10,7 @@ function! airline#extensions#po#shorten() 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' ? '…' : '.'). '] ' + 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 @@ -31,7 +31,7 @@ function! airline#extensions#po#shorten() endif endif let messages = substitute(b:airline_po_stats, '\(\d\+\) translated.*', '\1T', '') - if messages == '0T' + if messages ==# '0T' let messages = '' endif let b:airline_po_stats = printf('%s%s%s', fuzzy, (empty(fuzzy) || empty(untranslated) ? '' : '/'), untranslated)