Skip to content

Commit e4ad4d6

Browse files
Add fuzzy matching to option plugin (#128)
Relates to #121
1 parent b3da164 commit e4ad4d6

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

lib/elixir_sense/plugins/option.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ defmodule ElixirSense.Plugins.Option do
22
@moduledoc false
33

44
alias ElixirSense.Plugins.Util
5+
alias ElixirSense.Providers.Suggestion.Matcher
56

67
def find(options, hint, fun) do
78
for option <- options, match_hint?(option, hint) do
@@ -32,6 +33,6 @@ defmodule ElixirSense.Plugins.Option do
3233
option
3334
|> Map.fetch!(:name)
3435
|> to_string()
35-
|> String.starts_with?(hint)
36+
|> Matcher.match?(hint)
3637
end
3738
end

test/elixir_sense/plugins/ecto_test.exs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,28 @@ defmodule ElixirSense.Plugins.EctoTest do
639639
"virtual"
640640
]
641641
end
642+
643+
test "at arg 2, suggest fuzzy field options" do
644+
buffer = """
645+
import Ecto.Schema
646+
field :name, :string, deau
647+
# ^
648+
"""
649+
650+
[cursor] = cursors(buffer)
651+
result = suggestions(buffer, cursor)
652+
assert Enum.map(result, & &1.label) == ["default"]
653+
654+
buffer = """
655+
import Ecto.Schema
656+
field :name, :string, pri_ke
657+
# ^
658+
"""
659+
660+
[cursor] = cursors(buffer)
661+
result = suggestions(buffer, cursor)
662+
assert Enum.map(result, & &1.label) == ["primary_key"]
663+
end
642664
end
643665

644666
describe "suggestions for Ecto.Migration.add/3" do

0 commit comments

Comments
 (0)