export function activate()

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();
}