Skip to content

Commit bc36cc4

Browse files
authored
Merge pull request #840 from lexical-lsp/issue-832
Show syntax macro completions when `Kernel.` is prefixed to the cursor.
2 parents 6b245c2 + a75bf2f commit bc36cc4

File tree

2 files changed

+23
-10
lines changed
  • apps/server
    • lib/lexical/server/code_intelligence/completion/translations
    • test/lexical/server/code_intelligence/completion/translations

2 files changed

+23
-10
lines changed

apps/server/lib/lexical/server/code_intelligence/completion/translations/callable.ex

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@ defmodule Lexical.Server.CodeIntelligence.Completion.Translations.Callable do
88

99
@syntax_macros ~w(= == == === =~ .. ..// ! != !== &&)
1010

11-
def completion(%_callable_module{name: name}, _env)
11+
def completion(%_callable_module{name: name} = callable, %Env{} = env)
1212
when name in @syntax_macros do
13-
:skip
13+
if String.ends_with?(env.prefix, "Kernel.") do
14+
do_completion(callable, env)
15+
else
16+
:skip
17+
end
1418
end
1519

1620
def completion(%callable_module{arity: 0} = callable, %Env{} = env)

apps/server/test/lexical/server/code_intelligence/completion/translations/macro_test.exs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -906,14 +906,23 @@ defmodule Lexical.Server.CodeIntelligence.Completion.Translations.MacroTest do
906906
inside_exunit_context("describe \"${1:message}\" do\n $0\nend")
907907
end
908908

909-
test "syntax macros", %{project: project} do
910-
assert [] = complete(project, "a =|")
911-
assert [] = complete(project, "a ==|")
912-
assert [] = complete(project, "a ..|")
913-
assert [] = complete(project, "a !|")
914-
assert [] = complete(project, "a !=|")
915-
assert [] = complete(project, "a !==|")
916-
assert [] = complete(project, "a &&|")
909+
describe "syntax macros" do
910+
test "completions are skipped for syntax macros", %{project: project} do
911+
assert [] = complete(project, "a =|")
912+
assert [] = complete(project, "a ==|")
913+
assert [] = complete(project, "a ..|")
914+
assert [] = complete(project, "a !|")
915+
assert [] = complete(project, "a !=|")
916+
assert [] = complete(project, "a !==|")
917+
assert [] = complete(project, "a &&|")
918+
end
919+
920+
test "completions are shown for syntax macros when `Kernel.|` is prefixed.", %{
921+
project: project
922+
} do
923+
completions = complete(project, ":some_expression && Kernel.|")
924+
assert length(completions) > 0
925+
end
917926
end
918927

919928
defp inside_exunit_context(text) do

0 commit comments

Comments
 (0)