This commit is contained in:
rhiannon morris 2022-01-14 21:15:22 +01:00
commit 659ea9df05
3 changed files with 72 additions and 0 deletions

7
README.md Normal file
View File

@ -0,0 +1,7 @@
# vim syntax highlighting for [bqn]
i know there's one in the repository but i don't like it very much. and
i already made a [global input method][ibus] so i don't want that bit either
[bqn]: https://mlochbaum.github.io/BQN
[ibus]: https://git.rhiannon.website/rhi/bqn-ibus

1
ftdetect/bqn.vim Normal file
View File

@ -0,0 +1 @@
au BufRead,BufNewFile *.bqn setfiletype bqn

64
syntax/bqn.vim Normal file
View File

@ -0,0 +1,64 @@
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 /•\%(\l\%(\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=/"/ contains=bqnStrEscape
hi def link bqnString String
syn match bqnStrEscape /""/ contained
hi def link bqnString Character
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'