import buffer

class MiniBufferError(Exception):
    pass

# minibuffer is a singleton
mini = None
class MiniBuffer(buffer.Buffer):
    btype = 'mini'
    def __new__(cls, *args, **kwargs):
        global mini
        if mini is None:
            mini = object.__new__(MiniBuffer)
        return mini
    # the callback function should take one argument (window)
    def __init__(self, func, method=None, tabber=None, modename=None):
        buffer.Buffer.__init__(self)
        self.callback = func
        self.method   = method
        self.tabber   = tabber
        self.modename = modename
    def name(self):
        return "*Minibuffer*"
    def do_callback(self):
        self.callback(self.make_string())
    def close(self):
        global mini
        mini = None