<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def codemirror_settings_update(configs, parameters, on=None, names=None):
 """ Return a new dictionnary of configs updated with given parameters. You may use ``on`` and ``names`` arguments to select config or filter out some configs from returned dict. Arguments: configs (dict):
 Dictionnary of configurations to update. parameters (dict):
 Dictionnary of parameters to apply on selected configurations. Keyword Arguments: on (list):
 List of configuration names to select for update. If empty, all given configurations will be updated. names (list):
 List of configuration names to keep. If not empty, only those configurations will be in returned dict. Else every configs from original dict will be present. Returns: dict: Dict of configurations with updated parameters. """

    # Deep copy of given config
    output = copy.deepcopy(configs)

    # Optionnaly filtering config from given names
    if names:
        output = {k: output[k] for k in names}

    # Select every config if selectors is empty
    if not on:
        on = output.keys()

    for k in on:
        output[k].update(parameters)

    return output