changeset 34531:0591aba1489d

runtime(vim): Update base-syntax, improve number matching (#14175) Commit: https://github.com/vim/vim/commit/5cd86c6cff94256ed2db872c46b57da259a648ac Author: dkearns <dougkearns@gmail.com> Date: Tue Mar 12 07:40:58 2024 +1100 runtime(vim): Update base-syntax, improve number matching (https://github.com/vim/vim/issues/14175) - Limit blob literals to an even number of hexadecimal digits and correctly located dots. - Match octal numbers. The current version unsuccessfully attempts to match a leading '-' as part of the float literal. It's actually parsed as part of the literal for all numbers but the syntax file hasn't matched it like that for a long time and highlights negative numbers as UNARY-MINUS NUMBER. This will be fixed when better expression matching is implemented. Signed-off-by: Doug Kearns <dougkearns@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Mon, 11 Mar 2024 21:45:06 +0100
parents ef8394eca183
children 64edf95a833a
files runtime/syntax/generator/vim.vim.base runtime/syntax/testdir/dumps/vim_expr_01.dump runtime/syntax/testdir/dumps/vim_expr_02.dump runtime/syntax/testdir/dumps/vim_expr_03.dump runtime/syntax/testdir/dumps/vim_expr_99.dump runtime/syntax/testdir/input/vim_expr.vim runtime/syntax/vim.vim
diffstat 7 files changed, 113 insertions(+), 71 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/syntax/generator/vim.vim.base
+++ b/runtime/syntax/generator/vim.vim.base
@@ -3,7 +3,7 @@
 " Maintainer:	Hirohito Higashi <h.east.727 ATMARK gmail.com>
 " 	Doug Kearns <dougkearns@gmail.com>
 " URL:	https://github.com/vim-jp/syntax-vim-ex
-" Last Change:	2024 Mar 09
+" Last Change:	2024 Mar 10
 " Former Maintainer: Charles E. Campbell
 " Base File URL:     http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
 " Base File Version: 9.0-25
@@ -157,13 +157,14 @@ endif
 
 " Numbers {{{2
 " =======
-syn match vimNumber	'\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='  skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'\<0[xX]\x\+'		       skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'\%(^\|\A\)\zs#\x\{6}'             	       skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'\<0[zZ][a-zA-Z0-9.]\+'                    skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'0[0-7]\+'		       skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'0[bB][01]\+'		       skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn case ignore
+syn match	vimNumber	'\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\='	skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\<0b[01]\+'			skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\<0o\=\o\+'			skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\<0x\x\+'			skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'	skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\%(^\|\A\)\zs#\x\{6}'		skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
 syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimEcho,vimEchoHL,vimExecute,vimIsCommand,vimExtCmd,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSyntax,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
--- a/runtime/syntax/testdir/dumps/vim_expr_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_01.dump
@@ -17,4 +17,4 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|'|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@6
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|"+0#e000002&|f|o@1|"|:+0#0000000&| |"+0#e000002&|b|a|r|"|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@8
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
-@57|1|9|,|1| @9|B|o|t| 
+@57|1|9|,|1| @9|2|4|%| 
--- a/runtime/syntax/testdir/dumps/vim_expr_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_02.dump
@@ -1,20 +1,20 @@
-| +0#e000002#ffffff0@5|"+0#0000e05&|\| |e|s|c|a|p|e| |s|e|q|u|e|n|c|e| +0#0000000&@50
-| +0#e000002&@5|\+0#e000e06&@1|"| +0#e000002&|l|i|n|e| |2| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&|"+0#e000002&| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0&#ffffff0@74
+|"+0#0000e05&| |N|u|m|b|e|r| +0#0000000&@66
+@75
+|"+0#0000e05&| |H|e|x|a|d|e|c|i|m|a|l| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|x|F@1| +0#0000000&@64
+>e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|X|F@1| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|x|F@1| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|X|F@1| +0#0000000&@64
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|'+0#e000002&| +0#0000000&@65
-| +0#e000002&@5>"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |1| +0#0000000&@60
-| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |2| +0#0000000&@60
-| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&|'+0#e000002&| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@51
+|"+0#0000e05&| |D|e|c|i|m|a|l| +0#0000000&@65
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|2+0#e000002&|5@1| +0#0000000&@65
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|2+0#e000002&|5@1| +0#0000000&@65
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|"| +0#0000000&@64
-| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |1| +0#0000000&@60
-| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |2| +0#0000000&@60
-| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&|"+0#e000002&| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@51
-@57|3|7|,|7| @9|7|3|%| 
+|"+0#0000e05&| |O|c|t|a|l| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|3|7@1| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|o|3|7@1| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|O|3|7@1| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|3|7@1| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|o|3|7@1| +0#0000000&@63
+@57|3|7|,|1| @9|5|9|%| 
--- a/runtime/syntax/testdir/dumps/vim_expr_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_03.dump
@@ -1,20 +1,20 @@
-| +0#e000002#ffffff0@5|\+0#e000e06&|"+0#e000002&| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@51
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|o|3|7@1| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|O|3|7@1| +0#0000000&@63
 @75
-|l+0#af5f00255&|e|t| +0#0000000&|s+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|$+0#e000002&|'| +0#0000000&@64
-| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |1| +0#0000000&@60
-| +0#e000002&@5>"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&| +0#e000002&|l|i|n|e| |2| +0#0000000&@60
-| +0#e000002&@5|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-| +0#e000002&@5|\+0#e000e06&|'+0#e000002&| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@51
+|"+0#0000e05&| |B|i|n|a|r|y| +0#0000000&@66
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|b|1@7| +0#0000000&@58
+>e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|B|1@7| +0#0000000&@58
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|b|1@7| +0#0000000&@58
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|B|1@7| +0#0000000&@58
 @75
-|"+0#0000e05&| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@60
-|f|o@1|(+0#e000e06&|)| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@54
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|5@1|,|7| @9|B|o|t| 
+|"+0#0000e05&| |F|l|o|a|t| +0#0000000&@67
+|1+0#e000002&|2|3|.|4|5|6| +0#0000000&@67
+|++0#af5f00255&|0+0#e000002&|.|0@2|1| +0#0000000&@67
+|5+0#e000002&@1|.|0| +0#0000000&@70
+|-+0#af5f00255&|0+0#e000002&|.|1|2|3| +0#0000000&@68
+|1+0#e000002&|.|2|3|4|e|0|3| +0#0000000&@66
+|1+0#e000002&|.|0|E|-|6| +0#0000000&@68
+|-+0#af5f00255&|3+0#e000002&|.|1|4|1|6|e|+|8@1| +0#0000000&@63
+@75
+|"+0#0000e05&| |B|l|o|b| +0#0000000&@68
+@57|5@1|,|1| @9|9|4|%| 
--- a/runtime/syntax/testdir/dumps/vim_expr_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_99.dump
@@ -1,20 +1,20 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|$+0#e000002&|'|\|3|1|6| |\|3|1| |\|3| |\|x|1|f| |\|x|f| |\|X|1|F| |\|X|F| |\|u|0|2|a|4| |\|U|0@4|2|a|4| |\|b| |\|e| |\|f| |\|n| |\|r| |\|t| |\@1
-| |\|"| |\|<|C|-|W|>|'| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6|0+0#e000002&| |-| |\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| |\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| |\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@21
+|"+0#0000e05#ffffff0| |B|i|n|a|r|y| +0#0000000&@66
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|b|1@7| +0#0000000&@58
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|B|1@7| +0#0000000&@58
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|b|1@7| +0#0000000&@58
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|B|1@7| +0#0000000&@58
 @75
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|a|>|"+0#e000002&| +0#0000000&@61
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|a|>|"+0#e000002&| +0#0000000&@60
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|"+0#e000002&| +0#0000000&@61
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|"+0#e000002&| +0#0000000&@60
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|>+0#e000002&|"| +0#0000000&@60
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|>+0#e000002&|"| +0#0000000&@59
+|"+0#0000e05&| |F|l|o|a|t| +0#0000000&@67
+|1+0#e000002&|2|3|.|4|5|6| +0#0000000&@67
+|++0#af5f00255&|0+0#e000002&|.|0@2|1| +0#0000000&@67
+|5+0#e000002&@1|.|0| +0#0000000&@70
+|-+0#af5f00255&|0+0#e000002&|.|1|2|3| +0#0000000&@68
+|1+0#e000002&|.|2|3|4|e|0|3| +0#0000000&@66
+|1+0#e000002&|.|0|E|-|6| +0#0000000&@68
+|-+0#af5f00255&|3+0#e000002&|.|1|4|1|6|e|+|8@1| +0#0000000&@63
 @75
-|"+0#0000e05&| |S|t|r|i|n|g| |i|n|t|e|r|p|o|l|a|t|i|o|n| +0#0000000&@52
-@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|D|o|n|'@1|t| |h|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|'| +0#0000000&@22
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|D|o|n|'|t| |h|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|"| +0#0000000&@23
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|'+0#e000002&|f|o@1|'|:+0#0000000&| |'+0#e000002&|b|a|r|'|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|'|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@6
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|"+0#e000002&|f|o@1|"|:+0#0000000&| |"+0#e000002&|b|a|r|"|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@8
->e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
-@57|3|1|,|1| @9|B|o|t| 
+|"+0#0000e05&| |B|l|o|b| +0#0000000&@68
+|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|E|D|0|1|5|D|A|F| +0#0000000&@55
+|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|.|E|D|0|1|.|5|D|A|F| +0#0000000&@53
+>e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|.|0@1|.|E|D|.|0|1|.|5|D|.|A|F| +0#0000000&@50
+@57|7|1|,|1| @9|B|o|t| 
--- a/runtime/syntax/testdir/input/vim_expr.vim
+++ b/runtime/syntax/testdir/input/vim_expr.vim
@@ -29,3 +29,43 @@ echo $'Highlight interpolation:\t{{ { st
 echo $'Highlight interpolation:\t{{ { $'nested: {{ {1 + 2} }}' } }}'
 echo $"Highlight interpolation:\t{{ { string({"foo": "bar"}) } }}"
 echo $"Highlight interpolation:\t{{ { $"nested: {{ {1 + 2} }}" } }}"
+
+" Number
+
+" Hexadecimal
+echo  0xFF
+echo  0XFF
+echo -0xFF
+echo -0XFF
+
+" Decimal
+echo  255
+echo -255
+
+" Octal
+echo  0377
+echo  0o377
+echo  0O377
+echo -0377
+echo -0o377
+echo -0O377
+
+" Binary
+echo  0b11111111
+echo  0B11111111
+echo -0b11111111
+echo -0B11111111
+
+" Float
+123.456
++0.0001
+55.0
+-0.123
+1.234e03
+1.0E-6
+-3.1416e+88
+
+" Blob
+echo 0zFF00ED015DAF
+echo 0zFF00.ED01.5DAF
+echo 0zFF.00.ED.01.5D.AF
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Hirohito Higashi <h.east.727 ATMARK gmail.com>
 " 	Doug Kearns <dougkearns@gmail.com>
 " URL:	https://github.com/vim-jp/syntax-vim-ex
-" Last Change:	2024 Mar 09
+" Last Change:	2024 Mar 10
 " Former Maintainer: Charles E. Campbell
 " Base File URL:     http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
 " Base File Version: 9.0-25
@@ -195,13 +195,14 @@ endif
 
 " Numbers {{{2
 " =======
-syn match vimNumber	'\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='  skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'\<0[xX]\x\+'		       skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'\%(^\|\A\)\zs#\x\{6}'             	       skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'\<0[zZ][a-zA-Z0-9.]\+'                    skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'0[0-7]\+'		       skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
-syn match vimNumber	'0[bB][01]\+'		       skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn case ignore
+syn match	vimNumber	'\<\d\+\%(\.\d\+\%(e[+-]\=\d\+\)\=\)\='	skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\<0b[01]\+'			skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\<0o\=\o\+'			skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\<0x\x\+'			skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*'	skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn match	vimNumber	'\%(^\|\A\)\zs#\x\{6}'		skipwhite nextgroup=vimGlobal,vimSubst1,vimCommand,vimComment,vim9Comment
+syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
 syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimEcho,vimEchoHL,vimExecute,vimIsCommand,vimExtCmd,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSyntax,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate