summaryrefslogtreecommitdiff
path: root/muttator/contrib/vim/syntax/muttator.vim
blob: 533ada2dd0d1fc226419408b621431cf7cedbac5 (plain)
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
" Vim syntax file
" Language:         Muttator configuration file
" Maintainer:       Doug Kearns <dougkearns@gmail.com>
" Last Change:      2009 Aug 23

" TODO: make this muttator specific - shared liberator config?

if exists("b:current_syntax")
  finish
endif

let s:cpo_save = &cpo
set cpo&vim

syn include @javascriptTop syntax/javascript.vim
unlet b:current_syntax

syn include @cssTop syntax/css.vim
unlet b:current_syntax

syn match muttatorCommandStart "\%(^\s*:\=\)\@<=" nextgroup=muttatorCommand,muttatorAutoCmd

syn keyword muttatorCommand ab[breviate] ab[clear] addo[ns] addr[essbook] bN[ext] bd[elete] beep bf[irst] bl[ast] bn[ext]
    \ bp[revious] br[ewind] bufd[o] bun[load] bw[ipeout] ca[bbrev] cabc[lear] cd chd[ir] cm[ap] cmapc[lear] cno[remap]
    \ colo[rscheme] com[mand] comc[lear] con[tact] contacts copy[to] cu[nmap] cuna[bbrev] delc[ommand] delm[arks] delmac[ros]
    \ dels[tyle] dia[log] do[autocmd] doautoa[ll] ec[ho] echoe[rr] echom[sg] em[enu] empty[trash] exe[cute] exta[dd] extd[isable]
    \ extde[lete] exte[nable] extens[ions] exto[ptions] extp[references] exu[sage] fini[sh] frameo[nly] get[messages] go[to]
    \ h[elp] helpa[ll] ha[rdcopy] hi[ghlight] ia[bbrev] iabc[lear] im[ap] imapc[lear] ino[remap] iu[nmap] iuna[bbrev] javas[cript]
    \ js let loadplugins lpl m[ail] ma[rk] macros map mapc[lear] marks mes[sages] messc[lear] mkm[uttatorrc] mm[ap] mmapc[lear]
    \ mno[remap] move[to] mu[nmap] nm[ap] nmapc[lear] nno[remap] no[remap] norm[al] nu[nmap] optionu[sage] pa[geinfo] pagest[yle]
    \ pas pc[lose] pl[ay] pref[erences] prefs pw[d] q[uit] re[load] res[tart] run runt[ime] sav[eas] scrip[tnames] se[t]
    \ setg[lobal] setl[ocal] sil[ent] so[urce] st[op] sty[le] tN[ext] t[open] tab tabN[ext] tabc[lose] tabd[o] tabfir[st]
    \ tabl[ast] tabn[ext] tabp[revious] tabr[ewind] tbh[ide] tbs[how] tbt[oggle] time tn[ext] toolbarh[ide] toolbars[how]
    \ toolbart[oggle] tp[revious] una[bbreviate] unl[et] unm[ap] verb[ose] ve[rsion] vie[wsource] viu[sage] vm[ap] vmapc[lear]
    \ vno[remap] vu[nmap] w[rite] zo[om]
    \ contained

syn match muttatorCommand "!" contained

syn keyword muttatorAutoCmd au[tocmd] contained nextgroup=muttatorAutoEventList skipwhite

syn keyword muttatorAutoEvent FolderLoad PageLoadPre PageLoad ShellCmdPost muttatorEnter muttatorLeavePre muttatorLeave
    \ contained

syn match muttatorAutoEventList "\(\a\+,\)*\a\+" contained contains=muttatorAutoEvent

syn region muttatorSet matchgroup=muttatorCommand start="\%(^\s*:\=\)\@<=\<\%(setl\%[ocal]\|setg\%[lobal]\|set\=\)\=\>"
    \ end="$" keepend oneline contains=muttatorOption,muttatorString

syn keyword muttatorOption archivefolder cdpath cd complete cpt editor eventignore ei extendedhinttags eht fileencoding fenc
    \ followhints fh guioptions go helpfile hf hintinputs hin hintmatching hm hinttags ht hinttimeout hto history hi laststatus ls
    \ layout maxitems messages msgs nextpattern pageinfo pa previouspattern runtimepath rtp scroll scr shell sh shellcmdflag shcf
    \ showstatuslinks ssli showtabline stal smtpserver smtp suggestengines titlestring urlseparator verbose vbs wildcase wic
    \ wildignore wig wildmode wim wildoptions wop wordseparators wsp
    \ contained nextgroup=muttatorSetMod

" toggle options
syn match muttatorOption "\<\%(no\|inv\)\=\%(autoexternal\|errorbells\|eb\|exrc\|ex\|focuscontent\|fc\|fullscreen\|fs\)\>!\="
    \ contained nextgroup=muttatorSetMod
syn match muttatorOption "\<\%(no\|inv\)\=\%(insertmode\|im\|loadplugins\|lpl\|more\|online\|showmode\|smd\|visualbell\|vb\)\>!\="
    \ contained nextgroup=muttatorSetMod
syn match muttatorOption "\<\%(no\|inv\)\=\%(usermode\|um\)\>!\="
    \ contained nextgroup=muttatorSetMod

syn match muttatorSetMod "\%(\<[a-z_]\+\)\@<=&" contained

syn region muttatorJavaScript start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=" end="$" contains=@javascriptTop keepend oneline
syn region muttatorJavaScript matchgroup=muttatorJavascriptDelimiter
    \ start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@javascriptTop fold

let s:cssRegionStart = '\%(^\s*sty\%[le]!\=\s\+\%(-\%(n\|name\)\%(\s\+\|=\)\S\+\s\+\)\=[^-]\S\+\s\+\)\@<='
execute 'syn region muttatorCss start="' . s:cssRegionStart . '" end="$" contains=@cssTop keepend oneline'
execute 'syn region muttatorCss matchgroup=muttatorCssDelimiter'
    \ 'start="' . s:cssRegionStart . '<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@cssTop fold'

syn match muttatorNotation "<[0-9A-Za-z-]\+>"

syn match   muttatorComment +".*$+ contains=muttatorTodo,@Spell
syn keyword muttatorTodo FIXME NOTE TODO XXX contained

syn region muttatorString start="\z(["']\)" end="\z1" skip="\\\\\|\\\z1" oneline

syn match   muttatorLineComment +^\s*".*$+ contains=muttatorTodo,@Spell

" NOTE: match vim.vim highlighting group names
hi def link muttatorAutoCmd             muttatorCommand
hi def link muttatorAutoEvent           Type
hi def link muttatorCommand             Statement
hi def link muttatorComment             Comment
hi def link muttatorJavascriptDelimiter Delimiter
hi def link muttatorCssDelimiter        Delimiter
hi def link muttatorNotation            Special
hi def link muttatorLineComment         Comment
hi def link muttatorOption              PreProc
hi def link muttatorSetMod              muttatorOption
hi def link muttatorString              String
hi def link muttatorTodo                Todo

let b:current_syntax = "muttator"

let &cpo = s:cpo_save
unlet s:cpo_save

" vim: tw=130 et ts=4 sw=4: