about summary refs log tree commit diff stats
path: root/editor/subx.vim
diff options
context:
space:
mode:
Diffstat (limited to 'editor/subx.vim')
-rw-r--r--editor/subx.vim75
1 files changed, 75 insertions, 0 deletions
diff --git a/editor/subx.vim b/editor/subx.vim
new file mode 100644
index 00000000..a773e127
--- /dev/null
+++ b/editor/subx.vim
@@ -0,0 +1,75 @@
+" SubX syntax file
+" Language:    SubX
+" Maintainer:  Kartik Agaram <mu@akkartik.com>
+" URL:         https://github.com/akkartik/mu
+" License:     public domain
+"
+" Copy this file into your ftplugin directory, and add the following to your
+" vimrc or to .vim/ftdetect/subx.vim:
+"   autocmd BufReadPost,BufNewFile *.subx set filetype=subx
+"
+" Some highlight groups you might want to select colors for in your vimrc:
+"   subxFunction
+"   subxMinorFunction
+"   subxTest
+"
+" Optionally, devote more colors to different kinds of comments. Some suggestions
+" for 256-color terminals to add to your vimrc:
+"   blue tones:
+"     highlight subxH1Comment cterm=underline ctermfg=27
+"     highlight subxComment ctermfg=27
+"     highlight subxS1Comment ctermfg=19
+"     highlight subxS2Comment ctermfg=245
+"   blue-green tones
+"     highlight subxH1Comment cterm=underline ctermfg=25
+"     highlight subxComment ctermfg=25
+"     highlight subxS1Comment ctermfg=19
+"     highlight subxS2Comment ctermfg=245
+"   grey tones
+"    highlight subxH1Comment cterm=bold,underline
+"    highlight subxComment cterm=bold ctermfg=236
+"    highlight subxS1Comment cterm=bold ctermfg=242
+"    highlight subxS2Comment ctermfg=242
+
+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+=-,?,<,>,$,@
+
+syntax match subxH1Comment /# - .*/ | highlight link subxH1Comment Comment
+syntax match subxComment /#\( \.\| - \|? \)\@!.*/ | highlight link subxComment Comment
+syntax match subxS1Comment /# \..*/ | highlight link subxS1Comment Comment
+syntax match subxS2Comment /# \. \..*/ | highlight link subxS2Comment Comment
+
+set comments-=:#
+set comments+=n:#
+syntax match subxCommentedCode "#? .*"  | highlight link subxCommentedCode CommentedCode | highlight link CommentedCode Comment
+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
+
+" functions but not tests, globals or internal functions
+syntax match subxFunction "^\(test_\)\@<![a-z][^ ]*\(:\)\@=" | highlight link subxFunction Function
+" tests starting with 'test-'; dark:34 light:64
+syntax match subxTest "^test-[^ ]*\(:\)\@=" | highlight link subxTest Typedef
+" internal functions starting with '_'
+syntax match subxMinorFunction "^_[^ ]*\(:\)\@=" | highlight link subxMinorFunction Ignore
+" other internal labels starting with '$'
+syntax match subxLabel "^\$[^ ]*\(:\)\@=" | highlight link subxLabel Constant
+
+syntax keyword subxControl break loop | highlight link subxControl Constant
+
+let &cpo = s:save_cpo