浏览代码

match extended format for variables with index and transformations

Daniel-Constantin Mierla 4 年之前
父节点
当前提交
2f563f4637
共有 1 个文件被更改,包括 17 次插入7 次删除
  1. 17 7
      syntax/kamailio.vim

+ 17 - 7
syntax/kamailio.vim

@@ -30,6 +30,8 @@ syn match	kamailioConfigModule		'^\s*loadmodule\s*"[^"]\+"' contains=kamailioStr
 
 syn keyword	kamailioTodo	TODO FIXME XXX NOTE IMPORTANT contained
 
+syn match	kamailioNumber			'[0-9]\+' contained
+
 syn match	kamailioOperator		'!\|&&\|||\|=[~=]\?\|>\|<\|+\|-\|/\|\*\||\|&\|^\|\~' display contained
 
 syn keyword	kamailioOperatorWord  defined eq ieq ne ine mod and or not contained
@@ -40,14 +42,17 @@ syn match	kamailioHashDefine	'#!define\s\|#!ifdef\s\|#!ifndef\s\|#!endif\|#!else
 syn match	kamailioHashComment	'#[^!].*$\|#$' contains=kamailioTodo
 syn match	kamailioSlashSlashComment	'//.*$\|//#$' contains=kamailioTodo
 
-syn match	kamailioVariable		"$[a-zA-Z_][a-zA-Z0-9_]*\(([^)]\+)\)\?" contained
+syn match   kamailioVariable        "$[a-zA-Z_][a-zA-Z0-9_]*\(([^)]\+)\)\?" contained
+syn match   kamailioVariableIndex   "\[[0-9+*-]\+\]" contained
+syn region	kamailioVariableGroup	matchgroup=Identifier start='$([a-zA-Z_][a-zA-Z0-9_]*\(([^)]\+)\)\?' end=')' transparent contained contains=kamailioVariableIndex,kamailioVariable,kamailioVariableGroup,kamailioTransformation
+syn match	kamailioTransformationChars "[a-zA-Z_,#;:-]" contained
+syn region	kamailioTransformation	matchgroup=Identifier start='\({s\.\|{uri\.\|{param\.\|{tobody\.\|{nameaddr\.\|{re\.\|{sql\.\|{url\.\|{line\.\|{msrpuri\.\)[a-zA-Z0-9_-]\+' end='}' transparent contained contains=kamailioNumber,kamailioVariable,kamailioVariableGroup,kamailioTransformationChars,kamailioTransformation
 
 syn match	kamailioStringEscape	'\\.' contained
 syn keyword	kamailioSIPMethods		INVITE ACK BYE CANCEL REGISTER MESSAGE PRACK INFO UPDATE OPTIONS REFER SUBSCRIBE NOTIFY PUBLISH KDMQ contained
 syn keyword	kamailioHTTPMethods		GET POST PUT DETELE contained
-syn keyword	kamailioSIPHeaders		SIP sip From To Call-Id CSeq Route Record-Route Contact Expires Content-Length Content-Type Authorization Proxy-Authorization Via contained
-syn match	kamailioNumber			'[0-9]\+' contained
-syn region	kamailioString			matchgroup=Normal start='"' skip='\\"' end='"' contained contains=kamailioVariable,kamailioStringEscape,kamailioSIPMethods,kamailioHTTPMethods,kamailioSIPHeaders
+syn keyword kamailioSIPHeaders		SIP sip From To Call-Id CSeq Route Record-Route Contact Expires Content-Length Content-Type Authorization Proxy-Authorization Via contained
+syn region	kamailioString			matchgroup=Normal start='"' skip='\\"' end='"' contained contains=kamailioVariable,kamailioVariableGroup,kamailioStringEscape,kamailioSIPMethods,kamailioHTTPMethods,kamailioSIPHeaders
 syn match	kamailioIdentifier		'[a-zA-Z_][a-zA-Z0-9_]*' contained
 syn keyword	kamailioStatement	route if else switch case default break exit return drop while include_file import_file contained
 syn keyword	kamailioSpecial			yes no on off true false enabled disabled LOG_LOCAL0 LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 contained
@@ -67,12 +72,12 @@ syn keyword	kamailioCoreParameter	advertised_address advertised_port disable_cor
 syn keyword	kamailioCoreParameter	async_workers max_recursive_level dns_naptr_ignore_rfc http_reply_parse version_table tcp_accept_no_cl advertise name auto_bind_ipv6 sql_buffer_size pv_buffer_size pv_buffer_slots corelog core_log udp4_raw udp4_raw_mtu udp4_raw_ttl onsend_route_reply max_branches dns_cache_rec_pref run_dir async_usleep async_nonblock log_engine_type log_engine_data cfgengine xavp_via_params xavp_via_fields kemi.event_route_callback route_locks_size kemi.reply_route_callback kemi.onsend_route_callback ip_free_bind ip_nonlocal_bind contained
 syn keyword	kamailioCoreParameter	pv_cache_limit pv_cache_action verbose_startup tcp_accept_haproxy received_route_mode bind_ipv6_link_local latency_limit_cfg tcp_accept_unique tcp_connection_match uri_host_extra_chars stats_name_separator sip_parser_log hdr_name_extra_chars ipv6_hex_style sip_parser_mode contained
 
-syn region	kamailioBlock	start='{' end='}' contained contains=kamailioBlock,@kamailioCodeElements
+syn region	kamailioBlock	start='{' end='}' transparent contained contains=kamailioBlock,@kamailioCodeElements
 
 syn match	kamailioRouteBlock	'\(failure_\|onreply_\|branch_\|event_\|onsend_\|request_\|reply_\)\?route\(\s*\[[^\]]\+\]\)\?' contained contains=kamailioNumber,kamailioString,kamailioIdentifier
 syn region	kamailioRrouteBlockFold	matchgroup=kamailioRouteBlock start="\(failure_\|onreply_\|branch_\|event_\|onsend_\|request_\|reply_\)\?route\(\s*\[[^\]]\+\]\)\?\s*\n\?{" matchgroup=NONE end="}" contains=kamailioBlock,@kamailioCodeElements
 
-syn cluster	kamailioCodeElements contains=kamailioHashDefine,kamailioCppComment,kamailioHashComment,kamailioSlashSlashComment,kamailioNumber,kamailioString,kamailioVariable,kamailioOperator,kamailioOperatorWord,kamailioStatement,kamailioKeyword,kamailioCoreKeyword,kamailioCoreValue,kamailioCoreFunction,kamailioIdentifier
+syn cluster	kamailioCodeElements contains=kamailioHashDefine,kamailioCppComment,kamailioHashComment,kamailioSlashSlashComment,kamailioNumber,kamailioString,kamailioVariable,kamailioVariableGroup,kamailioOperator,kamailioOperatorWord,kamailioStatement,kamailioKeyword,kamailioCoreKeyword,kamailioCoreValue,kamailioCoreFunction,kamailioIdentifier
 
 hi def link kamailioCppComment Comment
 hi def link kamailioHashComment Comment
@@ -98,8 +103,13 @@ hi def link kamailioOperatorWord Operator
 
 hi def link kamailioStatement Conditional
 
-hi def link kamailioNumber Number
 hi def link kamailioVariable Identifier
+hi def link kamailioVariableIndex Number
+hi def link kamailioVariableGroup Identifier
+hi def link kamailioTransformationChars Identifier
+hi def link kamailioTransformation Function
+
+hi def link kamailioNumber Number
 hi def link kamailioString String
 hi def link kamailioStringEscape Special
 hi def link kamailioSIPMethods Special