Skip to content

Commit 8c00d8c

Browse files
committed
syntax: treat elixirKernelFunction like elixirKeyword
* removes elixirKernelFunction * fixes elixir-editors#403
1 parent 309716f commit 8c00d8c

File tree

5 files changed

+27
-33
lines changed

5 files changed

+27
-33
lines changed

spec/indent/blocks_spec.rb

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,6 @@ def name(param) do
4646
EOF
4747
end
4848

49-
it 'guard in function' do
50-
expect(<<~EOF).to include_elixir_syntax('elixirKernelFunction', 'is_atom')
51-
defmodule M do
52-
def fun(a) when is_atom(a) do
53-
1
54-
end
55-
end
56-
EOF
57-
end
58-
5949
it 'does not consider do: as the start of a block' do
6050
expect(<<~EOF).to be_elixir_indentation
6151
def f do

spec/syntax/guard_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,27 @@
1818

1919
describe 'Guard syntax' do
2020
it 'guard in function' do
21-
expect(<<~EOF).to include_elixir_syntax('elixirKernelFunction', 'is_atom')
21+
expect(<<~EOF).to include_elixir_syntax('elixirKeyword', 'is_atom')
2222
def fun(a) when is_atom(a), do:
2323
EOF
2424
end
2525

2626
it 'guard in if' do
27-
expect(<<~EOF).to include_elixir_syntax('elixirKernelFunction', 'is_atom')
27+
expect(<<~EOF).to include_elixir_syntax('elixirKeyword', 'is_atom')
2828
if is_atom(:atom), do: true
2929
EOF
3030
end
3131

3232
it 'guard in case' do
33-
expect(<<~EOF).to include_elixir_syntax('elixirKernelFunction', 'is_atom')
33+
expect(<<~EOF).to include_elixir_syntax('elixirKeyword', 'is_atom')
3434
case true do
3535
true when is_atom(:atom) -> true
3636
end
3737
EOF
3838
end
3939

4040
it 'guard in case (multiline)' do
41-
expect(<<~EOF).to include_elixir_syntax('elixirKernelFunction', 'is_atom')
41+
expect(<<~EOF).to include_elixir_syntax('elixirKeyword', 'is_atom')
4242
case true do
4343
true when is_boolean(true) and
4444
is_atom(:atom) -> true

spec/syntax/kernel_function_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44

55
describe 'Kernel function syntax' do
66
it 'kernel function used as an atom key in a keyword list outside of a block' do
7-
expect(<<~EOF).not_to include_elixir_syntax('elixirKernelFunction', 'length')
7+
expect(<<~EOF).not_to include_elixir_syntax('elixirKeyword', 'length')
88
do
99
plug Plug.Parsers, length: 400_000_000
1010
end
1111
EOF
1212
end
1313

1414
it 'kernel function used as an atom key in a keyword list contained in a block' do
15-
expect(<<~EOF).not_to include_elixir_syntax('elixirKernelFunction', 'length')
15+
expect(<<~EOF).not_to include_elixir_syntax('elixirKeyword', 'length')
1616
plug Plug.Parsers, length: 400_000_000
1717
EOF
1818
end
1919

2020
it 'kernel function used as a guard' do
21-
expect(<<~'EOF').to include_elixir_syntax('elixirKernelFunction', 'length')
21+
expect(<<~'EOF').to include_elixir_syntax('elixirKeyword', 'length')
2222
def hello(name) when length(name) > 20 do
2323
IO.puts "hello #{name}, you big boy"
2424
end

spec/syntax/keyword_spec.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,18 @@
1414
case true do
1515
EOF
1616
end
17+
18+
it 'length' do
19+
expect(<<~EOF).not_to include_elixir_syntax('elixirKeyword', 'length')
20+
assert String.length(captured) > 0
21+
EOF
22+
23+
expect(<<~EOF).not_to include_elixir_syntax('elixirKeyword', 'size')
24+
assert String.size(captured) > 0
25+
EOF
26+
27+
expect(<<~EOF).to include_elixir_syntax('elixirKeyword', 'length')
28+
assert length(captured) > 0
29+
EOF
30+
end
1731
end

syntax/elixir.vim

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,9 @@ syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDec
1616
syn match elixirComment '#.*' contains=elixirTodo,@Spell
1717
syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
1818

19-
syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>' contains=elixirUnusedVariable,elixirKernelFunction
19+
syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>' contains=elixirUnusedVariable
2020

