Merge branch 'hack/autopaste'
[vim-kana.git] / runtime / syntax / inform.vim
blobd8ba43dceea8bf7a5695f7f1c202a39619a62e07
1 " Vim syntax file
2 " Language:     Inform
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
8 if version < 600
9   syntax clear
10 elseif exists("b:current_syntax")
11   finish
12 endif
14 " A bunch of useful Inform keywords.  First, case insensitive stuff
16 syn case ignore
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
59   endif
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
67   endif
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
93   endif
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
103      endif
104   endif
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
134   endif
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
167   endif
168 endif
170 " Now the case sensitive stuff.
172 syntax case match
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
178 endif
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
205 endif
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
225 endif
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
261 else
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
291   endif
292   syn keyword informAsmObsolete contained print_paddr print_addr print_char
293 endif
295 " Handling for different versions of VIM.
297 if version >= 600
298   setlocal iskeyword+=$
299   command -nargs=+ SynDisplay syntax <args> display
300 else
301   set iskeyword+=$
302   command -nargs=+ SynDisplay syntax <args>
303 endif
305 " Grammar sections.
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]\+\>"
337 " Comments
338 syn match informComment "!.*" contains=informTodo
340 " Syncronization
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")
351   if version < 508
352     let did_inform_syn_inits = 1
353     command -nargs=+ HiLink hi link <args>
354   else
355     command -nargs=+ HiLink hi def link <args>
356   endif
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
368   else
369     HiLink informAsmObsolete            Special
370     HiLink informKeywordObsolete        Keyword
371   endif
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
398   endif
399   HiLink informBadDictString    informError
400   HiLink informBadAccent        informError
401   HiLink informBadStrUnicode    informError
403   delcommand HiLink
404 endif
406 let b:current_syntax = "inform"
408 " vim: ts=8