Skip to content

Commit 6a27fd8

Browse files
Razmo99JustinGrote
authored andcommitted
implemented renamesymbol as a feature and structured under languageClientConsumers
1 parent 6ee4eb5 commit 6a27fd8

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

src/extension.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ const PackageJSON: any = require("../package.json");
3636
const TELEMETRY_KEY = "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255";
3737

3838
let languageConfigurationDisposable: vscode.Disposable;
39-
let languageRenameProvider:vscode.Disposable;
4039
let logger: Logger;
4140
let sessionManager: SessionManager;
4241
let languageClientConsumers: LanguageClientConsumer[] = [];
@@ -58,9 +57,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<IPower
5857
const settings = getSettings();
5958
logger.writeVerbose(`Loaded settings:\n${JSON.stringify(settings, undefined, 2)}`);
6059

61-
const RenameSymbol = new RenameSymbolFeature();
62-
languageRenameProvider = vscode.languages.registerRenameProvider(documentSelector,RenameSymbol);
63-
6460
languageConfigurationDisposable = vscode.languages.setLanguageConfiguration(
6561
PowerShellLanguageId,
6662
{
@@ -156,7 +152,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<IPower
156152
new RemoteFilesFeature(),
157153
new DebugSessionFeature(context, sessionManager, logger),
158154
new HelpCompletionFeature(),
159-
RenameSymbol
155+
new RenameSymbolFeature(documentSelector)
160156
];
161157

162158
sessionManager.setLanguageClientConsumers(languageClientConsumers);
@@ -190,5 +186,4 @@ export async function deactivate(): Promise<void> {
190186
await telemetryReporter.dispose();
191187

192188
languageConfigurationDisposable.dispose();
193-
languageRenameProvider.dispose();
194189
}

src/features/RenameSymbol.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
import vscode = require("vscode");
55
import { RequestType } from "vscode-languageclient";
66
import { LanguageClientConsumer } from "../languageClientConsumer";
7-
import { RenameProvider, WorkspaceEdit, TextDocument, CancellationToken, Position,Uri,Range } from "vscode";
7+
import { RenameProvider, WorkspaceEdit, TextDocument, CancellationToken, Position,Uri,Range, DocumentSelector } from "vscode";
8+
import { LanguageClient } from "vscode-languageclient/node";
89
// eslint-disable-next-line @typescript-eslint/no-empty-interface
910
interface IRenameSymbolRequestArguments {
1011
FileName?:string
@@ -45,7 +46,14 @@ export const RenameSymbolRequestType = new RequestType<IRenameSymbolRequestArgum
4546
export const PrepareRenameSymbolRequestType = new RequestType<IPrepareRenameSymbolRequestArguments, IPrepareRenameSymbolRequestResponse, void>("powerShell/PrepareRenameSymbol");
4647

4748
export class RenameSymbolFeature extends LanguageClientConsumer implements RenameProvider {
49+
private languageRenameProvider:vscode.Disposable;
4850

51+
constructor(documentSelector:DocumentSelector){
52+
super();
53+
this.languageRenameProvider = vscode.languages.registerRenameProvider(documentSelector,this);
54+
}
55+
// eslint-disable-next-line @typescript-eslint/no-empty-function
56+
public override onLanguageClientSet(_languageClient: LanguageClient): void {}
4957
public async provideRenameEdits(document: TextDocument, position: Position, newName: string, _token: CancellationToken): Promise<WorkspaceEdit | undefined> {
5058

5159
const req:IRenameSymbolRequestArguments = {
@@ -113,5 +121,7 @@ export class RenameSymbolFeature extends LanguageClientConsumer implements Renam
113121
return null;
114122
}
115123
}
116-
124+
public dispose(): void {
125+
this.languageRenameProvider.dispose();
126+
}
117127
}

0 commit comments

Comments
 (0)