1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
" 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
"
" 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
|