12345678910111213141516171819202122232425 |
- from __future__ import unicode_literals
- from prompt_toolkit.filters import CLIFilter, Always
- __all__ = (
- 'create_handle_decorator',
- )
- def create_handle_decorator(registry, filter=Always()):
- """
- Create a key handle decorator, which is compatible with `Registry.handle`,
- but will chain the given filter to every key binding.
- :param filter: `CLIFilter`
- """
- assert isinstance(filter, CLIFilter)
- def handle(*keys, **kw):
- # Chain the given filter to the filter of this specific binding.
- if 'filter' in kw:
- kw['filter'] = kw['filter'] & filter
- else:
- kw['filter'] = filter
- return registry.add_binding(*keys, **kw)
- return handle
|