From 1c411e241923626af4c2e765bf6859ae4099c47d Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 10 Mar 2021 15:30:46 -0800 Subject: [PATCH] misc/vim: some cleanup and add more stuff. --- misc/vim/syntax/factor.vim | 285 +++++++++++---------------- misc/vim/syntax/factor/generated.vim | 6 +- 2 files changed, 123 insertions(+), 168 deletions(-) diff --git a/misc/vim/syntax/factor.vim b/misc/vim/syntax/factor.vim index 6f72171d49..6906122262 100644 --- a/misc/vim/syntax/factor.vim +++ b/misc/vim/syntax/factor.vim @@ -20,7 +20,7 @@ " All syntax patterns (|:syn-pattern|) are "very magic" (|/\v|). " Escape all literal [^[:alnum:]_-!:;] characters in these patterns. " (Not escaping [-!:;] characters risks forward-incompatibility, -" but fixes if an incompatibile Vim arises would be trivial, +" but fixes if an incompatible Vim arises would be trivial, " and Factor likes these characters.) " " Syntax groups ending in "Error" match errors via |:syn-priority|, @@ -58,8 +58,8 @@ endif syn case match syn match factorWord /\v<\S+>/ contains=@factorWord transparent display -syn cluster factorClusterNoComment contains=factorWord,@factorMultilineComment,@factorClusterValue,factorBoolean,factorBreakpoint,factorDeclaration,factorCallQuotation,factorExecute,factorCallNextMethod,@factorWordOps,factorAlien,factorSlot,factorTuple,factorErrorSyn,factorStruct -syn cluster factorCluster contains=@factorComment,@factorClusterNoComment +syn cluster factorCluster contains=factorWord,factorComment,factorMultilineComment,@factorClusterValue,factorDeclaration,factorCall,factorCallNextMethod,@factorWordOps,factorAlien,factorSlot,factorTuple,factorStruct +syn cluster factorClusterValue contains=factorBreakpoint,factorBoolean,factorFrySpecifier,factorChar,@factorString,@factorNumber,factorBackslash,factorMBackslash,factorLiteral,@factorStackEffect,@factorQuotation,@factorArray,factorRegexp " A crash course on Factor's lexer: " @@ -107,194 +107,178 @@ syn cluster factorCluster contains=@factorComment,@factorClusterNoComm " So! To know when double quotes & exclamation marks aren't special, " grep for "parse-raw". (Mostly. To be certain, grep for "lexer".) +syn match factorShebang /\v%^\#!.*$/ display + syn cluster factorComment contains=factorComment +syn match factorComment /\v.*$/ contains=@factorCommentContents syn cluster factorCommentContents contains=factorTodo,@Spell syn match factorTodo /\v(TODO|FIXME|XXX):=/ contained -syn cluster factorDefnContents contains=@factorCluster - -syn region factorDefn start=/\v<%(SYNTAX|%(MACRO|MEMO|TYPED)?:?):>/ matchgroup=factorDefnDelims end=/\v<;>/ contains=factorDefnDelims,@factorDefnContents +syn region factorDefn start=/\v<%(SYNTAX|%(MACRO|MEMO|TYPED)?:?):>/ matchgroup=factorDefnDelims end=/\v<;>/ contains=factorDefnDelims,@factorCluster syn region factorDefnDelims start=/\v<%(SYNTAX|%(MACRO|MEMO|TYPED)?:?):>/ end=/\v<\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty contained -syn region factorMethod start=/\v/ matchgroup=factorMethodDelims end=/\v<;>/ contains=factorMethodDelims,@factorDefnContents +syn region factorMethod start=/\v/ matchgroup=factorMethodDelims end=/\v<;>/ contains=factorMethodDelims,@factorCluster syn region factorMethodDelims start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment skipempty keepend contained -syn region factorLocalsMethod start=/\v/ matchgroup=factorLocalsMethodDelims end=/\v<;>/ contains=factorLocalsMethodDelims,@factorDefnContents +syn region factorLocalsMethod start=/\v/ matchgroup=factorLocalsMethodDelims end=/\v<;>/ contains=factorLocalsMethodDelims,@factorCluster syn region factorLocalsMethodDelims start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty keepend contained syn region factorGeneric start=/\v<%(GENERIC|MATH|PRIMITIVE):>/ end=/\v<\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty -syn region factorGenericN matchgroup=factorGenericN start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\d+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty keepend +syn region factorGenericN start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\d+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty keepend +syn region factorHook start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty keepend -syn region factorPDefn start=/\v<%(SYNTAX|%(MACRO|MEMO|TYPED)?:?):>/ matchgroup=factorPDefnDelims end=/\v<;>/ contains=factorPDefnDelims,@factorDefnContents contained +syn region factorPDefn start=/\v<%(SYNTAX|%(MACRO|MEMO|TYPED)?:?):>/ skip=/\v.*/ end=/\v<;>/ contains=factorPDefnDelims,factorCluster contained syn region factorPDefnDelims start=/\v<%(SYNTAX|%(MACRO|MEMO|TYPED)?:?):>/ end=/\v<\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty contained -syn region factorPMethod start=/\v/ matchgroup=factorPMethodDelims end=/\v<;>/ contains=factorPMethodDelims,@factorDefnContents contained +syn region factorPMethod start=/\v/ matchgroup=factorPMethodDelims end=/\v<;>/ contains=factorPMethodDelims,factorCluster contained syn region factorPMethodDelims start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment skipempty keepend contained -syn region factorPLocalsMethod start=/\v/ matchgroup=factorPLocalsMethodDelims end=/\v<;>/ contains=factorPLocalsMethodDelims,@factorDefnContents contained +syn region factorPLocalsMethod start=/\v/ matchgroup=factorPLocalsMethodDelims end=/\v<;>/ contains=factorPLocalsMethodDelims,factorCluster contained syn region factorPLocalsMethodDelims start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty keepend contained -syn region factorPGeneric start=/\v<%(GENERIC|MATH|PRIMITIVE):>/ end=/\v<\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty contained -syn region factorPGenericN matchgroup=factorPGenericN start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\d+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty keepend contained - -syn region factorPrivate matchgroup=factorPrivate start=/\v<\/ end=/\v>/ contains=@factorDefnContents,factorPDefn,factorPMethod,factorPLocalsMethod,factorPGeneric,factorPGenericN skipempty keepend +syn region factorPGeneric start=/\v<%(GENERIC|MATH|PRIMITIVE):>/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty contained +syn region factorPGenericN start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\d+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty keepend contained +syn region factorPHook start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty keepend contained -syn cluster factorClusterValue contains=factorBreakpoint,factorBoolean,factorFrySpecifier,factorChar,@factorString,@factorNumber,factorBackslash,factorMBackslash,factorLiteral,factorLiteralBlock,@factorStackEffect,@factorQuotation,@factorArray +syn region factorPrivate start=/\v<\/ end=/\v>/ contains=@factorCluster,factorPDefn,factorPMethod,factorPLocalsMethod,factorPGeneric,factorPGenericN,factorPHook skipempty keepend syn keyword factorBoolean f t syn keyword factorBreakpoint B syn keyword factorFrySpecifier @ _ contained syn keyword factorDeclaration delimiter deprecated final flushable foldable inline recursive -syn match factorCallQuotation /\v/ end=/\v<\V)\v>/ contains=@factorStackEffectContents syn keyword factorCallNextMethod call-next-method -syn region factorChar start=/\v/ end=/\v\S+>/ +syn region factorChar start=/\v/ end=/\v\S+>/ +syn region factorColor start=/\v/ end=/\v\S+>/ -syn cluster factorString contains=factorString,factorTriString,factorPrefixedString syn match factorEscape /\v\\([\\astnrbvf0e\"]|u\x{6}|u\{\S+}|x\x{2})/ contained display -syn region factorString matchgroup=factorStringDelims start=/\v<"/ skip=/\v\\"/ end=/\v"/ contains=factorEscape -" Removed Factor syntax. -syn region factorTriString matchgroup=factorTriStringDelims start=/\v<"""/ skip=/\v\\"/ end=/\v"""/ contains=factorEscape -syn region factorPrefixedString matchgroup=factorPrefixedStringDelims start=/\v<[^[:blank:]"]+"/ skip=/\v\\"/ end=/\v"/ contains=factorEscape - -" Vocabulary: multiline -" This vocabulary reads the ambient lexer without "parse-raw". -syn cluster factorString add=factorMultilineString,factorHereDocString,factorPrefixedMultilineString -syn region factorMultilineString matchgroup=factorMultilineStringDelims start=/\v<\[\z(\={0,6})\[>/ end=/\v\]\z1\]/ -syn region factorHereDoc matchgroup=factorHereDocDelims start=/\v/ end=/\v^;$/ -syn region factorHereDocString matchgroup=factorHereDocStringDelims start=/\v/ end=/\v^\z1$/ -syn region factorPrefixedMultilineString matchgroup=factorPrefixedMultilineStringDelims start=/\v<[^[\][:blank:]]+\[\z(\={0,6})\[>/ end=/\v\]\z1\]/ -" These comments are normal syntax words, so no lexer privilege for them. -" (Hence, no "syn cluster factorComment" membership.) -syn cluster factorMultilineComment contains=factorMultilineComment,factorMultilineCComment -syn region factorMultilineComment matchgroup=factorMultilineCommentDelims start=/\v/ end=/\v\]\z1\]/ contains=@factorCommentContents keepend -syn region factorMultilineCComment matchgroup=factorMultilineCCommentDelims start=/\v<\/\*>/ end=/\v\*\// contains=@factorCommentContents keepend +syn region factorString matchgroup=factorStringDelims start=/\v<"/ skip=/\v\\"/ end=/\v"/ contains=factorEscape +syn region factorString matchgroup=factorStringDelims start=/\v<"""/ skip=/\v\\"/ end=/\v"""/ contains=factorEscape +syn region factorString matchgroup=factorStringDelims start=/\v<[^[:blank:]"]+"/ skip=/\v\\"/ end=/\v"/ contains=factorEscape +syn region factorString matchgroup=factorStringDelims start=/\v\[\z(\=*)\[/ end=/\]\z1\]/ contains=factorEscape +syn region factorString matchgroup=factorStringDelims start=/\v/ end=/\v^\z1$>/ +syn region factorString matchgroup=factorStringDelims start=/\v<[^[\][:blank:]]+\[\z(\=*)\[>/ end=/\v\]\z1\]/ + +syn region factorNamedString matchgroup=factorNamedStringDelims start=/\v/ end=/\v^<;>$/ contains=factorEscape + +syn region factorMultilineComment start=/\v<\/\*>/ end=/\v\*\// contains=@factorCommentContents keepend +syn region factorMultilineComment start=/\v/ syn cluster factorReal contains=@factorInteger,@factorFloat,@factorRatio,@factorBin,@factorOct,@factorHex,factorNan syn cluster factorNumber contains=@factorReal,factorComplex + syn cluster factorInteger contains=factorInteger if !exists('g:factor_syn_no_error') " more general syn cluster factorInteger add=factorIntegerError - " + "\d|," with contained "\d" syn match factorIntegerError /\v<[+-]=%(\d|,){-}\d%(\d|,)*>/ endif -" + "\d|," with leading "\d" and no trailing "," syn match factorInteger /\v<[+-]=\d%(\d|,)*,@1/ + +syn cluster factorFloat contains=factorFloat if !exists('g:factor_syn_no_error') " more general syn cluster factorFloat add=factorFloatError syn match factorFloatError /\v<[+-]=%(\S{-}\d&%(\d|,)*%([eE][+-]=%(\d|,)*|\.%(\d|,)*%([eE][+-]=%(\d|,)*)?)|\.%(\d|,)+%([eE][+-]=%(\d|,)*)?)>/ endif -syn cluster factorFloat contains=factorFloat -" exponent is followed by valid integer of radix 10 -" float of -" {valid integer, -" {"[eE]" exponent} -" or {"." mantissa sep, ? "[eE]" exponent}} -" or {"." mantissa sep, ? "[eE]" exponent} syn match factorFloat /\v<[+-]=%(\d%(\d|,)*,@1/ + syn cluster factorRatio contains=factorRatio if !exists('g:factor_syn_no_error') " more general syn cluster factorRatio add=factorRatioError syn match factorRatioError /\v<[+-]=%(\S{-}\d.{-}\/&%(\d|,)*\.?%(\d|,)*%([+-]%(\d|,)*)?)\/[+-]=%(\S{-}\d&%(\d|,)*\.?%(\d|,)*%([eE][+-]=%(\d|,)*)?)>/ endif syn match factorRatio /\v<([+-]=)\d%(\d|,)*,@1/ -syn region factorComplex start=/\v/ end=/\v<\}>/ contains=@factorReal + +syn region factorComplex start=/\v/ skip=/\v.*/ end=/\v<\}>/ contains=@factorComment,@factorReal + syn cluster factorBin contains=factorBin if !exists('g:factor_syn_no_error') syn cluster factorBin add=factorBinError syn match factorBinError /\v<[+-]=0[bB]%(\S{-}\w&%(\w|,)*\.?%(\w|,)*%([pP][+-]=%(\w|,)*)?)>/ endif -" basically a float, but with a radix and no integer case to not match syn match factorBin /\v<[+-]=0[bB]%([01][01,]*,@1/ + syn cluster factorOct contains=factorOct if !exists('g:factor_syn_no_error') syn cluster factorOct add=factorOctError syn match factorOctError /\v<[+-]=0[oO]%(\S{-}\o&%(\w|,)*\.?(\w|,)*%([pP][+-]=%(\w|,)*)?)>/ endif syn match factorOct /\v<[+-]=0[oO]%(\o%(\o|,)*,@1/ -syn cluster factorHexNoRadix contains=factorHexNoRadix + syn cluster factorHex contains=factorHex +syn cluster factorHexNoRadix contains=factorHexNoRadix if !exists('g:factor_syn_no_error') - syn cluster factorHexNoRadix add=factorHexNoRadixError syn cluster factorHex add=factorHexError - syn match factorHexNoRadixError /\v<[+-]=%(\S{-}\x&%(\w|,)*\.?(\w|,)*%([pP][+-]=%(\w|,)*)?)>/ contained syn match factorHexError /\v<[+-]=0[xX]%(\S{-}\x&%(\x|,)*\.?(\x|,)*%([pP][+-]=%(\w|,)*)?)>/ + syn cluster factorHexNoRadix add=factorHexNoRadixError + syn match factorHexNoRadixError /\v<[+-]=%(\S{-}\x&%(\w|,)*\.?(\w|,)*%([pP][+-]=%(\w|,)*)?)>/ contained endif -syn match factorHexNoRadix /\v<[+-]=%(\x%(\x|,)*,@1/ contained syn match factorHex /\v<[+-]=0[xX]%(\x%(\x|,)*,@1/ +syn match factorHexNoRadix /\v<[+-]=%(\x%(\x|,)*,@1/ contained + syn region factorNan matchgroup=factorNan start=/\v/ matchgroup=NONE skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment,@factorHexNoRadix keepend -syn region factorBackslash start=/\v<\\>/ end=/\v<\S+>/ contains=@factorComment -syn region factorMBackslash start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend -syn region factorLiteral start=/\v<\$>/ end=/\v<\S+>/ contains=@factorComment -syn region factorLiteralBlock start=/\v<\$\[>/ end=/\v<\]>/ contains=@factorComment - -syn region factorIn start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorUse start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorUnuse start=/\v/ end=/\v<\S+>/ contains=@factorComment - -syn region factorUsing start=/\v/ end=/\v<;>/ contains=@factorComment -syn region factorQualified start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorQualifiedWith start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend -syn region factorExclude start=/\v/ end=/\v<;>/ contains=@factorComment -syn region factorFrom start=/\v/ end=/\v<;>/ contains=@factorComment -syn region factorRename start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+%(\_\s+%(!>.*)?)+\=\>%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend -syn region factorSingletons start=/\v/ end=/\v<;>/ contains=@factorComment -syn region factorSymbol start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorSymbols start=/\v/ end=/\v<;>/ contains=@factorComment -syn region factorConstructor2 start=/\v/ end=/\v<;>/ contains=@factorComment,factorStackEffect -syn region factorIntersection start=/\v/ end=/\v<;>/ contains=@factorComment +syn region factorBackslash start=/\v<\\>/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorMBackslash start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend +syn region factorLiteral start=/\v<\$>/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment + +syn match factorSlotAttrReadOnly /\v/ contained +syn match factorSlotAttrInitial /\v%(\_\s+%(!>.*)?)+/ contains=@factorComment nextgroup=factorWord,@factorClusterValue contained syn cluster factorSlotAttr contains=factorSlotAttrInitial,factorSlotAttrReadOnly + syn cluster factorTupleSlotAttr contains=@factorSlotAttr -syn match factorTupleSlotName /\v<\S+;@1/ nextgroup=factorTupleSlotClassSkip skipempty contained +syn match factorTupleSlotAttrSkip /\v%(\_\s+%(!>.*)?)*/ contains=@factorComment nextgroup=@factorTupleSlotAttr contained transparent +syn match factorTupleSlotName /\v<\S+>/ nextgroup=factorTupleSlotClassSkip skipempty contained syn match factorTupleSlotNameSkip /\v%(\_\s+%(!>.*)?)*/ contains=@factorComment nextgroup=factorTupleSlotName transparent contained syn match factorTupleSlotClass /\v<\S+>/ nextgroup=factorTupleSlotAttrSkip skipempty contained -" a class is optional, so let an attribute take priority if present -syn match factorTupleSlotClassSkip /\v%(\_\s+%(!>.*)?)*/ contains=@factorComment nextgroup=factorTupleSlotClass,@factorTupleSlotAttr transparent contained -syn region factorTupleSlot matchgroup=factorTupleSlotDelims start=/\v<\{>/ end=/\v<\}>/ contains=@factorComment,factorTupleSlotName,@factorTupleSlotAttr contained -syn match factorTupleHeader /\v%(\_\s+%(!>.*)?)*\S+%(%(\_\s+%(!>.*)?)+\<%(\_\s+%(!>.*)?)+\S+)?>/ contains=@factorComment,@factorWord contained transparent -syn match factorTupleDelims /\v<%(TUPLE|BUILTIN):>/ nextgroup=factorTupleHeader skipempty contained -syn region factorTuple start=/\v<%(TUPLE|BUILTIN):>/ end=/\v<;>/ contains=@factorComment,factorTupleSlotName,factorTupleSlot,factorTupleDelims -syn region factorPredicate matchgroup=factorPredicateDelims start=/\v<%(PREDICATE):>/ end=/\v<;>/ contains=@factorComment,factorTupleSlotName -" Abnormally named because factor*Error is reserved for syntax errors. -syn region factorErrorSyn start=/\v/ end=/\v<;>/ contains=@factorComment -syn region factorUnion start=/\v/ end=/\v<;>/ contains=@factorComment +syn match factorTupleSlotClassSkip /\v%(\_\s+%(!>.*)?)*/ contains=@factorComment nextgroup=@factorTupleSlotAttr,factorTupleSlotClass transparent contained +syn region factorTupleSlot matchgroup=factorTupleSlotDelims start=/\v<\{>/ end=/\v<\}>/ contains=@factorComment,factorTupleSlotName,@factorTupleSlotAttr contained +"syn match factorTupleClass /\v<\S+>/ nextgroup=factorTupleSuperClass,factorTupleSlot contained +"syn region factorTupleSuperClass matchgroup=NONE start=/\v%(\s+\<\s+)/ matchgroup=Identifier end=/\v<\S+>/ contains=@factorComment contained nextgroup=factorTupleSlot +syn region factorTuple matchgroup=factorTupleDelims start=/\v<%(TUPLE|BUILTIN|ERROR):>/ end=/\v<;>/ contains=@factorComment,factorTupleSlot +syn region factorPredicate matchgroup=factorPredicateDelims start=/\v<%(PREDICATE):>/ end=/\v<;>/ contains=@factorComment,factorTupleSlot + +syn match factorStructSlotAttrBits /\v%(\_\s+%(!>.*)?)+/ contains=@factorComment nextgroup=factorWord,@factorReal contained syn cluster factorStructSlotAttr contains=@factorSlotAttr,factorStructSlotAttrBits syn match factorStructSlotName /\v<\S+>/ nextgroup=factorStructSlotTypeSkip skipempty contained syn match factorStructSlotNameSkip /\v%(\_\s+%(!>.*)?)*/ contains=@factorComment nextgroup=factorStructSlotName contained transparent syn match factorStructSlotType /\v<\S+>/ contained syn match factorStructSlotTypeSkip /\v%(\_\s+%(!>.*)?)*/ contains=@factorComment nextgroup=factorStructSlotType contained transparent -syn region factorStructSlot matchgroup=factorStructSlotDelims start=/\v<\{>/ end=/\v<\}>/ contains=@factorComment,factorStructSlotName,@factorStructSlotAttr contained -syn region factorStruct matchgroup=factorStructDelims start=/\v<%(UNION-STRUCT|STRUCT):>/ end=/\v<;>/ contains=@factorComment,factorStructSlot - -syn match factorSlotAttrReadOnly /\v/ contained -syn match factorSlotAttrInitial /\v%(\_\s+%(!>.*)?)+/ contains=@factorComment nextgroup=factorWord,@factorClusterValue contained -syn match factorStructSlotAttrBits /\v%(\_\s+%(!>.*)?)+/ contains=@factorComment nextgroup=factorWord,@factorReal contained - -syn region factorConstant start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorAlias start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend -syn region factorSingleton start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorPostpone start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorDefer start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorForget start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorMixin start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorInstance start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend -syn region factorHook start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment nextgroup=factorStackEffectSkip skipempty keepend -syn region factorMain start=/\v/ end=/\v<\S+>/ contains=@factorComment -syn region factorConstructor start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend -syn region factorAlien matchgroup=factorAlien start=/\v/ matchgroup=NONE end=/\v<\S+>/ contains=@factorComment,@factorHexNoRadix -syn region factorSlot start=/\v/ end=/\v<\S+>/ contains=@factorComment +syn region factorStructSlot matchgroup=factorStructSlotDelims start=/\v<\{>/ skip=/\v.*/ end=/\v<\}>/ contains=@factorComment,factorStructSlotName,@factorStructSlotAttr contained +syn region factorStruct matchgroup=factorStructDelims start=/\v<%(%(UNION-)?STRUCT):>/ skip=/\v.*/ end=/\v<;>/ contains=@factorComment,factorStructSlot + +syn region factorAlias start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend +syn region factorAlien start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment,@factorHexNoRadix +syn region factorConstant start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorConstructor start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend +syn region factorConstructor2 start=/\v/ skip=/\v.*/ end=/\v<;>/ contains=@factorComment,@factorStackEffect +syn region factorDefer start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorExclude start=/\v/ skip=/\v.*/ end=/\v<;>/ contains=@factorComment +syn region factorForget start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorFrom start=/\v/ skip=/\v.*/ end=/\v<;>/ contains=@factorComment +syn region factorIn start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorInstance start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend +syn region factorIntersection start=/\v/ skip=/\v.*/ end=/\v<;>/ contains=@factorComment +syn region factorMain start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorMixin start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorPostpone start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorQualified start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorQualifiedWith start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend +syn region factorRename start=/\v/ skip=/\v.*/ end=/\v<\S+%(\_\s+%(!>.*)?)+\S+%(\_\s+%(!>.*)?)+\=\>%(\_\s+%(!>.*)?)+\S+>/ contains=@factorComment keepend +syn region factorSingleton start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorSingletons start=/\v/ skip=/\v.*/ end=/\v<;>/ contains=@factorComment +syn region factorSlot start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorSymbol start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorSymbols start=/\v/ skip=/\v.*/ end=/\v<;>/ contains=@factorComment +syn region factorUnion start=/\v/ skip=/\v.*/ end=/\v<;>/ contains=@factorComment +syn region factorUnuse start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorUse start=/\v/ skip=/\v.*/ end=/\v<\S+>/ contains=@factorComment +syn region factorUsing start=/\v/ skip=/\v.*/ end=/\v<;>/ contains=@factorComment syn cluster factorWordOps contains=factorConstant,factorAlias,factorSingleton,factorSingletons,factorSymbol,factorSymbols,factorPostpone,factorDefer,factorForget,factorMixin,factorInstance,factorHook,factorMain,factorConstructor -"TODO: -"misc: " HELP: " ARTICLE: -"literals: -" PRIMITIVE: - -"C interface: " C-ENUM: " FUNCTION: " TYPEDEF: " LIBRARY: -"#\ " if !exists('g:factor_syn_no_error') syn match factorStackEffectRequired /\v<\V(\@!\v\S+>/ contained @@ -344,19 +328,19 @@ endif if exists('g:factor_syn_no_rainbow') syn cluster factorArray contains=factorArray - syn region factorArray matchgroup=factorDelimiter start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=ALL + syn region factorArray matchgroup=factorDelimiter start=/\v<\S*\{>/ end=/\v<\}>/ contains=ALL else syn cluster factorArray contains=factorArray0 - syn region factorArray0 matchgroup=hlLevel0 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray1,factorQuotation1 - syn region factorArray1 contained matchgroup=hlLevel1 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray2,factorQuotation2 - syn region factorArray2 contained matchgroup=hlLevel2 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray3,factorQuotation3 - syn region factorArray3 contained matchgroup=hlLevel3 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray4,factorQuotation4 - syn region factorArray4 contained matchgroup=hlLevel4 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray5,factorQuotation5 - syn region factorArray5 contained matchgroup=hlLevel5 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray6,factorQuotation6 - syn region factorArray6 contained matchgroup=hlLevel6 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray7,factorQuotation7 - syn region factorArray7 contained matchgroup=hlLevel7 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray8,factorQuotation8 - syn region factorArray8 contained matchgroup=hlLevel8 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray9,factorQuotation9 - syn region factorArray9 contained matchgroup=hlLevel9 start=/\v<%(\$|[-[:alnum:]]+)?\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray0,factorQuotation0 + syn region factorArray0 matchgroup=hlLevel0 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray1,factorQuotation1 + syn region factorArray1 contained matchgroup=hlLevel1 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray2,factorQuotation2 + syn region factorArray2 contained matchgroup=hlLevel2 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray3,factorQuotation3 + syn region factorArray3 contained matchgroup=hlLevel3 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray4,factorQuotation4 + syn region factorArray4 contained matchgroup=hlLevel4 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray5,factorQuotation5 + syn region factorArray5 contained matchgroup=hlLevel5 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray6,factorQuotation6 + syn region factorArray6 contained matchgroup=hlLevel6 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray7,factorQuotation7 + syn region factorArray7 contained matchgroup=hlLevel7 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray8,factorQuotation8 + syn region factorArray8 contained matchgroup=hlLevel8 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray9,factorQuotation9 + syn region factorArray9 contained matchgroup=hlLevel9 start=/\v<\S*\{>/ end=/\v<\}>/ contains=@factorCluster,factorArray0,factorQuotation0 endif if !exists('g:factor_syn_no_error') @@ -364,33 +348,12 @@ if !exists('g:factor_syn_no_error') syn match factorBracketError /\v<\}>/ endif -function! FactorSynDefineComment() abort - syn match factorComment /\v.*$/ contains=@factorCommentContents - syn match factorShebang /\v%^\#!.*$/ display - if !exists('g:factor_syn_no_error') - syn match factorShebangError /\v%^\#!\S+/ - endif -endfunction - -if !exists('g:factor_syn_no_comment') - call FactorSynDefineComment() -endif - -" Syntax that bypasses comment lexing. -function! FactorSynDefineAfterComment() abort -endfunction - -if !exists('g:factor_syn_no_after_comment') - call FactorSynDefineAfterComment() -endif - syn sync lines=100 if !exists('g:factor_syn_no_init') command -nargs=+ -bar HiLink hi def link if !exists('g:factor_syn_no_error') - HiLink factorShebangError Error HiLink factorBracketError Error HiLink factorIntegerError Error HiLink factorFloatError Error @@ -403,28 +366,28 @@ if !exists('g:factor_syn_no_init') HiLink factorStackEffectError Error endif - HiLink factorComment Comment - HiLink factorMultilineComment factorComment - HiLink factorMultilineCommentDelims factorMultilineComment - HiLink factorMultilineCComment factorComment - HiLink factorMultilineCCommentDelims factorMultilineCComment + HiLink factorError Error HiLink factorShebang PreProc + HiLink factorComment Comment + HiLink factorMultilineComment Comment + HiLink factorTodo Todo HiLink factorStackEffect Type HiLink factorStackEffectDelims Delimiter HiLink factorStackEffectVar Identifier HiLink factorStackEffectRowVar factorStackEffectVar HiLink factorStackEffectType Type - HiLink factorTodo Todo HiLink factorInclude Include HiLink factorWord Keyword - HiLink factorCallQuotation Keyword - HiLink factorExecute Keyword + HiLink factorCall Keyword + HiLink factorCallDelims Keyword HiLink factorCallNextMethod Keyword HiLink factorOperator Operator HiLink factorFrySpecifier Operator HiLink factorBoolean Boolean HiLink factorBreakpoint Debug + HiLink factorDefn Typedef HiLink factorDefnDelims Typedef + HiLink factorMethod Typedef HiLink factorMethodDelims Typedef HiLink factorLocalsMethodDelims Typedef HiLink factorGeneric Typedef @@ -437,21 +400,12 @@ if !exists('g:factor_syn_no_init') HiLink factorPLocalsMethodDelims Special HiLink factorPGeneric Special HiLink factorPGenericN Special + HiLink factorPHook Special HiLink factorEscape SpecialChar HiLink factorString String HiLink factorStringDelims factorString - HiLink factorTriString factorString - HiLink factorTriStringDelims factorTriString - HiLink factorPrefixedString factorString - HiLink factorPrefixedStringDelims factorPrefixedString - HiLink factorMultilineString factorString - HiLink factorMultilineStringDelims Typedef - HiLink factorHereDoc factorMultilineString - HiLink factorHereDocDelims factorMultilineStringDelims - HiLink factorHereDocString factorMultilineString - HiLink factorHereDocStringDelims factorMultilineStringDelims - HiLink factorPrefixedMultilineString factorString - HiLink factorPrefixedMultilineStringDelims factorMultilineStringDelims + HiLink factorNamedString String + HiLink factorNamedStringDelims Typedef HiLink factorComplex Number HiLink factorRatio Number HiLink factorBin Number @@ -471,11 +425,11 @@ if !exists('g:factor_syn_no_init') HiLink factorUnuse Include HiLink factorIn Define HiLink factorChar Character + HiLink factorColor Constant HiLink factorDelimiter Delimiter HiLink factorBackslash Special HiLink factorMBackslash Special HiLink factorLiteral Special - HiLink factorLiteralBlock Special HiLink factorDeclaration Typedef HiLink factorSymbol Define HiLink factorSymbols Define @@ -493,6 +447,7 @@ if !exists('g:factor_syn_no_init') HiLink factorAlien Define HiLink factorSlot Define HiLink factorIntersection Typedef + HiLink factorRegexp Constant HiLink factorSlot Typedef HiLink factorSlotDelims factorSlot HiLink factorSlotName Identifier @@ -508,10 +463,10 @@ if !exists('g:factor_syn_no_init') HiLink factorTuple Typedef HiLink factorTupleDelims factorTuple HiLink factorTupleSlot factorSlot + HiLink factorTupleClass Identifier HiLink factorTupleSlotDelims factorSlotDelims HiLink factorTupleSlotName factorSlotName HiLink factorTupleSlotClass factorSlotClass - HiLink factorErrorSyn Typedef HiLink factorUnion Typedef HiLink factorStruct Typedef HiLink factorStructDelims factorStruct diff --git a/misc/vim/syntax/factor/generated.vim b/misc/vim/syntax/factor/generated.vim index a3649d991c..3f1389d635 100644 --- a/misc/vim/syntax/factor/generated.vim +++ b/misc/vim/syntax/factor/generated.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Factor " Maintainer: Alex Chapman -" Last Change: 2020 Dec 12 +" Last Change: 2021 Mar 09 " Minimum Version: 600 " To regenerate: USE: editors.vim.generate-syntax generate-vim-syntax @@ -41,8 +41,8 @@ SynKeywordFactorWord factorWord_math | syn keyword factorWord_math contained (al SynKeywordFactorWord factorWord_math_order | syn keyword factorWord_math_order contained +eq+ +gt+ +lt+ <=> >=< [-] after=? after? before=? before? between? clamp compare invert-comparison max min SynKeywordFactorWord factorWord_memory | syn keyword factorWord_memory contained all-instances compact-gc gc instances minor-gc save save-image save-image-and-exit saving-path size SynKeywordFactorWord factorWord_namespaces | syn keyword factorWord_namespaces contained +@ change change-global counter dec get get-global get-namestack global inc init-namespaces initialize namespace off on set set-global set-namestack toggle with-global with-scope with-variable with-variable-off with-variable-on with-variables -SynKeywordFactorWord factorWord_sequences | syn keyword factorWord_sequences contained 1sequence 2all? 2each 2each-from 2map 2map-as 2map-reduce 2reduce 2selector 2sequence 3append 3append-as 3each 3map 3map-as 3sequence 4sequence ?first ?last ?nth ?second ?set-nth accumulate accumulate! accumulate* accumulate*! accumulate*-as accumulate-as all? any? append append! append-as assert-sequence assert-sequence= assert-sequence? binary-reduce bounds-check bounds-check? bounds-error bounds-error? but-last but-last-slice cartesian-each cartesian-find cartesian-map cartesian-product cartesian-product-as change-nth check-slice clone-like collapse-slice collector collector-as collector-for collector-for-as concat concat-as copy count cut cut* cut-slice delete-all delete-slice drop-prefix each each-from each-index empty? exchange filter filter! filter-as find find-from find-index find-index-from find-last find-last-from first first2 first3 first4 flip follow fourth glue glue-as halves harvest head head* head-slice head-slice* head? if-empty immutable immutable-sequence immutable-sequence? immutable? index index-from indices infimum infimum-by insert-nth interleave iota iota? join join-as last last-index last-index-from length lengthen like longer longer? longest map map! map-as map-find map-find-last map-index map-index-as map-integers map-reduce map-sum max-length member-eq? member? midpoint@ min-length mismatch move new-like new-resizable new-sequence non-negative-integer-expected non-negative-integer-expected? none? nth nths pad-head pad-tail partition pop pop* prefix prepend prepend-as produce produce-as product push push-all push-either push-if reduce reduce-index reject reject! reject-as remove remove! remove-eq remove-eq! remove-nth remove-nth! repetition repetition? replace-slice replicate replicate-as rest rest-slice reverse reverse! reversed reversed? second selector selector-as sequence sequence-hashcode sequence= sequence? set-first set-fourth set-last set-length set-nth set-second set-third short shorten shorter shorter? shortest sift slice slice-error slice-error? slice? snip snip-slice subseq subseq-as subseq-start subseq-start-from subseq? suffix suffix! sum sum-lengths supremum supremum-by surround surround-as tail tail* tail-slice tail-slice* tail? third trim trim-head trim-head-slice trim-slice trim-tail trim-tail-slice unclip unclip-last unclip-last-slice unclip-slice unless-empty virtual-exemplar virtual-sequence virtual-sequence? virtual@ when-empty -SynKeywordFactorWord factorWord_sets | syn keyword factorWord_sets contained ?adjoin ?delete adjoin adjoin-all adjoin-at all-unique? cardinality clear-set union-all delete diff diff! duplicates fast-set gather in? intersect intersect! intersects? members null? intersect-all set set-like set= set? subset? union union! within without +SynKeywordFactorWord factorWord_sequences | syn keyword factorWord_sequences contained 1sequence 2all? 2any? 2each 2each-from 2map 2map-as 2map-reduce 2reduce 2selector 2sequence 3append 3append-as 3each 3map 3map-as 3sequence 4sequence ?first ?last ?nth ?second ?set-nth accumulate accumulate! accumulate* accumulate*! accumulate*-as accumulate-as all? any? append append! append-as assert-sequence assert-sequence= assert-sequence? binary-reduce bounds-check bounds-check? bounds-error bounds-error? but-last but-last-slice cartesian-each cartesian-find cartesian-map cartesian-product cartesian-product-as change-nth check-slice clone-like collapse-slice collector collector-as collector-for collector-for-as concat concat-as copy count cut cut* cut-slice delete-all delete-slice drop-prefix each each-from each-index empty? exchange filter filter! filter-as find find-from find-index find-index-from find-last find-last-from first first2 first3 first4 flip follow fourth glue glue-as halves harvest head head* head-slice head-slice* head? if-empty immutable immutable-sequence immutable-sequence? immutable? index index-from indices infimum infimum-by insert-nth interleave iota iota? join join-as last last-index last-index-from length lengthen like longer longer? longest map map! map-as map-find map-find-last map-index map-index-as map-integers map-reduce map-sum max-length member-eq? member? midpoint@ min-length mismatch move new-like new-resizable new-sequence non-negative-integer-expected non-negative-integer-expected? none? nth nths pad-head pad-tail partition pop pop* prefix prepend prepend-as produce produce-as product push push-all push-either push-if reduce reduce-index reject reject! reject-as remove remove! remove-eq remove-eq! remove-nth remove-nth! repetition repetition? replace-slice replicate replicate-as rest rest-slice reverse reverse! reversed reversed? second selector selector-as sequence sequence-hashcode sequence= sequence? set-first set-fourth set-last set-length set-nth set-second set-third short shorten shorter shorter? shortest sift slice slice-error slice-error? slice? snip snip-slice subseq subseq-as subseq-start subseq-start-from subseq? suffix suffix! sum sum-lengths supremum supremum-by surround surround-as tail tail* tail-slice tail-slice* tail? third trim trim-head trim-head-slice trim-slice trim-tail trim-tail-slice unclip unclip-last unclip-last-slice unclip-slice unless-empty virtual-exemplar virtual-sequence virtual-sequence? virtual@ when-empty +SynKeywordFactorWord factorWord_sets | syn keyword factorWord_sets contained ?adjoin ?delete adjoin adjoin-all adjoin-at all-unique? cardinality clear-set delete diff diff! duplicates fast-set gather in? intersect intersect! intersect-all intersects? members null? set set-like set= set? subset? union union! union-all within without SynKeywordFactorWord factorWord_sorting | syn keyword factorWord_sorting contained inv-sort-with natural-sort sort sort-keys sort-pair sort-values sort-with SynKeywordFactorWord factorWord_splitting | syn keyword factorWord_splitting contained ?head ?head-slice ?tail ?tail-slice replace split split-indices split-slice split-subseq split-when split-when-slice split1 split1-last split1-last-slice split1-slice split1-when split1-when-slice string-lines SynKeywordFactorWord factorWord_strings | syn keyword factorWord_strings contained 1string >string resize-string string string? -- 2.34.1