about summary refs log tree commit diff stats
path: root/subx.vim
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-07-27 16:01:55 -0700
committerKartik Agaram <vc@akkartik.com>2019-07-27 17:47:59 -0700
commit6e1eeeebfb453fa7c871869c19375ce60fbd7413 (patch)
tree539c4a3fdf1756ae79770d5c4aaf6366f1d1525e /subx.vim
parent8846a7f85cc04b77b2fe8a67b6d317723437b00c (diff)
downloadmu-6e1eeeebfb453fa7c871869c19375ce60fbd7413.tar.gz
5485 - promote SubX to top-level
Diffstat (limited to 'subx.vim')
-rw-r--r--subx.vim68
1 files changed, 68 insertions, 0 deletions
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 <mu@akkartik.com>
+" 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 %\(/\)\@<!\<[A-Z][a-z0-9_-]*\>% | 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_\)\@<![a-z][^ ]*\(:\)\@=" | highlight subxFunction cterm=underline ctermfg=130
+" tests starting with 'test-'; dark:34 light:64
+syntax match subxTest "^test-[^ ]*\(:\)\@=" | highlight subxTest ctermfg=64
+" internal functions starting with '_'
+syntax match subxMinorFunction "^_[^ ]*\(:\)\@=" | highlight subxMinorFunction ctermfg=95
+" other internal labels starting with '$'
+syntax match subxLabel "^\$[^ ]*\(:\)\@=" | highlight link subxLabel Constant
+
+let &cpo = s:save_cpo