def closestpredecessors(repo, nodeid):
    """yield the list of next predecessors pointing on visible changectx nodes

    This function respect the repoview filtering, filtered revision will be
    considered missing.
    """
    precursors = repo.obsstore.predecessors
    stack = [nodeid]
    seen = set(stack)
    while stack:
        current = stack.pop()
        currentpreccs = precursors.get(current, ())
        for prec in currentpreccs:
            precnodeid = prec[0]
            if precnodeid in seen:
                continue
            seen.add(precnodeid)
            if precnodeid in repo:
                yield precnodeid
            else:
                stack.append(precnodeid)
