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 6 7" Quit when a syntax file was already loaded 8if version < 600 9 syntax clear 10elseif exists("b:current_syntax") 11 finish 12endif 13 14" A bunch of useful Inform keywords. First, case insensitive stuff 15 16syn case ignore 17 18syn keyword informDefine Constant 19 20syn keyword informType Array Attribute Class Nearby 21syn keyword informType Object Property String Routine 22syn match informType "\<Global\>" 23 24syn keyword informInclude Import Include Link Replace System_file 25 26syn keyword informPreCondit End Endif Ifdef Ifndef Iftrue Iffalse Ifv3 Ifv5 27syn keyword informPreCondit Ifnot 28 29syn keyword informPreProc Abbreviate Default Fake_action Lowstring 30syn keyword informPreProc Message Release Serial Statusline Stub Switches 31syn keyword informPreProc Trace Zcharacter 32 33syn region informGlobalRegion matchgroup=informType start="\<Global\>" matchgroup=NONE skip=+!.*$\|".*"\|'.*'+ end=";" contains=ALLBUT,informGramPreProc,informPredicate,informGrammar,informAsm,informAsmObsolete 34 35syn keyword informGramPreProc contained Verb Extend 36 37if !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\>" 45 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 60 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 68 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 105 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 135 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 144 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 168endif 169 170" Now the case sensitive stuff. 171 172syntax case match 173 174syn keyword informSysFunc child children elder indirect parent random 175syn keyword informSysFunc sibling younger youngest metaclass 176if exists("inform_highlight_glulx") 177 syn keyword informSysFunc glk 178endif 179 180syn keyword informSysConst adjectives_table actions_table classes_table 181syn keyword informSysConst identifiers_table preactions_table version_number 182syn keyword informSysConst largest_object strings_offset code_offset 183syn keyword informSysConst dict_par1 dict_par2 dict_par3 184syn keyword informSysConst actual_largest_object static_memory_offset 185syn keyword informSysConst array_names_offset readable_memory_offset 186syn keyword informSysConst cpv__start cpv__end ipv__start ipv__end 187syn keyword informSysConst array__start array__end lowest_attribute_number 188syn keyword informSysConst highest_attribute_number attribute_names_array 189syn keyword informSysConst lowest_property_number highest_property_number 190syn keyword informSysConst property_names_array lowest_action_number 191syn keyword informSysConst highest_action_number action_names_array 192syn keyword informSysConst lowest_fake_action_number highest_fake_action_number 193syn keyword informSysConst fake_action_names_array lowest_routine_number 194syn keyword informSysConst highest_routine_number routines_array 195syn keyword informSysConst routine_names_array routine_flags_array 196syn keyword informSysConst lowest_global_number highest_global_number globals_array 197syn keyword informSysConst global_names_array global_flags_array 198syn keyword informSysConst lowest_array_number highest_array_number arrays_array 199syn keyword informSysConst array_names_array array_flags_array lowest_constant_number 200syn keyword informSysConst highest_constant_number constants_array constant_names_array 201syn keyword informSysConst lowest_class_number highest_class_number class_objects_array 202syn keyword informSysConst lowest_object_number highest_object_number 203if !exists("inform_highlight_old") 204 syn keyword informSysConst sys_statusline_flag 205endif 206 207syn keyword informConditional default else if switch 208 209syn keyword informRepeat break continue do for objectloop until while 210 211syn keyword informStatement box font give inversion jump move new_line 212syn keyword informStatement print print_ret quit read remove restore return 213syn keyword informStatement rfalse rtrue save spaces string style 214 215syn keyword informOperator roman reverse bold underline fixed on off to 216syn keyword informOperator near from 217 218syn keyword informKeyword dictionary symbols objects verbs assembly 219syn keyword informKeyword expressions lines tokens linker on off alias long 220syn keyword informKeyword additive score time string table 221syn keyword informKeyword with private has class error fatalerror 222syn keyword informKeyword warning self 223if !exists("inform_highlight_old") 224 syn keyword informKeyword buffer 225endif 226 227syn keyword informMetaAttrib remaining create destroy recreate copy call 228syn keyword informMetaAttrib print_to_array 229 230syn keyword informPredicate has hasnt in notin ofclass or 231syn keyword informPredicate provides 232 233syn keyword informGrammar contained noun held multi multiheld multiexcept 234syn keyword informGrammar contained multiinside creature special number 235syn keyword informGrammar contained scope topic reverse meta only replace 236syn keyword informGrammar contained first last 237 238syn keyword informKeywordObsolete contained initial data initstr 239 240syn keyword informTodo contained TODO 241 242" Assembly language mnemonics must be preceded by a '@'. 243 244syn match informAsmContainer "@\s*\k*" contains=informAsm,informAsmObsolete 245 246if 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 261else 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 293endif 294 295" Handling for different versions of VIM. 296 297if version >= 600 298 setlocal iskeyword+=$ 299 command -nargs=+ SynDisplay syntax <args> display 300else 301 set iskeyword+=$ 302 command -nargs=+ SynDisplay syntax <args> 303endif 304 305" Grammar sections. 306 307syn region informGrammarSection matchgroup=informGramPreProc start="\<Verb\|Extend\>" skip=+".*"+ end=";"he=e-1 contains=ALLBUT,informAsm 308 309" Special character forms. 310 311SynDisplay match informBadAccent contained "@[^{[:digit:]]\D" 312SynDisplay match informBadAccent contained "@{[^}]*}" 313SynDisplay match informAccent contained "@:[aouAOUeiyEI]" 314SynDisplay match informAccent contained "@'[aeiouyAEIOUY]" 315SynDisplay match informAccent contained "@`[aeiouAEIOU]" 316SynDisplay match informAccent contained "@\^[aeiouAEIOU]" 317SynDisplay match informAccent contained "@\~[anoANO]" 318SynDisplay match informAccent contained "@/[oO]" 319SynDisplay match informAccent contained "@ss\|@<<\|@>>\|@oa\|@oA\|@ae\|@AE\|@cc\|@cC" 320SynDisplay match informAccent contained "@th\|@et\|@Th\|@Et\|@LL\|@oe\|@OE\|@!!\|@??" 321SynDisplay match informAccent contained "@{\x\{1,4}}" 322SynDisplay match informBadStrUnicode contained "@@\D" 323SynDisplay match informStringUnicode contained "@@\d\+" 324SynDisplay match informStringCode contained "@\d\d" 325 326" String and Character constants. Ordering is important here. 327syn region informString start=+"+ skip=+\\\\+ end=+"+ contains=informAccent,informStringUnicode,informStringCode,informBadAccent,informBadStrUnicode 328syn region informDictString start="'" end="'" contains=informAccent,informBadAccent 329SynDisplay match informBadDictString "''" 330SynDisplay match informDictString "'''" 331 332" Integer numbers: decimal, hexadecimal and binary. 333SynDisplay match informNumber "\<\d\+\>" 334SynDisplay match informNumber "\<\$\x\+\>" 335SynDisplay match informNumber "\<\$\$[01]\+\>" 336 337" Comments 338syn match informComment "!.*" contains=informTodo 339 340" Syncronization 341syn sync match informSyncStringEnd grouphere NONE /"[;,]\s*$/ 342syn sync match informSyncRoutineEnd grouphere NONE /][;,]\s*$/ 343syn sync match informSyncCommentEnd grouphere NONE /^\s*!.*$/ 344syn sync match informSyncRoutine groupthere informGrammarSection "\<Verb\|Extend\>" 345syn sync maxlines=500 346 347delcommand SynDisplay 348 349" The default highlighting. 350if 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 357 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 402 403 delcommand HiLink 404endif 405 406let b:current_syntax = "inform" 407 408" vim: ts=8 409