Skip to content

Commit

Permalink
Fix rename issues following merge with master
Browse files Browse the repository at this point in the history
  • Loading branch information
timgent committed Nov 13, 2022
1 parent 716de9d commit faf8d25
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
8 changes: 5 additions & 3 deletions apps/language_server/lib/language_server/providers/rename.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
alias ElixirLS.LanguageServer.SourceFile

def rename(%SourceFile{} = source_file, start_uri, line, character, new_name) do
trace = ElixirLS.LanguageServer.Tracer.get_trace()

edits =
with char_ident when not is_nil(char_ident) <-
get_char_ident(source_file.text, line, character),
%ElixirSense.Location{} = definition <-
ElixirSense.definition(source_file.text, line, character),
references <- ElixirSense.references(source_file.text, line, character) do
references <- ElixirSense.references(source_file.text, line, character, trace) do
length_old = length(char_ident)

definition_references =
Expand All @@ -26,7 +28,7 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
%{file: separate_file_path, type: :function} ->
parse_definition_source_code(definition)
|> get_all_fn_header_positions(char_ident)
|> positions_to_references(SourceFile.path_to_uri(separate_file_path), length_old)
|> positions_to_references(SourceFile.Path.to_uri(separate_file_path), length_old)

_ ->
positions_to_references(
Expand Down Expand Up @@ -85,7 +87,7 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do

defp repack_references(references, start_uri) do
for reference <- references do
uri = if reference.uri, do: SourceFile.path_to_uri(reference.uri), else: start_uri
uri = if reference.uri, do: SourceFile.Path.to_uri(reference.uri), else: start_uri

%{
uri: uri,
Expand Down
26 changes: 26 additions & 0 deletions apps/language_server/test/providers/rename_test.exs
Original file line number Diff line number Diff line change
@@ -1,13 +1,39 @@
defmodule ElixirLS.LanguageServer.Providers.RenameTest do
use ExUnit.Case, async: true

alias ElixirLS.LanguageServer.Build
alias ElixirLS.LanguageServer.Providers.Rename
alias ElixirLS.LanguageServer.SourceFile
alias ElixirLS.LanguageServer.Test.FixtureHelpers
alias ElixirLS.LanguageServer.Tracer
# mix cmd --app language_server mix test test/providers/rename_test.exs

@fake_uri "file:///World/Netherlands/Amsterdam/supercomputer/amazing.ex"

setup_all context do
File.rm_rf!(FixtureHelpers.get_path(".elixir_ls/calls.dets"))
{:ok, pid} = Tracer.start_link([])
Tracer.set_project_dir(FixtureHelpers.get_path(""))

compiler_options = Code.compiler_options()
Build.set_compiler_options(ignore_module_conflict: true)

on_exit(fn ->
Process.monitor(pid)
Process.unlink(pid)
GenServer.stop(pid)

receive do
{:DOWN, _, _, _, _} -> :ok
end
end)

Code.compile_file(FixtureHelpers.get_path("rename_example.ex"))
Code.compile_file(FixtureHelpers.get_path("rename_example_b.ex"))

{:ok, context}
end

test "rename blank space" do
text = """
defmodule MyModule do
Expand Down

0 comments on commit faf8d25

Please sign in to comment.