Skip to content

Commit d87ca6b

Browse files
committed
fix crash when function completion returns nil
1 parent a4db9bf commit d87ca6b

File tree

1 file changed

+36
-34
lines changed

1 file changed

+36
-34
lines changed

apps/language_server/lib/language_server/providers/completion.ex

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -853,49 +853,51 @@ defmodule ElixirLS.LanguageServer.Providers.Completion do
853853
) do
854854
completion = function_completion(item, context, options)
855855

856-
completion =
857-
if name in @operators do
858-
%__MODULE__{completion | kind: :operator}
859-
else
860-
completion
861-
end
856+
if completion do
857+
completion =
858+
if name in @operators do
859+
%__MODULE__{completion | kind: :operator}
860+
else
861+
completion
862+
end
862863

863-
completion =
864-
if item.needed_require do
865-
{line_to_insert_require, column_to_insert_require} = context.position_to_insert_alias
864+
completion =
865+
if item.needed_require do
866+
{line_to_insert_require, column_to_insert_require} = context.position_to_insert_alias
866867

867-
indentation =
868-
if column_to_insert_require >= 1,
869-
do: 1..column_to_insert_require |> Enum.map_join(fn _ -> " " end),
870-
else: ""
868+
indentation =
869+
if column_to_insert_require >= 1,
870+
do: 1..column_to_insert_require |> Enum.map_join(fn _ -> " " end),
871+
else: ""
871872

872-
require_edit = indentation <> "require " <> item.needed_require <> "\n"
873+
require_edit = indentation <> "require " <> item.needed_require <> "\n"
873874

874-
label_details =
875-
Map.update!(
876-
completion.label_details,
877-
"description",
878-
&("require " <> &1)
879-
)
875+
label_details =
876+
Map.update!(
877+
completion.label_details,
878+
"description",
879+
&("require " <> &1)
880+
)
880881

881-
%__MODULE__{
882+
%__MODULE__{
883+
completion
884+
| additional_text_edit: %TextEdit{
885+
range: range(line_to_insert_require, 0, line_to_insert_require, 0),
886+
newText: require_edit
887+
},
888+
label_details: label_details
889+
}
890+
else
882891
completion
883-
| additional_text_edit: %TextEdit{
884-
range: range(line_to_insert_require, 0, line_to_insert_require, 0),
885-
newText: require_edit
886-
},
887-
label_details: label_details
888-
}
892+
end
893+
894+
file_path = Keyword.get(options, :file_path)
895+
896+
if snippet = snippet_for({origin, name}, Map.put(context, :file_path, file_path)) do
897+
%__MODULE__{completion | insert_text: snippet, label: name}
889898
else
890899
completion
891900
end
892-
893-
file_path = Keyword.get(options, :file_path)
894-
895-
if snippet = snippet_for({origin, name}, Map.put(context, :file_path, file_path)) do
896-
%__MODULE__{completion | insert_text: snippet, label: name}
897-
else
898-
completion
899901
end
900902
end
901903

0 commit comments

Comments
 (0)