diff --git a/runtime/syntax/lpc.vim b/runtime/syntax/lpc.vim
new file mode 100644
index 0000000..7665c1a
--- /dev/null
+++ b/runtime/syntax/lpc.vim
@@ -0,0 +1,455 @@
+" Vim syntax file
+" Language:	LPC
+" Maintainer:	Shizhu Pan <poet@mudbuilder.net>
+" URL:		http://poet.tomud.com/pub/lpc.vim.bz2
+" Last Change:	2003 May 11
+" Comments:	If you are using Vim 6.2 or later, see :h lpc.vim for
+"		file type recognizing, if not, you had to use modeline.
+
+
+" Nodule: This is the start nodule. {{{1
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" Nodule: Keywords {{{1
+
+" LPC keywords
+" keywords should always be highlighted so "contained" is not used.
+syn cluster	lpcKeywdGrp	contains=lpcConditional,lpcLabel,lpcOperator,lpcRepeat,lpcStatement,lpcModifier,lpcReserved
+
+syn keyword	lpcConditional	if else switch
+syn keyword	lpcLabel	case default
+syn keyword	lpcOperator	catch efun in inherit
+syn keyword	lpcRepeat	do for foreach while
+syn keyword	lpcStatement	break continue return
+
+syn match	lpcEfunError	/efun[^:]/ display
+
+" Illegal to use keyword as function
+" It's not working, maybe in the next version.
+syn keyword	lpcKeywdError	contained if for foreach return switch while
+
+" These are keywords only because they take lvalue or type as parameter,
+" so these keywords should only be used as function but cannot be names of
+" user-defined functions.
+syn keyword	lpcKeywdFunc	new parse_command sscanf time_expression
+
+" Nodule: Type and modifiers {{{1
+
+" Type names list.
+
+" Special types
+syn keyword	lpcType		void mixed unknown
+" Scalar/Value types.
+syn keyword	lpcType		int float string
+" Pointer types.
+syn keyword	lpcType		array buffer class function mapping object
+" Other types.
+if exists("lpc_compat_32")
+    syn keyword     lpcType	    closure status funcall
+else
+    syn keyword     lpcError	    closure status
+    syn keyword     lpcType	    multiset
+endif
+
+" Type modifier.
+syn keyword	lpcModifier	nomask private public
+syn keyword	lpcModifier	varargs virtual
+
+" sensible modifiers
+if exists("lpc_pre_v22")
+    syn keyword	lpcReserved	nosave protected ref
+    syn keyword	lpcModifier	static
+else
+    syn keyword	lpcError	static
+    syn keyword	lpcModifier	nosave protected ref
+endif
+
+" Nodule: Applies {{{1
+
+" Match a function declaration or function pointer
+syn match	lpcApplyDecl	excludenl /->\h\w*(/me=e-1 contains=lpcApplies transparent display
+
+" We should note that in func_spec.c the efun definition syntax is so
+" complicated that I use such a long regular expression to describe.
+syn match	lpcLongDecl	excludenl /\(\s\|\*\)\h\+\s\h\+(/me=e-1 contains=@lpcEfunGroup,lpcType,@lpcKeywdGrp transparent display
+
+" this is form for all functions
+" ->foo() form had been excluded
+syn match	lpcFuncDecl	excludenl /\h\w*(/me=e-1 contains=lpcApplies,@lpcEfunGroup,lpcKeywdError transparent display
+
+" The (: :) parenthesis or $() forms a function pointer
+syn match	lpcFuncName	/(:\s*\h\+\s*:)/me=e-1 contains=lpcApplies,@lpcEfunGroup transparent display contained
+syn match	lpcFuncName	/(:\s*\h\+,/ contains=lpcApplies,@lpcEfunGroup transparent display contained
+syn match	lpcFuncName	/\$(\h\+)/ contains=lpcApplies,@lpcEfunGroup transparent display contained
+
+" Applies list.
+"       system applies
+syn keyword     lpcApplies      contained __INIT clean_up create destructor heart_beat id init move_or_destruct reset
+"       interactive
+syn keyword     lpcApplies      contained catch_tell logon net_dead process_input receive_message receive_snoop telnet_suboption terminal_type window_size write_prompt
+"       master applies
+syn 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
+syn 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
+"       parsing
+syn 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
+
+
+" Nodule: Efuns {{{1
+
+syn cluster	lpcEfunGroup	contains=lpc_efuns,lpcOldEfuns,lpcNewEfuns,lpcKeywdFunc
+
+" Compat32 efuns
+if exists("lpc_compat_32")
+    syn keyword lpc_efuns	contained closurep heart_beat_info m_delete m_values m_indices query_once_interactive strstr
+else
+    syn match   lpcErrFunc	/#`\h\w*/
+    " Shell compatible first line comment.
+    syn region	lpcCommentFunc	start=/^#!/ end=/$/
+endif
+
+" pre-v22 efuns which are removed in newer versions.
+syn keyword     lpcOldEfuns     contained tail dump_socket_status
+
+" new efuns after v22 should be added here!
+syn keyword     lpcNewEfuns     contained socket_status
+
+" LPC efuns list.
+" DEBUG efuns Not included.
+" New efuns should NOT be added to this list, see v22 efuns above.
+" Efuns list {{{2
+syn keyword     lpc_efuns       contained acos add_action all_inventory all_previous_objects allocate allocate_buffer allocate_mapping apply arrayp asin atan author_stats
+syn keyword     lpc_efuns       contained bind break_string bufferp
+syn 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
+syn 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
+syn 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
+syn 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
+syn keyword     lpc_efuns       contained generate_source get_char get_config get_dir geteuid getuid
+syn keyword     lpc_efuns       contained heart_beats
+syn keyword     lpc_efuns       contained id_matrix implode in_edit in_input inherit_list inherits input_to interactive intp
+syn keyword     lpc_efuns       contained keys
+syn keyword     lpc_efuns       contained link living livings load_object localtime log log10 lookat_rotate lower_case lpc_info
+syn 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
+syn keyword     lpc_efuns       contained named_livings network_stats next_bit next_inventory notify_fail nullp
+syn keyword     lpc_efuns       contained objectp objects oldcrypt opcprof origin
+syn 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
+syn 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
+syn 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
+syn 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
+syn 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
+syn keyword     lpc_efuns       contained undefinedp unique_array unique_mapping upper_case uptime userp users
+syn keyword     lpc_efuns       contained values variables virtualp
+syn keyword     lpc_efuns       contained wizardp write write_buffer write_bytes write_file
+
+" Nodule: Constants {{{1
+
+" LPC Constants.
+" like keywords, constants are always highlighted, be careful to choose only
+" the constants we used to add to this list.
+syn keyword     lpcConstant     __ARCH__ __COMPILER__ __DIR__ __FILE__ __OPTIMIZATION__ __PORT__ __VERSION__
+"       Defines in options.h are all predefined in LPC sources surrounding by
+"       two underscores. Do we need to include all of that?
+syn keyword     lpcConstant     __SAVE_EXTENSION__ __HEARTBEAT_INTERVAL__
+"       from the documentation we know that these constants remains only for
+"       backward compatibility and should not be used any more.
+syn keyword     lpcConstant     HAS_ED HAS_PRINTF HAS_RUSAGE HAS_DEBUG_LEVEL
+syn keyword     lpcConstant     MUD_NAME F__THIS_OBJECT
+
+" Nodule: Todo for this file.  {{{1
+
+" TODO : need to check for LPC4 syntax and other series of LPC besides
+" v22, b21 and l32, if you had a good idea, contact me at poet@mudbuilder.net
+" and I will be appreciated about that.
+
+" Notes about some FAQ:
+"
+" About variables : We adopts the same behavior for C because almost all the
+" LPC programmers are also C programmers, so we don't need separate settings
+" for C and LPC. That is the reason why I don't change variables like
+" "c_no_utf"s to "lpc_no_utf"s.
+"
+" Copy : Some of the following seems to be copied from c.vim but not quite
+" the same in details because the syntax for C and LPC is different.
+"
+" Color scheme : this syntax file had been thouroughly tested to work well
+" for all of the dark-backgrounded color schemes Vim has provided officially,
+" and it should be quite Ok for all of the bright-backgrounded color schemes,
+" of course it works best for the color scheme that I am using, download it
+" from http://poet.tomud.com/pub/ps_color.vim.bz2 if you want to try it.
+"
+
+" Nodule: String and Character {{{1
+
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match	lpcSpecial	display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+if !exists("c_no_utf")
+  syn match	lpcSpecial	display contained "\\\(u\x\{4}\|U\x\{8}\)"
+endif
+
+" LPC version of sprintf() format,
+syn match	lpcFormat	display "%\(\d\+\)\=[-+ |=#@:.]*\(\d\+\)\=\('\I\+'\|'\I*\\'\I*'\)\=[OsdicoxXf]" contained
+syn match	lpcFormat	display "%%" contained
+syn region	lpcString	start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lpcSpecial,lpcFormat
+" lpcCppString: same as lpcString, but ends at end of line
+syn region	lpcCppString	start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=lpcSpecial,lpcFormat
+
+" LPC preprocessor for the text formatting short cuts
+" Thanks to Dr. Charles E. Campbell <cec@gryphon.gsfc.nasa.gov>
+"	he suggests the best way to do this.
+syn region	lpcTextString	start=/@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial
+syn region	lpcArrayString	start=/@@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial
+
+" Character
+syn match	lpcCharacter	"L\='[^\\]'"
+syn match	lpcCharacter	"L'[^']*'" contains=lpcSpecial
+syn match	lpcSpecialError	"L\='\\[^'\"?\\abefnrtv]'"
+syn match	lpcSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
+syn match	lpcSpecialCharacter display "L\='\\\o\{1,3}'"
+syn match	lpcSpecialCharacter display "'\\x\x\{1,2}'"
+syn match	lpcSpecialCharacter display "L'\\x\x\+'"
+
+" Nodule: White space {{{1
+
+" when wanted, highlight trailing white space
+if exists("c_space_errors")
+  if !exists("c_no_trail_space_error")
+    syn match	lpcSpaceError	display excludenl "\s\+$"
+  endif
+  if !exists("c_no_tab_space_error")
+    syn match	lpcSpaceError	display " \+\t"me=e-1
+  endif
+endif
+
+" Nodule: Parenthesis and brackets {{{1
+
+" catch errors caused by wrong parenthesis and brackets
+syn 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
+syn region	lpcParen	transparent start='(' end=')' contains=ALLBUT,@lpcParenGroup,lpcCppParen,lpcErrInBracket,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcKeywdError
+" lpcCppParen: same as lpcParen but ends at end-of-line; used in lpcDefine
+syn region	lpcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInBracket,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcKeywdError
+syn match	lpcParenError	display ")"
+syn match	lpcParenError	display "\]"
+" for LPC:
+" Here we should consider the array ({ }) parenthesis and mapping ([ ])
+" parenthesis and multiset (< >) parenthesis.
+syn match	lpcErrInParen	display contained "[^^]{"ms=s+1
+syn match	lpcErrInParen	display contained "\(}\|\]\)[^)]"me=e-1
+syn region	lpcBracket	transparent start='\[' end=']' contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcCppParen,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError
+" lpcCppBracket: same as lpcParen but ends at end-of-line; used in lpcDefine
+syn region	lpcCppBracket	transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError
+syn match	lpcErrInBracket	display contained "[);{}]"
+
+" Nodule: Numbers {{{1
+
+" integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match	lpcNumbers	display transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctalError,lpcOctal
+" Same, but without octal error (for comments)
+syn match	lpcNumbersCom	display contained transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctal
+syn match	lpcNumber	display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+" hex number
+syn match	lpcNumber	display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match	lpcOctal	display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=lpcOctalZero
+syn match	lpcOctalZero	display contained "\<0"
+syn match	lpcFloat	display contained "\d\+f"
+" floating point number, with dot, optional exponent
+syn match	lpcFloat	display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+" floating point number, starting with a dot, optional exponent
+syn match	lpcFloat	display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+" floating point number, without dot, with exponent
+syn match	lpcFloat	display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+" flag an octal number with wrong digits
+syn match	lpcOctalError	display contained "0\o*[89]\d*"
+syn case match
+
+" Nodule: Comment string {{{1
+
+" lpcCommentGroup allows adding matches for special things in comments
+syn keyword	lpcTodo		contained TODO FIXME XXX
+syn cluster	lpcCommentGroup	contains=lpcTodo
+
+if exists("c_comment_strings")
+  " A comment can contain lpcString, lpcCharacter and lpcNumber.
+  syntax match	lpcCommentSkip	contained "^\s*\*\($\|\s\+\)"
+  syntax region lpcCommentString	contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=lpcSpecial,lpcCommentSkip
+  syntax region lpcComment2String	contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=lpcSpecial
+  syntax region  lpcCommentL	start="//" skip="\\$" end="$" keepend contains=@lpcCommentGroup,lpcComment2String,lpcCharacter,lpcNumbersCom,lpcSpaceError
+  syntax region lpcComment	matchgroup=lpcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@lpcCommentGroup,lpcCommentStartError,lpcCommentString,lpcCharacter,lpcNumbersCom,lpcSpaceError
+else
+  syn region	lpcCommentL	start="//" skip="\\$" end="$" keepend contains=@lpcCommentGroup,lpcSpaceError
+  syn region	lpcComment	matchgroup=lpcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@lpcCommentGroup,lpcCommentStartError,lpcSpaceError
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match	lpcCommentError	display "\*/"
+syntax match	lpcCommentStartError display "/\*"me=e-1 contained
+
+" Nodule: Pre-processor {{{1
+
+syn region	lpcPreCondit	start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=lpcComment,lpcCppString,lpcCharacter,lpcCppParen,lpcParenError,lpcNumbers,lpcCommentError,lpcSpaceError
+syn match	lpcPreCondit	display "^\s*#\s*\(else\|endif\)\>"
+if !exists("c_no_if0")
+  syn region	lpcCppOut		start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=lpcCppOut2
+  syn region	lpcCppOut2	contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=lpcSpaceError,lpcCppSkip
+  syn region	lpcCppSkip	contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=lpcSpaceError,lpcCppSkip
+endif
+syn region	lpcIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match	lpcIncluded	display contained "<[^>]*>"
+syn match	lpcInclude	display "^\s*#\s*include\>\s*["<]" contains=lpcIncluded
+syn match lpcLineSkip	"\\$"
+syn 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
+syn region	lpcDefine	start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@lpcPreProcGroup
+
+if exists("lpc_pre_v22")
+    syn region	lpcPreProc	start="^\s*#\s*\(pragma\>\|echo\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup
+else
+    syn region	lpcPreProc	start="^\s*#\s*\(pragma\>\|echo\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup
+endif
+
+" Nodule: User labels {{{1
+
+" Highlight Labels
+" User labels in LPC is not allowed, only "case x" and "default" is supported
+syn 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
+syn region	lpcMulti		transparent start='\(case\|default\|public\|protected\|private\)' skip='::' end=':' contains=ALLBUT,@lpcMultiGroup
+
+syn cluster	lpcLabelGroup	contains=lpcUserLabel
+syn match	lpcUserCont	display "^\s*lpc:$" contains=@lpcLabelGroup
+
+" Don't want to match anything
+syn match	lpcUserLabel	display "lpc" contained
+
+" Nodule: Initializations {{{1
+
+if exists("c_minlines")
+  let b:c_minlines = c_minlines
+else
+  if !exists("c_no_if0")
+    let b:c_minlines = 50	" #if 0 constructs can be long
+  else
+    let b:c_minlines = 15	" mostly for () constructs
+  endif
+endif
+exec "syn sync ccomment lpcComment minlines=" . b:c_minlines
+
+" Make sure these options take place since we no longer depend on file type
+" plugin for C
+setlocal cindent
+setlocal fo-=t fo+=croql
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+set cpo-=C
+
+" Win32 can filter files in the browse dialog
+if has("gui_win32") && !exists("b:browsefilter")
+    let b:browsefilter = "LPC Source Files (*.c *.d *.h)\t*.c;*.d;*.h\n" .
+	\ "LPC Data Files (*.scr *.o *.dat)\t*.scr;*.o;*.dat\n" .
+	\ "Text Documentation (*.txt)\t*.txt\n" .
+	\ "All Files (*.*)\t*.*\n"
+endif
+
+" Nodule: Highlight links {{{1
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_lpc_syn_inits")
+  if version < 508
+    let did_lpc_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink lpcModifier		lpcStorageClass
+
+  HiLink lpcQuotedFmt		lpcFormat
+  HiLink lpcFormat		lpcSpecial
+  HiLink lpcCppString		lpcString	" Cpp means
+						" C Pre-Processor
+  HiLink lpcCommentL		lpcComment
+  HiLink lpcCommentStart	lpcComment
+  HiLink lpcUserLabel		lpcLabel
+  HiLink lpcSpecialCharacter	lpcSpecial
+  HiLink lpcOctal		lpcPreProc
+  HiLink lpcOctalZero		lpcSpecial  " LPC will treat octal numbers
+					    " as decimals, programmers should
+					    " be aware of that.
+  HiLink lpcEfunError		lpcError
+  HiLink lpcKeywdError		lpcError
+  HiLink lpcOctalError		lpcError
+  HiLink lpcParenError		lpcError
+  HiLink lpcErrInParen		lpcError
+  HiLink lpcErrInBracket	lpcError
+  HiLink lpcCommentError	lpcError
+  HiLink lpcCommentStartError	lpcError
+  HiLink lpcSpaceError		lpcError
+  HiLink lpcSpecialError	lpcError
+  HiLink lpcErrFunc		lpcError
+
+  if exists("lpc_pre_v22")
+      HiLink lpcOldEfuns	lpc_efuns
+      HiLink lpcNewEfuns	lpcError
+  else
+      HiLink lpcOldEfuns	lpcReserved
+      HiLink lpcNewEfuns	lpc_efuns
+  endif
+  HiLink lpc_efuns		lpcFunction
+
+  HiLink lpcReserved		lpcPreProc
+  HiLink lpcTextString		lpcString   " This should be preprocessors, but
+  HiLink lpcArrayString		lpcPreProc  " let's make some difference
+					    " between text and array
+
+  HiLink lpcIncluded		lpcString
+  HiLink lpcCommentString	lpcString
+  HiLink lpcComment2String	lpcString
+  HiLink lpcCommentSkip		lpcComment
+  HiLink lpcCommentFunc		lpcComment
+
+  HiLink lpcCppSkip		lpcCppOut
+  HiLink lpcCppOut2		lpcCppOut
+  HiLink lpcCppOut		lpcComment
+
+  " Standard type below
+  HiLink lpcApplies		Special
+  HiLink lpcCharacter		Character
+  HiLink lpcComment		Comment
+  HiLink lpcConditional		Conditional
+  HiLink lpcConstant		Constant
+  HiLink lpcDefine		Macro
+  HiLink lpcError		Error
+  HiLink lpcFloat		Float
+  HiLink lpcFunction		Function
+  HiLink lpcIdentifier		Identifier
+  HiLink lpcInclude		Include
+  HiLink lpcLabel		Label
+  HiLink lpcNumber		Number
+  HiLink lpcOperator		Operator
+  HiLink lpcPreCondit		PreCondit
+  HiLink lpcPreProc		PreProc
+  HiLink lpcRepeat		Repeat
+  HiLink lpcStatement		Statement
+  HiLink lpcStorageClass	StorageClass
+  HiLink lpcString		String
+  HiLink lpcStructure		Structure
+  HiLink lpcSpecial		LineNr
+  HiLink lpcTodo		Todo
+  HiLink lpcType		Type
+
+  delcommand HiLink
+endif
+
+" Nodule: This is the end nodule. {{{1
+
+let b:current_syntax = "lpc"
+
+" vim:ts=8:nosta:sw=2:ai:si:
+" vim600:set fdm=marker: }}}1
