Skip to content

Commit 2f1bce0

Browse files
authored
Merge pull request #1079 from manandre/file-rename
Fix RenameFiles workspace operations
2 parents 35bffc5 + fee7927 commit 2f1bce0

File tree

2 files changed

+104
-70
lines changed

2 files changed

+104
-70
lines changed

src/Protocol/Features/FileOperationsFeature.cs

Lines changed: 67 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace Models
2020
///
2121
/// @since 3.16.0
2222
/// </summary>
23-
public abstract record FileOperationParams<T>
23+
public abstract record FileOperationsParams<T>
2424
where T : FileOperationItem
2525
{
2626
/// <summary>
@@ -40,33 +40,33 @@ public abstract record FileOperationItem
4040
public Uri Uri { get; init; } = null!;
4141
}
4242

43-
/// <inheritdoc cref="FileOperationParams{T}" />
43+
/// <inheritdoc cref="FileOperationsParams{T}" />
4444
[Parallel]
4545
[Method(WorkspaceNames.DidCreateFiles, Direction.ClientToServer)]
4646
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace")]
4747
[GenerateHandlerMethods]
4848
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
49-
[RegistrationOptions(typeof(DidCreateFileRegistrationOptions))]
49+
[RegistrationOptions(typeof(DidCreateFilesRegistrationOptions))]
5050
[Capability(typeof(FileOperationsWorkspaceClientCapabilities))]
51-
public partial record DidCreateFileParams : FileOperationParams<FileCreate>, IRequest
51+
public partial record DidCreateFilesParams : FileOperationsParams<FileCreate>, IRequest
5252
{
53-
public static implicit operator WillCreateFileParams(DidCreateFileParams @params)
53+
public static implicit operator WillCreateFilesParams(DidCreateFilesParams @params)
5454
{
5555
return new() { Files = @params.Files };
5656
}
5757
}
5858

