Skip to content

Commit eb06422

Browse files
committed
Fix RenameFiles workspace operations
1 parent 39944bb commit eb06422

File tree

2 files changed

+40
-6
lines changed

2 files changed

+40
-6
lines changed

src/Protocol/Features/FileOperationsFeature.cs

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public partial record FileCreate : FileOperationItem;
8383
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
8484
[RegistrationOptions(typeof(DidRenameFileRegistrationOptions))]
8585
[Capability(typeof(FileOperationsWorkspaceClientCapabilities))]
86-
public partial record DidRenameFileParams : FileOperationParams<FileRename>, IRequest
86+
public partial record DidRenameFileParams : RenameFileOperationParams, IRequest
8787
{
8888
public static implicit operator WillRenameFileParams(DidRenameFileParams @params)
8989
{
@@ -99,16 +99,44 @@ public static implicit operator WillRenameFileParams(DidRenameFileParams @params
9999
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
100100
[RegistrationOptions(typeof(WillRenameFileRegistrationOptions))]
101101
[Capability(typeof(FileOperationsWorkspaceClientCapabilities))]
102-
public partial record WillRenameFileParams : FileOperationParams<FileRename>, IRequest<WorkspaceEdit?>
102+
public partial record WillRenameFileParams : RenameFileOperationParams, IRequest<WorkspaceEdit?>
103103
{
104104
public static implicit operator DidRenameFileParams(WillRenameFileParams @params)
105105
{
106106
return new() { Files = @params.Files };
107107
}
108108
}
109109

110-
/// <inheritdoc cref="FileOperationItem" />
111-
public partial record FileRename : FileOperationItem;
110+
/// <summary>
111+
/// The parameters sent in notifications/requests for user-initiated renames
112+
/// of files.
113+
///
114+
/// @since 3.16.0
115+
/// </summary>
116+
public abstract record RenameFileOperationParams
117+
{
118+
/// <summary>
119+
/// An array of all files/folders renamed in this operation.
120+
/// When a folder is renamed, only the folder will be included, and not its children.
121+
/// </summary>
122+
public Container<FileRename> Files { get; init; } = null!;
123+
}
124+
125+
/// <summary>
126+
/// Represents information on a file/folder rename.
127+
/// </summary>
128+
public partial record FileRename
129+
{
130+
/// <summary>
131+
/// A file:// URI for the original location of the file/folder being renamed.
132+
/// </summary>
133+
public Uri OldUri { get; init; } = null!;
134+
135+
/// <summary>
136+
/// A file:// URI for the new location of the file/folder being renamed.
137+
/// </summary>
138+
public Uri NewUri { get; init; } = null!;
139+
}
112140

113141
/// <inheritdoc cref="FileOperationParams{T}" />
114142
[Parallel]

test/Lsp.Integration.Tests/FileOperationTests.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,19 @@ public async Task Should_Handle_FileRename()
9494
await client.RequestWillRenameFile(
9595
new WillRenameFileParams
9696
{
97-
Files = Container<FileRename>.From(new FileRename { Uri = new Uri("file://asdf") })
97+
Files = Container<FileRename>.From(new FileRename {
98+
OldUri = new Uri("file://asdf"),
99+
NewUri = new Uri("file://zxcv"),
100+
})
98101
}
99102
);
100103
client.DidRenameFile(
101104
new DidRenameFileParams
102105
{
103-
Files = Container<FileRename>.From(new FileRename { Uri = new Uri("file://asdf") })
106+
Files = Container<FileRename>.From(new FileRename {
107+
OldUri = new Uri("file://asdf"),
108+
NewUri = new Uri("file://zxcv")
109+
})
104110
}
105111
);
106112

0 commit comments

Comments
 (0)