summaryrefslogtreecommitdiffstats
path: root/vim/syntax/nhdes.vim
blob: dcafdf3414d7a516f0e36f24ca80e181424ec6db (plain) (blame)
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"