in src/extension/extension.ts [47:133]
export function activate(context: vscode.ExtensionContext) {
const workspaceTreeProvider = new BazelWorkspaceTreeProvider(context);
const codeLensProvider = new BazelBuildCodeLensProvider(context);
const buildifierDiagnostics = new BuildifierDiagnosticsManager();
const completionItemProvider = new BazelCompletionItemProvider();
// tslint:disable-next-line:no-floating-promises
completionItemProvider.refresh();
context.subscriptions.push(
vscode.languages.registerCompletionItemProvider(
[{ pattern: "**/BUILD" }, { pattern: "**/BUILD.bazel" }],
completionItemProvider,
"/",
":",
),
vscode.window.registerTreeDataProvider(
"bazelWorkspace",
workspaceTreeProvider,
),
// Commands
vscode.commands.registerCommand("bazel.buildTarget", bazelBuildTarget),
vscode.commands.registerCommand(
"bazel.buildTargetWithDebugging",
bazelBuildTargetWithDebugging,
),
vscode.commands.registerCommand("bazel.buildAll", bazelbuildAll),
vscode.commands.registerCommand(
"bazel.buildAllRecursive",
bazelbuildAllRecursive,
),
vscode.commands.registerCommand("bazel.testTarget", bazelTestTarget),
vscode.commands.registerCommand("bazel.testAll", bazelTestAll),
vscode.commands.registerCommand(
"bazel.testAllRecursive",
bazelTestAllRecursive,
),
vscode.commands.registerCommand("bazel.clean", bazelClean),
vscode.commands.registerCommand("bazel.refreshBazelBuildTargets", () => {
// tslint:disable-next-line:no-floating-promises
completionItemProvider.refresh();
workspaceTreeProvider.refresh();
}),
vscode.commands.registerCommand(
"bazel.copyTargetToClipboard",
bazelCopyTargetToClipboard,
),
// CodeLens provider for BUILD files
vscode.languages.registerCodeLensProvider(
[{ pattern: "**/BUILD" }, { pattern: "**/BUILD.bazel" }],
codeLensProvider,
),
// Buildifier formatting support
vscode.languages.registerDocumentFormattingEditProvider(
[
{ language: "starlark" },
{ pattern: "**/BUILD" },
{ pattern: "**/BUILD.bazel" },
{ pattern: "**/WORKSPACE" },
{ pattern: "**/WORKSPACE.bazel" },
{ pattern: "**/*.BUILD" },
{ pattern: "**/*.bzl" },
{ pattern: "**/*.sky" },
],
new BuildifierFormatProvider(),
),
buildifierDiagnostics,
// Symbol provider for BUILD files
vscode.languages.registerDocumentSymbolProvider(
[{ pattern: "**/BUILD" }, { pattern: "**/BUILD.bazel" }],
new BazelTargetSymbolProvider(),
),
// Goto definition for BUILD files
vscode.languages.registerDefinitionProvider(
[{ pattern: "**/BUILD" }, { pattern: "**/BUILD.bazel" }],
new BazelGotoDefinitionProvider(),
),
// Task events.
vscode.tasks.onDidStartTask(onTaskStart),
vscode.tasks.onDidStartTaskProcess(onTaskProcessStart),
vscode.tasks.onDidEndTaskProcess(onTaskProcessEnd),
);
// Notify the user if buildifier is not available on their path (or where
// their settings expect it).
checkBuildifierIsAvailable();
}