From: Dusk Date: Sat, 30 May 2020 00:57:02 +0000 (-0700) Subject: [misc] vim/syntax: Proper comment precedence X-Git-Tag: 0.99~3187 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=11757d87fbc7bc2762372be53019a841e3116722 [misc] vim/syntax: Proper comment precedence Now comments, a lexer level feature, won't get beat out by rather normal syntactic parser constructs like `STRUCT:`. --- diff --git a/misc/factor.vim.fgen b/misc/factor.vim.fgen index 87a7ba1de7..6c14bffcfb 100644 --- a/misc/factor.vim.fgen +++ b/misc/factor.vim.fgen @@ -12,7 +12,7 @@ IN: factor.vim.fgen " Vim syntax file " Language: Factor " Maintainer: Alex Chapman -" Last Change: 2012 Jul 11 +" Last Change: 2020 May 29 " To run: USING: html.templates html.templates.fhtml ; "resource:misc/factor.vim.fgen" call-template " For version 5.x: Clear all syntax items @@ -41,16 +41,17 @@ syn match factorShebang /\%\^#!.*/ display syn match factorShebangErr /\%\^#!\S\+/ syn cluster factorDefnContents contains=@factorCluster,factorStackEffect,factorLiteralStackEffect,factorArray0,factorQuotation0 +syn cluster factorGenericContents contains=factorComment,factorStackEffect syn region factorDefn matchgroup=factorDefnDelims start=/\<\(SYNTAX\|\(MACRO\|MEMO\|TYPED\)\?:\?\):\s\+\S\+\>/ end=/\<;\>/ contains=@factorDefnContents syn region factorMethod matchgroup=factorMethodDelims start=/\/ end=/\<;\>/ contains=@factorDefnContents -syn region factorGeneric matchgroup=factorGenericDelims start=/\<\(GENERIC\|MATH\|PRIMITIVE\):\s\+\S\+\>/ end=/$/ contains=factorStackEffect -syn region factorGenericN matchgroup=factorGenericNDelims start=/\/ end=/$/ contains=factorStackEffect +syn region factorGeneric matchgroup=factorGenericDelims start=/\<\(GENERIC\|MATH\|PRIMITIVE\):\s\+\S\+\>/ end=/$/ contains=@factorGenericContents +syn region factorGenericN matchgroup=factorGenericNDelims start=/\/ end=/$/ contains=@factorGenericContents syn region factorPrivateDefn matchgroup=factorPrivateDefnDelims start=/\<\(SYNTAX\|\(MACRO\|MEMO\|TYPED\)\?:\?\):\s\+\S\+\>/ end=/\<;\>/ contains=@factorDefnContents contained syn region factorPrivateMethod matchgroup=factorPrivateMethodDelims start=/\/ end=/\<;\>/ contains=@factorDefnContents contained -syn region factorPGeneric matchgroup=factorPGenericDelims start=/\<\(GENERIC\|MATH\|PRIMITIVE\):\s\+\S\+\>/ end=/$/ contains=factorStackEffect contained -syn region factorPGenericN matchgroup=factorPGenericNDelims start=/\/ end=/$/ contains=factorStackEffect contained +syn region factorPGeneric matchgroup=factorPGenericDelims start=/\<\(GENERIC\|MATH\|PRIMITIVE\):\s\+\S\+\>/ end=/$/ contains=@factorGenericContents contained +syn region factorPGenericN matchgroup=factorPGenericNDelims start=/\/ end=/$/ contains=@factorGenericContents contained syn region None matchgroup=factorPrivate start=/\</ end=/\\>/ contains=@factorDefnContents,factorPrivateDefn,factorPrivateMethod,factorPGeneric,factorPGenericN @@ -92,48 +93,48 @@ syn match factorHexErr /\<[+-]\=0x\(,\S*\|\S*,\|[-0-9a-fA-Fp,]*[^-0-9a- syn match factorHex /\<[+-]\=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 match factorOctErr /\<[+-]\=0o\(,\S*\|\S*,\|[0-7,]*[^0-7, ]\S*\)\>/ syn match factorOctal /\<[+-]\=0o[0-7,]\+\>/ -syn match factorNan /\/ +syn match factorNan /\/ contains=factorComment -syn match factorIn /\/ -syn match factorUse /\/ -syn match factorUnuse /\/ +syn match factorIn /\/ contains=factorComment +syn match factorUse /\/ contains=factorComment +syn match factorUnuse /\/ contains=factorComment syn match factorChar /\/ -syn match factorBackslash /\<\\\>\s\+\S\+\>/ -syn match factorMBackslash /\\s\+\S\+\s\+\S\+\>/ -syn match factorLiteral /\<\$\>\s\+\S\+\>/ -syn region factorLiteralBlock start=/\<\$\[\>/ end=/\<\]\>/ - -syn region factorUsing start=/\/ end=/;/ -syn match factorQualified /\/ -syn match factorQualifiedWith /\/ -syn region factorExclude start=/\/ end=/;/ -syn region factorFrom start=/\/ end=/;/ -syn match factorRename /\\s\+\S\+\>/ -syn region factorSingletons start=/\/ end=/;/ -syn match factorSymbol /\/ -syn region factorSymbols start=/\/ end=/;/ -syn region factorConstructor2 start=/\/ end=/\<;\>/ -syn region factorTuple start=/\<\(TUPLE\|BUILTIN\):\>/ end=/\<;\>/ -syn region factorError start=/\/ end=/\<;\>/ -syn region factorUnion start=/\/ end=/\<;\>/ -syn region factorStruct start=/\<\(UNION-STRUCT:\|STRUCT:\)\>/ end=/\<;\>/ - -syn match factorConstant /\/ -syn match factorAlias /\/ -syn match factorSingleton /\/ -syn match factorPostpone /\/ -syn match factorDefer /\/ -syn match factorForget /\/ -syn match factorMixin /\/ -syn match factorInstance /\/ -syn match factorHook /\/ nextgroup=factorStackEffect skipwhite skipempty -syn match factorMain /\/ -syn match factorConstructor /\/ -syn match factorAlien /\/ -syn match factorSlot /\/ +syn match factorBackslash /\<\\\>\s\+\S\+\>/ contains=factorComment +syn match factorMBackslash /\\s\+\S\+\s\+\S\+\>/ contains=factorComment +syn match factorLiteral /\<\$\>\s\+\S\+\>/ contains=factorComment +syn region factorLiteralBlock start=/\<\$\[\>/ end=/\<\]\>/ contains=factorComment + +syn region factorUsing start=/\/ end=/;/ contains=factorComment +syn match factorQualified /\/ contains=factorComment +syn match factorQualifiedWith /\/ contains=factorComment +syn region factorExclude start=/\/ end=/;/ contains=factorComment +syn region factorFrom start=/\/ end=/;/ contains=factorComment +syn match factorRename /\\s\+\S\+\>/ contains=factorComment +syn region factorSingletons start=/\/ end=/;/ contains=factorComment +syn match factorSymbol /\/ contains=factorComment +syn region factorSymbols start=/\/ end=/;/ contains=factorComment +syn region factorConstructor2 start=/\/ end=/\<;\>/ contains=factorComment +syn region factorTuple start=/\<\(TUPLE\|BUILTIN\):\>/ end=/\<;\>/ contains=factorComment +syn region factorError start=/\/ end=/\<;\>/ contains=factorComment +syn region factorUnion start=/\/ end=/\<;\>/ contains=factorComment +syn region factorStruct start=/\<\(UNION-STRUCT:\|STRUCT:\)\>/ end=/\<;\>/ contains=factorComment + +syn match factorConstant /\/ contains=factorComment +syn match factorAlias /\/ contains=factorComment +syn match factorSingleton /\/ contains=factorComment +syn match factorPostpone /\/ contains=factorComment +syn match factorDefer /\/ contains=factorComment +syn match factorForget /\/ contains=factorComment +syn match factorMixin /\/ contains=factorComment +syn match factorInstance /\/ contains=factorComment +syn match factorHook /\/ contains=factorComment nextgroup=factorStackEffect skipwhite skipempty +syn match factorMain /\/ contains=factorComment +syn match factorConstructor /\/ contains=factorComment +syn match factorAlien /\/ contains=factorComment +syn match factorSlot /\/ contains=factorComment syn cluster factorWordOps contains=factorConstant,factorAlias,factorSingleton,factorSingletons,factorSymbol,factorSymbols,factorPostpone,factorDefer,factorForget,factorMixin,factorInstance,factorHook,factorMain,factorConstructor @@ -162,8 +163,8 @@ syn match factorMultiStringContents /.*/ contained "syn match factorStackEffectErr /\<)\>/ "syn region factorStackEffectErr start=/\<(\>/ end=/\<)\>/ "syn region factorStackEffect start=/\<(\>/ end=/\<)\>/ contained -syn match factorStackEffect /(\s\+\(\S*\s\+\)*--\(\s\+\S*\)*\s\+)\>/ contained contains=factorStackDelims,factorStackItems,factorStackVariables,factorCallExecuteDelim -syn match factorLiteralStackEffect /((\s\+\(\S*\s\+\)*--\(\s\+\S*\)*\s\+))\>/ contained contains=factorStackDelims,factorStackItems,factorStackVariables,factorCallExecuteDelim +syn match factorStackEffect /(\s\+\(\S*\s\+\)*--\(\s\+\S*\)*\s\+)\>/ contained contains=factorComment,factorStackDelims,factorStackItems,factorStackVariables,factorCallExecuteDelim +syn match factorLiteralStackEffect /((\s\+\(\S*\s\+\)*--\(\s\+\S*\)*\s\+))\>/ contained contains=factorComment,factorStackDelims,factorStackItems,factorStackVariables,factorCallExecuteDelim syn match factorStackVariables contained "\<\.\.\S\+\>" syn match factorStackItems contained "\<\(\.\.\)\@!\S\+\>" syn keyword factorStackDelims contained ( ) (( )) -- diff --git a/misc/vim/syntax/factor.vim b/misc/vim/syntax/factor.vim index 4393d24d15..8886274707 100644 --- a/misc/vim/syntax/factor.vim +++ b/misc/vim/syntax/factor.vim @@ -1,8 +1,7 @@ - " Vim syntax file " Language: Factor " Maintainer: Alex Chapman -" Last Change: 2012 Jul 11 +" Last Change: 2020 May 29 " To run: USING: html.templates html.templates.fhtml ; "resource:misc/factor.vim.fgen" call-template " For version 5.x: Clear all syntax items @@ -31,16 +30,17 @@ syn match factorShebang /\%\^#!.*/ display syn match factorShebangErr /\%\^#!\S\+/ syn cluster factorDefnContents contains=@factorCluster,factorStackEffect,factorLiteralStackEffect,factorArray0,factorQuotation0 +syn cluster factorGenericContents contains=factorComment,factorStackEffect syn region factorDefn matchgroup=factorDefnDelims start=/\<\(SYNTAX\|\(MACRO\|MEMO\|TYPED\)\?:\?\):\s\+\S\+\>/ end=/\<;\>/ contains=@factorDefnContents syn region factorMethod matchgroup=factorMethodDelims start=/\/ end=/\<;\>/ contains=@factorDefnContents -syn region factorGeneric matchgroup=factorGenericDelims start=/\<\(GENERIC\|MATH\|PRIMITIVE\):\s\+\S\+\>/ end=/$/ contains=factorStackEffect -syn region factorGenericN matchgroup=factorGenericNDelims start=/\/ end=/$/ contains=factorStackEffect +syn region factorGeneric matchgroup=factorGenericDelims start=/\<\(GENERIC\|MATH\|PRIMITIVE\):\s\+\S\+\>/ end=/$/ contains=@factorGenericContents +syn region factorGenericN matchgroup=factorGenericNDelims start=/\/ end=/$/ contains=@factorGenericContents syn region factorPrivateDefn matchgroup=factorPrivateDefnDelims start=/\<\(SYNTAX\|\(MACRO\|MEMO\|TYPED\)\?:\?\):\s\+\S\+\>/ end=/\<;\>/ contains=@factorDefnContents contained syn region factorPrivateMethod matchgroup=factorPrivateMethodDelims start=/\/ end=/\<;\>/ contains=@factorDefnContents contained -syn region factorPGeneric matchgroup=factorPGenericDelims start=/\<\(GENERIC\|MATH\|PRIMITIVE\):\s\+\S\+\>/ end=/$/ contains=factorStackEffect contained -syn region factorPGenericN matchgroup=factorPGenericNDelims start=/\/ end=/$/ contains=factorStackEffect contained +syn region factorPGeneric matchgroup=factorPGenericDelims start=/\<\(GENERIC\|MATH\|PRIMITIVE\):\s\+\S\+\>/ end=/$/ contains=@factorGenericContents contained +syn region factorPGenericN matchgroup=factorPGenericNDelims start=/\/ end=/$/ contains=@factorGenericContents contained syn region None matchgroup=factorPrivate start=/\</ end=/\\>/ contains=@factorDefnContents,factorPrivateDefn,factorPrivateMethod,factorPGeneric,factorPGenericN @@ -80,48 +80,48 @@ syn match factorHexErr /\<[+-]\=0x\(,\S*\|\S*,\|[-0-9a-fA-Fp,]*[^-0-9a- syn match factorHex /\<[+-]\=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 match factorOctErr /\<[+-]\=0o\(,\S*\|\S*,\|[0-7,]*[^0-7, ]\S*\)\>/ syn match factorOctal /\<[+-]\=0o[0-7,]\+\>/ -syn match factorNan /\/ +syn match factorNan /\/ contains=factorComment -syn match factorIn /\/ -syn match factorUse /\/ -syn match factorUnuse /\/ +syn match factorIn /\/ contains=factorComment +syn match factorUse /\/ contains=factorComment +syn match factorUnuse /\/ contains=factorComment syn match factorChar /\/ -syn match factorBackslash /\<\\\>\s\+\S\+\>/ -syn match factorMBackslash /\\s\+\S\+\s\+\S\+\>/ -syn match factorLiteral /\<\$\>\s\+\S\+\>/ -syn region factorLiteralBlock start=/\<\$\[\>/ end=/\<\]\>/ - -syn region factorUsing start=/\/ end=/;/ -syn match factorQualified /\/ -syn match factorQualifiedWith /\/ -syn region factorExclude start=/\/ end=/;/ -syn region factorFrom start=/\/ end=/;/ -syn match factorRename /\\s\+\S\+\>/ -syn region factorSingletons start=/\/ end=/;/ -syn match factorSymbol /\/ -syn region factorSymbols start=/\/ end=/;/ -syn region factorConstructor2 start=/\/ end=/\<;\>/ -syn region factorTuple start=/\<\(TUPLE\|BUILTIN\):\>/ end=/\<;\>/ -syn region factorError start=/\/ end=/\<;\>/ -syn region factorUnion start=/\/ end=/\<;\>/ -syn region factorStruct start=/\<\(UNION-STRUCT:\|STRUCT:\)\>/ end=/\<;\>/ - -syn match factorConstant /\/ -syn match factorAlias /\/ -syn match factorSingleton /\/ -syn match factorPostpone /\/ -syn match factorDefer /\/ -syn match factorForget /\/ -syn match factorMixin /\/ -syn match factorInstance /\/ -syn match factorHook /\/ nextgroup=factorStackEffect skipwhite skipempty -syn match factorMain /\/ -syn match factorConstructor /\/ -syn match factorAlien /\/ -syn match factorSlot /\/ +syn match factorBackslash /\<\\\>\s\+\S\+\>/ contains=factorComment +syn match factorMBackslash /\\s\+\S\+\s\+\S\+\>/ contains=factorComment +syn match factorLiteral /\<\$\>\s\+\S\+\>/ contains=factorComment +syn region factorLiteralBlock start=/\<\$\[\>/ end=/\<\]\>/ contains=factorComment + +syn region factorUsing start=/\/ end=/;/ contains=factorComment +syn match factorQualified /\/ contains=factorComment +syn match factorQualifiedWith /\/ contains=factorComment +syn region factorExclude start=/\/ end=/;/ contains=factorComment +syn region factorFrom start=/\/ end=/;/ contains=factorComment +syn match factorRename /\\s\+\S\+\>/ contains=factorComment +syn region factorSingletons start=/\/ end=/;/ contains=factorComment +syn match factorSymbol /\/ contains=factorComment +syn region factorSymbols start=/\/ end=/;/ contains=factorComment +syn region factorConstructor2 start=/\/ end=/\<;\>/ contains=factorComment +syn region factorTuple start=/\<\(TUPLE\|BUILTIN\):\>/ end=/\<;\>/ contains=factorComment +syn region factorError start=/\/ end=/\<;\>/ contains=factorComment +syn region factorUnion start=/\/ end=/\<;\>/ contains=factorComment +syn region factorStruct start=/\<\(UNION-STRUCT:\|STRUCT:\)\>/ end=/\<;\>/ contains=factorComment + +syn match factorConstant /\/ contains=factorComment +syn match factorAlias /\/ contains=factorComment +syn match factorSingleton /\/ contains=factorComment +syn match factorPostpone /\/ contains=factorComment +syn match factorDefer /\/ contains=factorComment +syn match factorForget /\/ contains=factorComment +syn match factorMixin /\/ contains=factorComment +syn match factorInstance /\/ contains=factorComment +syn match factorHook /\/ contains=factorComment nextgroup=factorStackEffect skipwhite skipempty +syn match factorMain /\/ contains=factorComment +syn match factorConstructor /\/ contains=factorComment +syn match factorAlien /\/ contains=factorComment +syn match factorSlot /\/ contains=factorComment syn cluster factorWordOps contains=factorConstant,factorAlias,factorSingleton,factorSingletons,factorSymbol,factorSymbols,factorPostpone,factorDefer,factorForget,factorMixin,factorInstance,factorHook,factorMain,factorConstructor @@ -150,8 +150,8 @@ syn match factorMultiStringContents /.*/ contained "syn match factorStackEffectErr /\<)\>/ "syn region factorStackEffectErr start=/\<(\>/ end=/\<)\>/ "syn region factorStackEffect start=/\<(\>/ end=/\<)\>/ contained -syn match factorStackEffect /(\s\+\(\S*\s\+\)*--\(\s\+\S*\)*\s\+)\>/ contained contains=factorStackDelims,factorStackItems,factorStackVariables,factorCallExecuteDelim -syn match factorLiteralStackEffect /((\s\+\(\S*\s\+\)*--\(\s\+\S*\)*\s\+))\>/ contained contains=factorStackDelims,factorStackItems,factorStackVariables,factorCallExecuteDelim +syn match factorStackEffect /(\s\+\(\S*\s\+\)*--\(\s\+\S*\)*\s\+)\>/ contained contains=factorComment,factorStackDelims,factorStackItems,factorStackVariables,factorCallExecuteDelim +syn match factorLiteralStackEffect /((\s\+\(\S*\s\+\)*--\(\s\+\S*\)*\s\+))\>/ contained contains=factorComment,factorStackDelims,factorStackItems,factorStackVariables,factorCallExecuteDelim syn match factorStackVariables contained "\<\.\.\S\+\>" syn match factorStackItems contained "\<\(\.\.\)\@!\S\+\>" syn keyword factorStackDelims contained ( ) (( )) --