if exists('b:current_syntax') finish endif " can't include • and ¯ because their codepoints " are greater than 255. lol. lmao syn iskeyword @,48-57,_,192-255,. syn region bqnComment start=/#/ end=/$/ hi def link bqnComment Comment syn match bqnError /\[\|\]\|\*\|[↙↖→⍳⍎⍕~]\|\\/ hi def link bqnError Error syn match bqnDelim /[{}()⟨⟩‿,⋄:;?←⇐↩]/ hi def link bqnDelim Delimiter syn match bqnOp "[-¬!√÷+=⋆×⌽∊⍷↑⍋∧⊔⊑⊏⊒⊐⊣⊢|⍉↕«»⋈⥊↓⍒∨⌈⌊≢≡<≤∾>≥≍/≠]" hi def link bqnOp Function syn match bqnNameOp /\%(\<\|\.\@<=\)\u\%(\w\|¯\)*\%([˜˘¨˝˙]\|\>\)\@=/ hi def link bqnNameOp bqnOp syn match bqnMod1 /[`˜˘¨⁼⌜´˝˙]/ hi def link bqnMod1 Typedef syn match bqnNameMod1 /\%(\<\|\.\@<=\)_\%(\w\|¯\)\+\%([˜˘¨˝˙]\|\>\)\@=/ hi def link bqnNameMod1 bqnMod1 syn match bqnMod2 /[⎉⚇⍟◶⊘⎊⊸∘○⌾⟜]/ hi def link bqnMod2 Keyword syn match bqnNameMod2 /\%(\<\|\.\@<=\)_\%(\w\|¯\)\+_\%([˜˘¨˝˙]\|\>\)\@=/ hi def link bqnNameMod2 bqnMod2 " system subjects highlighted different syn match bqnSubject /\%(\<\|\.\@<=\)\l\%(\w\|¯\)*\%([˜˘¨˝˙]\|\>\)\@=/ hi def link bqnSubject Normal syn match bqnSystem /•\%(\%(\w\|¯\)\+\%(\>\|\.\@=\)\)\?/ hi def link bqnSystem Macro syn match bqnSpecialName /[𝕨𝕎𝕩𝕏𝕗𝔽𝕘𝔾𝕤𝕊]\|_𝕣_\?/ hi def link bqnSpecialName Label syn match bqnNothing /·/ hi def link bqnNothing Constant syn region bqnString start=/"/ end=/"/ skip=/""/ hi def link bqnString String syn match bqnNumber /∞\|π\|¯\?\<\d\%(\%(\d\|_\)*\d\)\?\%(\.\%(\%(\d\|_\)*\d\)\?\)\?\>/ hi def link bqnNumber Number " yes including ''' syn match bqnChar /'.'\|@/ hi def link bqnChar String let b:current_syntax = 'bqn'