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