runtime(vim): Improve Vim9 and legacy-script comment highlighting (#13104)

This is a first-pass attempt to limit matching of Vim9 and legacy-script
comments to the appropriate syntactic contexts.

Vim9-script comments are highlighted at top level in a Vim9-script file,
in all :def functions, and in all :autocmd and :commmand command blocks.
Legacy-script comments are highlighted at top level in a legacy script
file, in all :func functions and in the Vim9-script preamble before the
:vim9script marker command.

Fixes #13047, #11307 and #9587.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/syntax/testdir/input/vim9_keymap.vim b/runtime/syntax/testdir/input/vim9_keymap.vim
new file mode 100644
index 0000000..a69b723
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_keymap.vim
@@ -0,0 +1,26 @@
+vim9script
+
+# Vim Keymap file for syntax testing
+
+scriptencoding utf-8
+
+let b:keymap_name = "syntax-test"
+
+loadkeymap
+
+# Line comment
+
+  # Another line comment
+
+a A    Basic mapping
+'a á   More than one char in first column
+
+# Special notation
+<char-62>      B               Special notation allowed in LHS - decimal
+c              <char-0103>     Special notation allowed in RHS - octal
+<char-0x0064>  <char-0x0044>   Special notation allowed in LHS and RHS - hexadecimal
+
+# Vim-script comment characters
+\# <char-0x00a3>               Line should not match as a Vim9-script comment
+" “                            Line should not match as a legacy-script comment
+: #                            Line should not match as a Vim9-script comment