1" Vim syntax file 2" Language: LPC 3" Maintainer: Shizhu Pan <[email protected]> 4" URL: http://poet.tomud.com/pub/lpc.vim.bz2 5" Last Change: 2011 Dec 10 by Thilo Six 6" Comments: If you are using Vim 6.2 or later, see :h lpc.vim for 7" file type recognizing, if not, you had to use modeline. 8 9 10" Nodule: This is the start nodule. {{{1 11 12" For version 5.x: Clear all syntax items 13" For version 6.x: Quit when a syntax file was already loaded 14if version < 600 15 syntax clear 16elseif exists("b:current_syntax") 17 finish 18endif 19 20let s:cpo_save = &cpo 21set cpo&vim 22 23" Nodule: Keywords {{{1 24 25" LPC keywords 26" keywords should always be highlighted so "contained" is not used. 27syn cluster lpcKeywdGrp contains=lpcConditional,lpcLabel,lpcOperator,lpcRepeat,lpcStatement,lpcModifier,lpcReserved 28 29syn keyword lpcConditional if else switch 30syn keyword lpcLabel case default 31syn keyword lpcOperator catch efun in inherit 32syn keyword lpcRepeat do for foreach while 33syn keyword lpcStatement break continue return 34 35syn match lpcEfunError /efun[^:]/ display 36 37" Illegal to use keyword as function 38" It's not working, maybe in the next version. 39syn keyword lpcKeywdError contained if for foreach return switch while 40 41" These are keywords only because they take lvalue or type as parameter, 42" so these keywords should only be used as function but cannot be names of 43" user-defined functions. 44syn keyword lpcKeywdFunc new parse_command sscanf time_expression 45 46" Nodule: Type and modifiers {{{1 47 48" Type names list. 49 50" Special types 51syn keyword lpcType void mixed unknown 52" Scalar/Value types. 53syn keyword lpcType int float string 54" Pointer types. 55syn keyword lpcType array buffer class function mapping object 56" Other types. 57if exists("lpc_compat_32") 58 syn keyword lpcType closure status funcall 59else 60 syn keyword lpcError closure status 61 syn keyword lpcType multiset 62endif 63 64" Type modifier. 65syn keyword lpcModifier nomask private public 66syn keyword lpcModifier varargs virtual 67 68" sensible modifiers 69if exists("lpc_pre_v22") 70 syn keyword lpcReserved nosave protected ref 71 syn keyword lpcModifier static 72else 73 syn keyword lpcError static 74 syn keyword lpcModifier nosave protected ref 75endif 76 77" Nodule: Applies {{{1 78 79" Match a function declaration or function pointer 80syn match lpcApplyDecl excludenl /->\h\w*(/me=e-1 contains=lpcApplies transparent display 81 82" We should note that in func_spec.c the efun definition syntax is so 83" complicated that I use such a long regular expression to describe. 84syn match lpcLongDecl excludenl /\(\s\|\*\)\h\+\s\h\+(/me=e-1 contains=@lpcEfunGroup,lpcType,@lpcKeywdGrp transparent display 85 86" this is form for all functions 87" ->foo() form had been excluded 88syn match lpcFuncDecl excludenl /\h\w*(/me=e-1 contains=lpcApplies,@lpcEfunGroup,lpcKeywdError transparent display 89 90" The (: :) parenthesis or $() forms a function pointer 91syn match lpcFuncName /(:\s*\h\+\s*:)/me=e-1 contains=lpcApplies,@lpcEfunGroup transparent display contained 92syn match lpcFuncName /(:\s*\h\+,/ contains=lpcApplies,@lpcEfunGroup transparent display contained 93syn match lpcFuncName /\$(\h\+)/ contains=lpcApplies,@lpcEfunGroup transparent display contained 94 95" Applies list. 96" system applies 97syn keyword lpcApplies contained __INIT clean_up create destructor heart_beat id init move_or_destruct reset 98" interactive 99syn keyword lpcApplies contained catch_tell logon net_dead process_input receive_message receive_snoop telnet_suboption terminal_type window_size write_prompt 100" master applies 101syn keyword lpcApplies contained author_file compile_object connect crash creator_file domain_file epilog error_handler flag get_bb_uid get_root_uid get_save_file_name log_error make_path_absolute object_name preload privs_file retrieve_ed_setup save_ed_setup slow_shutdown 102syn keyword lpcApplies contained valid_asm valid_bind valid_compile_to_c valid_database valid_hide valid_link valid_object valid_override valid_read valid_save_binary valid_seteuid valid_shadow valid_socket valid_write 103" parsing 104syn keyword lpcApplies contained inventory_accessible inventory_visible is_living parse_command_adjectiv_id_list parse_command_adjective_id_list parse_command_all_word parse_command_id_list parse_command_plural_id_list parse_command_prepos_list parse_command_users parse_get_environment parse_get_first_inventory parse_get_next_inventory parser_error_message 105 106 107" Nodule: Efuns {{{1 108 109syn cluster lpcEfunGroup contains=lpc_efuns,lpcOldEfuns,lpcNewEfuns,lpcKeywdFunc 110 111" Compat32 efuns 112if exists("lpc_compat_32") 113 syn keyword lpc_efuns contained closurep heart_beat_info m_delete m_values m_indices query_once_interactive strstr 114else 115 syn match lpcErrFunc /#`\h\w*/ 116 " Shell compatible first line comment. 117 syn region lpcCommentFunc start=/^#!/ end=/$/ 118endif 119 120" pre-v22 efuns which are removed in newer versions. 121syn keyword lpcOldEfuns contained tail dump_socket_status 122 123" new efuns after v22 should be added here! 124syn keyword lpcNewEfuns contained socket_status 125 126" LPC efuns list. 127" DEBUG efuns Not included. 128" New efuns should NOT be added to this list, see v22 efuns above. 129" Efuns list {{{2 130syn keyword lpc_efuns contained acos add_action all_inventory all_previous_objects allocate allocate_buffer allocate_mapping apply arrayp asin atan author_stats 131syn keyword lpc_efuns contained bind break_string bufferp 132syn keyword lpc_efuns contained cache_stats call_other call_out call_out_info call_stack capitalize catch ceil check_memory children classp clear_bit clone_object clonep command commands copy cos cp crc32 crypt ctime 133syn keyword lpc_efuns contained db_close db_commit db_connect db_exec db_fetch db_rollback db_status debug_info debugmalloc debug_message deep_inherit_list deep_inventory destruct disable_commands disable_wizard domain_stats dumpallobj dump_file_descriptors dump_prog 134syn keyword lpc_efuns contained each ed ed_cmd ed_start enable_commands enable_wizard environment error errorp eval_cost evaluate exec exp explode export_uid external_start 135syn keyword lpc_efuns contained fetch_variable file_length file_name file_size filter filter_array filter_mapping find_call_out find_living find_object find_player first_inventory floatp floor flush_messages function_exists function_owner function_profile functionp functions 136syn keyword lpc_efuns contained generate_source get_char get_config get_dir geteuid getuid 137syn keyword lpc_efuns contained heart_beats 138syn keyword lpc_efuns contained id_matrix implode in_edit in_input inherit_list inherits input_to interactive intp 139syn keyword lpc_efuns contained keys 140syn keyword lpc_efuns contained link living livings load_object localtime log log10 lookat_rotate lower_case lpc_info 141syn keyword lpc_efuns contained malloc_check malloc_debug malloc_status map map_array map_delete map_mapping mapp master match_path max_eval_cost member_array memory_info memory_summary message mkdir moncontrol move_object mud_status 142syn keyword lpc_efuns contained named_livings network_stats next_bit next_inventory notify_fail nullp 143syn keyword lpc_efuns contained objectp objects oldcrypt opcprof origin 144syn keyword lpc_efuns contained parse_add_rule parse_add_synonym parse_command parse_dump parse_init parse_my_rules parse_refresh parse_remove parse_sentence pluralize pointerp pow present previous_object printf process_string process_value program_info 145syn keyword lpc_efuns contained query_ed_mode query_heart_beat query_host_name query_idle query_ip_name query_ip_number query_ip_port query_load_average query_notify_fail query_privs query_replaced_program query_shadowing query_snoop query_snooping query_verb 146syn keyword lpc_efuns contained random read_buffer read_bytes read_file receive reclaim_objects refs regexp reg_assoc reload_object remove_action remove_call_out remove_interactive remove_shadow rename repeat_string replace_program replace_string replaceable reset_eval_cost resolve restore_object restore_variable rm rmdir rotate_x rotate_y rotate_z rusage 147syn keyword lpc_efuns contained save_object save_variable say scale set_author set_bit set_eval_limit set_heart_beat set_hide set_light set_living_name set_malloc_mask set_privs set_reset set_this_player set_this_user seteuid shadow shallow_inherit_list shout shutdown sin sizeof snoop socket_accept socket_acquire socket_address socket_bind socket_close socket_connect socket_create socket_error socket_listen socket_release socket_write sort_array sprintf sqrt stat store_variable strcmp stringp strlen strsrch 148syn keyword lpc_efuns contained tan tell_object tell_room terminal_colour test_bit this_interactive this_object this_player this_user throw time to_float to_int trace traceprefix translate typeof 149syn keyword lpc_efuns contained undefinedp unique_array unique_mapping upper_case uptime userp users 150syn keyword lpc_efuns contained values variables virtualp 151syn keyword lpc_efuns contained wizardp write write_buffer write_bytes write_file 152 153" Nodule: Constants {{{1 154 155" LPC Constants. 156" like keywords, constants are always highlighted, be careful to choose only 157" the constants we used to add to this list. 158syn keyword lpcConstant __ARCH__ __COMPILER__ __DIR__ __FILE__ __OPTIMIZATION__ __PORT__ __VERSION__ 159" Defines in options.h are all predefined in LPC sources surrounding by 160" two underscores. Do we need to include all of that? 161syn keyword lpcConstant __SAVE_EXTENSION__ __HEARTBEAT_INTERVAL__ 162" from the documentation we know that these constants remains only for 163" backward compatibility and should not be used any more. 164syn keyword lpcConstant HAS_ED HAS_PRINTF HAS_RUSAGE HAS_DEBUG_LEVEL 165syn keyword lpcConstant MUD_NAME F__THIS_OBJECT 166 167" Nodule: Todo for this file. {{{1 168 169" TODO : need to check for LPC4 syntax and other series of LPC besides 170" v22, b21 and l32, if you had a good idea, contact me at [email protected] 171" and I will be appreciated about that. 172 173" Notes about some FAQ: 174" 175" About variables : We adopts the same behavior for C because almost all the 176" LPC programmers are also C programmers, so we don't need separate settings 177" for C and LPC. That is the reason why I don't change variables like 178" "c_no_utf"s to "lpc_no_utf"s. 179" 180" Copy : Some of the following seems to be copied from c.vim but not quite 181" the same in details because the syntax for C and LPC is different. 182" 183" Color scheme : this syntax file had been thouroughly tested to work well 184" for all of the dark-backgrounded color schemes Vim has provided officially, 185" and it should be quite Ok for all of the bright-backgrounded color schemes, 186" of course it works best for the color scheme that I am using, download it 187" from http://poet.tomud.com/pub/ps_color.vim.bz2 if you want to try it. 188" 189 190" Nodule: String and Character {{{1 191 192 193" String and Character constants 194" Highlight special characters (those which have a backslash) differently 195syn match lpcSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" 196if !exists("c_no_utf") 197 syn match lpcSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" 198endif 199 200" LPC version of sprintf() format, 201syn match lpcFormat display "%\(\d\+\)\=[-+ |=#@:.]*\(\d\+\)\=\('\I\+'\|'\I*\\'\I*'\)\=[OsdicoxXf]" contained 202syn match lpcFormat display "%%" contained 203syn region lpcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lpcSpecial,lpcFormat 204" lpcCppString: same as lpcString, but ends at end of line 205syn region lpcCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=lpcSpecial,lpcFormat 206 207" LPC preprocessor for the text formatting short cuts 208" Thanks to Dr. Charles E. Campbell <[email protected]> 209" he suggests the best way to do this. 210syn region lpcTextString start=/@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial 211syn region lpcArrayString start=/@@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial 212 213" Character 214syn match lpcCharacter "L\='[^\\]'" 215syn match lpcCharacter "L'[^']*'" contains=lpcSpecial 216syn match lpcSpecialError "L\='\\[^'\"?\\abefnrtv]'" 217syn match lpcSpecialCharacter "L\='\\['\"?\\abefnrtv]'" 218syn match lpcSpecialCharacter display "L\='\\\o\{1,3}'" 219syn match lpcSpecialCharacter display "'\\x\x\{1,2}'" 220syn match lpcSpecialCharacter display "L'\\x\x\+'" 221 222" Nodule: White space {{{1 223 224" when wanted, highlight trailing white space 225if exists("c_space_errors") 226 if !exists("c_no_trail_space_error") 227 syn match lpcSpaceError display excludenl "\s\+$" 228 endif 229 if !exists("c_no_tab_space_error") 230 syn match lpcSpaceError display " \+\t"me=e-1 231 endif 232endif 233 234" Nodule: Parenthesis and brackets {{{1 235 236" catch errors caused by wrong parenthesis and brackets 237syn cluster lpcParenGroup contains=lpcParenError,lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcCommentSkip,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom 238syn region lpcParen transparent start='(' end=')' contains=ALLBUT,@lpcParenGroup,lpcCppParen,lpcErrInBracket,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcKeywdError 239" lpcCppParen: same as lpcParen but ends at end-of-line; used in lpcDefine 240syn region lpcCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInBracket,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcKeywdError 241syn match lpcParenError display ")" 242syn match lpcParenError display "\]" 243" for LPC: 244" Here we should consider the array ({ }) parenthesis and mapping ([ ]) 245" parenthesis and multiset (< >) parenthesis. 246syn match lpcErrInParen display contained "[^^]{"ms=s+1 247syn match lpcErrInParen display contained "\(}\|\]\)[^)]"me=e-1 248syn region lpcBracket transparent start='\[' end=']' contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcCppParen,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError 249" lpcCppBracket: same as lpcParen but ends at end-of-line; used in lpcDefine 250syn region lpcCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError 251syn match lpcErrInBracket display contained "[);{}]" 252 253" Nodule: Numbers {{{1 254 255" integer number, or floating point number without a dot and with "f". 256syn case ignore 257syn match lpcNumbers display transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctalError,lpcOctal 258" Same, but without octal error (for comments) 259syn match lpcNumbersCom display contained transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctal 260syn match lpcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" 261" hex number 262syn match lpcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" 263" Flag the first zero of an octal number as something special 264syn match lpcOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=lpcOctalZero 265syn match lpcOctalZero display contained "\<0" 266syn match lpcFloat display contained "\d\+f" 267" floating point number, with dot, optional exponent 268syn match lpcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" 269" floating point number, starting with a dot, optional exponent 270syn match lpcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" 271" floating point number, without dot, with exponent 272syn match lpcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" 273" flag an octal number with wrong digits 274syn match lpcOctalError display contained "0\o*[89]\d*" 275syn case match 276 277" Nodule: Comment string {{{1 278 279" lpcCommentGroup allows adding matches for special things in comments 280syn keyword lpcTodo contained TODO FIXME XXX 281syn cluster lpcCommentGroup contains=lpcTodo 282 283if exists("c_comment_strings") 284 " A comment can contain lpcString, lpcCharacter and lpcNumber. 285 syntax match lpcCommentSkip contained "^\s*\*\($\|\s\+\)" 286 syntax region lpcCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=lpcSpecial,lpcCommentSkip 287 syntax region lpcComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=lpcSpecial 288 syntax region lpcCommentL start="//" skip="\\$" end="$" keepend contains=@lpcCommentGroup,lpcComment2String,lpcCharacter,lpcNumbersCom,lpcSpaceError 289 syntax region lpcComment matchgroup=lpcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@lpcCommentGroup,lpcCommentStartError,lpcCommentString,lpcCharacter,lpcNumbersCom,lpcSpaceError 290else 291 syn region lpcCommentL start="//" skip="\\$" end="$" keepend contains=@lpcCommentGroup,lpcSpaceError 292 syn region lpcComment matchgroup=lpcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@lpcCommentGroup,lpcCommentStartError,lpcSpaceError 293endif 294" keep a // comment separately, it terminates a preproc. conditional 295syntax match lpcCommentError display "\*/" 296syntax match lpcCommentStartError display "/\*"me=e-1 contained 297 298" Nodule: Pre-processor {{{1 299 300syn region lpcPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=lpcComment,lpcCppString,lpcCharacter,lpcCppParen,lpcParenError,lpcNumbers,lpcCommentError,lpcSpaceError 301syn match lpcPreCondit display "^\s*#\s*\(else\|endif\)\>" 302if !exists("c_no_if0") 303 syn region lpcCppOut start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=lpcCppOut2 304 syn region lpcCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=lpcSpaceError,lpcCppSkip 305 syn region lpcCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=lpcSpaceError,lpcCppSkip 306endif 307syn region lpcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 308syn match lpcIncluded display contained "<[^>]*>" 309syn match lpcInclude display "^\s*#\s*include\>\s*["<]" contains=lpcIncluded 310syn match lpcLineSkip "\\$" 311syn cluster lpcPreProcGroup contains=lpcPreCondit,lpcIncluded,lpcInclude,lpcDefine,lpcErrInParen,lpcErrInBracket,lpcUserLabel,lpcSpecial,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcString,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcParen,lpcBracket,lpcMulti,lpcKeywdError 312syn region lpcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@lpcPreProcGroup 313 314if exists("lpc_pre_v22") 315 syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup 316else 317 syn region lpcPreProc start="^\s*#\s*\(pragma\>\|echo\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup 318endif 319 320" Nodule: User labels {{{1 321 322" Highlight Labels 323" User labels in LPC is not allowed, only "case x" and "default" is supported 324syn cluster lpcMultiGroup contains=lpcIncluded,lpcSpecial,lpcCommentSkip,lpcCommentString,lpcComment2String,@lpcCommentGroup,lpcCommentStartError,lpcUserCont,lpcUserLabel,lpcBitField,lpcOctalZero,lpcCppOut,lpcCppOut2,lpcCppSkip,lpcFormat,lpcNumber,lpcFloat,lpcOctal,lpcOctalError,lpcNumbersCom,lpcCppParen,lpcCppBracket,lpcCppString,lpcKeywdError 325syn region lpcMulti transparent start='\(case\|default\|public\|protected\|private\)' skip='::' end=':' contains=ALLBUT,@lpcMultiGroup 326 327syn cluster lpcLabelGroup contains=lpcUserLabel 328syn match lpcUserCont display "^\s*lpc:$" contains=@lpcLabelGroup 329 330" Don't want to match anything 331syn match lpcUserLabel display "lpc" contained 332 333" Nodule: Initializations {{{1 334 335if exists("c_minlines") 336 let b:c_minlines = c_minlines 337else 338 if !exists("c_no_if0") 339 let b:c_minlines = 50 " #if 0 constructs can be long 340 else 341 let b:c_minlines = 15 " mostly for () constructs 342 endif 343endif 344exec "syn sync ccomment lpcComment minlines=" . b:c_minlines 345 346" Make sure these options take place since we no longer depend on file type 347" plugin for C 348setlocal cindent 349setlocal fo-=t fo+=croql 350setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// 351 352" Win32 can filter files in the browse dialog 353if has("gui_win32") && !exists("b:browsefilter") 354 let b:browsefilter = "LPC Source Files (*.c *.d *.h)\t*.c;*.d;*.h\n" . 355 \ "LPC Data Files (*.scr *.o *.dat)\t*.scr;*.o;*.dat\n" . 356 \ "Text Documentation (*.txt)\t*.txt\n" . 357 \ "All Files (*.*)\t*.*\n" 358endif 359 360" Nodule: Highlight links {{{1 361 362" Define the default highlighting. 363" For version 5.7 and earlier: only when not done already 364" For version 5.8 and later: only when an item doesn't have highlighting yet 365if version >= 508 || !exists("did_lpc_syn_inits") 366 if version < 508 367 let did_lpc_syn_inits = 1 368 command -nargs=+ HiLink hi link <args> 369 else 370 command -nargs=+ HiLink hi def link <args> 371 endif 372 373 HiLink lpcModifier lpcStorageClass 374 375 HiLink lpcQuotedFmt lpcFormat 376 HiLink lpcFormat lpcSpecial 377 HiLink lpcCppString lpcString " Cpp means 378 " C Pre-Processor 379 HiLink lpcCommentL lpcComment 380 HiLink lpcCommentStart lpcComment 381 HiLink lpcUserLabel lpcLabel 382 HiLink lpcSpecialCharacter lpcSpecial 383 HiLink lpcOctal lpcPreProc 384 HiLink lpcOctalZero lpcSpecial " LPC will treat octal numbers 385 " as decimals, programmers should 386 " be aware of that. 387 HiLink lpcEfunError lpcError 388 HiLink lpcKeywdError lpcError 389 HiLink lpcOctalError lpcError 390 HiLink lpcParenError lpcError 391 HiLink lpcErrInParen lpcError 392 HiLink lpcErrInBracket lpcError 393 HiLink lpcCommentError lpcError 394 HiLink lpcCommentStartError lpcError 395 HiLink lpcSpaceError lpcError 396 HiLink lpcSpecialError lpcError 397 HiLink lpcErrFunc lpcError 398 399 if exists("lpc_pre_v22") 400 HiLink lpcOldEfuns lpc_efuns 401 HiLink lpcNewEfuns lpcError 402 else 403 HiLink lpcOldEfuns lpcReserved 404 HiLink lpcNewEfuns lpc_efuns 405 endif 406 HiLink lpc_efuns lpcFunction 407 408 HiLink lpcReserved lpcPreProc 409 HiLink lpcTextString lpcString " This should be preprocessors, but 410 HiLink lpcArrayString lpcPreProc " let's make some difference 411 " between text and array 412 413 HiLink lpcIncluded lpcString 414 HiLink lpcCommentString lpcString 415 HiLink lpcComment2String lpcString 416 HiLink lpcCommentSkip lpcComment 417 HiLink lpcCommentFunc lpcComment 418 419 HiLink lpcCppSkip lpcCppOut 420 HiLink lpcCppOut2 lpcCppOut 421 HiLink lpcCppOut lpcComment 422 423 " Standard type below 424 HiLink lpcApplies Special 425 HiLink lpcCharacter Character 426 HiLink lpcComment Comment 427 HiLink lpcConditional Conditional 428 HiLink lpcConstant Constant 429 HiLink lpcDefine Macro 430 HiLink lpcError Error 431 HiLink lpcFloat Float 432 HiLink lpcFunction Function 433 HiLink lpcIdentifier Identifier 434 HiLink lpcInclude Include 435 HiLink lpcLabel Label 436 HiLink lpcNumber Number 437 HiLink lpcOperator Operator 438 HiLink lpcPreCondit PreCondit 439 HiLink lpcPreProc PreProc 440 HiLink lpcRepeat Repeat 441 HiLink lpcStatement Statement 442 HiLink lpcStorageClass StorageClass 443 HiLink lpcString String 444 HiLink lpcStructure Structure 445 HiLink lpcSpecial LineNr 446 HiLink lpcTodo Todo 447 HiLink lpcType Type 448 449 delcommand HiLink 450endif 451 452" Nodule: This is the end nodule. {{{1 453 454let b:current_syntax = "lpc" 455 456let &cpo = s:cpo_save 457unlet s:cpo_save 458 459" vim:ts=8:nosta:sw=2:ai:si: 460" vim600:set fdm=marker: }}}1 461