Current section
Files
Jump to
Current section
Files
lib/examples/e_completion.ex
defmodule Examples.ECompletion do
@moduledoc """
I am examples for the Elixir autocompletion system.
"""
use ExExample
import ExUnit.Assertions
alias GtBridge.Completion
@spec complete_enum_dot() :: [String.t()]
example complete_enum_dot do
results = Completion.complete("Enum.ma")
assert Enum.any?(results, &String.starts_with?(&1, "Enum.map/2"))
assert Enum.any?(results, &String.starts_with?(&1, "Enum.map_every/3"))
results
end
@spec complete_alias() :: [String.t()]
example complete_alias do
results = Completion.complete("GenSer")
assert "GenServer" in results
results
end
@spec complete_erlang_module() :: [String.t()]
example complete_erlang_module do
results = Completion.complete(":erlan")
assert ":erlang" in results
results
end
@spec complete_erlang_dot() :: [String.t()]
example complete_erlang_dot do
results = Completion.complete(":erlang.no")
assert ":erlang.node/0" in results
results
end
@spec complete_with_bindings() :: [String.t()]
example complete_with_bindings do
results = Completion.complete("my_v", my_var: 42, my_val: "hello")
assert "my_var" in results
assert "my_val" in results
results
end
@spec complete_struct() :: [String.t()]
example complete_struct do
results = Completion.complete("%MapS")
assert "%MapSet" in results
results
end
@spec complete_struct_fields() :: [String.t()]
example complete_struct_fields do
# GT sends "ho" as code (from { separator) and full source for context
results = Completion.complete("ho", [], "%URI{ho")
assert "host" in results
assert "port" not in results
# Without source context, falls back to normal local_or_var
fallback = Completion.complete("ho")
assert "host" not in fallback
results
end
@spec complete_kernel_with_arity() :: [String.t()]
example complete_kernel_with_arity do
results = Completion.complete("is_")
assert "is_atom/1" in results
assert length(results) > 0
results
end
end