" Vim syntax file " Language: API Notation " Maintainer: Rubén Beltrán del Río " Latest Revision: 22 June 2015 if exists("b:current_syntax") finish endif syn match moduleName '^[a-zA-Z0-9_.]\+\s*' nextgroup=dataType syn match comment '\s*//\s*.*' syn match classMembers '^\s\+\(\(<+\)\|\(<\~\)\|\(<-\)\|\(+>\)\|\(\~>\)\|\(->\)\|-\|+\|\(::\)\|#\)' nextgroup=memberName skipwhite syn match internalOperators '\(\(<+\)\|\(<\~\)\|\(<-\)\|\(+>\)\|\(\~>\)\|\(->\)\|-\|+\|\(::\)\|#\)' contained nextgroup=memberName skipwhite syn match returnIdentifiers '\(=>\)' nextgroup=returnValue syn match throwIdentifiers '\(#>\)' nextgroup=throwValue syn match memberName '\w\+' contained nextgroup=internalOperators,spacedDataType syn region parameterList start="(" end=")" transparent contains=parameters,separators,optionalParameter,dataType syn region optionalParameter start="\[" end="]" contains=optionalParameters contained syn region dataType start="<" end=">" contains=dataTypes,separators contained syn region spacedDataType start='\s\+<' end=">" contains=dataTypes,separators contained syn match optionalParameters '\w\+' contained syn match parameters '\w\+' contained syn match dataTypes '\w\+' contained syn match separators '|\|,' contained syn match returnValue '.*' contained contains=dataType,parameters syn match throwValue '.*' contained contains=dataType,parameters " Nest JSON syn include @JSON syntax/json.vim syn region jsonBlock start='```' end='```' contains=@JSON,comment,dataType hi def link moduleName Identifier hi def link classMembers Operator hi def link returnIdentifiers Operator hi def link throwIdentifiers Operator hi def link internalOperators Operator hi def link memberName Special hi def link parameters PreProc hi def link optionalParameters Underlined hi def link dataTypes Constant hi def link separators Comment hi def link comment Comment hi def link jsonBlock Comment