From 96dab9c9b1a1046a4f30ed0aed5686136d52ed19 Mon Sep 17 00:00:00 2001 From: Antonio Giovanni Colombo Date: Wed, 6 Aug 2025 11:33:49 +0200 Subject: [PATCH] check.vim: Further improve po message checks Signed-off-by: Antonio Giovanni Colombo Signed-off-by: Christian Brabandt --- src/po/check.vim | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) mode change 100644 => 100755 src/po/check.vim diff --git a/src/po/check.vim b/src/po/check.vim old mode 100644 new mode 100755 index ee3e3700bd..8ecf05a560 --- a/src/po/check.vim +++ b/src/po/check.vim @@ -4,9 +4,9 @@ " and verify various congruences " See the comments in the code -" Last Update: 2025 Jul 22 +" Last Update: 2025 Aug 06 -if 1" Only execute this if the eval feature is available. +if 1 " Only execute this if the eval feature is available. " Using line continuation (set cpo to vim default value) let s:save_cpo = &cpo @@ -71,7 +71,7 @@ while 1 " for each "msgid" " check msgid "Text;editor;" - " translation must have two ";" as well + " translation must have two or more ";" (in case of more categories) let lnum = line('.') if getline(lnum) =~ 'msgid "Text;.*;"' if getline(lnum + 1) !~ '^msgstr "\([^;]\+;\)\+"$' @@ -188,7 +188,7 @@ while 1 endwhile " Check that the eventual continuation of 'msgstr' is well formed -" final '""', '\n"', ' "' are OK +" final '""', '\n"', ' "' '/"' '."' '-"' are OK " Beware, it can give false positives if the message is split " in the middle of a word 1 @@ -210,19 +210,28 @@ while 1 while ilnum < end - 1 let iltype = 0 if getline( ilnum ) =~ "^msgid_plural" - let iltype = 99 + let iltype = 2 endif if getline( ilnum ) =~ "^msgstr[" - let iltype = 98 + let iltype = 2 endif if getline( ilnum ) =~ "\"\"" let iltype = 1 endif if getline( ilnum ) =~ " \"$" - let iltype = 2 + let iltype = 1 + endif + if getline( ilnum ) =~ "-\"$" + let iltype = 1 + endif + if getline( ilnum ) =~ "/\"$" + let iltype = 1 + endif + if getline( ilnum ) =~ "\\.\"$" + let iltype = 1 endif if getline( ilnum ) =~ "\\\\n\"$" - let iltype = 3 + let iltype = 1 endif if iltype == 0 echomsg 'Possibly incorrect final at line: ' . ilnum