@@ -22,12 +22,12 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
22
22
case definition do
23
23
% { file: nil , type: :function } ->
24
24
parse_definition_source_code ( source_file . text )
25
- |> get_all_fn_header_positions ( char_ident )
25
+ |> get_all_fn_header_positions ( char_ident , definition )
26
26
|> positions_to_references ( start_uri , length_old )
27
27
28
28
% { file: separate_file_path , type: :function } ->
29
29
parse_definition_source_code ( definition )
30
- |> get_all_fn_header_positions ( char_ident )
30
+ |> get_all_fn_header_positions ( char_ident , definition )
31
31
|> positions_to_references ( SourceFile.Path . to_uri ( separate_file_path ) , length_old )
32
32
33
33
_ ->
@@ -78,15 +78,15 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
78
78
}
79
79
else
80
80
_ ->
81
- # Not a variable or local call, skipping for now
81
+ # Not a variable or function call, skipping
82
82
nil
83
83
end
84
84
85
85
{ :ok , result }
86
86
end
87
87
88
88
defp repack_references ( references , start_uri ) do
89
- for reference <- references do
89
+ Enum . map ( references , fn reference ->
90
90
uri = if reference . uri , do: SourceFile.Path . to_uri ( reference . uri ) , else: start_uri
91
91
92
92
% {
@@ -99,7 +99,7 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
99
99
}
100
100
}
101
101
}
102
- end
102
+ end )
103
103
end
104
104
105
105
defp parse_definition_source_code ( % { file: file } ) do
@@ -110,10 +110,16 @@ defmodule ElixirLS.LanguageServer.Providers.Rename do
110
110
ElixirSense.Core.Parser . parse_string ( source_text , true , true , nil )
111
111
end
112
112
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
114
118
parsed_source . mods_funs_to_positions
115
119
|> 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 } )
117
123
end )
118
124
|> Enum . flat_map ( fn { _ , % { positions: positions } } -> positions end )
119
125
|> Enum . uniq ( )
0 commit comments