xref: /vim-8.2.3635/runtime/syntax/lpc.vim (revision aedfcbe1)
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