def docoptcfg(doc, argv=None, env_prefix=None, config_option=None, ignore=None, *args, **kwargs):
    """Pass most args/kwargs to docopt. Handle `env_prefix` and `config_option`.

    :raise DocoptcfgError: If `config_option` isn't found in docstring.
    :raise DocoptcfgFileError: On any error while trying to read and parse config file (if enabled).

    :param str doc: Docstring passed to docopt.
    :param iter argv: sys.argv[1:] passed to docopt.
    :param str env_prefix: Enable environment variable support, prefix of said variables.
    :param str config_option: Enable config file support, docopt option defining path to config file.
    :param iter ignore: Options to ignore. Default is --help and --version.
    :param iter args: Additional positional arguments passed to docopt.
    :param dict kwargs: Additional keyword arguments passed to docopt.

    :return: Dictionary constructed by docopt and updated by docoptcfg.
    :rtype: dict
    """
    docopt_dict = docopt.docopt(doc, argv, *args, **kwargs)
    if env_prefix is None and config_option is None:
        return docopt_dict  # Nothing to do.
    if argv is None:
        argv = sys.argv[1:]
    if ignore is None:
        ignore = ('--help', '--version')
    settable, booleans, repeatable, short_map = settable_options(doc, argv, ignore, kwargs.get('options_first', False))
    if not settable:
        return docopt_dict  # Nothing to do.

    # Handle environment variables defaults.
    if env_prefix is not None:
        defaults = values_from_env(env_prefix, settable, booleans, repeatable)
        settable -= set(defaults.keys())  # No longer settable by values_from_file().
        docopt_dict.update(defaults)

    # Handle config file defaults.
    if config_option is not None:
        defaults = values_from_file(
            docopt_dict,
            short_map.get(config_option, config_option),
            settable,
            booleans,
            repeatable,
        )
        docopt_dict.update(defaults)

    return docopt_dict