public provideCompletionItems()

in src/completion-provider/bazel_completion_provider.ts [77:112]


  public provideCompletionItems(
    document: vscode.TextDocument,
    position: vscode.Position,
  ) {
    let candidateTarget = getCandidateTargetFromDocumentPosition(
      document,
      position,
    );
    if (candidateTarget === undefined) {
      return [];
    }

    if (!candidateTarget.endsWith("/") && !candidateTarget.endsWith(":")) {
      candidateTarget = stripLastPackageOrTargetName(candidateTarget);
    }

    const completionItems = new Array<vscode.CompletionItem>();
    this.targets.forEach((target) => {
      if (!target.startsWith(candidateTarget)) {
        return;
      }
      const sufix = target.replace(candidateTarget, "");

      let completionKind = vscode.CompletionItemKind.Folder;
      let label = getNextPackage(sufix);
      if (label === undefined) {
        completionKind = vscode.CompletionItemKind.Field;
        label = sufix;
      }
      insertCompletionItemIfUnique(
        completionItems,
        new vscode.CompletionItem(label, completionKind),
      );
    });
    return completionItems;
  }