neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

lpc.vim (23138B)


      1 " Vim syntax file
      2 " Language:	LPC
      3 " Maintainer:	Shizhu Pan <poet@mudbuilder.net>
      4 " URL:		http://poet.tomud.com/pub/lpc.vim.bz2
      5 " Last Change:	2016 Aug 31
      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 " quit when a syntax file was already loaded
     13 if exists("b:current_syntax")
     14  finish
     15 endif
     16 
     17 let s:cpo_save = &cpo
     18 set cpo&vim
     19 
     20 " Nodule: Keywords {{{1
     21 
     22 " LPC keywords
     23 " keywords should always be highlighted so "contained" is not used.
     24 syn cluster	lpcKeywdGrp	contains=lpcConditional,lpcLabel,lpcOperator,lpcRepeat,lpcStatement,lpcModifier,lpcReserved
     25 
     26 syn keyword	lpcConditional	if else switch
     27 syn keyword	lpcLabel	case default
     28 syn keyword	lpcOperator	catch efun in inherit
     29 syn keyword	lpcRepeat	do for foreach while
     30 syn keyword	lpcStatement	break continue return
     31 
     32 syn match	lpcEfunError	/efun[^:]/ display
     33 
     34 " Illegal to use keyword as function
     35 " It's not working, maybe in the next version.
     36 syn keyword	lpcKeywdError	contained if for foreach return switch while
     37 
     38 " These are keywords only because they take lvalue or type as parameter,
     39 " so these keywords should only be used as function but cannot be names of
     40 " user-defined functions.
     41 syn keyword	lpcKeywdFunc	new parse_command sscanf time_expression
     42 
     43 " Nodule: Type and modifiers {{{1
     44 
     45 " Type names list.
     46 
     47 " Special types
     48 syn keyword	lpcType		void mixed unknown
     49 " Scalar/Value types.
     50 syn keyword	lpcType		int float string
     51 " Pointer types.
     52 syn keyword	lpcType		array buffer class function mapping object
     53 " Other types.
     54 if exists("lpc_compat_32")
     55    syn keyword     lpcType	    closure status funcall
     56 else
     57    syn keyword     lpcError	    closure status
     58    syn keyword     lpcType	    multiset
     59 endif
     60 
     61 " Type modifier.
     62 syn keyword	lpcModifier	nomask private public
     63 syn keyword	lpcModifier	varargs virtual
     64 
     65 " sensible modifiers
     66 if exists("lpc_pre_v22")
     67    syn keyword	lpcReserved	nosave protected ref
     68    syn keyword	lpcModifier	static
     69 else
     70    syn keyword	lpcError	static
     71    syn keyword	lpcModifier	nosave protected ref
     72 endif
     73 
     74 " Nodule: Applies {{{1
     75 
     76 " Match a function declaration or function pointer
     77 syn match	lpcApplyDecl	excludenl /->\h\w*(/me=e-1 contains=lpcApplies transparent display
     78 
     79 " We should note that in func_spec.c the efun definition syntax is so
     80 " complicated that I use such a long regular expression to describe.
     81 syn match	lpcLongDecl	excludenl /\(\s\|\*\)\h\+\s\h\+(/me=e-1 contains=@lpcEfunGroup,lpcType,@lpcKeywdGrp transparent display
     82 
     83 " this is form for all functions
     84 " ->foo() form had been excluded
     85 syn match	lpcFuncDecl	excludenl /\h\w*(/me=e-1 contains=lpcApplies,@lpcEfunGroup,lpcKeywdError transparent display
     86 
     87 " The (: :) parenthesis or $() forms a function pointer
     88 syn match	lpcFuncName	/(:\s*\h\+\s*:)/me=e-1 contains=lpcApplies,@lpcEfunGroup transparent display contained
     89 syn match	lpcFuncName	/(:\s*\h\+,/ contains=lpcApplies,@lpcEfunGroup transparent display contained
     90 syn match	lpcFuncName	/\$(\h\+)/ contains=lpcApplies,@lpcEfunGroup transparent display contained
     91 
     92 " Applies list.
     93 "       system applies
     94 syn keyword     lpcApplies      contained __INIT clean_up create destructor heart_beat id init move_or_destruct reset
     95 "       interactive
     96 syn keyword     lpcApplies      contained catch_tell logon net_dead process_input receive_message receive_snoop telnet_suboption terminal_type window_size write_prompt
     97 "       master applies
     98 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
     99 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
    100 "       parsing
    101 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
    102 
    103 
    104 " Nodule: Efuns {{{1
    105 
    106 syn cluster	lpcEfunGroup	contains=lpc_efuns,lpcOldEfuns,lpcNewEfuns,lpcKeywdFunc
    107 
    108 " Compat32 efuns
    109 if exists("lpc_compat_32")
    110    syn keyword lpc_efuns	contained closurep heart_beat_info m_delete m_values m_indices query_once_interactive strstr
    111 else
    112    syn match   lpcErrFunc	/#`\h\w*/
    113    " Shell compatible first line comment.
    114    syn region	lpcCommentFunc	start=/^#!/ end=/$/
    115 endif
    116 
    117 " pre-v22 efuns which are removed in newer versions.
    118 syn keyword     lpcOldEfuns     contained tail dump_socket_status
    119 
    120 " new efuns after v22 should be added here!
    121 syn keyword     lpcNewEfuns     contained socket_status
    122 
    123 " LPC efuns list.
    124 " DEBUG efuns Not included.
    125 " New efuns should NOT be added to this list, see v22 efuns above.
    126 " Efuns list {{{2
    127 syn keyword     lpc_efuns       contained acos add_action all_inventory all_previous_objects allocate allocate_buffer allocate_mapping apply arrayp asin atan author_stats
    128 syn keyword     lpc_efuns       contained bind break_string bufferp
    129 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
    130 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
    131 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
    132 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
    133 syn keyword     lpc_efuns       contained generate_source get_char get_config get_dir geteuid getuid
    134 syn keyword     lpc_efuns       contained heart_beats
    135 syn keyword     lpc_efuns       contained id_matrix implode in_edit in_input inherit_list inherits input_to interactive intp
    136 syn keyword     lpc_efuns       contained keys
    137 syn keyword     lpc_efuns       contained link living livings load_object localtime log log10 lookat_rotate lower_case lpc_info
    138 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
    139 syn keyword     lpc_efuns       contained named_livings network_stats next_bit next_inventory notify_fail nullp
    140 syn keyword     lpc_efuns       contained objectp objects oldcrypt opcprof origin
    141 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
    142 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
    143 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
    144 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
    145 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
    146 syn keyword     lpc_efuns       contained undefinedp unique_array unique_mapping upper_case uptime userp users
    147 syn keyword     lpc_efuns       contained values variables virtualp
    148 syn keyword     lpc_efuns       contained wizardp write write_buffer write_bytes write_file
    149 
    150 " Nodule: Constants {{{1
    151 
    152 " LPC Constants.
    153 " like keywords, constants are always highlighted, be careful to choose only
    154 " the constants we used to add to this list.
    155 syn keyword     lpcConstant     __ARCH__ __COMPILER__ __DIR__ __FILE__ __OPTIMIZATION__ __PORT__ __VERSION__
    156 "       Defines in options.h are all predefined in LPC sources surrounding by
    157 "       two underscores. Do we need to include all of that?
    158 syn keyword     lpcConstant     __SAVE_EXTENSION__ __HEARTBEAT_INTERVAL__
    159 "       from the documentation we know that these constants remains only for
    160 "       backward compatibility and should not be used any more.
    161 syn keyword     lpcConstant     HAS_ED HAS_PRINTF HAS_RUSAGE HAS_DEBUG_LEVEL
    162 syn keyword     lpcConstant     MUD_NAME F__THIS_OBJECT
    163 
    164 " Nodule: Todo for this file.  {{{1
    165 
    166 " TODO : need to check for LPC4 syntax and other series of LPC besides
    167 " v22, b21 and l32, if you had a good idea, contact me at poet@mudbuilder.net
    168 " and I will be appreciated about that.
    169 
    170 " Notes about some FAQ:
    171 "
    172 " About variables : We adopts the same behavior for C because almost all the
    173 " LPC programmers are also C programmers, so we don't need separate settings
    174 " for C and LPC. That is the reason why I don't change variables like
    175 " "c_no_utf"s to "lpc_no_utf"s.
    176 "
    177 " Copy : Some of the following seems to be copied from c.vim but not quite
    178 " the same in details because the syntax for C and LPC is different.
    179 "
    180 " Color scheme : this syntax file had been thouroughly tested to work well
    181 " for all of the dark-backgrounded color schemes Vim has provided officially,
    182 " and it should be quite Ok for all of the bright-backgrounded color schemes,
    183 " of course it works best for the color scheme that I am using, download it
    184 " from http://poet.tomud.com/pub/ps_color.vim.bz2 if you want to try it.
    185 "
    186 
    187 " Nodule: String and Character {{{1
    188 
    189 
    190 " String and Character constants
    191 " Highlight special characters (those which have a backslash) differently
    192 syn match	lpcSpecial	display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
    193 if !exists("c_no_utf")
    194  syn match	lpcSpecial	display contained "\\\(u\x\{4}\|U\x\{8}\)"
    195 endif
    196 
    197 " LPC version of sprintf() format,
    198 syn match	lpcFormat	display "%\(\d\+\)\=[-+ |=#@:.]*\(\d\+\)\=\('\I\+'\|'\I*\\'\I*'\)\=[OsdicoxXf]" contained
    199 syn match	lpcFormat	display "%%" contained
    200 syn region	lpcString	start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=lpcSpecial,lpcFormat
    201 " lpcCppString: same as lpcString, but ends at end of line
    202 syn region	lpcCppString	start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=lpcSpecial,lpcFormat
    203 
    204 " LPC preprocessor for the text formatting short cuts
    205 " Thanks to Dr. Charles E. Campbell <cec@gryphon.gsfc.nasa.gov>
    206 "	he suggests the best way to do this.
    207 syn region	lpcTextString	start=/@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial
    208 syn region	lpcArrayString	start=/@@\z(\h\w*\)$/ end=/^\z1/ contains=lpcSpecial
    209 
    210 " Character
    211 syn match	lpcCharacter	"L\='[^\\]'"
    212 syn match	lpcCharacter	"L'[^']*'" contains=lpcSpecial
    213 syn match	lpcSpecialError	"L\='\\[^'\"?\\abefnrtv]'"
    214 syn match	lpcSpecialCharacter "L\='\\['\"?\\abefnrtv]'"
    215 syn match	lpcSpecialCharacter display "L\='\\\o\{1,3}'"
    216 syn match	lpcSpecialCharacter display "'\\x\x\{1,2}'"
    217 syn match	lpcSpecialCharacter display "L'\\x\x\+'"
    218 
    219 " Nodule: White space {{{1
    220 
    221 " when wanted, highlight trailing white space
    222 if exists("c_space_errors")
    223  if !exists("c_no_trail_space_error")
    224    syn match	lpcSpaceError	display excludenl "\s\+$"
    225  endif
    226  if !exists("c_no_tab_space_error")
    227    syn match	lpcSpaceError	display " \+\t"me=e-1
    228  endif
    229 endif
    230 
    231 " Nodule: Parenthesis and brackets {{{1
    232 
    233 " catch errors caused by wrong parenthesis and brackets
    234 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
    235 syn region	lpcParen	transparent start='(' end=')' contains=ALLBUT,@lpcParenGroup,lpcCppParen,lpcErrInBracket,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcKeywdError
    236 " lpcCppParen: same as lpcParen but ends at end-of-line; used in lpcDefine
    237 syn region	lpcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInBracket,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcKeywdError
    238 syn match	lpcParenError	display ")"
    239 syn match	lpcParenError	display "\]"
    240 " for LPC:
    241 " Here we should consider the array ({ }) parenthesis and mapping ([ ])
    242 " parenthesis and multiset (< >) parenthesis.
    243 syn match	lpcErrInParen	display contained "[^^]{"ms=s+1
    244 syn match	lpcErrInParen	display contained "\(}\|\]\)[^)]"me=e-1
    245 syn region	lpcBracket	transparent start='\[' end=']' contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcCppParen,lpcCppBracket,lpcCppString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError
    246 " lpcCppBracket: same as lpcParen but ends at end-of-line; used in lpcDefine
    247 syn region	lpcCppBracket	transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@lpcParenGroup,lpcErrInParen,lpcParen,lpcBracket,lpcString,@lpcEfunGroup,lpcApplies,lpcFuncName,lpcKeywdError
    248 syn match	lpcErrInBracket	display contained "[);{}]"
    249 
    250 " Nodule: Numbers {{{1
    251 
    252 " integer number, or floating point number without a dot and with "f".
    253 syn case ignore
    254 syn match	lpcNumbers	display transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctalError,lpcOctal
    255 " Same, but without octal error (for comments)
    256 syn match	lpcNumbersCom	display contained transparent "\<\d\|\.\d" contains=lpcNumber,lpcFloat,lpcOctal
    257 syn match	lpcNumber	display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
    258 " hex number
    259 syn match	lpcNumber	display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
    260 " Flag the first zero of an octal number as something special
    261 syn match	lpcOctal	display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=lpcOctalZero
    262 syn match	lpcOctalZero	display contained "\<0"
    263 syn match	lpcFloat	display contained "\d\+f"
    264 " floating point number, with dot, optional exponent
    265 syn match	lpcFloat	display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
    266 " floating point number, starting with a dot, optional exponent
    267 syn match	lpcFloat	display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
    268 " floating point number, without dot, with exponent
    269 syn match	lpcFloat	display contained "\d\+e[-+]\=\d\+[fl]\=\>"
    270 " flag an octal number with wrong digits
    271 syn match	lpcOctalError	display contained "0\o*[89]\d*"
    272 syn case match
    273 
    274 " Nodule: Comment string {{{1
    275 
    276 " lpcCommentGroup allows adding matches for special things in comments
    277 syn keyword	lpcTodo		contained TODO FIXME XXX
    278 syn cluster	lpcCommentGroup	contains=lpcTodo
    279 
    280 if exists("c_comment_strings")
    281  " A comment can contain lpcString, lpcCharacter and lpcNumber.
    282  syntax match	lpcCommentSkip	contained "^\s*\*\($\|\s\+\)"
    283  syntax region lpcCommentString	contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=lpcSpecial,lpcCommentSkip
    284  syntax region lpcComment2String	contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=lpcSpecial
    285  syntax region  lpcCommentL	start="//" skip="\\$" end="$" keepend contains=@lpcCommentGroup,lpcComment2String,lpcCharacter,lpcNumbersCom,lpcSpaceError
    286  syntax region lpcComment	matchgroup=lpcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@lpcCommentGroup,lpcCommentStartError,lpcCommentString,lpcCharacter,lpcNumbersCom,lpcSpaceError
    287 else
    288  syn region	lpcCommentL	start="//" skip="\\$" end="$" keepend contains=@lpcCommentGroup,lpcSpaceError
    289  syn region	lpcComment	matchgroup=lpcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@lpcCommentGroup,lpcCommentStartError,lpcSpaceError
    290 endif
    291 " keep a // comment separately, it terminates a preproc. conditional
    292 syntax match	lpcCommentError	display "\*/"
    293 syntax match	lpcCommentStartError display "/\*"me=e-1 contained
    294 
    295 " Nodule: Pre-processor {{{1
    296 
    297 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
    298 syn match	lpcPreCondit	display "^\s*#\s*\(else\|endif\)\>"
    299 if !exists("c_no_if0")
    300  syn region	lpcCppOut		start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=lpcCppOut2
    301  syn region	lpcCppOut2	contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=lpcSpaceError,lpcCppSkip
    302  syn region	lpcCppSkip	contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=lpcSpaceError,lpcCppSkip
    303 endif
    304 syn region	lpcIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
    305 syn match	lpcIncluded	display contained "<[^>]*>"
    306 syn match	lpcInclude	display "^\s*#\s*include\>\s*["<]" contains=lpcIncluded
    307 syn match lpcLineSkip	"\\$"
    308 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
    309 syn region	lpcDefine	start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@lpcPreProcGroup
    310 
    311 if exists("lpc_pre_v22")
    312    syn region	lpcPreProc	start="^\s*#\s*\(pragma\>\|echo\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup
    313 else
    314    syn region	lpcPreProc	start="^\s*#\s*\(pragma\>\|echo\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@lpcPreProcGroup
    315 endif
    316 
    317 " Nodule: User labels {{{1
    318 
    319 " Highlight Labels
    320 " User labels in LPC is not allowed, only "case x" and "default" is supported
    321 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
    322 syn region	lpcMulti		transparent start='\(case\|default\|public\|protected\|private\)' skip='::' end=':' contains=ALLBUT,@lpcMultiGroup
    323 
    324 syn cluster	lpcLabelGroup	contains=lpcUserLabel
    325 syn match	lpcUserCont	display "^\s*lpc:$" contains=@lpcLabelGroup
    326 
    327 " Don't want to match anything
    328 syn match	lpcUserLabel	display "lpc" contained
    329 
    330 " Nodule: Initializations {{{1
    331 
    332 if exists("c_minlines")
    333  let b:c_minlines = c_minlines
    334 else
    335  if !exists("c_no_if0")
    336    let b:c_minlines = 50	" #if 0 constructs can be long
    337  else
    338    let b:c_minlines = 15	" mostly for () constructs
    339  endif
    340 endif
    341 exec "syn sync ccomment lpcComment minlines=" . b:c_minlines
    342 
    343 " Make sure these options take place since we no longer depend on file type
    344 " plugin for C
    345 setlocal cindent
    346 setlocal fo-=t fo+=croql
    347 setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
    348 
    349 " Win32 can filter files in the browse dialog
    350 if has("gui_win32") && !exists("b:browsefilter")
    351    let b:browsefilter = "LPC Source Files (*.c *.d *.h)\t*.c;*.d;*.h\n" .
    352 \ "LPC Data Files (*.scr *.o *.dat)\t*.scr;*.o;*.dat\n" .
    353 \ "Text Documentation (*.txt)\t*.txt\n" .
    354 \ "All Files (*.*)\t*.*\n"
    355 endif
    356 
    357 " Nodule: Highlight links {{{1
    358 
    359 " Define the default highlighting.
    360 " Only when an item doesn't have highlighting yet
    361 
    362 hi def link lpcModifier		lpcStorageClass
    363 
    364 hi def link lpcQuotedFmt		lpcFormat
    365 hi def link lpcFormat		lpcSpecial
    366 hi def link lpcCppString		lpcString	" Cpp means
    367 				      " C Pre-Processor
    368 hi def link lpcCommentL		lpcComment
    369 hi def link lpcCommentStart	lpcComment
    370 hi def link lpcUserLabel		lpcLabel
    371 hi def link lpcSpecialCharacter	lpcSpecial
    372 hi def link lpcOctal		lpcPreProc
    373 hi def link lpcOctalZero		lpcSpecial  " LPC will treat octal numbers
    374 				  " as decimals, programmers should
    375 				  " be aware of that.
    376 hi def link lpcEfunError		lpcError
    377 hi def link lpcKeywdError		lpcError
    378 hi def link lpcOctalError		lpcError
    379 hi def link lpcParenError		lpcError
    380 hi def link lpcErrInParen		lpcError
    381 hi def link lpcErrInBracket	lpcError
    382 hi def link lpcCommentError	lpcError
    383 hi def link lpcCommentStartError	lpcError
    384 hi def link lpcSpaceError		lpcError
    385 hi def link lpcSpecialError	lpcError
    386 hi def link lpcErrFunc		lpcError
    387 
    388 if exists("lpc_pre_v22")
    389    hi def link lpcOldEfuns	lpc_efuns
    390    hi def link lpcNewEfuns	lpcError
    391 else
    392    hi def link lpcOldEfuns	lpcReserved
    393    hi def link lpcNewEfuns	lpc_efuns
    394 endif
    395 hi def link lpc_efuns		lpcFunction
    396 
    397 hi def link lpcReserved		lpcPreProc
    398 hi def link lpcTextString		lpcString   " This should be preprocessors, but
    399 hi def link lpcArrayString		lpcPreProc  " let's make some difference
    400 				  " between text and array
    401 
    402 hi def link lpcIncluded		lpcString
    403 hi def link lpcCommentString	lpcString
    404 hi def link lpcComment2String	lpcString
    405 hi def link lpcCommentSkip		lpcComment
    406 hi def link lpcCommentFunc		lpcComment
    407 
    408 hi def link lpcCppSkip		lpcCppOut
    409 hi def link lpcCppOut2		lpcCppOut
    410 hi def link lpcCppOut		lpcComment
    411 
    412 " Standard type below
    413 hi def link lpcApplies		Special
    414 hi def link lpcCharacter		Character
    415 hi def link lpcComment		Comment
    416 hi def link lpcConditional		Conditional
    417 hi def link lpcConstant		Constant
    418 hi def link lpcDefine		Macro
    419 hi def link lpcError		Error
    420 hi def link lpcFloat		Float
    421 hi def link lpcFunction		Function
    422 hi def link lpcIdentifier		Identifier
    423 hi def link lpcInclude		Include
    424 hi def link lpcLabel		Label
    425 hi def link lpcNumber		Number
    426 hi def link lpcOperator		Operator
    427 hi def link lpcPreCondit		PreCondit
    428 hi def link lpcPreProc		PreProc
    429 hi def link lpcRepeat		Repeat
    430 hi def link lpcStatement		Statement
    431 hi def link lpcStorageClass	StorageClass
    432 hi def link lpcString		String
    433 hi def link lpcStructure		Structure
    434 hi def link lpcSpecial		LineNr
    435 hi def link lpcTodo		Todo
    436 hi def link lpcType		Type
    437 
    438 
    439 " Nodule: This is the end nodule. {{{1
    440 
    441 let b:current_syntax = "lpc"
    442 
    443 let &cpo = s:cpo_save
    444 unlet s:cpo_save
    445 
    446 " vim:ts=8:nosta:sw=2:ai:si:
    447 " vim600:set fdm=marker: }}}1