59-
/// <inheritdoc cref="FileOperationParams{T}" />
59+
/// <inheritdoc cref="FileOperationsParams{T}" />
6060
[Parallel]
6161
[Method(WorkspaceNames.WillCreateFiles, Direction.ClientToServer)]
6262
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace")]
6363
[GenerateHandlerMethods]
6464
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
65-
[RegistrationOptions(typeof(WillCreateFileRegistrationOptions))]
65+
[RegistrationOptions(typeof(WillCreateFilesRegistrationOptions))]
6666
[Capability(typeof(FileOperationsWorkspaceClientCapabilities))]
67-
public partial record WillCreateFileParams : FileOperationParams<FileCreate>, IRequest<WorkspaceEdit?>
67+
public partial record WillCreateFilesParams : FileOperationsParams<FileCreate>, IRequest<WorkspaceEdit?>
6868
{
69-
public static implicit operator DidCreateFileParams(WillCreateFileParams @params)
69+
public static implicit operator DidCreateFilesParams(WillCreateFilesParams @params)
7070
{
7171
return new() { Files = @params.Files };
7272
}
@@ -75,68 +75,96 @@ public static implicit operator DidCreateFileParams(WillCreateFileParams @params
7575
/// <inheritdoc cref="FileOperationItem" />
7676
public partial record FileCreate : FileOperationItem;
7777

78-
/// <inheritdoc cref="FileOperationParams{T}" />
78+
/// <inheritdoc cref="FileOperationsParams{T}" />
7979
[Parallel]
8080
[Method(WorkspaceNames.DidRenameFiles, Direction.ClientToServer)]
8181
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace")]
8282
[GenerateHandlerMethods]
8383
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
84-
[RegistrationOptions(typeof(DidRenameFileRegistrationOptions))]
84+
[RegistrationOptions(typeof(DidRenameFilesRegistrationOptions))]
8585
[Capability(typeof(FileOperationsWorkspaceClientCapabilities))]
86-
public partial record DidRenameFileParams : FileOperationParams<FileRename>, IRequest
86+
public partial record DidRenameFilesParams : RenameFilesOperationParams, IRequest
8787
{
88-
public static implicit operator WillRenameFileParams(DidRenameFileParams @params)
88+
public static implicit operator WillRenameFilesParams(DidRenameFilesParams @params)
8989
{
9090
return new() { Files = @params.Files };
9191
}
9292
}
9393

94-
/// <inheritdoc cref="FileOperationParams{T}" />
94+
/// <inheritdoc cref="FileOperationsParams{T}" />
9595
[Parallel]
9696
[Method(WorkspaceNames.WillRenameFiles, Direction.ClientToServer)]
9797
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace")]
9898
[GenerateHandlerMethods]
9999
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
100-
[RegistrationOptions(typeof(WillRenameFileRegistrationOptions))]
100+
[RegistrationOptions(typeof(WillRenameFilesRegistrationOptions))]
101101
[Capability(typeof(FileOperationsWorkspaceClientCapabilities))]
102-
public partial record WillRenameFileParams : FileOperationParams<FileRename>, IRequest<WorkspaceEdit?>
102+
public partial record WillRenameFilesParams : RenameFilesOperationParams, IRequest<WorkspaceEdit?>
103103
{
104-
public static implicit operator DidRenameFileParams(WillRenameFileParams @params)
104+
public static implicit operator DidRenameFilesParams(WillRenameFilesParams @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 RenameFilesOperationParams
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

113-
/// <inheritdoc cref="FileOperationParams{T}" />
141+
/// <inheritdoc cref="FileOperationsParams{T}" />
114142
[Parallel]
115143
[Method(WorkspaceNames.DidDeleteFiles, Direction.ClientToServer)]
116144
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace")]
117145
[GenerateHandlerMethods]
118146
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
119-
[RegistrationOptions(typeof(DidDeleteFileRegistrationOptions))]
147+
[RegistrationOptions(typeof(DidDeleteFilesRegistrationOptions))]
120148
[Capability(typeof(FileOperationsWorkspaceClientCapabilities))]
121-
public partial record DidDeleteFileParams : FileOperationParams<FileDelete>, IRequest
149+
public partial record DidDeleteFilesParams : FileOperationsParams<FileDelete>, IRequest
122150
{
123-
public static implicit operator WillDeleteFileParams(DidDeleteFileParams @params)
151+
public static implicit operator WillDeleteFilesParams(DidDeleteFilesParams @params)
124152
{
125153
return new() { Files = @params.Files };
126154
}
127155
}
128156

129-
/// <inheritdoc cref="FileOperationParams{T}" />
157+
/// <inheritdoc cref="FileOperationsParams{T}" />
130158
[Parallel]
131159
[Method(WorkspaceNames.WillDeleteFiles, Direction.ClientToServer)]
132160
[GenerateHandler("OmniSharp.Extensions.LanguageServer.Protocol.Workspace")]
133161
[GenerateHandlerMethods]
134162
[GenerateRequestMethods(typeof(IWorkspaceLanguageClient), typeof(ILanguageClient))]
135-
[RegistrationOptions(typeof(WillDeleteFileRegistrationOptions))]
163+
[RegistrationOptions(typeof(WillDeleteFilesRegistrationOptions))]
136164
[Capability(typeof(FileOperationsWorkspaceClientCapabilities))]
137-
public partial record WillDeleteFileParams : FileOperationParams<FileDelete>, IRequest<WorkspaceEdit?>
165+
public partial record WillDeleteFilesParams : FileOperationsParams<FileDelete>, IRequest<WorkspaceEdit?>
138166
{
139-
public static implicit operator DidDeleteFileParams(WillDeleteFileParams @params)
167+
public static implicit operator DidDeleteFilesParams(WillDeleteFilesParams @params)
140168
{
141169
return new() { Files = @params.Files };
142170
}
@@ -151,7 +179,7 @@ public partial record FileDelete : FileOperationItem;
151179
nameof(FileOperationsWorkspaceServerCapabilities.WillCreate)
152180
)]
153181
[RegistrationName(WorkspaceNames.WillCreateFiles)]
154-
public partial class WillCreateFileRegistrationOptions : IFileOperationRegistrationOptions
182+
public partial class WillCreateFilesRegistrationOptions : IFileOperationRegistrationOptions
155183
{
156184
/// <summary>
157185
/// The actual filters.
@@ -165,7 +193,7 @@ public partial class WillCreateFileRegistrationOptions : IFileOperationRegistrat
165193
nameof(FileOperationsWorkspaceServerCapabilities.DidCreate)
166194
)]
167195
[RegistrationName(WorkspaceNames.DidCreateFiles)]
168-
public partial class DidCreateFileRegistrationOptions : IFileOperationRegistrationOptions
196+
public partial class DidCreateFilesRegistrationOptions : IFileOperationRegistrationOptions
169197
{
170198
/// <summary>
171199
/// The actual filters.
@@ -179,7 +207,7 @@ public partial class DidCreateFileRegistrationOptions : IFileOperationRegistrati
179207
nameof(FileOperationsWorkspaceServerCapabilities.WillRename)
180208
)]
181209
[RegistrationName(WorkspaceNames.WillRenameFiles)]
182-
public partial class WillRenameFileRegistrationOptions : IFileOperationRegistrationOptions
210+
public partial class WillRenameFilesRegistrationOptions : IFileOperationRegistrationOptions
183211
{
184212
/// <summary>
185213
/// The actual filters.
@@ -193,7 +221,7 @@ public partial class WillRenameFileRegistrationOptions : IFileOperationRegistrat
193221
nameof(FileOperationsWorkspaceServerCapabilities.DidRename)
194222
)]
195223
[RegistrationName(WorkspaceNames.DidRenameFiles)]
196-
public partial class DidRenameFileRegistrationOptions : IFileOperationRegistrationOptions
224+
public partial class DidRenameFilesRegistrationOptions : IFileOperationRegistrationOptions
197225
{
198226
/// <summary>
199227
/// The actual filters.
@@ -207,7 +235,7 @@ public partial class DidRenameFileRegistrationOptions : IFileOperationRegistrati
207235
nameof(FileOperationsWorkspaceServerCapabilities.WillDelete)
208236
)]
209237
[RegistrationName(WorkspaceNames.WillDeleteFiles)]
210-
public partial class WillDeleteFileRegistrationOptions : IFileOperationRegistrationOptions
238+
public partial class WillDeleteFilesRegistrationOptions : IFileOperationRegistrationOptions
211239
{
212240
/// <summary>
213241
/// The actual filters.
@@ -221,7 +249,7 @@ public partial class WillDeleteFileRegistrationOptions : IFileOperationRegistrat
221249
nameof(FileOperationsWorkspaceServerCapabilities.DidDelete)
222250
)]
223251
[RegistrationName(WorkspaceNames.DidDeleteFiles)]
224-
public partial class DidDeleteFileRegistrationOptions : IFileOperationRegistrationOptions
252+
public partial class DidDeleteFilesRegistrationOptions : IFileOperationRegistrationOptions
225253
{
226254
/// <summary>
227255
/// The actual filters.
@@ -335,37 +363,37 @@ public class FileOperationsWorkspaceServerCapabilities
335363
/// The client has support for sending didCreateFiles notifications.
336364
/// </summary>
337365
[Optional]
338-
public DidCreateFileRegistrationOptions.StaticOptions? DidCreate { get; set; }
366+
public DidCreateFilesRegistrationOptions.StaticOptions? DidCreate { get; set; }
339367

340368
/// <summary>
341369
/// The client has support for sending willCreateFiles requests.
342370
/// </summary>
343371
[Optional]
344-
public WillCreateFileRegistrationOptions.StaticOptions? WillCreate { get; set; }
372+
public WillCreateFilesRegistrationOptions.StaticOptions? WillCreate { get; set; }
345373

346374
/// <summary>
347375
/// The client has support for sending didRenameFiles notifications.
348376
/// </summary>
349377
[Optional]
350-
public DidRenameFileRegistrationOptions.StaticOptions? DidRename { get; set; }
378+
public DidRenameFilesRegistrationOptions.StaticOptions? DidRename { get; set; }
351379

352380
/// <summary>
353381
/// The client has support for sending willRenameFiles requests.
354382
/// </summary>
355383
[Optional]
356-
public WillRenameFileRegistrationOptions.StaticOptions? WillRename { get; set; }
384+
public WillRenameFilesRegistrationOptions.StaticOptions? WillRename { get; set; }
357385

358386
/// <summary>
359387
/// The client has support for sending didDeleteFiles notifications.
360388
/// </summary>
361389
[Optional]
362-
public DidDeleteFileRegistrationOptions.StaticOptions? DidDelete { get; set; }
390+
public DidDeleteFilesRegistrationOptions.StaticOptions? DidDelete { get; set; }
363391

364392
/// <summary>
365393
/// The client has support for sending willDeleteFiles requests.
366394
/// </summary>
367395
[Optional]
368-
public WillDeleteFileRegistrationOptions.StaticOptions? WillDelete { get; set; }
396+
public WillDeleteFilesRegistrationOptions.StaticOptions? WillDelete { get; set; }
369397
}
370398
}
371399

0 commit comments

Comments
 (0)