Skip to content

Commit 38bd07d

Browse files
committed
cursor and parsing improvements
1 parent dd572f4 commit 38bd07d

File tree

9 files changed

+21
-24
lines changed

9 files changed

+21
-24
lines changed

apps/debug_adapter/lib/debug_adapter/server.ex

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2925,8 +2925,7 @@ defmodule ElixirLS.DebugAdapter.Server do
29252925
if String.ends_with?(file, ".ex") or String.ends_with?(file, ".exs") do
29262926
code = File.read!(file)
29272927
buffer_file_metadata = ElixirSense.Core.Parser.parse_string(code, false, true, {line, 1})
2928-
2929-
env = ElixirSense.Core.Metadata.get_env(buffer_file_metadata, {line, 1})
2928+
env = Metadata.get_cursor_env(buffer_file_metadata, {line, 1})
29302929

29312930
{buffer_file_metadata, env, ElixirSense.Core.State.Env.to_macro_env(env, file, line)}
29322931
else

apps/language_server/lib/language_server/providers/code_action/replace_remote_function.ex

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ defmodule ElixirLS.LanguageServer.Providers.CodeAction.ReplaceRemoteFunction do
1212
alias ElixirLS.LanguageServer.Providers.CodeMod.Text
1313
alias ElixirLS.LanguageServer.SourceFile
1414
alias ElixirSense.Core.Parser
15+
alias ElixirSense.Core.Metadata
1516

1617
import ElixirLS.LanguageServer.Providers.CodeAction.Helpers
1718

@@ -180,12 +181,9 @@ defmodule ElixirLS.LanguageServer.Providers.CodeAction.ReplaceRemoteFunction do
180181
defp aliases_at(source_file, line_number) do
181182
one_based_line = line_number + 1
182183

183-
metadata = Parser.parse_string(source_file.text, true, true, {one_based_line, 1})
184-
185-
case metadata.lines_to_env[one_based_line] do
186-
%ElixirSense.Core.State.Env{aliases: aliases} -> {:ok, aliases}
187-
_ -> :error
188-
end
184+
metadata = Parser.parse_string(source_file.text, true, false, {one_based_line, 1})
185+
env = Metadata.get_cursor_env(metadata, {one_based_line, 1})
186+
{:ok, env.aliases}
189187
end
190188

191189
defp module_to_alias(module) do

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ defmodule ElixirLS.LanguageServer.Providers.Completion.Suggestion do
113113

114114
metadata =
115115
Keyword.get_lazy(options, :metadata, fn ->
116-
Parser.parse_string(code, true, true, {line, column})
116+
Parser.parse_string(code, true, false, {line, column})
117117
end)
118118

119119
{text_before, text_after} = Source.split_at(code, line, column)
@@ -192,17 +192,18 @@ defmodule ElixirLS.LanguageServer.Providers.Completion.Suggestion do
192192

193193
# TODO this may no longer be needed
194194
# only fix_incomplete_call has some tests depending on it
195+
# on 1.17 no tests depend on those hacks
195196
fixers = [
196-
fix_incomplete_call,
197-
fix_incomplete_kw,
198-
fix_incomplete_kw_key
197+
# fix_incomplete_call,
198+
# fix_incomplete_kw,
199+
# fix_incomplete_kw_key
199200
]
200201

201-
Enum.reduce_while(fixers, nil, fn fun, _ ->
202+
Enum.reduce_while(fixers, metadata, fn fun, metadata ->
202203
new_buffer = fun.(text_before, text_after)
203204

204205
with true <- new_buffer != nil,
205-
meta <- Parser.parse_string(new_buffer, false, true, {line, column}),
206+
meta <- Parser.parse_string(new_buffer, false, false, {line, column}),
206207
%Metadata{error: error} <- meta,
207208
true <- error == nil do
208209
{:halt, meta}

apps/language_server/lib/language_server/providers/definition/locator.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ defmodule ElixirLS.LanguageServer.Providers.Definition.Locator do
3434
context ->
3535
metadata =
3636
Keyword.get_lazy(options, :metadata, fn ->
37-
Parser.parse_string(code, true, true, {line, column})
37+
Parser.parse_string(code, true, false, {line, column})
3838
end)
3939

4040
env = Metadata.get_cursor_env(metadata, {line, column}, {context.begin, context.end})

apps/language_server/lib/language_server/providers/execute_command/expand_macro.ex

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,8 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.ExpandMacro do
5252
end
5353

5454
def expand_full(buffer, code, file, line) do
55-
buffer_file_metadata = Parser.parse_string(buffer, true, true, {line, 1})
56-
57-
env = Metadata.get_env(buffer_file_metadata, {line, 1})
55+
buffer_file_metadata = Parser.parse_string(buffer, true, false, {line, 1})
56+
env = Metadata.get_cursor_env(buffer_file_metadata, {line, 1})
5857

5958
do_expand_full(code, env, file, line)
6059
end

apps/language_server/lib/language_server/providers/hover/docs.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ defmodule ElixirLS.LanguageServer.Providers.Hover.Docs do
7777
%{begin: begin_pos, end: end_pos} = context ->
7878
metadata =
7979
Keyword.get_lazy(options, :metadata, fn ->
80-
Parser.parse_string(code, true, true, {line, column})
80+
Parser.parse_string(code, true, false, {line, column})
8181
end)
8282

8383
env =

apps/language_server/lib/language_server/providers/implementation/locator.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ defmodule ElixirLS.LanguageServer.Providers.Implementation.Locator do
3030
context ->
3131
metadata =
3232
Keyword.get_lazy(options, :metadata, fn ->
33-
Parser.parse_string(code, true, true, {line, column})
33+
Parser.parse_string(code, true, false, {line, column})
3434
end)
3535

36-
env = Metadata.get_env(metadata, {line, column})
36+
env = Metadata.get_cursor_env(metadata, {line, column}, {context.begin, context.end})
3737

3838
find(
3939
context,

apps/language_server/lib/language_server/providers/references/locator.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ defmodule ElixirLS.LanguageServer.Providers.References.Locator do
2727
context ->
2828
metadata =
2929
Keyword.get_lazy(options, :metadata, fn ->
30-
Parser.parse_string(code, true, true, {line, column})
30+
Parser.parse_string(code, true, false, {line, column})
3131
end)
3232

3333
# if context is var try to find env by scope_id

apps/language_server/lib/language_server/providers/signature_help/signature.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ defmodule ElixirLS.LanguageServer.Providers.SignatureHelp.Signature do
2121

2222
metadata =
2323
Keyword.get_lazy(options, :metadata, fn ->
24-
Parser.parse_string(code, true, true, {line, column})
24+
Parser.parse_string(code, true, false, {line, column})
2525
end)
2626

27-
env = Metadata.get_env(metadata, {line, column})
27+
env = Metadata.get_cursor_env(metadata, {line, column})
2828

2929
find(prefix, {line, column}, env, metadata)
3030
end

0 commit comments

Comments
 (0)