@@ -22,12 +22,12 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
2222 case definition do
2323 % { file: nil , type: :function } ->
2424 parse_definition_source_code ( source_file . text )
25- |> get_all_fn_header_positions ( char_ident )
25+ |> get_all_fn_header_positions ( char_ident , definition )
2626 |> positions_to_references ( start_uri , length_old )
2727
2828 % { file: separate_file_path , type: :function } ->
2929 parse_definition_source_code ( definition )
30- |> get_all_fn_header_positions ( char_ident )
30+ |> get_all_fn_header_positions ( char_ident , definition )
3131 |> positions_to_references ( SourceFile.Path . to_uri ( separate_file_path ) , length_old )
3232
3333 _ ->
@@ -78,15 +78,15 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
7878 }
7979 else
8080 _ ->
81- # Not a variable or local call, skipping for now
81+ # Not a variable or function call, skipping
8282 nil
8383 end
8484
8585 { :ok , result }
8686 end
8787
8888 defp repack_references ( references , start_uri ) do
89- for reference <- references do
89+ Enum . map ( references , fn reference ->
9090 uri = if reference . uri , do: SourceFile.Path . to_uri ( reference . uri ) , else: start_uri
9191
9292 % {
@@ -99,7 +99,7 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
9999 }
100100 }
101101 }
102- end
102+ end )
103103 end
104104
105105 defp parse_definition_source_code ( % { file: file } ) do
@@ -110,10 +110,16 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
110110 ElixirSense.Core.Parser . parse_string ( source_text , true , true , nil )
111111 end
112112
113- defp get_all_fn_header_positions ( parsed_source , char_ident ) do
113+ defp get_all_fn_header_positions (
114+ parsed_source ,
115+ definition_name ,
116+ % { column: column , line: line } = _definition
117+ ) do
114118 parsed_source . mods_funs_to_positions
115119 |> Map . filter ( fn
116- { { _ , fn_name , _ } , _ } -> Atom . to_charlist ( fn_name ) == char_ident
120+ { { _ , fn_name , fn_arity } , % { positions: fn_positions } } ->
121+ Atom . to_charlist ( fn_name ) === definition_name and not is_nil ( fn_arity ) and
122+ Enum . member? ( fn_positions , { line , column } )
117123 end )
118124 |> Enum . flat_map ( fn { _ , % { positions: positions } } -> positions end )
119125 |> Enum . uniq ( )
0 commit comments