From af1031b97c65acd430fd080dc70e5cc04c7364de Mon Sep 17 00:00:00 2001
From: Giovanni Bussi <giovanni.bussi@gmail.com>
Date: Fri, 11 Mar 2016 16:09:58 +0100
Subject: [PATCH] Small fixes to VIM syntax

- Made plumed dictionaries local to buffer
- Improved syntax annotation
  Now it also annotates spaces. Moreover, output is formatted.
  (requires a rt to be reset)
- Fixed nested parenthesis
- Made all regions foldable (include {})
---
 .../rt-vimsyntax/annotation.dat.reference     | 323 ++++++++++--------
 src/maketools/vimsyntax.sh                    |  38 ++-
 2 files changed, 193 insertions(+), 168 deletions(-)

diff --git a/regtest/basic/rt-vimsyntax/annotation.dat.reference b/regtest/basic/rt-vimsyntax/annotation.dat.reference
index d60d2fcb7..d15299e09 100644
--- a/regtest/basic/rt-vimsyntax/annotation.dat.reference
+++ b/regtest/basic/rt-vimsyntax/annotation.dat.reference
@@ -1,150 +1,173 @@
-ANNOTATION 1 0 D +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 1 1 I +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 1 2 S +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 1 3 T +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 1 4 A +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 1 5 N +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 1 6 C +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 1 7 E +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 1 9 A +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 10 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 11 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 12 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 13 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 14 = +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 15 1 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 1 16 , +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 1 17 2 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 1 19 C +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 20 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 21 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 22 P +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 23 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 24 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 25 E +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 26 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 27 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 1 28 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 2 0 # +plumedComment
-ANNOTATION 2 2 c +plumedComment
-ANNOTATION 2 3 o +plumedComment
-ANNOTATION 2 4 m +plumedComment
-ANNOTATION 2 5 m +plumedComment
-ANNOTATION 2 6 e +plumedComment
-ANNOTATION 2 7 n +plumedComment
-ANNOTATION 2 8 t +plumedComment
-ANNOTATION 3 0 D +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 3 1 I +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 3 2 S +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 3 3 T +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 3 4 A +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 3 5 N +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 3 6 C +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 3 7 E +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 3 9 . +plumedLineDISTANCE+plumedDots
-ANNOTATION 3 10 . +plumedLineDISTANCE+plumedDots
-ANNOTATION 3 11 . +plumedLineDISTANCE+plumedDots
-ANNOTATION 4 3 A +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 4 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 5 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 6 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 7 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 8 = +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 9 1 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 4 10 , +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 4 11 2 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 4 13 C +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 14 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 15 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 16 P +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 17 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 18 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 19 E +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 20 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 21 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 22 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 4 24 L +plumedLineDISTANCE+plumedLabel
-ANNOTATION 4 25 A +plumedLineDISTANCE+plumedLabel
-ANNOTATION 4 26 B +plumedLineDISTANCE+plumedLabel
-ANNOTATION 4 27 E +plumedLineDISTANCE+plumedLabel
-ANNOTATION 4 28 L +plumedLineDISTANCE+plumedLabel
-ANNOTATION 4 29 = +plumedLineDISTANCE+plumedLabel
-ANNOTATION 4 30 a +plumedLineDISTANCE+plumedLabel
-ANNOTATION 5 0 . +plumedActionDISTANCE
-ANNOTATION 5 1 . +plumedActionDISTANCE
-ANNOTATION 5 2 . +plumedActionDISTANCE
-ANNOTATION 6 0 D +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 6 1 I +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 6 2 S +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 6 3 T +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 6 4 A +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 6 5 N +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 6 6 C +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 6 7 E +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 6 9 L +plumedLineDISTANCE+plumedLabel
-ANNOTATION 6 10 A +plumedLineDISTANCE+plumedLabel
-ANNOTATION 6 11 B +plumedLineDISTANCE+plumedLabel
-ANNOTATION 6 12 E +plumedLineDISTANCE+plumedLabel
-ANNOTATION 6 13 L +plumedLineDISTANCE+plumedLabel
-ANNOTATION 6 14 = +plumedLineDISTANCE+plumedLabel
-ANNOTATION 6 15 a +plumedLineDISTANCE+plumedLabel
-ANNOTATION 6 17 . +plumedLineDISTANCE+plumedDots
-ANNOTATION 6 18 . +plumedLineDISTANCE+plumedDots
-ANNOTATION 6 19 . +plumedLineDISTANCE+plumedDots
-ANNOTATION 7 3 A +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 4 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 5 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 6 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 7 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 8 = +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 9 1 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 7 10 , +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 7 11 2 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 7 13 C +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 14 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 15 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 16 P +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 17 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 18 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 19 E +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 20 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 21 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 7 22 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 8 0 . +plumedActionDISTANCE
-ANNOTATION 8 1 . +plumedActionDISTANCE
-ANNOTATION 8 2 . +plumedActionDISTANCE
-ANNOTATION 9 0 a +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 9 1 : +plumedLineDISTANCE+plumedActionDISTANCE
-ANNOTATION 9 3 . +plumedLineDISTANCE+plumedDots
-ANNOTATION 9 4 . +plumedLineDISTANCE+plumedDots
-ANNOTATION 9 5 . +plumedLineDISTANCE+plumedDots
-ANNOTATION 10 2 D +plumedLineDISTANCE+plumedSpecialDISTANCE
-ANNOTATION 10 3 I +plumedLineDISTANCE+plumedSpecialDISTANCE
-ANNOTATION 10 4 S +plumedLineDISTANCE+plumedSpecialDISTANCE
-ANNOTATION 10 5 T +plumedLineDISTANCE+plumedSpecialDISTANCE
-ANNOTATION 10 6 A +plumedLineDISTANCE+plumedSpecialDISTANCE
-ANNOTATION 10 7 N +plumedLineDISTANCE+plumedSpecialDISTANCE
-ANNOTATION 10 8 C +plumedLineDISTANCE+plumedSpecialDISTANCE
-ANNOTATION 10 9 E +plumedLineDISTANCE+plumedSpecialDISTANCE
-ANNOTATION 10 11 A +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 10 12 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 10 13 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 10 14 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 10 15 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 10 16 = +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 10 17 1 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 10 18 , +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 10 19 2 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
-ANNOTATION 11 2 C +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 11 3 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 11 4 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 11 5 P +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 11 6 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 11 7 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 11 8 E +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 11 9 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 11 10 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 11 11 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
-ANNOTATION 12 0 . +plumedActionDISTANCE
-ANNOTATION 12 1 . +plumedActionDISTANCE
-ANNOTATION 12 2 . +plumedActionDISTANCE
+ANNOTATION     1   0 D +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     1   1 I +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     1   2 S +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     1   3 T +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     1   4 A +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     1   5 N +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     1   6 C +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     1   7 E +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     1   8   +plumedLineDISTANCE
+ANNOTATION     1   9 A +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  10 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  11 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  12 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  13 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  14 = +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  15 1 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION     1  16 , +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION     1  17 2 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION     1  18   +plumedLineDISTANCE
+ANNOTATION     1  19 C +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  20 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  21 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  22 P +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  23 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  24 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  25 E +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  26 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  27 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     1  28 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     2   0 # +plumedComment
+ANNOTATION     2   1   +plumedComment
+ANNOTATION     2   2 c +plumedComment
+ANNOTATION     2   3 o +plumedComment
+ANNOTATION     2   4 m +plumedComment
+ANNOTATION     2   5 m +plumedComment
+ANNOTATION     2   6 e +plumedComment
+ANNOTATION     2   7 n +plumedComment
+ANNOTATION     2   8 t +plumedComment
+ANNOTATION     3   0 D +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     3   1 I +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     3   2 S +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     3   3 T +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     3   4 A +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     3   5 N +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     3   6 C +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     3   7 E +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     3   8   +plumedLineDISTANCE
+ANNOTATION     3   9 . +plumedLineDISTANCE+plumedDots
+ANNOTATION     3  10 . +plumedLineDISTANCE+plumedDots
+ANNOTATION     3  11 . +plumedLineDISTANCE+plumedDots
+ANNOTATION     4   0   +plumedLineDISTANCE
+ANNOTATION     4   1   +plumedLineDISTANCE
+ANNOTATION     4   2   +plumedLineDISTANCE
+ANNOTATION     4   3 A +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4   4 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4   5 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4   6 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4   7 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4   8 = +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4   9 1 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION     4  10 , +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION     4  11 2 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION     4  12   +plumedLineDISTANCE
+ANNOTATION     4  13 C +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  14 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  15 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  16 P +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  17 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  18 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  19 E +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  20 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  21 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  22 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     4  23   +plumedLineDISTANCE
+ANNOTATION     4  24 L +plumedLineDISTANCE+plumedLabel
+ANNOTATION     4  25 A +plumedLineDISTANCE+plumedLabel
+ANNOTATION     4  26 B +plumedLineDISTANCE+plumedLabel
+ANNOTATION     4  27 E +plumedLineDISTANCE+plumedLabel
+ANNOTATION     4  28 L +plumedLineDISTANCE+plumedLabel
+ANNOTATION     4  29 = +plumedLineDISTANCE+plumedLabel
+ANNOTATION     4  30 a +plumedLineDISTANCE+plumedLabel
+ANNOTATION     5   0 . +plumedActionDISTANCE
+ANNOTATION     5   1 . +plumedActionDISTANCE
+ANNOTATION     5   2 . +plumedActionDISTANCE
+ANNOTATION     5   3   +plumedActionDISTANCE
+ANNOTATION     6   0 D +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     6   1 I +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     6   2 S +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     6   3 T +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     6   4 A +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     6   5 N +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     6   6 C +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     6   7 E +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     6   8   +plumedLineDISTANCE
+ANNOTATION     6   9 L +plumedLineDISTANCE+plumedLabel
+ANNOTATION     6  10 A +plumedLineDISTANCE+plumedLabel
+ANNOTATION     6  11 B +plumedLineDISTANCE+plumedLabel
+ANNOTATION     6  12 E +plumedLineDISTANCE+plumedLabel
+ANNOTATION     6  13 L +plumedLineDISTANCE+plumedLabel
+ANNOTATION     6  14 = +plumedLineDISTANCE+plumedLabel
+ANNOTATION     6  15 a +plumedLineDISTANCE+plumedLabel
+ANNOTATION     6  16   +plumedLineDISTANCE
+ANNOTATION     6  17 . +plumedLineDISTANCE+plumedDots
+ANNOTATION     6  18 . +plumedLineDISTANCE+plumedDots
+ANNOTATION     6  19 . +plumedLineDISTANCE+plumedDots
+ANNOTATION     7   0   +plumedLineDISTANCE
+ANNOTATION     7   1   +plumedLineDISTANCE
+ANNOTATION     7   2   +plumedLineDISTANCE
+ANNOTATION     7   3 A +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7   4 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7   5 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7   6 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7   7 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7   8 = +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7   9 1 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION     7  10 , +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION     7  11 2 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION     7  12   +plumedLineDISTANCE
+ANNOTATION     7  13 C +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7  14 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7  15 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7  16 P +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7  17 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7  18 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7  19 E +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7  20 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7  21 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     7  22 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION     8   0 . +plumedActionDISTANCE
+ANNOTATION     8   1 . +plumedActionDISTANCE
+ANNOTATION     8   2 . +plumedActionDISTANCE
+ANNOTATION     8   3   +plumedActionDISTANCE
+ANNOTATION     9   0 a +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     9   1 : +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     9   2   +plumedLineDISTANCE+plumedActionDISTANCE
+ANNOTATION     9   3 . +plumedLineDISTANCE+plumedDots
+ANNOTATION     9   4 . +plumedLineDISTANCE+plumedDots
+ANNOTATION     9   5 . +plumedLineDISTANCE+plumedDots
+ANNOTATION    10   0   +plumedLineDISTANCE
+ANNOTATION    10   1   +plumedLineDISTANCE
+ANNOTATION    10   2 D +plumedLineDISTANCE+plumedSpecialDISTANCE
+ANNOTATION    10   3 I +plumedLineDISTANCE+plumedSpecialDISTANCE
+ANNOTATION    10   4 S +plumedLineDISTANCE+plumedSpecialDISTANCE
+ANNOTATION    10   5 T +plumedLineDISTANCE+plumedSpecialDISTANCE
+ANNOTATION    10   6 A +plumedLineDISTANCE+plumedSpecialDISTANCE
+ANNOTATION    10   7 N +plumedLineDISTANCE+plumedSpecialDISTANCE
+ANNOTATION    10   8 C +plumedLineDISTANCE+plumedSpecialDISTANCE
+ANNOTATION    10   9 E +plumedLineDISTANCE+plumedSpecialDISTANCE
+ANNOTATION    10  10   +plumedLineDISTANCE
+ANNOTATION    10  11 A +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    10  12 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    10  13 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    10  14 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    10  15 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    10  16 = +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    10  17 1 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION    10  18 , +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION    10  19 2 +plumedLineDISTANCE+plumedKeywordsDISTANCE+plumedStringInKeyword
+ANNOTATION    11   0   +plumedLineDISTANCE
+ANNOTATION    11   1   +plumedLineDISTANCE
+ANNOTATION    11   2 C +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    11   3 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    11   4 M +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    11   5 P +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    11   6 O +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    11   7 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    11   8 E +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    11   9 N +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    11  10 T +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    11  11 S +plumedLineDISTANCE+plumedKeywordsDISTANCE
+ANNOTATION    12   0 . +plumedActionDISTANCE
+ANNOTATION    12   1 . +plumedActionDISTANCE
+ANNOTATION    12   2 . +plumedActionDISTANCE
diff --git a/src/maketools/vimsyntax.sh b/src/maketools/vimsyntax.sh
index 46577e642..6026aa85e 100755
--- a/src/maketools/vimsyntax.sh
+++ b/src/maketools/vimsyntax.sh
@@ -26,6 +26,8 @@ if exists("b:current_syntax")
   finish
 endif
 
