62 lines
1.7 KiB
VimL
62 lines
1.7 KiB
VimL
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'
|