'Update the text objects that should change automagically after the
users edits have been replayed.
This might also move the Cursor'

def update_textobjects(self):

    vc = _VimCursor(self)
    done = set()
    not_done = set()
    def _find_recursive(obj):
        "Finds    all    text    objects    and    puts    them    into    'not_done'."
        if isinstance(obj, EditableTextObject):
            for child in obj._children:
                _find_recursive(child)
        not_done.add(obj)
    _find_recursive(self)
    counter = 10
    while ((done != not_done) and counter):
        for obj in sorted((not_done - done)):
            if obj._update(done):
                done.add(obj)
        counter -= 1
    if (not counter):
        raise RuntimeError("The    snippets    content    did    not    converge:    Check    for    Cyclic    dependencies    or    random    strings    in    your    snippet.    You    can    use    'if    not    snip.c'    to    make    sure    to    only    expand    random    output    once.")
    vc.to_vim()
    self._del_child(vc)
