public async provideDocumentFormattingEdits()

in src/buildifier/buildifier_format_provider.ts [24:58]


  public async provideDocumentFormattingEdits(
    document: vscode.TextDocument,
    options: vscode.FormattingOptions,
    token: vscode.CancellationToken,
  ): Promise<vscode.TextEdit[]> {
    const bazelConfig = vscode.workspace.getConfiguration("bazel");
    const applyLintFixes = bazelConfig.get<boolean>("buildifierFixOnFormat");

    const fileContent = document.getText();
    const type = getBuildifierFileType(document.uri.fsPath);
    try {
      const formattedContent = await buildifierFormat(
        fileContent,
        type,
        applyLintFixes,
      );
      if (formattedContent === fileContent) {
        // If the file didn't change, return any empty array of edits.
        return [];
      }

      const edits = [
        new vscode.TextEdit(
          new vscode.Range(
            document.positionAt(0),
            document.positionAt(fileContent.length),
          ),
          formattedContent,
        ),
      ];
      return edits;
    } catch (err) {
      vscode.window.showErrorMessage(`${err}`);
    }
  }