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
|
" Vim syntax file
" Language: NetHack DES file
" Author: Pasi Kallinen <paxed@alt.org>
" Version: 20061119
" Copyright: Copyright (c) 2006 Pasi Kallinen
" Licence: You may redistribute this under the same terms as NetHack itself
if exists("b:current_syntax")
finish
endif
syn sync minlines=30
" we're case sensitive
syn case match
" some keywords use '-'
setlocal iskeyword+=-
syn region nhDesComment start=/^[ \t]*#/ end=/$/
syn keyword nhDesCommandNoArgs
\ NOMAP RANDOM_CORRIDORS WALLIFY
syn keyword nhDesCommandWithArgs
\ ALTAR BRANCH CHANCE CONTAINER CORRIDOR DOOR DRAWBRIDGE ENGRAVING
\ FLAGS FOUNTAIN GEOMETRY GOLD INIT_MAP LADDER LEVEL MAZE MAZEWALK
\ MESSAGE MONSTER NAME NON_DIGGABLE NON_PASSWALL OBJECT POOL PORTAL
\ RANDOM_MONSTERS RANDOM_OBJECTS RANDOM_PLACES REGION ROOM SINK STAIR
\ SUBROOM TELEPORT_REGION TRAP
syn keyword nhDesRegister
\ align monster object place
syn keyword nhDesConstant
\ altar arboreal asleep awake blessed bottom broken burn center chaos
\ closed coaligned \contained cursed down dust east engrave false filled
\ half-left half-right hardfloor hostile law left levregion lit locked
\ mark m_feature m_monster m_object neutral noalign nodoor nommap
\ noncoaligned none north noteleport open peaceful random right sanctum
\ shortsighted shrine south top true uncursed unfilled unlit up west
syn region nhDesString start=/"/ end=/"/
syn match nhDesChar /'.'/
syn match nhDesCoord /(\s*\d\+\s*,\s*\d\+\s*)/
syn match nhDesRegion /(\s*\d\+\s*,\s*\d\+\s*,\s*\d\+\s*,\s*\d\+\s*)/
syn match nhDesMapCharDoor /[+S]/ contained
syn match nhDesMapCharFloor /[\.B]/ contained
syn match nhDesMapCharCorridor /[#H]/ contained
syn match nhDesMapCharWall /[\-\| ]/ contained
syn match nhDesMapCharWater /[WP}{]/ contained
syn match nhDesMapCharThrone /\\/ contained
syn match nhDesMapCharAir /A/ contained
syn match nhDesMapCharCloud /C/ contained
syn match nhDesMapCharLava /L/ contained
syn match nhDesMapCharSink /K/ contained
syn match nhDesMapCharIce /I/ contained
syn match nhDesMapCharTree /T/ contained
syn match nhDesMapCharIronbars /F/ contained
syn match nhDesMapCharLinenum /[0123456789]/ contained
" TODO: Any better way to do this?
syn match nhDesMapCharError /[^+S\.B#H\-\| WP}{\\ACLKITF0-9]/ contained
syn region nhDesMap matchgroup=nhDesCommandNoArgs start=/^MAP$/ end=/^ENDMAP$/
\ contains=nhDesMapCharError,nhDesMapCharDoor,nhDesMapCharFloor,
\ nhDesMapCharCorridor,nhDesMapCharWall,nhDesMapCharWater,
\ nhDesMapCharThrone,nhDesMapCharAir,nhDesMapCharCloud,nhDesMapCharLava,
\ nhDesMapCharSink,nhDesMapCharIce,nhDesMapCharTree,nhDesMapCharIronbars,
\ nhDesMapCharLinenum
hi def link nhDesComment Comment
hi def link nhDesCommandNoArgs KeyWord
hi def link nhDesCommandWithArgs KeyWord
hi def link nhDesRegister Constant
hi def link nhDesConstant Constant
hi def link nhDesString String
hi def link nhDesChar String
hi def link nhDesCoord Number
hi def link nhDesRegion Number
highlight nhDesMapCharDoor ctermbg=black ctermfg=brown guibg=black guifg=brown
highlight nhDesMapCharFloor ctermbg=black ctermfg=grey guibg=black guifg=grey
highlight nhDesMapCharCorridor ctermbg=black ctermfg=grey guibg=black guifg=grey
highlight nhDesMapCharWall ctermbg=black ctermfg=grey guibg=black guifg=grey
highlight nhDesMapCharWater ctermbg=black ctermfg=darkblue guibg=black guifg=darkblue
highlight nhDesMapCharThrone ctermbg=black ctermfg=yellow guibg=black guifg=yellow
highlight nhDesMapCharAir ctermbg=black ctermfg=lightblue guibg=black guifg=lightblue
highlight nhDesMapCharCloud ctermbg=black ctermfg=grey guibg=black guifg=grey
highlight nhDesMapCharLava ctermbg=black ctermfg=red guibg=black guifg=red
highlight nhDesMapCharSink ctermbg=black ctermfg=grey guibg=black guifg=grey
highlight nhDesMapCharIce ctermbg=black ctermfg=lightblue guibg=black guifg=lightblue
highlight nhDesMapCharTree ctermbg=black ctermfg=green guibg=black guifg=green
highlight nhDesMapCharIronbars ctermbg=black ctermfg=cyan guibg=black guifg=cyan
highlight nhDesMapCharLinenum ctermbg=black ctermfg=darkgrey guibg=black guifg=darkgrey
highlight nhDesMapCharError ctermbg=red ctermfg=yellow guibg=red guifg=yellow
let b:current_syntax = "nhdes"
|