21-
syn match elixirKeyword '\(\.\)\@<!\<\(for\|case\|when\|with\|cond\|if\|unless\|try\|receive\|send\)\>'
22-
syn match elixirKeyword '\(\.\)\@<!\<\(exit\|raise\|throw\|after\|rescue\|catch\|else\)\>'
23-
syn match elixirKeyword '\(\.\)\@<!\<\(quote\|unquote\|super\|spawn\|spawn_link\|spawn_monitor\)\>'
24-
25-
" Kernel functions
26-
syn keyword elixirKernelFunction contained is_atom is_binary is_bitstring is_boolean is_float
27-
syn keyword elixirKernelFunction contained is_function is_integer is_list is_map is_nil
28-
syn keyword elixirKernelFunction contained is_number is_pid is_port is_reference is_tuple
29-
syn keyword elixirKernelFunction contained abs binary_part bit_size byte_size div elem hd length
30-
syn keyword elixirKernelFunction contained map_size node rem round tl trunc tuple_size
21+
syn match elixirKeyword '\(\.\)\@<!\<\(for\|case\|when\|with\|cond\|if\|unless\|try\|receive\|send\|exit\|raise\|throw\|after\|rescue\|catch\|else\|quote\|unquote\|super\|spawn\|spawn_link\|spawn_monitor\|is_atom\|is_binary\|is_bitstring\|is_boolean\|is_float\|is_function\|is_integer\|is_list\|is_map\|is_nil\|is_number\|is_pid\|is_port\|is_reference\|is_tuple\|abs\|binary_part\|bit_size\|byte_size\|div\|elem\|hd\|length\|map_size\|node\|rem\|round\|tl\|trunc\|tuple_size\)\>'
3122

3223
syn keyword elixirInclude import require alias use
3324

@@ -86,14 +77,14 @@ syn region elixirString matchgroup=elixirStringDelimiter start=+\z('\)+ end=+
8677
syn region elixirString matchgroup=elixirStringDelimiter start=+\z("\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=@Spell,@elixirStringContained
8778
syn region elixirString matchgroup=elixirStringDelimiter start=+\z('''\)+ end=+^\s*\z1+ contains=@Spell,@elixirStringContained
8879
syn region elixirString matchgroup=elixirStringDelimiter start=+\z("""\)+ end=+^\s*\z1+ contains=@Spell,@elixirStringContained
89-
syn region elixirInterpolation matchgroup=elixirInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,elixirKernelFunction,elixirComment,@elixirNotTop
80+
syn region elixirInterpolation matchgroup=elixirInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,elixirComment,@elixirNotTop
9081

9182
syn match elixirAtomInterpolated ':\("\)\@=' contains=elixirString
9283
syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)"
9384

94-
syn region elixirBlock matchgroup=elixirBlockDefinition start="\<do\>:\@!" end="\<end\>" contains=ALLBUT,elixirKernelFunction,@elixirNotTop fold
95-
syn region elixirElseBlock matchgroup=elixirBlockDefinition start="\<else\>:\@!" end="\<end\>" contains=ALLBUT,elixirKernelFunction,@elixirNotTop fold
96-
syn region elixirAnonymousFunction matchgroup=elixirBlockDefinition start="\<fn\>" end="\<end\>" contains=ALLBUT,elixirKernelFunction,@elixirNotTop fold
85+
syn region elixirBlock matchgroup=elixirBlockDefinition start="\<do\>:\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
86+
syn region elixirElseBlock matchgroup=elixirBlockDefinition start="\<else\>:\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
87+
syn region elixirAnonymousFunction matchgroup=elixirBlockDefinition start="\<fn\>" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
9788

9889
syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirAtom,elixirPseudoVariable,elixirAlias,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirAtomInterpolated,elixirRegex,elixirString,elixirStringDelimiter,elixirRegexDelimiter,elixirInterpolationDelimiter,elixirSigil,elixirAnonymousFunction
9990

@@ -200,7 +191,6 @@ hi def link elixirComment Comment
200191
hi def link elixirTodo Todo
201192
hi def link elixirKeyword Define
202193
hi def link elixirExUnitAssert Keyword
203-
hi def link elixirKernelFunction Define
204194
hi def link elixirOperator Operator
205195
hi def link elixirAtom Constant
206196
hi def link elixirPseudoVariable Constant

0 commit comments

Comments
 (0)