diff options
| author | lonerover <pathfinder1644@yahoo.com> | 2017-03-17 22:48:42 +0800 | 
|---|---|---|
| committer | lonerover <pathfinder1644@yahoo.com> | 2017-03-18 20:39:04 +0800 | 
| commit | a5481957c65985fc1f885464ae9b43f92d0dc519 (patch) | |
| tree | 907ba79eed79494b6d98c0654211b534b28cb86a /src | |
| parent | 9abef7ded95995e3546b8d273ab4ad996ce3ed50 (diff) | |
| download | rneovim-a5481957c65985fc1f885464ae9b43f92d0dc519.tar.gz rneovim-a5481957c65985fc1f885464ae9b43f92d0dc519.tar.bz2 rneovim-a5481957c65985fc1f885464ae9b43f92d0dc519.zip | |
vim-patch:7.4.2255
Problem:    The script that checks translations can't handle plurals.
Solution:   Check for plural msgid and msgstr entries.  Leave the cursor on
            the first error.
https://github.com/vim/vim/commit/ec42059b78c1932a44f2bf36ac982109884dc7c7
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/po/check.vim | 76 | ||||
| -rw-r--r-- | src/nvim/version.c | 2 | 
2 files changed, 56 insertions, 22 deletions
| diff --git a/src/nvim/po/check.vim b/src/nvim/po/check.vim index 1622741da6..b323174550 100644 --- a/src/nvim/po/check.vim +++ b/src/nvim/po/check.vim @@ -33,36 +33,66 @@ func! GetMline()    return substitute(idline, '[^%]*\(%[-+ #''.0-9*]*l\=[dsuxXpoc%]\)\=', '\1', 'g')  endfunc -" This only works when 'wrapscan' is set. +" This only works when 'wrapscan' is not set.  let s:save_wrapscan = &wrapscan -set wrapscan +set nowrapscan  " Start at the first "msgid" line.  1 -/^msgid -let startline = line('.') +/^msgid\> + +" When an error is detected this is set to the line number. +" Note: this is used in the Makefile.  let error = 0  while 1    if getline(line('.') - 1) !~ "no-c-format" -    let fromline = GetMline() +    " go over the "msgid" and "msgid_plural" lines +    let prevfromline = 'foobar' +    while 1 +      let fromline = GetMline() +      if prevfromline != 'foobar' && prevfromline != fromline +	echomsg 'Mismatching % in line ' . (line('.') - 1) +	echomsg 'msgid: ' . prevfromline +	echomsg 'msgid ' . fromline +	if error == 0 +	  let error = line('.') +	endif +      endif +      if getline('.') !~ 'msgid_plural' +	break +      endif +      let prevfromline = fromline +    endwhile +      if getline('.') !~ '^msgstr' -      echo 'Missing "msgstr" in line ' . line('.') -      let error = 1 -    endif -    let toline = GetMline() -    if fromline != toline -      echo 'Mismatching % in line ' . (line('.') - 1) -      echo 'msgid: ' . fromline -      echo 'msgstr: ' . toline -      let error = 1 +      echomsg 'Missing "msgstr" in line ' . line('.') +      if error == 0 +	let error = line('.') +      endif      endif + +    " check all the 'msgstr' lines +    while getline('.') =~ '^msgstr' +      let toline = GetMline() +      if fromline != toline +	echomsg 'Mismatching % in line ' . (line('.') - 1) +	echomsg 'msgid: ' . fromline +	echomsg 'msgstr: ' . toline +	if error == 0 +	  let error = line('.') +	endif +      endif +      if line('.') == line('$') +	break +      endif +    endwhile    endif -  " Find next msgid. -  " Wrap around at the end of the file, quit when back at the first one. -  /^msgid -  if line('.') == startline +  " Find next msgid.  Quit when there is no more. +  let lnum = line('.') +  silent! /^msgid\> +  if line('.') == lnum      break    endif  endwhile @@ -77,12 +107,16 @@ endwhile  "  1  if search('msgid "\("\n"\)\?\([EW][0-9]\+:\).*\nmsgstr "\("\n"\)\?[^"]\@=\2\@!') > 0 -  echo 'Mismatching error/warning code in line ' . line('.') -  let error = 1 +  echomsg 'Mismatching error/warning code in line ' . line('.') +  if error == 0 +    let error = line('.') +  endif  endif  if error == 0 -  echo "OK" +  echomsg "OK" +else +  exe error  endif  redir END diff --git a/src/nvim/version.c b/src/nvim/version.c index 5b3a7398d5..b9286c2a4e 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -186,7 +186,7 @@ static int included_patches[] = {    // 2258 NA    // 2257 NA    // 2256, -  // 2255, +  2255,    // 2254 NA    // 2253 NA    // 2252 NA | 
