Skip to content

Commit 7ee6277

Browse files
committed
Merge pull request elixir-editors#25 from iurifq/defs
Defs
2 parents 2bca2d2 + f780078 commit 7ee6277

File tree

1 file changed

+50
-3
lines changed

1 file changed

+50
-3
lines changed

syntax/elixir.vim

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@ endif
1010
" syncing starts 2000 lines before top line so docstrings don't screw things up
1111
syn sync minlines=2000
1212

13-
syn cluster elixirNotTop contains=@elixirRegexSpecial,@elixirStringContained,elixirTodo
13+
syn cluster elixirNotTop contains=@elixirRegexSpecial,@elixirStringContained,@elixirDeclaration,elixirTodo,elixirArguments
1414

1515
syn match elixirComment '#.*' contains=elixirTodo
1616
syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
1717

1818
syn 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\?\)\>[?!]\@!'
2019
syn match elixirKeyword '\<\%(exit\|raise\|throw\|after\|rescue\|catch\|else\)\>[?!]\@!'
2120
syn match elixirKeyword '\<\%(->\)\>\s*'
2221
syn match elixirKeyword '\<\%(use\|recur\|quote\|unquote\|super\|alias\)\>[?!]\@!'
@@ -27,7 +26,7 @@ syn match elixirOperator '\<\%(and\|not\|or\|when\|xor\|in\)\>'
2726
syn match elixirOperator '%=\|\*=\|\*\*=\|+=\|-=\|\^=\|||='
2827
syn match elixirOperator "\%(<=>\|<\%(<\|=\)\@!\|>\%(<\|=\|>\)\@!\|<=\|>=\|===\|==\|=\~\|!=\|!\~\|?[ \t]\@=\)"
2928
syn match elixirOperator "!+[ \t]\@=\|&&\|||\|\^\|\*\|+\|-\|/"
30-
syn match elixirOperator "|\|++\|--\|\*\*\|\/\/\|<-\|<>\|<<\|>>\|=\|\."
29+
syn match elixirOperator "|\|++\|--\|\*\*\|\/\/\|<-\|<>\|<<\|>>\|=\|\.\|::"
3130

3231
syn match elixirSymbol '\(:\)\@<!:\%([a-zA-Z_]\w*\%([?!]\|=[>=]\@!\)\?\|<>\|===\?\|>=\?\|<=\?\)'
3332
syn match elixirSymbol '\(:\)\@<!:\%(<=>\|&&\?\|%\(()\|\[\]\|{}\)\|++\?\|--\?\|||\?\|!\|//\|[%&`/|]\)'
@@ -68,6 +67,54 @@ syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|
6867
syn region elixirBlock matchgroup=elixirKeyword start="\<do\>\(:\)\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
6968
syn 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
71118
hi def link elixirInclude Include
72119
hi def link elixirComment Comment
73120
hi def link elixirTodo Todo

0 commit comments

Comments
 (0)