syn cluster factorCluster contains=factorWord,factorComment,factorMultilineComment,@factorClusterValue,factorDeclaration,factorCall,factorCallNextMethod,@factorWordOps,factorAlien,factorSlot,factorTuple,factorStruct
syn cluster factorClusterValue contains=factorBreakpoint,factorBoolean,factorFrySpecifier,factorLocalsSpecifier,factorChar,factorString,@factorNumber,factorBackslash,factorMBackslash,factorLiteral,@factorEffect,@factorQuotation,@factorArray,factorRegexp
+" Almost any byte in Factor can be a part of a word
+syn iskeyword 33-126,128-255
+
" A crash course on Factor's lexer:
"
" The "lexer" vocabulary parses lines (arrays of strings) into tokens.
syn match factorInit /\v<%(STARTUP-HOOK|SHUTDOWN-HOOK):>/ display
+syn cluster factorHelp contains=factorHelp
+syn region factorHelp start=/\v<HELP:>/ skip=/\v<!>.*/ end=/\v<\S+>/ contains=@factorComment
+syn match factorHelp /\v<%(ARTICLE|ABOUT):>/ display
+
syn region factorDefn matchgroup=NONE start=/\v<%(SYNTAX|CONSTRUCTOR|%(M|MACRO|MEMO|TYPED)?:?):>/ skip=/\v<!>.*/ matchgroup=factorDefnDelims end=/\v<;>/ contains=factorDefnDelims,@factorCluster keepend transparent
syn region factorDefnDelims start=/\v<SYNTAX:>/ skip=/\v<!>.*/ end=/\v<\S+>/ contains=@factorComment skipempty keepend contained
syn region factorDefnDelims start=/\v<%(MACRO|MEMO|TYPED)?:?:>/ skip=/\v<!>.*/ end=/\v<\S+>/ contains=@factorComment nextgroup=factorEffectSkip skipempty keepend contained
syn region factorChar start=/\v<CHAR:>/ end=/\v\S+>/
syn region factorColor start=/\v<COLOR:>/ end=/\v\S+>/
-syn match factorEscape /\v\\([\\astnrbvf0e\"]|u\x{6}|u\{\S+}|x\x{2})/ contained display
+syn match factorEscape /\v\\([\\astnrbvfe\"]|u\x{6}|u\{\S+}|x\x{2}|\o{1,3})/ contained display
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 cluster factorWordOps contains=factorConstant,factorAlias,factorSingleton,factorSingletons,factorSymbol,factorSymbols,factorPostpone,factorDefer,factorForget,factorMixin,factorInstance,factorHook,factorMain
-" HELP:
-" ARTICLE:
" C-ENUM:
" FUNCTION:
" TYPEDEF:
HiLink factorHook Typedef
HiLink factorMain Define
HiLink factorPostpone Define
+ HiLink factorHelp Define
HiLink factorDefer Define
HiLink factorForget Define
HiLink factorAlien Define