bqn-vim/syntax/bqn.vim

62 lines
1.7 KiB
VimL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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'