Shows an interactive menu in the terminal.

    Arguments:
        options: list of menu options
        default: initial option to highlight
        height: maximum height of the menu
        width: maximum width of the menu
        multiselect: allow multiple items to be selected?
        precolored: allow strings with embedded ANSI commands

    Returns:
        * If multiselect is True, returns a list of selected options.
        * If mutliselect is False, returns the selected option.
        * If an option is a 2-tuple, the first item will be displayed and the
          second item will be returned.
        * If menu is cancelled (Esc pressed), returns None.
        *
    Notes:
        * You can pass OptionGroup objects to `options` to create sub-headers
          in the menu.

def show_menu(title, options, default=None, height=None, width=None, multiselect=False, precolored=False):
    """
    Shows an interactive menu in the terminal.

    Arguments:
        options: list of menu options
        default: initial option to highlight
        height: maximum height of the menu
        width: maximum width of the menu
        multiselect: allow multiple items to be selected?
        precolored: allow strings with embedded ANSI commands

    Returns:
        * If multiselect is True, returns a list of selected options.
        * If mutliselect is False, returns the selected option.
        * If an option is a 2-tuple, the first item will be displayed and the
          second item will be returned.
        * If menu is cancelled (Esc pressed), returns None.
        *
    Notes:
        * You can pass OptionGroup objects to `options` to create sub-headers
          in the menu.
    """

    plugins = [FilterPlugin()]
    if any(isinstance(opt, OptionGroup) for opt in options):
        plugins.append(OptionGroupPlugin())
    if title:
        plugins.append(TitlePlugin(title))
    if precolored:
        plugins.append(PrecoloredPlugin())
    menu = Termenu(options, default=default, height=height,
                   width=width, multiselect=multiselect, plugins=plugins)
    return menu.show()