From: Dusk Date: Sun, 7 Jun 2020 02:04:05 +0000 (-0700) Subject: fixup! [misc] vim/syntax: Fixups X-Git-Tag: 0.99~3178 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=70cf73b0320285f267d66a7fb2e520a694630b48 fixup! [misc] vim/syntax: Fixups (Thanks, @mrjbq7!) Now: + `CHAR:` literals highlight the whole next token. + `0b...` binary literals don't require invalid `+=0b` or `-=0b` syntax. + Float literals can't start with a `,` separator. + Float literals can have exponents with `,` separators. + `foo: ...` stack effects function as intended in general. + Syntax clusters might be a bit cleaner with `g:factor_syn_no_error`. + Error match priority should be cleaned up. --- diff --git a/misc/vim/syntax/factor.vim b/misc/vim/syntax/factor.vim index e7e014ed41..0b325f83ec 100644 --- a/misc/vim/syntax/factor.vim +++ b/misc/vim/syntax/factor.vim @@ -171,25 +171,26 @@ syn match factorPosRatio /\v<\+=[0-9]%([0-9,]*[0-9])?%(\+[0-9]%([ syn match factorNegRatio /\v<\-[0-9]%([0-9,]*[0-9])?%(\-[0-9]%([0-9,]*[0-9]+)?)?\/-=[0-9]%([0-9,]*[0-9]+)?\.?>/ syn region factorComplex start=/\v/ end=/\v<\}>/ contains=@factorReal syn cluster factorBin contains=factorBin +syn match factorBin /\v<[+-]=0b[01,]+>/ if !exists('g:factor_syn_no_error') - syn match factorBinError /\v\<[+-]=0b[01,]*[^01 ]\S*\>/ + syn match factorBinError /\v<[+-]=0b[01,]*[^01 ]\S*>/ syn cluster factorBin add=factorBinError endif -syn match factorBin /\v\<[+-]=0b[01,]\+\>/ syn cluster factorHexNoRadixTrans contains=factorHexNoRadixTrans +syn match factorHexNoRadixTrans /\v<[0-9a-fA-F]%([0-9a-fA-F,]*[0-9a-fA-F])?%(\.[0-9a-fA-F]%([0-9a-fA-F,]*[0-9a-fA-F])?)?%(p-=[0-9]%([0-9,]*[0-9])?)?>/ contained transparent syn cluster factorHex contains=factorHex +syn match factorHex /\v<[+-]=0x[0-9a-fA-F]%([0-9a-fA-F,]*[0-9a-fA-F])?%(\.[0-9a-fA-F]%([0-9a-fA-F,]*[0-9a-fA-F])?)?%(p-=[0-9]%([0-9,]*[0-9])?)?>/ if !exists('g:factor_syn_no_error') syn match factorHexNoRadixError /\v<%(,\S*|\S*,|[-0-9a-fA-Fp,]*[^-0-9a-fA-Fp, ]\S*)>/ contained syn cluster factorHexNoRadixTrans add=factorHexNoRadixError syn match factorHexError /\v<[+-]=0x%(,\S*|\S*,|[-0-9a-fA-Fp,]*[^-0-9a-fA-Fp, ]\S*)>/ syn cluster factorHex add=factorHexError endif -syn match factorHexNoRadixTrans /\v<[0-9a-fA-F]%([0-9a-fA-F,]*[0-9a-fA-F])?%(\.[0-9a-fA-F]%([0-9a-fA-F,]*[0-9a-fA-F])?)?%(p-=[0-9]%([0-9,]*[0-9])?)?>/ contained transparent -syn match factorHex /\v<[+-]=0x[0-9a-fA-F]%([0-9a-fA-F,]*[0-9a-fA-F])?%(\.[0-9a-fA-F]%([0-9a-fA-F,]*[0-9a-fA-F])?)?%(p-=[0-9]%([0-9,]*[0-9])?)?>/ syn cluster factorOct contains=factorOct +syn match factorOct /\v<[+-]=0o[0-7,]+>/ if !exists('g:factor_syn_no_error') syn match factorOctError /\v<[+-]=0o%(,\S*|\S*,|[0-7,]*[^0-7, ]\S*)>/ - syn cluster factorOct contains=factorOctError + syn cluster factorOct add=factorOctError endif syn match factorOct /\v<[+-]=0o[0-7,]+>/ syn region factorNan matchgroup=factorNan start=/\v/ matchgroup=NONE end=/\v<\S+>/ contains=@factorComment,@factorHexNoRadixTrans