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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
" Vim syntax file
" Language: Dungeon Crawl level design (.des) files.
" Maintainer: Darshan Shaligram <scintilla@gmail.com>
" Last Change: 2007 Jun 28
" Remark: Basic Vim syntax highlighting for Dungeon Crawl Stone Soup
" level design (.des) files.
"
" How to use this:
" * Put levdes.vim (this file) under ~/.vim/syntax (or similar directory for
" your system - usually C:\Program Files\Vim\vimfiles\syntax on Windows).
" * In your .vimrc, add this line:
" au BufRead,BufNewFile *.des set syntax=levdes
" Thereafter, any .des files you edit in (g)vim will use syntax highlighting.
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
if !exists("main_syntax")
let main_syntax = 'des'
endif
syn include @desLua syntax/lua.vim
syn case match
syn match desLuaBlock /\(lua\)\?\s\+{{/ contained
syn match desOtherLuaBlock /^\(prelude\|lua\|validate\|epilogue\)\?\s*{{/ contained
syn match desLuaBlockEnd /}}/ contained
"syn match desColonLine /^\s*:/ contained
syn cluster desLuaGroup contains=desLuaBlock,desOtherLuaBlock,desLuaBlockEnd
syn region desLua start=/^\s*\(lua\)\?\s*{{/ end=/}}\s*$/ contains=@desLuaGroup,@desLua keepend
syn region desLuaCol start=/^\s*:/ end=/$/ contains=@desLuaGroup,@desLua keepend
syn region desVal start=/^\s*validate\?\s*{{/ end=/}}\s*$/ contains=@desLuaGroup,@desLua keepend
syn region desPre start=/^\s*prelude\?\s*{{/ end=/}}\s*$/ contains=@desLuaGroup,@desLua keepend
syn region desEpi start=/^\s*epilogue\?\s*{{/ end=/}}\s*$/ contains=@desLuagroup,@deslua keepend
setlocal iskeyword+=:
setlocal iskeyword+=-
syn keyword desSubstDec SUBST: contained
syn keyword desNsubstDec NSUBST: contained
syn keyword desShuffleDec SHUFFLE: contained
syn region desSubst start=/^SUBST:\s*/ end=/$/ contains=desSubstDec,desSubstArg,desSubstSep,@desMapElements keepend
syn region desNsubst start=/^NSUBST:\s*/ end=/$/ contains=desNsubstDec,desSubstArg,desSubstSep,@desMapElements keepend
syn region desShuffle start=/^SHUFFLE:\s*/ end=/$/ contains=desShuffleDec,desMapFrag keepend
syn keyword desDeclarator NAME: ORIENT: DEPTH: PLACE: MONS: FLAGS: default-depth: TAGS: CHANCE: WEIGHT: ITEM: KFEAT: KMONS: KITEM: COLOUR: KMASK: KPROP: MARKER: LFLAGS: BFLAGS: LROCKCOL: LFLOORCOL: LFLOORTILE: LROCKTILE: FTILE: RTILE: TILE: SUBVAULT: FHEIGHT:
syn keyword desOrientation encompass north south east west northeast northwest southeast southwest float
syn keyword desOrientation no_hmirror no_vmirror no_rotate
syn keyword desOrientation entry pan lab bazaar allow_dup dummy mini_float minotaur
syn keyword desOrientation no_pool_fixup no_wall_fixup no_monster_gen generate_awake no_item_gen no_tele_control not_mappable no_magic_map no_secret_doors generate_loot no_dump patrolling
syn keyword desOrientation Temple Orc Elf Lair Swamp Shoal Slime Snake Hive Vault Blade Crypt Tomb Hell Dis Geh Coc Tar
syn keyword desOrientation D: contained
syn match desComment "^\s*#.*$"
syn match desEntry "\<\w*_entry\>"
" 'transparent' is a Vim syntax keyword???
syn match desTransparent "transparent"
syn match desRange "\d*-\d*"
syn match desNumber "\s\d*"
syn match desWeight "w:\d*"
syn match desSlash "/"
syn keyword desMapBookend MAP ENDMAP contained
syn match desMapFloor /\./ contained
syn match desMapWall /x/ contained
syn match desMapDoor /[+=]/ contained
syn match desMapStoneWall /c/ contained
syn match desMapCrystalWall /b/ contained
syn match desMapMetalWall /v/ contained
syn match desMapWaxWall /a/ contained
syn match desMapMonst /[0-9]/ contained
syn match desMapGold /\$/ contained
syn match desMapLava /l/ contained
syn match desMapWater /w/ contained
syn match desMapShallow /W/ contained
syn match desMapEntry /@/ contained
syn match desMapTrap /\^/ contained
syn match desMapTree /t/ contained
syn match desMapValuable /[%*|]/ contained
syn match desMapRune /O/ contained
syn cluster desMapElements contains=desMapBookend,desMapWall,desMapFloor
syn cluster desMapElements add=desMapMonst,desMapCrystalWall,desMapGold
syn cluster desMapElements add=desMapLava,desMapMetalWall,desMapDoor
syn cluster desMapElements add=desMapStoneWall,desMapWater,desMapShallow
syn cluster desMapElements add=desMapTrap,desMapEntry,desMapWaxWall,desMapTree
syn cluster desMapElements add=desMapRune,desMapValuable
syn match desSubstArg /\S/ contained nextgroup=desSubstSep skipwhite
syn match desSubstSep /[:=]/ contained nextgroup=desMapFrag skipwhite
syn region desMapFrag start=/./ end=/$/ contains=@desMapElements contained
syn region desMap start=/^\s*\<MAP\>\s*$/ end=/^\s*\<ENDMAP\>\s*$/ contains=@desMapElements keepend
hi link desDeclarator Statement
hi link desSubstDec Statement
hi link desNsubstDec Statement
hi link desShuffleDec Statement
hi link desMapBookend Statement
hi link desLuaBlock Statement
hi link desOtherLuaBlock Statement
hi link desLuaBlockEnd Statement
"hi link desColonLine Statement
hi link desComment Comment
hi link desMap String
hi link desSubstArg String
hi link desRange String
hi link desEntry Type
hi link desNumber String
hi link desWeight String
hi link desSlash Comment
hi link desSubstSep Type
hi link desOrientation Type
hi link desTransparent Type
" It would be really nice if this worked for people who switch bg
" post-loading, like "normal" highlights do. Does someone know how?
if &bg == "dark"
hi desMapWall guifg=darkgray term=bold gui=bold ctermfg=white
hi desMapCrystalWall guifg=#009040 term=bold gui=bold ctermfg=green
hi desMapStoneWall guifg=black gui=bold ctermfg=gray
hi desMapMetalWall guifg=#004090 term=bold gui=bold ctermfg=lightblue
hi desMapWaxWall guifg=#a0a000 gui=bold ctermfg=yellow
hi desMapFloor guifg=#008000 ctermfg=darkgray
hi desMapMonst guifg=red ctermfg=red
hi desMapLava guifg=red gui=bold ctermfg=darkred
hi desMapTrap guifg=red gui=bold ctermfg=darkred
hi desMapWater guifg=lightblue ctermfg=darkblue
hi desMapShallow guifg=lightcyan ctermfg=darkcyan
hi desMapGold guifg=#c09000 ctermfg=yellow
hi desMapDoor guifg=brown gui=bold ctermfg=white
hi desMapEntry guifg=black guibg=white gui=bold ctermfg=white ctermbg=black
hi desMapTree guifg=#00aa00 ctermfg=darkgreen
hi desMapValuable guifg=darkgreen gui=bold ctermfg=yellow
hi desMapRune guifg=orange gui=bold ctermfg=magenta
else
hi desMapWall guifg=darkgray term=bold gui=bold ctermfg=brown
hi desMapCrystalWall guifg=#009040 term=bold gui=bold ctermfg=green
hi desMapStoneWall guifg=black gui=bold ctermfg=darkgray
hi desMapMetalWall guifg=#004090 term=bold gui=bold ctermfg=blue
hi desMapWaxWall guifg=#a0a000 gui=bold ctermfg=yellow
hi desMapFloor guifg=#008000 ctermfg=lightgray
hi desMapMonst guifg=red ctermfg=darkred
hi desMapLava guifg=red gui=bold ctermfg=red
hi desMapTrap guifg=red gui=bold ctermfg=red
hi desMapWater guifg=lightblue ctermfg=darkblue
hi desMapShallow guifg=lightcyan ctermfg=darkcyan
hi desMapGold guifg=#c09000 ctermfg=yellow
hi desMapDoor guifg=brown gui=bold ctermfg=black ctermbg=brown
hi desMapEntry guifg=black guibg=white gui=bold ctermfg=white ctermbg=black
hi desMapTree guifg=#00aa00 ctermfg=darkgreen
hi desMapValuable guifg=darkgreen gui=bold ctermfg=lightgreen
hi desMapRune guifg=orange gui=bold ctermfg=white
endif
syn sync minlines=45
let b:current_syntax="levdes"
|