@@ -10,7 +10,13 @@ interface IRenameSymbolRequestArguments {
10
10
FileName ?:string
11
11
Line ?:number
12
12
Column ?:number
13
- RenameTo :string
13
+ RenameTo ?:string
14
+ }
15
+ interface IPrepareRenameSymbolRequestArguments {
16
+ FileName ?:string
17
+ Line ?:number
18
+ Column ?:number
19
+ RenameTo ?:string
14
20
}
15
21
16
22
// eslint-disable-next-line @typescript-eslint/no-empty-interface
@@ -31,7 +37,12 @@ interface IRenameSymbolRequestResponse {
31
37
changes : ModifiedFileResponse [ ]
32
38
}
33
39
40
+ interface IPrepareRenameSymbolRequestResponse {
41
+ message : string
42
+ }
43
+
34
44
export const RenameSymbolRequestType = new RequestType < IRenameSymbolRequestArguments , IRenameSymbolRequestResponse , void > ( "powerShell/renameSymbol" ) ;
45
+ export const PrepareRenameSymbolRequestType = new RequestType < IPrepareRenameSymbolRequestArguments , IPrepareRenameSymbolRequestResponse , void > ( "powerShell/PrepareRenameSymbol" ) ;
35
46
36
47
export class RenameSymbolFeature extends LanguageClientConsumer implements RenameProvider {
37
48
private command : vscode . Disposable ;
@@ -77,5 +88,28 @@ export class RenameSymbolFeature extends LanguageClientConsumer implements Renam
77
88
return undefined ;
78
89
}
79
90
}
91
+ public async prepareRename ( document : vscode . TextDocument , position : vscode . Position , _token : vscode . CancellationToken ) : Promise < vscode . Range | {
92
+ range : vscode .
93
+ Range ; placeholder : string ;
94
+ } | null | undefined > {
95
+
96
+ const req :IRenameSymbolRequestArguments = {
97
+ FileName : document . fileName ,
98
+ Line : position . line ,
99
+ Column : position . character ,
100
+ } ;
101
+
102
+ try {
103
+ const response = await this . languageClient ?. sendRequest ( PrepareRenameSymbolRequestType , req ) ;
104
+
105
+ if ( ! response ) {
106
+ return undefined ;
107
+ }
108
+ return Promise . reject ( response . message ) ;
109
+
110
+ } catch ( error ) {
111
+ return undefined ;
112
+ }
113
+ }
80
114
81
115
}
0 commit comments