3 " Maintainer: Stephen Thomas (stephen@gowarthomas.com)
4 " URL: http://www.gowarthomas.com/informvim
5 " Last Change: 2006 April 20
7 " Quit when a syntax file was already loaded
10 elseif exists("b:current_syntax")
14 " A bunch of useful Inform keywords. First, case insensitive stuff
18 syn keyword informDefine Constant
20 syn keyword informType Array Attribute Class Nearby
21 syn keyword informType Object Property String Routine
22 syn match informType "\<Global\>"
24 syn keyword informInclude Import Include Link Replace System_file
26 syn keyword informPreCondit End Endif Ifdef Ifndef Iftrue Iffalse Ifv3 Ifv5
27 syn keyword informPreCondit Ifnot
29 syn keyword informPreProc Abbreviate Default Fake_action Lowstring
30 syn keyword informPreProc Message Release Serial Statusline Stub Switches
31 syn keyword informPreProc Trace Zcharacter
33 syn region informGlobalRegion matchgroup=informType start="\<Global\>" matchgroup=NONE skip=+!.*$\|".*"\|'.*'+ end=";" contains=ALLBUT,informGramPreProc,informPredicate,informGrammar,informAsm,informAsmObsolete
35 syn keyword informGramPreProc contained Verb Extend
37 if !exists("inform_highlight_simple")
38 syn keyword informLibAttrib absent animate clothing concealed container
39 syn keyword informLibAttrib door edible enterable female general light
40 syn keyword informLibAttrib lockable locked male moved neuter on open
41 syn keyword informLibAttrib openable pluralname proper scenery scored
42 syn keyword informLibAttrib static supporter switchable talkable
43 syn keyword informLibAttrib visited workflag worn
44 syn match informLibAttrib "\<transparent\>"
46 syn keyword informLibProp e_to se_to s_to sw_to w_to nw_to n_to ne_to
47 syn keyword informLibProp u_to d_to in_to out_to before after life
48 syn keyword informLibProp door_to with_key door_dir invent plural
49 syn keyword informLibProp add_to_scope list_together react_before
50 syn keyword informLibProp react_after grammar orders initial when_open
51 syn keyword informLibProp when_closed when_on when_off description
52 syn keyword informLibProp describe article cant_go found_in time_left
53 syn keyword informLibProp number time_out daemon each_turn capacity
54 syn keyword informLibProp name short_name short_name_indef parse_name
55 syn keyword informLibProp articles inside_description
56 if !exists("inform_highlight_old")
57 syn keyword informLibProp compass_look before_implicit
58 syn keyword informLibProp ext_initialise ext_messages
61 syn keyword informLibObj e_obj se_obj s_obj sw_obj w_obj nw_obj n_obj
62 syn keyword informLibObj ne_obj u_obj d_obj in_obj out_obj compass
63 syn keyword informLibObj thedark selfobj player location second actor
64 syn keyword informLibObj noun
65 if !exists("inform_highlight_old")
66 syn keyword informLibObj LibraryExtensions
69 syn keyword informLibRoutine Achieved AfterRoutines AddToScope
70 syn keyword informLibRoutine AllowPushDir Banner ChangeDefault
71 syn keyword informLibRoutine ChangePlayer CommonAncestor DictionaryLookup
72 syn keyword informLibRoutine DisplayStatus DoMenu DrawStatusLine
73 syn keyword informLibRoutine EnglishNumber HasLightSource GetGNAOfObject
74 syn keyword informLibRoutine IndirectlyContains IsSeeThrough Locale
75 syn keyword informLibRoutine LoopOverScope LTI_Insert MoveFloatingObjects
76 syn keyword informLibRoutine NextWord NextWordStopped NounDomain
77 syn keyword informLibRoutine ObjectIsUntouchable OffersLight ParseToken
78 syn keyword informLibRoutine PlaceInScope PlayerTo PrintShortName
79 syn keyword informLibRoutine PronounNotice ScopeWithin SetPronoun SetTime
80 syn keyword informLibRoutine StartDaemon StartTimer StopDaemon StopTimer
81 syn keyword informLibRoutine TestScope TryNumber UnsignedCompare
82 syn keyword informLibRoutine WordAddress WordInProperty WordLength
83 syn keyword informLibRoutine WriteListFrom YesOrNo ZRegion RunRoutines
84 syn keyword informLibRoutine AfterLife AfterPrompt Amusing BeforeParsing
85 syn keyword informLibRoutine ChooseObjects DarkToDark DeathMessage
86 syn keyword informLibRoutine GamePostRoutine GamePreRoutine Initialise
87 syn keyword informLibRoutine InScope LookRoutine NewRoom ParseNoun
88 syn keyword informLibRoutine ParseNumber ParserError PrintRank PrintVerb
89 syn keyword informLibRoutine PrintTaskName TimePasses UnknownVerb
90 if exists("inform_highlight_glulx")
91 syn keyword informLibRoutine IdentifyGlkObject HandleGlkEvent
92 syn keyword informLibRoutine InitGlkWindow
94 if !exists("inform_highlight_old")
95 syn keyword informLibRoutine KeyCharPrimitive KeyDelay ClearScreen
96 syn keyword informLibRoutine MoveCursor MainWindow StatusLineHeight
97 syn keyword informLibRoutine ScreenWidth ScreenHeight SetColour
98 syn keyword informLibRoutine DecimalNumber PrintToBuffer Length
99 syn keyword informLibRoutine UpperCase LowerCase PrintCapitalised
100 syn keyword informLibRoutine Cap Centre
101 if exists("inform_highlight_glulx")
102 syn keyword informLibRoutine PrintAnything PrintAnyToArray
106 syn keyword informLibAction Quit Restart Restore Verify Save
107 syn keyword informLibAction ScriptOn ScriptOff Pronouns Score
108 syn keyword informLibAction Fullscore LMode1 LMode2 LMode3
109 syn keyword informLibAction NotifyOn NotifyOff Version Places
110 syn keyword informLibAction Objects TraceOn TraceOff TraceLevel
111 syn keyword informLibAction ActionsOn ActionsOff RoutinesOn
112 syn keyword informLibAction RoutinesOff TimersOn TimersOff
113 syn keyword informLibAction CommandsOn CommandsOff CommandsRead
114 syn keyword informLibAction Predictable XPurloin XAbstract XTree
115 syn keyword informLibAction Scope Goto Gonear Inv InvTall InvWide
116 syn keyword informLibAction Take Drop Remove PutOn Insert Transfer
117 syn keyword informLibAction Empty Enter Exit GetOff Go Goin Look
118 syn keyword informLibAction Examine Search Give Show Unlock Lock
119 syn keyword informLibAction SwitchOn SwitchOff Open Close Disrobe
120 syn keyword informLibAction Wear Eat Yes No Burn Pray Wake
121 syn keyword informLibAction WakeOther Consult Kiss Think Smell
122 syn keyword informLibAction Listen Taste Touch Dig Cut Jump
123 syn keyword informLibAction JumpOver Tie Drink Fill Sorry Strong
124 syn keyword informLibAction Mild Attack Swim Swing Blow Rub Set
125 syn keyword informLibAction SetTo WaveHands Wave Pull Push PushDir
126 syn keyword informLibAction Turn Squeeze LookUnder ThrowAt Tell
127 syn keyword informLibAction Answer Buy Ask AskFor Sing Climb Wait
128 syn keyword informLibAction Sleep LetGo Receive ThrownAt Order
129 syn keyword informLibAction TheSame PluralFound Miscellany Prompt
130 syn keyword informLibAction ChangesOn ChangesOff Showverb Showobj
131 syn keyword informLibAction EmptyT VagueGo
132 if exists("inform_highlight_glulx")
133 syn keyword informLibAction GlkList
136 syn keyword informLibVariable keep_silent deadflag action special_number
137 syn keyword informLibVariable consult_from consult_words etype verb_num
138 syn keyword informLibVariable verb_word the_time real_location c_style
139 syn keyword informLibVariable parser_one parser_two listing_together wn
140 syn keyword informLibVariable parser_action scope_stage scope_reason
141 syn keyword informLibVariable action_to_be menu_item item_name item_width
142 syn keyword informLibVariable lm_o lm_n inventory_style task_scores
143 syn keyword informLibVariable inventory_stage
145 syn keyword informLibConst AMUSING_PROVIDED DEBUG Headline MAX_CARRIED
146 syn keyword informLibConst MAX_SCORE MAX_TIMERS NO_PLACES NUMBER_TASKS
147 syn keyword informLibConst OBJECT_SCORE ROOM_SCORE SACK_OBJECT Story
148 syn keyword informLibConst TASKS_PROVIDED WITHOUT_DIRECTIONS
149 syn keyword informLibConst NEWLINE_BIT INDENT_BIT FULLINV_BIT ENGLISH_BIT
150 syn keyword informLibConst RECURSE_BIT ALWAYS_BIT TERSE_BIT PARTINV_BIT
151 syn keyword informLibConst DEFART_BIT WORKFLAG_BIT ISARE_BIT CONCEAL_BIT
152 syn keyword informLibConst PARSING_REASON TALKING_REASON EACHTURN_REASON
153 syn keyword informLibConst REACT_BEFORE_REASON REACT_AFTER_REASON
154 syn keyword informLibConst TESTSCOPE_REASON LOOPOVERSCOPE_REASON
155 syn keyword informLibConst STUCK_PE UPTO_PE NUMBER_PE CANTSEE_PE TOOLIT_PE
156 syn keyword informLibConst NOTHELD_PE MULTI_PE MMULTI_PE VAGUE_PE EXCEPT_PE
157 syn keyword informLibConst ANIMA_PE VERB_PE SCENERY_PE ITGONE_PE
158 syn keyword informLibConst JUNKAFTER_PE TOOFEW_PE NOTHING_PE ASKSCOPE_PE
159 if !exists("inform_highlight_old")
160 syn keyword informLibConst WORDSIZE TARGET_ZCODE TARGET_GLULX
161 syn keyword informLibConst LIBRARY_PARSER LIBRARY_VERBLIB LIBRARY_GRAMMAR
162 syn keyword informLibConst LIBRARY_ENGLISH NO_SCORE START_MOVE
163 syn keyword informLibConst CLR_DEFAULT CLR_BLACK CLR_RED CLR_GREEN
164 syn keyword informLibConst CLR_YELLOW CLR_BLUE CLR_MAGENTA CLR_CYAN
165 syn keyword informLibConst CLR_WHITE CLR_PURPLE CLR_AZURE
166 syn keyword informLibConst WIN_ALL WIN_MAIN WIN_STATUS
170 " Now the case sensitive stuff.
174 syn keyword informSysFunc child children elder indirect parent random
175 syn keyword informSysFunc sibling younger youngest metaclass
176 if exists("inform_highlight_glulx")
177 syn keyword informSysFunc glk
180 syn keyword informSysConst adjectives_table actions_table classes_table
181 syn keyword informSysConst identifiers_table preactions_table version_number
182 syn keyword informSysConst largest_object strings_offset code_offset
183 syn keyword informSysConst dict_par1 dict_par2 dict_par3
184 syn keyword informSysConst actual_largest_object static_memory_offset
185 syn keyword informSysConst array_names_offset readable_memory_offset
186 syn keyword informSysConst cpv__start cpv__end ipv__start ipv__end
187 syn keyword informSysConst array__start array__end lowest_attribute_number
188 syn keyword informSysConst highest_attribute_number attribute_names_array
189 syn keyword informSysConst lowest_property_number highest_property_number
190 syn keyword informSysConst property_names_array lowest_action_number
191 syn keyword informSysConst highest_action_number action_names_array
192 syn keyword informSysConst lowest_fake_action_number highest_fake_action_number
193 syn keyword informSysConst fake_action_names_array lowest_routine_number
194 syn keyword informSysConst highest_routine_number routines_array
195 syn keyword informSysConst routine_names_array routine_flags_array
196 syn keyword informSysConst lowest_global_number highest_global_number globals_array
197 syn keyword informSysConst global_names_array global_flags_array
198 syn keyword informSysConst lowest_array_number highest_array_number arrays_array
199 syn keyword informSysConst array_names_array array_flags_array lowest_constant_number
200 syn keyword informSysConst highest_constant_number constants_array constant_names_array
201 syn keyword informSysConst lowest_class_number highest_class_number class_objects_array
202 syn keyword informSysConst lowest_object_number highest_object_number
203 if !exists("inform_highlight_old")
204 syn keyword informSysConst sys_statusline_flag
207 syn keyword informConditional default else if switch
209 syn keyword informRepeat break continue do for objectloop until while
211 syn keyword informStatement box font give inversion jump move new_line
212 syn keyword informStatement print print_ret quit read remove restore return
213 syn keyword informStatement rfalse rtrue save spaces string style
215 syn keyword informOperator roman reverse bold underline fixed on off to
216 syn keyword informOperator near from
218 syn keyword informKeyword dictionary symbols objects verbs assembly
219 syn keyword informKeyword expressions lines tokens linker on off alias long
220 syn keyword informKeyword additive score time string table
221 syn keyword informKeyword with private has class error fatalerror
222 syn keyword informKeyword warning self
223 if !exists("inform_highlight_old")
224 syn keyword informKeyword buffer
227 syn keyword informMetaAttrib remaining create destroy recreate copy call
228 syn keyword informMetaAttrib print_to_array
230 syn keyword informPredicate has hasnt in notin ofclass or
231 syn keyword informPredicate provides
233 syn keyword informGrammar contained noun held multi multiheld multiexcept
234 syn keyword informGrammar contained multiinside creature special number
235 syn keyword informGrammar contained scope topic reverse meta only replace
236 syn keyword informGrammar contained first last
238 syn keyword informKeywordObsolete contained initial data initstr
240 syn keyword informTodo contained TODO
242 " Assembly language mnemonics must be preceded by a '@'.
244 syn match informAsmContainer "@\s*\k*" contains=informAsm,informAsmObsolete
246 if exists("inform_highlight_glulx")
247 syn keyword informAsm contained nop add sub mul div mod neg bitand bitor
248 syn keyword informAsm contained bitxor bitnot shiftl sshiftr ushiftr jump jz
249 syn keyword informAsm contained jnz jeq jne jlt jge jgt jle jltu jgeu jgtu
250 syn keyword informAsm contained jleu call return catch throw tailcall copy
251 syn keyword informAsm contained copys copyb sexs sexb aload aloads aloadb
252 syn keyword informAsm contained aloadbit astore astores astoreb astorebit
253 syn keyword informAsm contained stkcount stkpeek stkswap stkroll stkcopy
254 syn keyword informAsm contained streamchar streamnum streamstr gestalt
255 syn keyword informAsm contained debugtrap getmemsize setmemsize jumpabs
256 syn keyword informAsm contained random setrandom quit verify restart save
257 syn keyword informAsm contained restore saveundo restoreundo protect glk
258 syn keyword informAsm contained getstringtbl setstringtbl getiosys setiosys
259 syn keyword informAsm contained linearsearch binarysearch linkedsearch
260 syn keyword informAsm contained callf callfi callfii callfiii
262 syn keyword informAsm contained je jl jg dec_chk inc_chk jin test or and
263 syn keyword informAsm contained test_attr set_attr clear_attr store
264 syn keyword informAsm contained insert_obj loadw loadb get_prop
265 syn keyword informAsm contained get_prop_addr get_next_prop add sub mul div
266 syn keyword informAsm contained mod call storew storeb put_prop sread
267 syn keyword informAsm contained print_num random push pull
268 syn keyword informAsm contained split_window set_window output_stream
269 syn keyword informAsm contained input_stream sound_effect jz get_sibling
270 syn keyword informAsm contained get_child get_parent get_prop_len inc dec
271 syn keyword informAsm contained remove_obj print_obj ret jump
272 syn keyword informAsm contained load not rtrue rfalse print
273 syn keyword informAsm contained print_ret nop save restore restart
274 syn keyword informAsm contained ret_popped pop quit new_line show_status
275 syn keyword informAsm contained verify call_2s call_vs aread call_vs2
276 syn keyword informAsm contained erase_window erase_line set_cursor get_cursor
277 syn keyword informAsm contained set_text_style buffer_mode read_char
278 syn keyword informAsm contained scan_table call_1s call_2n set_colour throw
279 syn keyword informAsm contained call_vn call_vn2 tokenise encode_text
280 syn keyword informAsm contained copy_table print_table check_arg_count
281 syn keyword informAsm contained call_1n catch piracy log_shift art_shift
282 syn keyword informAsm contained set_font save_undo restore_undo draw_picture
283 syn keyword informAsm contained picture_data erase_picture set_margins
284 syn keyword informAsm contained move_window window_size window_style
285 syn keyword informAsm contained get_wind_prop scroll_window pop_stack
286 syn keyword informAsm contained read_mouse mouse_window push_stack
287 syn keyword informAsm contained put_wind_prop print_form make_menu
288 syn keyword informAsm contained picture_table
289 if !exists("inform_highlight_old")
290 syn keyword informAsm contained check_unicode print_unicode
292 syn keyword informAsmObsolete contained print_paddr print_addr print_char
295 " Handling for different versions of VIM.
298 setlocal iskeyword+=$
299 command -nargs=+ SynDisplay syntax <args> display
302 command -nargs=+ SynDisplay syntax <args>
307 syn region informGrammarSection matchgroup=informGramPreProc start="\<Verb\|Extend\>" skip=+".*"+ end=";"he=e-1 contains=ALLBUT,informAsm
309 " Special character forms.
311 SynDisplay match informBadAccent contained "@[^{[:digit:]]\D"
312 SynDisplay match informBadAccent contained "@{[^}]*}"
313 SynDisplay match informAccent contained "@:[aouAOUeiyEI]"
314 SynDisplay match informAccent contained "@'[aeiouyAEIOUY]"
315 SynDisplay match informAccent contained "@`[aeiouAEIOU]"
316 SynDisplay match informAccent contained "@\^[aeiouAEIOU]"
317 SynDisplay match informAccent contained "@\~[anoANO]"
318 SynDisplay match informAccent contained "@/[oO]"
319 SynDisplay match informAccent contained "@ss\|@<<\|@>>\|@oa\|@oA\|@ae\|@AE\|@cc\|@cC"
320 SynDisplay match informAccent contained "@th\|@et\|@Th\|@Et\|@LL\|@oe\|@OE\|@!!\|@??"
321 SynDisplay match informAccent contained "@{\x\{1,4}}"
322 SynDisplay match informBadStrUnicode contained "@@\D"
323 SynDisplay match informStringUnicode contained "@@\d\+"
324 SynDisplay match informStringCode contained "@\d\d"
326 " String and Character constants. Ordering is important here.
327 syn region informString start=+"+ skip=+\\\\+ end=+"+ contains=informAccent,informStringUnicode,informStringCode,informBadAccent,informBadStrUnicode
328 syn region informDictString start="'" end="'" contains=informAccent,informBadAccent
329 SynDisplay match informBadDictString "''"
330 SynDisplay match informDictString "'''"
332 " Integer numbers: decimal, hexadecimal and binary.
333 SynDisplay match informNumber "\<\d\+\>"
334 SynDisplay match informNumber "\<\$\x\+\>"
335 SynDisplay match informNumber "\<\$\$[01]\+\>"
338 syn match informComment "!.*" contains=informTodo
341 syn sync match informSyncStringEnd grouphere NONE /"[;,]\s*$/
342 syn sync match informSyncRoutineEnd grouphere NONE /][;,]\s*$/
343 syn sync match informSyncCommentEnd grouphere NONE /^\s*!.*$/
344 syn sync match informSyncRoutine groupthere informGrammarSection "\<Verb\|Extend\>"
345 syn sync maxlines=500
347 delcommand SynDisplay
349 " The default highlighting.
350 if version >= 508 || !exists("did_inform_syn_inits")
352 let did_inform_syn_inits = 1
353 command -nargs=+ HiLink hi link <args>
355 command -nargs=+ HiLink hi def link <args>
358 HiLink informDefine Define
359 HiLink informType Type
360 HiLink informInclude Include
361 HiLink informPreCondit PreCondit
362 HiLink informPreProc PreProc
363 HiLink informGramPreProc PreProc
364 HiLink informAsm Special
365 if !exists("inform_suppress_obsolete")
366 HiLink informAsmObsolete informError
367 HiLink informKeywordObsolete informError
369 HiLink informAsmObsolete Special
370 HiLink informKeywordObsolete Keyword
372 HiLink informPredicate Operator
373 HiLink informSysFunc Identifier
374 HiLink informSysConst Identifier
375 HiLink informConditional Conditional
376 HiLink informRepeat Repeat
377 HiLink informStatement Statement
378 HiLink informOperator Operator
379 HiLink informKeyword Keyword
380 HiLink informGrammar Keyword
381 HiLink informDictString String
382 HiLink informNumber Number
383 HiLink informError Error
384 HiLink informString String
385 HiLink informComment Comment
386 HiLink informAccent Special
387 HiLink informStringUnicode Special
388 HiLink informStringCode Special
389 HiLink informTodo Todo
390 if !exists("inform_highlight_simple")
391 HiLink informLibAttrib Identifier
392 HiLink informLibProp Identifier
393 HiLink informLibObj Identifier
394 HiLink informLibRoutine Identifier
395 HiLink informLibVariable Identifier
396 HiLink informLibConst Identifier
397 HiLink informLibAction Identifier
399 HiLink informBadDictString informError
400 HiLink informBadAccent informError
401 HiLink informBadStrUnicode informError
406 let b:current_syntax = "inform"