Commit: runtime(yaml): Fix flow mapping key detection

3 views
Skip to first unread message

Christian Brabandt

unread,
Jul 21, 2024, 3:30:18 AM (yesterday) Jul 21
to vim...@googlegroups.com
runtime(yaml): Fix flow mapping key detection

Commit: https://github.com/vim/vim/commit/aa495124f80812b9c8c1942e6c4f9ce2242ea01f
Author: itchyny <itc...@cybozu.co.jp>
Date: Sun Jul 21 09:21:20 2024 +0200

runtime(yaml): Fix flow mapping key detection

fixes: https://github.com/vim/vim/issues/15196
closes: https://github.com/vim/vim/issues/15313

Signed-off-by: itchyny <itc...@cybozu.co.jp>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/syntax/testdir/dumps/yaml_01.dump b/runtime/syntax/testdir/dumps/yaml_01.dump
index ae84e98e3..bbef58c78 100644
--- a/runtime/syntax/testdir/dumps/yaml_01.dump
+++ b/runtime/syntax/testdir/dumps/yaml_01.dump
@@ -11,10 +11,10 @@
@75
|p+0#00e0e07&|l|a|i|n| |s|t|r|i|n|g|s|:+0#e000e06&| +0#0000000&@60
@2|-+0#af5f00255&| +0#0000000&|a| |b| |c| @65
-@2|-+0#af5f00255&| +0#0000000&|a| |*| |b| |&| |c| |@| |d|#| |e| |:| |f| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@40
+@2|-+0#af5f00255&| +0#0000000&|a|:|b| |&| |c| |@| |d|#| |e| |*| |f| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@42
@2|-+0#af5f00255&| +0#0000000&|{@1| |f|(|'| |'|)| |}@1| +0#0000e05&|#|8|2|3|4| +0#0000000&@52
|d+0#00e0e07&|o|u|b|l|e| |q|u|o|t|e|d| |s|t|r|i|n|g|s|:+0#e000e06&| +0#0000000&@52
@2|-+0#af5f00255&| +0#0000000&|"+0#e000002&@1| +0#0000000&@68
@2|-+0#af5f00255&| +0#0000000&|"+0#e000002&|a| |b| |c|"|:+0#e000e06&| +0#0000000&|"+0#e000002&|d| |e| |f|"| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@44
@2|-+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&@2|"|\|a|\|b|\|f|\|n|\|r|\|t|\|v|\|0|\|_|\| |\|N|\|L|\|P|\|x|4|1|\|u|0@1|4|1|\|U|0@5|4|1|"+0#e000002&| +0#0000000&@18
-@57|1|9|,|1| @9|1|2|%|
+@57|1|9|,|1| @9|1@1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_03.dump b/runtime/syntax/testdir/dumps/yaml_03.dump
index 4d1466ed6..2ca0df064 100644
--- a/runtime/syntax/testdir/dumps/yaml_03.dump
+++ b/runtime/syntax/testdir/dumps/yaml_03.dump
@@ -17,4 +17,4 @@
@5|b|a|r|:| |1| @63
@2|-+0#af5f00255&| +0#0000000&|b+0#00e0e07&|l|o|c|k| |l|i|t|e|r|a|l| |s|t|r|i|n|g|:+0#e000e06&| +0#0000000&||+0#e000e06&|1|-| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@35
@5|f|o@1| @66
-@57|5@1|,|7| @9|4|5|%|
+@57|5@1|,|7| @9|4@1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_04.dump b/runtime/syntax/testdir/dumps/yaml_04.dump
index 25034709f..3eda526f7 100644
--- a/runtime/syntax/testdir/dumps/yaml_04.dump
+++ b/runtime/syntax/testdir/dumps/yaml_04.dump
@@ -17,4 +17,4 @@
| +0#e000002&@3|f|o@1| +0#0000000&@67
| +0#e000002&@3|b|a|r| +0#0000000&@67
| +0#e000002&@3|b|a|z|"| +0#0000000&@66
-@57|7|3|,|0|-|1| @7|6|2|%|
+@57|7|3|,|0|-|1| @7|6|1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_05.dump b/runtime/syntax/testdir/dumps/yaml_05.dump
index d64c48b61..570bdc080 100644
--- a/runtime/syntax/testdir/dumps/yaml_05.dump
+++ b/runtime/syntax/testdir/dumps/yaml_05.dump
@@ -6,9 +6,10 @@
@2>i+0#00e0e07&|n|s|i|d|e| |b|l|o|c|k| |m|a|p@1|i|n|g|:+0#e000e06&| +0#0000000&@51
@4|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|{+0#e000e06&|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z|}+0#e000e06&| +0#0000000&@55
@4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|[+0#e000e06&|"+0#e000002&|f|o@1|"|:+0#e000e06&| +0#0000000&|{+0#e000e06&|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|q|u|x|}+0#e000e06&|]| +0#0000000&@46
-@2|f+0#00e0e07&|l|o|w| |c|o|l@1|e|c|t|i|o|n|:+0#e000e06&| +0#0000000&|[+0#e000e06&|f+0#0000000&|o@1| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@41
+@2|f+0#00e0e07&|l|o|w|:|c|o|l@1|e|c|t|i|o|n|:+0#e000e06&| +0#0000000&|[+0#e000e06&|f+0#0000000&|o@1| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@41
@4|,| |{+0#e000e06&|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|[+0#e000e06&|{| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@50
-@6|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|'+0#e000002&| +0#0000000&@62
+@6|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&@64
+@6|'+0#e000002&| +0#0000000&@67
| +0#e000002&@7|q|u|x| |#| |n|o|t| |c|o|m@1|e|n|t| +0#0000000&@49
| +0#e000002&@5|'| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
@4|}+0#e000e06&|]|}|]| +0#0000000&@66
@@ -16,5 +17,4 @@
|e+0#00e0e07&|x|p|l|i|c|i|t| |m|a|p@1|i|n|g|:+0#e000e06&| +0#0000000&@57
@2|?+0#e000e06&| +0#0000000&|f|o@1| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
@2|:+0#e000e06&| +0#0000000&|b|a|r| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
-@2|?+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|f|o@1| @65
-@57|9|1|,|3| @9|7|8|%|
+@57|9|1|,|3| @9|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_06.dump b/runtime/syntax/testdir/dumps/yaml_06.dump
index f6c83c2c3..30ea7ff15 100644
--- a/runtime/syntax/testdir/dumps/yaml_06.dump
+++ b/runtime/syntax/testdir/dumps/yaml_06.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|?+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|f|o@1| @65
+| +0&#ffffff0@1|:+0#e000e06&| +0#0000000&|b|a|r| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
+@2|?+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|f|o@1| @65
@4|-+0#af5f00255&| +0#0000000&|b|a|r| @65
@2|:+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|b|a|z| @65
@4|-+0#af5f00255&| +0#0000000&|q|u|x| @65
-@2|?+0#e000e06&| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |2+0#e000002&|,+0#0000000&| |3+0#e000002&|]+0#e000e06&| +0#0000000&@61
-@2>:+0#e000e06&| +0#0000000&|?+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&@67
+@2>?+0#e000e06&| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |2+0#e000002&|,+0#0000000&| |3+0#e000002&|]+0#e000e06&| +0#0000000&@61
+@2|:+0#e000e06&| +0#0000000&|?+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&@67
@4|:+0#e000e06&| +0#0000000&|o|n|e| @65
@4|?+0#e000e06&| +0#0000000&|2+0#e000002&| +0#0000000&@67
@4|:+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|?+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@63
@8|:+0#e000e06&| +0#0000000&|t|h|r|e@1| @59
@6|-+0#af5f00255&| +0#0000000&|{+0#e000e06&|?|4+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|o|u|r|,| |?+0#e000e06&| +0#0000000&|5+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|i|v|e|,| |?+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@33
@8|6+0#00e0e07&|:+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@54
-@8|{+0#e000e06&|7+0#00e0e07&|:+0#e000e06&|s+0#0000000&|e|v|e|n|}+0#e000e06&@1| +0#0000000&@56
+@8|{+0#e000e06&|7+0#0000000&|:|s|e|v|e|n|}+0#e000e06&@1| +0#0000000&@56
@75
|m+0#00e0e07&|a|p@1|i|n|g| |m|e|r|g|e|:+0#e000e06&| +0#0000000&@60
@2|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|&+0#00e0003&|f|o@1| +0#0000000&@63
@4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z| @62
@2|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
-@4|<+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
-@57|1|0|9|,|3| @8|9|5|%|
+@57|1|0|9|,|3| @8|9|4|%|
diff --git a/runtime/syntax/testdir/dumps/yaml_07.dump b/runtime/syntax/testdir/dumps/yaml_07.dump
index ce0d1664d..ff6d9a244 100644
--- a/runtime/syntax/testdir/dumps/yaml_07.dump
+++ b/runtime/syntax/testdir/dumps/yaml_07.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@3|<+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
+| +0&#ffffff0@1|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
+@4|<+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
@4|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|&+0#00e0003&|b|a|r| +0#0000000&@61
@6|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|]+0#e000e06&| +0#0000000&@57
@4|q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&@66
-@6|<+0#e000e06&@1|:| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|,+0#0000000&| |*+0#00e0003&|b|a|r|]+0#e000e06&| +0#0000000&@52
-@2>b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|{+0#e000e06&|<@1|:| +0#0000000&|*+0#00e0003&|f|o@1|,+0#0000000&| |q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&|[+0#e000e06&|{|<@1| +0#0000000&|:+0#e000e06&| +0#0000000&|*+0#00e0003&|f|o@1|}+0#e000e06&|]|}| +0#0000000&@37
+@6><+0#e000e06&@1|:| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|,+0#0000000&| |*+0#00e0003&|b|a|r|]+0#e000e06&| +0#0000000&@52
+@2|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|{+0#e000e06&|<@1|:| +0#0000000&|*+0#00e0003&|f|o@1|,+0#0000000&| |q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&|[+0#e000e06&|{|<@1| +0#0000000&|:+0#e000e06&| +0#0000000&|*+0#00e0003&|f|o@1|}+0#e000e06&|]|}| +0#0000000&@37
|~+0#4040ff13&| @73
|~| @73
|~| @73
@@ -16,5 +17,4 @@
|~| @73
|~| @73
|~| @73
-|~| @73
-| +0#0000000&@56|1|2|7|,|3| @8|B|o|t|
+| +0#0000000&@56|1|2|7|,|7| @8|B|o|t|
diff --git a/runtime/syntax/testdir/input/yaml.yaml b/runtime/syntax/testdir/input/yaml.yaml
index d87aca211..72e0a0dd4 100644
--- a/runtime/syntax/testdir/input/yaml.yaml
+++ b/runtime/syntax/testdir/input/yaml.yaml
@@ -24,7 +24,7 @@ not a number: [.nan, .NaN, .NAN]

plain strings:
- a b c
- - a * b & c @ d# e : f # comment
+ - a:b & c @ d# e * f # comment
- {{ f(' ') }} #8234
double quoted strings:
- ""
@@ -91,9 +91,10 @@ flow collection:
inside block mapping:
foo: {bar: baz}
bar: ["foo": {baz: qux}]
- flow collection: [foo # comment
+ flow:collection: [foo # comment
, {bar: [{ # comment
- baz: '
+ baz:
+ '
qux # not comment
' # comment
}]}]
diff --git a/runtime/syntax/yaml.vim b/runtime/syntax/yaml.vim
index 6ec806a4c..e992bc02e 100644
--- a/runtime/syntax/yaml.vim
+++ b/runtime/syntax/yaml.vim
@@ -129,7 +129,7 @@ syn region yamlFlowCollection matchgroup=yamlFlowIndicator start='\[' end='\]' c
execute 'syn match yamlPlainScalar /'.s:ns_plain_out.'/'
execute 'syn match yamlPlainScalar contained /'.s:ns_plain_in.'/'

-execute 'syn match yamlFlowMappingKey /'.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:/ contained '.
+execute 'syn match yamlFlowMappingKey /'.s:ns_plain_in.'\%(\s\+'.s:ns_plain_in.'\)*\ze\s*:\%(\s\|$\)/ contained '.
\'nextgroup=yamlFlowMappingDelimiter skipwhite'
syn match yamlFlowMappingKeyStart /?/ contained nextgroup=@yamlFlowNode skipwhite
syn match yamlFlowMappingMerge /<<\ze\s*:/ contained nextgroup=yamlFlowMappingDelimiter skipwhite
Reply all
Reply to author
Forward
0 new messages