Skip to content

Commit

Permalink
fix: Don't instantiate CompletionItemProvider when using a language s…
Browse files Browse the repository at this point in the history
…erver (#440)

Instantiating and refreshing the `CompletionItemProvider` is very expensive with large repos, due to it querying all targets from the repo. When using a language server the `CompletionItemProvider` is not even registered, so we avoid instantiating and refreshing it in this case.

Relates to #395.
  • Loading branch information
cameron-martin authored Feb 18, 2025
1 parent a47f461 commit 7b6f85f
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions src/extension/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,7 @@ export async function activate(context: vscode.ExtensionContext) {

const codeLensProvider = new BazelBuildCodeLensProvider(context);
const buildifierDiagnostics = new BuildifierDiagnosticsManager();
const completionItemProvider = new BazelCompletionItemProvider();

// eslint-disable-next-line @typescript-eslint/no-floating-promises
completionItemProvider.refresh();
let completionItemProvider: BazelCompletionItemProvider | null = null;

const config = vscode.workspace.getConfiguration("bazel");
const lspEnabled = !!config.get<string>("lsp.command");
Expand All @@ -66,6 +63,10 @@ export async function activate(context: vscode.ExtensionContext) {

await lspClient.start();
} else {
completionItemProvider = new BazelCompletionItemProvider();
// eslint-disable-next-line @typescript-eslint/no-floating-promises
completionItemProvider.refresh();

context.subscriptions.push(
vscode.languages.registerCompletionItemProvider(
[{ pattern: "**/BUILD" }, { pattern: "**/BUILD.bazel" }],
Expand Down Expand Up @@ -97,7 +98,7 @@ export async function activate(context: vscode.ExtensionContext) {
...activateWrapperCommands(),
vscode.commands.registerCommand("bazel.refreshBazelBuildTargets", () => {
// eslint-disable-next-line @typescript-eslint/no-floating-promises
completionItemProvider.refresh();
completionItemProvider?.refresh();
workspaceTreeProvider.refresh();
}),
vscode.commands.registerCommand(
Expand Down

0 comments on commit 7b6f85f

Please sign in to comment.