From 6e1eeeebfb453fa7c871869c19375ce60fbd7413 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Sat, 27 Jul 2019 16:01:55 -0700 Subject: 5485 - promote SubX to top-level --- subx.vim | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 subx.vim (limited to 'subx.vim') diff --git a/subx.vim b/subx.vim new file mode 100644 index 00000000..13990b31 --- /dev/null +++ b/subx.vim @@ -0,0 +1,68 @@ +" SubX syntax file +" Language: SubX +" Maintainer: Kartik Agaram +" URL: https://github.com/akkartik/mu +" License: public domain +" +" Copy this into your ftplugin directory, and add the following to your vimrc +" or to .vim/ftdetect/subx.vim: +" autocmd BufReadPost,BufNewFile *.subx set filetype=subx + +let s:save_cpo = &cpo +set cpo&vim + +" setlocal iskeyword=@,48-57,?,!,_,$,- +setlocal formatoptions-=t " allow long lines +setlocal formatoptions+=c " but comments should still wrap + +setlocal iskeyword+=-,? + +" blue tones +" comment colors for dark terminal: 14, 39, 27, 19 +" comment colors for light terminal: 19, 27, 39, 6 +"? syntax match subxH1Comment /# - .*/ | highlight subxH1Comment cterm=underline ctermfg=27 +"? syntax match subxComment /#[^ ].*\|# [^.-].*\|# \?$/ | highlight subxComment ctermfg=27 +"? syntax match subxS1Comment /# \..*/ | highlight subxS1Comment ctermfg=19 +"? syntax match subxS2Comment /# \. \..*/ | highlight subxS2Comment ctermfg=245 + +" blue-green tones +syntax match subxH1Comment /# - .*/ | highlight subxH1Comment cterm=underline ctermfg=25 +syntax match subxComment /#\( \.\| - \|? \)\@!.*/ | highlight subxComment ctermfg=25 +syntax match subxS1Comment /# \..*/ | highlight subxS1Comment ctermfg=19 +syntax match subxS2Comment /# \. \..*/ | highlight subxS2Comment ctermfg=245 + +" grey tones +"? syntax match subxH1Comment /# - .*/ | highlight subxH1Comment cterm=bold,underline +"? syntax match subxComment /#[^ ].*\|# [^.-].*\|# \?$/ | highlight subxComment cterm=bold ctermfg=236 +"? hi Normal ctermfg=236 +"? syntax match subxS1Comment /# \..*/ | highlight subxS1Comment cterm=bold ctermfg=242 +"? syntax match subxS2Comment /# \. \..*/ | highlight subxS2Comment ctermfg=242 + +set comments-=:# +set comments+=n:# +syntax match subxCommentedCode "#? .*" | highlight link subxCommentedCode CommentedCode +let b:cmt_head = "#? " + +" comment token +syntax match subxDelimiter / \. / | highlight link subxDelimiter Normal + +syntax match subxString %"[^"]*"% | highlight link subxString Constant + +"" definitions +" match globals but not registers like 'EAX' +" don't match capitalized words in metadata +" don't match inside strings +syntax match subxGlobal %\(/\)\@% | highlight link subxGlobal SpecialChar +" tweak the red color from the colorscheme just a tad to improve contrast +highlight SpecialChar ctermfg=160 + +" functions but not tests, globals or internal functions +syntax match subxFunction "^\(test_\)\@