@@ -10,13 +10,12 @@ endif
1010" syncing starts 2000 lines before top line so docstrings don't screw things up
1111syn sync minlines =2000
1212
13- syn cluster elixirNotTop contains =@elixirRegexSpecial,@elixirStringContained,elixirTodo
13+ syn cluster elixirNotTop contains =@elixirRegexSpecial,@elixirStringContained,@elixirDeclaration, elixirTodo,elixirArguments
1414
1515syn match elixirComment ' #.*' contains =elixirTodo
1616syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
1717
1818syn match elixirKeyword ' \<\% (case\| cond\| bc\| lc\| inlist\| inbits\| if\| unless\| try\| loop\| receive\| function\)\> [?!]\@ !'
19- syn match elixirKeyword ' \<\% (defmodule\| defprotocol\| defimpl\| defrecordp\?\| defmacrop\?\| defdelegate\| defoverridable\| defexception\| defcallback\| defp\?\)\> [?!]\@ !'
2019syn match elixirKeyword ' \<\% (exit\| raise\| throw\| after\| rescue\| catch\| else\)\> [?!]\@ !'
2120syn match elixirKeyword ' \<\% (->\)\>\s *'
2221syn match elixirKeyword ' \<\% (use\| recur\| quote\| unquote\| super\| alias\)\> [?!]\@ !'
@@ -27,7 +26,7 @@ syn match elixirOperator '\<\%(and\|not\|or\|when\|xor\|in\)\>'
2726syn match elixirOperator ' %=\|\* =\|\*\* =\| +=\| -=\|\^ =\| ||='
2827syn match elixirOperator " \% (<=>\| <\% (<\| =\)\@ !\| >\% (<\| =\| >\)\@ !\| <=\| >=\| ===\| ==\| =\~\| !=\| !\~\| ?[ \t ]\@ =\) "
2928syn match elixirOperator " !+[ \t ]\@ =\| &&\| ||\|\^\|\*\| +\| -\| /"
30- syn match elixirOperator " |\| ++\| --\|\*\*\|\/\/\| <-\| <>\| <<\| >>\| =\|\. "
29+ syn match elixirOperator " |\| ++\| --\|\*\*\|\/\/\| <-\| <>\| <<\| >>\| =\|\.\| :: "
3130
3231syn match elixirSymbol ' \( :\)\@ <!:\% ([a-zA-Z_]\w *\% ([?!]\| =[>=]\@ !\)\?\| <>\| ===\?\| >=\?\| <=\?\) '
3332syn match elixirSymbol ' \( :\)\@ <!:\% (<=>\| &&\?\| %\( ()\|\[\]\| {}\)\| ++\?\| --\?\| ||\?\| !\| //\| [%&`/|]\) '
@@ -68,6 +67,54 @@ syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|
6867syn region elixirBlock matchgroup =elixirKeyword start =" \< do\>\( :\)\@ !" end =" \< end\> " contains =ALLBUT,@elixirNotTop fold
6968syn region elixirAnonymousFunction matchgroup =elixirKeyword start =" \< fn\> " end =" \< end\> " contains =ALLBUT,@elixirNotTop fold
7069
70+ syn region elixirArguments start =" (" end =" )" contained
71+
72+ " Defines
73+ syn keyword elixirDefine def nextgroup =elixirFunctionDeclaration skipwhite skipnl
74+ syn keyword elixirDefine def nextgroup =elixirFunctionDeclaration skipwhite skipnl
75+ syn keyword elixirPrivateDefine defp nextgroup =elixirFunctionDeclaration skipwhite skipnl
76+ syn keyword elixirModuleDefine defmodule nextgroup =elixirModuleDeclaration skipwhite skipnl
77+ syn keyword elixirProtocolDefine defprotocol nextgroup =elixirProtocolDeclaration skipwhite skipnl
78+ syn keyword elixirImplDefine defimpl nextgroup =elixirImplDeclaration skipwhite skipnl
79+ syn keyword elixirRecordDefine defrecord nextgroup =elixirRecordDeclaration skipwhite skipnl
80+ syn keyword elixirPrivateRecordDefine defrecordp nextgroup =elixirRecordDeclaration skipwhite skipnl
81+ syn keyword elixirMacroDefine defmacro nextgroup =elixirMacroDeclaration skipwhite skipnl
82+ syn keyword elixirPrivateMacroDefine defmacrop nextgroup =elixirMacroDeclaration skipwhite skipnl
83+ syn keyword elixirDelegateDefine defdelegate nextgroup =elixirDelegateDeclaration skipwhite skipnl
84+ syn keyword elixirOverridableDefine defoverridable nextgroup =elixirOverridableDeclaration skipwhite skipnl
85+ syn keyword elixirExceptionDefine defexception nextgroup =elixirExceptionDeclaration skipwhite skipnl
86+ syn keyword elixirCallbackDefine defcallback nextgroup =elixirCallbackDeclaration skipwhite skipnl
87+
88+ " Declarations
89+ syn match elixirModuleDeclaration " [^[:space:];#<]\+ " contained contains =elixirName nextgroup =elixirBlock skipwhite skipnl
90+ syn match elixirFunctionDeclaration " [^[:space:];#<,()\[\] ]\+ " contained nextgroup =elixirArguments skipwhite skipnl
91+ syn match elixirProtocolDeclaration " [^[:space:];#<]\+ " contained contains =elixirName skipwhite skipnl
92+ syn match elixirImplDeclaration " [^[:space:];#<]\+ " contained contains =elixirName skipwhite skipnl
93+ syn match elixirRecordDeclaration " [^[:space:];#<]\+ " contained contains =elixirName skipwhite skipnl
94+ syn match elixirMacroDeclaration " [^[:space:];#<,()\[\] ]\+ " contained nextgroup =elixirArguments skipwhite skipnl
95+ syn match elixirDelegateDeclaration " [^[:space:];#<,()\[\] ]\+ " contained contains =elixirFunctionDeclaration skipwhite skipnl
96+ syn region elixirDelegateDeclaration start =' \[ ' end =' \] ' contained contains =elixirFunctionDeclaration skipwhite skipnl
97+ syn match elixirOverridableDeclaration " [^[:space:];#<]\+ " contained contains =elixirName skipwhite skipnl
98+ syn match elixirExceptionDeclaration " [^[:space:];#<]\+ " contained contains =elixirName skipwhite skipnl
99+ syn match elixirCallbackDeclaration " [^[:space:];#<,()\[\] ]\+ " contained contains =elixirFunctionDeclaration skipwhite skipnl
100+
101+ syn cluster elixirDeclaration contains =elixirFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration
102+
103+ hi def link elixirDefine Define
104+ hi def link elixirPrivateDefine Define
105+ hi def link elixirModuleDefine Define
106+ hi def link elixirProtocolDefine Define
107+ hi def link elixirImplDefine Define
108+ hi def link elixirRecordDefine Define
109+ hi def link elixirPrivateRecordDefine Define
110+ hi def link elixirMacroDefine Define
111+ hi def link elixirPrivateMacroDefine Define
112+ hi def link elixirDelegateDefine Define
113+ hi def link elixirOverridableDefine Define
114+ hi def link elixirExceptionDefine Define
115+ hi def link elixirCallbackDefine Define
116+ hi def link elixirFunctionDeclaration Function
117+ hi def link elixirMacroDeclaration Macro
71118hi def link elixirInclude Include
72119hi def link elixirComment Comment
73120hi def link elixirTodo Todo
0 commit comments