@@ -10,7 +10,13 @@ interface IRenameSymbolRequestArguments {
1010 FileName ?:string
1111 Line ?:number
1212 Column ?:number
13- RenameTo :string
13+ RenameTo ?:string
14+ }
15+ interface IPrepareRenameSymbolRequestArguments {
16+ FileName ?:string
17+ Line ?:number
18+ Column ?:number
19+ RenameTo ?:string
1420}
1521
1622// eslint-disable-next-line @typescript-eslint/no-empty-interface
@@ -31,7 +37,12 @@ interface IRenameSymbolRequestResponse {
3137 changes : ModifiedFileResponse [ ]
3238}
3339
40+ interface IPrepareRenameSymbolRequestResponse {
41+ message : string
42+ }
43+
3444export const RenameSymbolRequestType = new RequestType < IRenameSymbolRequestArguments , IRenameSymbolRequestResponse , void > ( "powerShell/renameSymbol" ) ;
45+ export const PrepareRenameSymbolRequestType = new RequestType < IPrepareRenameSymbolRequestArguments , IPrepareRenameSymbolRequestResponse , void > ( "powerShell/PrepareRenameSymbol" ) ;
3546
3647export class RenameSymbolFeature extends LanguageClientConsumer implements RenameProvider {
3748 private command : vscode . Disposable ;
@@ -77,5 +88,28 @@ export class RenameSymbolFeature extends LanguageClientConsumer implements Renam
7788 return undefined ;
7889 }
7990 }
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+ }
80114
81115}
0 commit comments