mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 19:25:11 -07:00
461 lines
23 KiB
VimL
461 lines
23 KiB
VimL
|
" Vim syntax file
|
||
|
" Language: LPC
|
||
|
" Maintainer: Shizhu Pan <poet@mudbuilder.net>
|
||
|
" URL: http://poet.tomud.com/pub/lpc.vim.bz2
|
||
|
" Last Change: 2011 Dec 10 by Thilo Six
|
||
|
" 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
|
||
|
|
||
|
let s:cpo_save = &cpo
|
||
|
set cpo&vim
|
||
|
|
||
|
" 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:*/,://
|
||
|
|
||
|
" 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"
|
||
|
|
||
|
let &cpo = s:cpo_save
|
||
|
unlet s:cpo_save
|
||
|
|
||
|
" vim:ts=8:nosta:sw=2:ai:si:
|
||
|
" vim600:set fdm=marker: }}}1
|