+let b:current_syntax="plumed"
+
 " All except space and hash are in word
 set iskeyword=33,34,36-126
 
@@ -34,15 +36,15 @@ set iskeyword=33,34,36-126
 syntax match plumedDots /\v\.\.\.(\s*(#.*)*$)@=/ contained
 highlight link plumedDots Type
 
-let plumedActions=[]
-let plumedDictionary={}
+let b:plumedActions=[]
+let b:plumedDictionary={}
 
 EOF
 for a in $actions ; do
 action_name="${a%%,*}" 
 action_name_=$(echo $action_name | sed s/-/_/g)
 
-echo 'call add(plumedActions,{"word":"'"$action_name"'"})'
+echo 'call add(b:plumedActions,{"word":"'"$action_name"'"})'
 
 dictionary='{"word":"LABEL=","menu":"add a label"}'
 
@@ -76,7 +78,7 @@ done
 dictionary="$(
   echo "$dictionary" | sort | tr '\n' ',' | sed 's/,$//'
 )"
-echo "let plumedDictionary[\"plumedLine$action_name\"]=[$dictionary]"
+echo "let b:plumedDictionary[\"plumedLine$action_name\"]=[$dictionary]"
 
 cat << \EOF | sed s/ACTION/$action_name/g | sed s/ACTNAME/$action_name_/g
 " single line, with explicit LABEL
@@ -120,8 +122,8 @@ EOF
 done
 cat << \EOF
 " comments and strings last, with highest priority
-syntax region  plumedString start=/\v\{/  end=/\v\}/ contained
-syntax region  plumedStringOneline start=/\v\{/  end=/\v\}/ oneline contained
+syntax region  plumedString start=/\v\{/  end=/\v\}/ contained contains=plumedString fold
+syntax region  plumedStringOneline start=/\v\{/  end=/\v\}/ oneline contained contains=plumedStringOneline fold
 highlight link plumedString String
 highlight link plumedStringOneline String
 syntax match   plumedStringInKeyword /\v(<[^ #]+\=)@<=[^ #]+/ contained
@@ -135,12 +137,12 @@ highlight link plumedLabel Type
 syntax match   plumedLabelWrong "\v<LABEL\=\@[^ #]*" contained
 highlight link plumedLabelWrong Error
 
-syntax region  plumedComment start="\v^\s*ENDPLUMED>" end="\%$"
+syntax region  plumedComment start="\v^\s*ENDPLUMED>" end="\%$" fold
 syntax match   plumedComment excludenl "\v#.*$"
 highlight link plumedComment Comment
 
 " autocomplete function
-fun! CompletePlumed(findstart, base)
+fun! PlumedComplete(findstart, base)
 " this is to find the start of the word to be completed
           if a:findstart
             " locate the start of the word
@@ -169,11 +171,11 @@ fun! CompletePlumed(findstart, base)
             let comp=[]
             if key ==""
 " if outside of any region, complete with list of actions
-              let comp=g:plumedActions
-            elseif has_key(g:plumedDictionary,key)
+              let comp=b:plumedActions
+            elseif has_key(b:plumedDictionary,key)
 " if inside a region in the form "plumedLineXXX"
 " complete with keywords associated to action XXX
-              let comp=g:plumedDictionary[key]
+              let comp=b:plumedDictionary[key]
             endif
             " find months matching with "a:base"
             let res = []
@@ -195,7 +197,7 @@ fun! CompletePlumed(findstart, base)
             return res
           endif
         endfun
-set omnifunc=CompletePlumed
+setlocal omnifunc=PlumedComplete
 
 " inspect the entire file to find lines containing
 " non highlighted characters
@@ -213,19 +215,19 @@ fun! PlumedAnnotateSyntax()
     call cursor(l,1)
     redraw! "! is required for some reason
     while p <len(line)
+      let stack=synstack(l,p+1)
       if line[p] !~ "[ \t]"
-        let stack=synstack(l,p+1)
         if(len(stack)==0)
           let wrong=1
         elseif(synIDattr(stack[len(stack)-1],"name")=~"^plumedLine.*")
           let wrong=1
         endif
-        let annotation=""
-        for s in stack
-          let annotation=annotation."+".synIDattr(s,"name")
-        endfor
-        call add(buffer,"ANNOTATION ".l." ".p." ".line[p]." ".annotation)
       endif
+      let annotation=""
+      for s in stack
+        let annotation=annotation."+".synIDattr(s,"name")
+      endfor
+      call add(buffer,printf("ANNOTATION %5d %3d %s %s",l,p,line[p],annotation))
       let p=p+1
     endwhile
     
-- 
GitLab