From 244e013e95f2a7210d8294144794a33dea140454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Vieira?= Date: Thu, 20 May 2021 02:26:13 +0100 Subject: [PATCH 1/5] Add numeric separators Add syntax highlighting to numbers and floats with numeric separator as defined in tc39/proposal-numeric-separator. --- syntax/javascript.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index d1a72071..4f0853ba 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -54,9 +54,9 @@ syntax match jsModuleComma contained /,/ skipwhite skipempty nextgroup= syntax region jsString start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ end=+$+ contains=jsSpecial extend syntax region jsTemplateString start=+`+ skip=+\\`+ end=+`+ contains=jsTemplateExpression,jsSpecial extend syntax match jsTaggedTemplate /\<\K\k*\ze`/ nextgroup=jsTemplateString -syntax match jsNumber /\c\<\%(\d\+\%(e[+-]\=\d\+\)\=\|0b[01]\+\|0o\o\+\|0x\%(\x\|_\)\+\)\>/ +syntax match jsNumber /\c\<\%(\d\+\%(_\d\+\)\=\%(e[+-]\=\d\+\)\=\|0b[01]\+\%(_[01]\+\)\=\|0o\o\+\%(_\o\+\)\=\|0x\x\+\%(_\x\+\)\=\)\>/ syntax keyword jsNumber Infinity -syntax match jsFloat /\c\<\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%(e[+-]\=\d\+\)\=\>/ +syntax match jsFloat /\c\<\%(\%(\d\+\%(_\d\+\)\=\)\=\.\%(\d\+\%(_\d\+\)\=\)\=\)\%(e[+-]\=\d\+\)\=\>/ " Regular Expressions syntax match jsSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)" From 2c364080ac526b66d0ec5ce4d568a548bb001cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Vieira?= Date: Fri, 21 May 2021 19:49:54 +0100 Subject: [PATCH 2/5] Split jsNumber in multiple matches (hex, dec, etc) --- syntax/javascript.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 4f0853ba..2d699d9a 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -54,7 +54,10 @@ syntax match jsModuleComma contained /,/ skipwhite skipempty nextgroup= syntax region jsString start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ end=+$+ contains=jsSpecial extend syntax region jsTemplateString start=+`+ skip=+\\`+ end=+`+ contains=jsTemplateExpression,jsSpecial extend syntax match jsTaggedTemplate /\<\K\k*\ze`/ nextgroup=jsTemplateString -syntax match jsNumber /\c\<\%(\d\+\%(_\d\+\)\=\%(e[+-]\=\d\+\)\=\|0b[01]\+\%(_[01]\+\)\=\|0o\o\+\%(_\o\+\)\=\|0x\x\+\%(_\x\+\)\=\)\>/ +syntax match jsNumber /\c\<\%(\d\+\%(_\d\+\)\=\%(e[+-]\=\d\+\)\=\)n\=\>/ +syntax match jsNumber /\c\<\%(0b[01]\+\%(_[01]\+\)\=\)\n\=\>/ +syntax match jsNumber /\c\<\%(0o\o\+\%(_\o\+\)\=\)n\=\>/ +syntax match jsNumber /\c\<\%(0x\x\+\%(_\x\+\)\=\)n\=\>/ syntax keyword jsNumber Infinity syntax match jsFloat /\c\<\%(\%(\d\+\%(_\d\+\)\=\)\=\.\%(\d\+\%(_\d\+\)\=\)\=\)\%(e[+-]\=\d\+\)\=\>/ From c9f6ef654dac37b3ebf42b0f45609b2903042644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Vieira?= Date: Fri, 21 May 2021 19:52:07 +0100 Subject: [PATCH 3/5] Fix numeric separators in exponent Numeric separators are also allowed in the exponent as per the spec. --- syntax/javascript.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 2d699d9a..3284bb29 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -54,12 +54,12 @@ syntax match jsModuleComma contained /,/ skipwhite skipempty nextgroup= syntax region jsString start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ end=+$+ contains=jsSpecial extend syntax region jsTemplateString start=+`+ skip=+\\`+ end=+`+ contains=jsTemplateExpression,jsSpecial extend syntax match jsTaggedTemplate /\<\K\k*\ze`/ nextgroup=jsTemplateString -syntax match jsNumber /\c\<\%(\d\+\%(_\d\+\)\=\%(e[+-]\=\d\+\)\=\)n\=\>/ +syntax match jsNumber /\c\<\%(\d\+\%(_\d\+\)\=\%(e[+-]\=\d\+\%(_\d\+\)\)\=\)n\=\>/ syntax match jsNumber /\c\<\%(0b[01]\+\%(_[01]\+\)\=\)\n\=\>/ syntax match jsNumber /\c\<\%(0o\o\+\%(_\o\+\)\=\)n\=\>/ syntax match jsNumber /\c\<\%(0x\x\+\%(_\x\+\)\=\)n\=\>/ syntax keyword jsNumber Infinity -syntax match jsFloat /\c\<\%(\%(\d\+\%(_\d\+\)\=\)\=\.\%(\d\+\%(_\d\+\)\=\)\=\)\%(e[+-]\=\d\+\)\=\>/ +syntax match jsFloat /\c\<\%(\%(\d\+\%(_\d\+\)\=\)\=\.\%(\d\+\%(_\d\+\)\=\)\=\)\%(e[+-]\=\d\+\%(_\d\+\)\=\)\=\>/ " Regular Expressions syntax match jsSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)" From cd4527858fc543b44577666b5eb815a7d8cb4e2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Vieira?= Date: Fri, 21 May 2021 19:56:36 +0100 Subject: [PATCH 4/5] Fix missing optional modifier in exp separator --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 3284bb29..32e03408 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -54,7 +54,7 @@ syntax match jsModuleComma contained /,/ skipwhite skipempty nextgroup= syntax region jsString start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ end=+$+ contains=jsSpecial extend syntax region jsTemplateString start=+`+ skip=+\\`+ end=+`+ contains=jsTemplateExpression,jsSpecial extend syntax match jsTaggedTemplate /\<\K\k*\ze`/ nextgroup=jsTemplateString -syntax match jsNumber /\c\<\%(\d\+\%(_\d\+\)\=\%(e[+-]\=\d\+\%(_\d\+\)\)\=\)n\=\>/ +syntax match jsNumber /\c\<\%(\d\+\%(_\d\+\)\=\%(e[+-]\=\d\+\%(_\d\+\)\=\)\=\)n\=\>/ syntax match jsNumber /\c\<\%(0b[01]\+\%(_[01]\+\)\=\)\n\=\>/ syntax match jsNumber /\c\<\%(0o\o\+\%(_\o\+\)\=\)n\=\>/ syntax match jsNumber /\c\<\%(0x\x\+\%(_\x\+\)\=\)n\=\>/ From aff4add3784573e19de14c9e8f90e5398c0aa72e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Vieira?= Date: Sat, 20 May 2023 00:28:15 +0100 Subject: [PATCH 5/5] Fix numerical separators (more than one) --- syntax/javascript.vim | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 32e03408..8e1fd7e4 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -54,12 +54,14 @@ syntax match jsModuleComma contained /,/ skipwhite skipempty nextgroup= syntax region jsString start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ end=+$+ contains=jsSpecial extend syntax region jsTemplateString start=+`+ skip=+\\`+ end=+`+ contains=jsTemplateExpression,jsSpecial extend syntax match jsTaggedTemplate /\<\K\k*\ze`/ nextgroup=jsTemplateString -syntax match jsNumber /\c\<\%(\d\+\%(_\d\+\)\=\%(e[+-]\=\d\+\%(_\d\+\)\=\)\=\)n\=\>/ -syntax match jsNumber /\c\<\%(0b[01]\+\%(_[01]\+\)\=\)\n\=\>/ -syntax match jsNumber /\c\<\%(0o\o\+\%(_\o\+\)\=\)n\=\>/ -syntax match jsNumber /\c\<\%(0x\x\+\%(_\x\+\)\=\)n\=\>/ -syntax keyword jsNumber Infinity -syntax match jsFloat /\c\<\%(\%(\d\+\%(_\d\+\)\=\)\=\.\%(\d\+\%(_\d\+\)\=\)\=\)\%(e[+-]\=\d\+\%(_\d\+\)\=\)\=\>/ + +syntax keyword jsNumber Infinity +syntax match jsNumber /\c\<\%(\%(\d\|\d_\d\)\+\%(e[+-]\=\%(\d\|\d_\d\)\+\)\=\)n\=\>/ +syntax match jsNumber /\c\<\%(0b\%([01]\|[01]_[01]\)\+\)\n\=\>/ +syntax match jsNumber /\c\<\%(0o\%(\o\|\o_\o\)\+\)n\=\>/ +syntax match jsNumber /\c\<\%(0x\%(\x\|\x_\x\)\+\)n\=\>/ + +syntax match jsFloat /\c\<\%(\%(\%(\d\|\d_\d\)\+\)\=\.\%(\%(\d\|\d_\d\)\+\)\=\)\%(e[+-]\=\%(\d\|\d_\d\)\+\)\=\>/ " Regular Expressions syntax match jsSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)"