@@ -6,6 +6,7 @@ import { RequestType } from "vscode-languageclient";
66import { LanguageClientConsumer } from "../languageClientConsumer" ;
77import { RenameProvider , WorkspaceEdit , TextDocument , CancellationToken , Position , Uri , Range , DocumentSelector } from "vscode" ;
88import { LanguageClient } from "vscode-languageclient/node" ;
9+ import { ILogger } from "../logging" ;
910// eslint-disable-next-line @typescript-eslint/no-empty-interface
1011interface IRenameSymbolRequestArguments {
1112 FileName ?:string
@@ -42,14 +43,15 @@ interface IPrepareRenameSymbolRequestResponse {
4243 message : string
4344}
4445
45- export const RenameSymbolRequestType = new RequestType < IRenameSymbolRequestArguments , IRenameSymbolRequestResponse , void > ( "powerShell/renameSymbol" ) ;
46- export const PrepareRenameSymbolRequestType = new RequestType < IPrepareRenameSymbolRequestArguments , IPrepareRenameSymbolRequestResponse , void > ( "powerShell/PrepareRenameSymbol" ) ;
46+ const RenameSymbolRequestType = new RequestType < IRenameSymbolRequestArguments , IRenameSymbolRequestResponse , void > ( "powerShell/renameSymbol" ) ;
47+ const PrepareRenameSymbolRequestType = new RequestType < IPrepareRenameSymbolRequestArguments , IPrepareRenameSymbolRequestResponse , void > ( "powerShell/PrepareRenameSymbol" ) ;
4748
4849export class RenameSymbolFeature extends LanguageClientConsumer implements RenameProvider {
4950 private languageRenameProvider :vscode . Disposable ;
5051
51- constructor ( documentSelector :DocumentSelector ) {
52+ constructor ( documentSelector :DocumentSelector , private logger : ILogger ) {
5253 super ( ) ;
54+
5355 this . languageRenameProvider = vscode . languages . registerRenameProvider ( documentSelector , this ) ;
5456 }
5557 // eslint-disable-next-line @typescript-eslint/no-empty-function
@@ -72,15 +74,16 @@ export class RenameSymbolFeature extends LanguageClientConsumer implements Renam
7274 }
7375
7476 const edit = new WorkspaceEdit ( ) ;
75- response . changes . forEach ( change => {
76- const uri = Uri . file ( change . fileName ) ;
77+ for ( const file of response . changes ) {
78+
79+ const uri = Uri . file ( file . fileName ) ;
7780
78- change . changes . forEach ( change => {
81+ for ( const change of file . changes ) {
7982 edit . replace ( uri ,
8083 new Range ( change . startLine , change . startColumn , change . endLine , change . endColumn ) ,
8184 change . newText ) ;
82- } ) ;
83- } ) ;
85+ }
86+ }
8487 return edit ;
8588 } catch ( error ) {
8689 return undefined ;
@@ -104,21 +107,22 @@ export class RenameSymbolFeature extends LanguageClientConsumer implements Renam
104107 }
105108 const wordRange = document . getWordRangeAtPosition ( position ) ;
106109 if ( ! wordRange ) {
107- return Promise . reject ( "Not a valid location for renaming." ) ;
110+ throw new Error ( "Not a valid location for renaming." ) ;
108111
109112 }
110113 const wordText = document . getText ( wordRange ) ;
111114 if ( response . message ) {
112- return Promise . reject ( response . message ) ;
113-
115+ throw new Error ( response . message ) ;
114116 }
115117
116118 return {
117119 range : wordRange ,
118120 placeholder : wordText
119121 } ;
120122 } catch ( error ) {
121- return null ;
123+ const msg = `RenameSymbol unhandled error: ${ error } ` ;
124+ this . logger . writeError ( msg ) ;
125+ throw new Error ( msg ) ;
122126 }
123127 }
124128 public dispose ( ) : void {
0 commit comments