patch 8.0.0734: the script to check translations can be improved
Problem: The script to check translations can be improved.
Solution: Restore the view when no errors are found. Check for matching
line break at the end of the message. (Christian Brabandt)
diff --git a/src/po/check.vim b/src/po/check.vim
index 256c538..ba98ae7 100644
--- a/src/po/check.vim
+++ b/src/po/check.vim
@@ -35,6 +35,7 @@
set nowrapscan
" Start at the first "msgid" line.
+let wsv = winsaveview()
1
/^msgid\>
@@ -110,7 +111,43 @@
endif
endif
+func! CountNl(first, last)
+ let nl = 0
+ for lnum in range(a:first, a:last)
+ if getline(lnum) =~ '\\n'
+ let nl += 1
+ endif
+ endfor
+ return nl
+endfunc
+
+" Check that the \n at the end of the msid line is also present in the msgstr
+" line. Skip over the header.
+/^"MIME-Version:
+while 1
+ let lnum = search('^msgid\>')
+ if lnum <= 0
+ break
+ endif
+ let strlnum = search('^msgstr\>')
+ let end = search('^$')
+ if end <= 0
+ let end = line('$') + 1
+ endif
+ let origcount = CountNl(lnum, strlnum - 1)
+ let transcount = CountNl(strlnum, end - 1)
+ " Allow for a few more or less line breaks when there are 2 or more
+ if origcount != transcount && (origcount <= 2 || transcount <= 2)
+ echomsg 'Mismatching "\\n" in line ' . line('.')
+ if error == 0
+ let error = lnum
+ endif
+ endif
+endwhile
+
if error == 0
+ " If all was OK restore the view.
+ call winrestview(wsv)
echomsg "OK"
else
exe error
diff --git a/src/version.c b/src/version.c
index 49092c6..08d3656 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 734,
+/**/
733,
/**/
732,