diff options
author | Florian Bruhin <me@the-compiler.org> | 2018-12-10 15:40:19 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2018-12-10 15:48:26 +0100 |
commit | 3b53270ee379088b6feeb4d0d81f7ea9707d2b8b (patch) | |
tree | fd4411572d556f73d66019c54f4af1eab2c6af4e /qutebrowser/api | |
parent | 6001640a8a194c41df9b510b0c2949776adff30e (diff) | |
download | qutebrowser-3b53270ee379088b6feeb4d0d81f7ea9707d2b8b.tar.gz qutebrowser-3b53270ee379088b6feeb4d0d81f7ea9707d2b8b.zip |
Use hook system for config_changed hook
Diffstat (limited to 'qutebrowser/api')
-rw-r--r-- | qutebrowser/api/config.py | 2 | ||||
-rw-r--r-- | qutebrowser/api/hook.py | 21 |
2 files changed, 19 insertions, 4 deletions
diff --git a/qutebrowser/api/config.py b/qutebrowser/api/config.py index c2831de40..4a5d73936 100644 --- a/qutebrowser/api/config.py +++ b/qutebrowser/api/config.py @@ -24,8 +24,6 @@ import typing from PyQt5.QtCore import QUrl from qutebrowser.config import config -# pylint: disable=unused-import -from qutebrowser.config.config import change_filter val = typing.cast('config.ConfigContainer', None) diff --git a/qutebrowser/api/hook.py b/qutebrowser/api/hook.py index ddec49e5f..a975438ea 100644 --- a/qutebrowser/api/hook.py +++ b/qutebrowser/api/hook.py @@ -26,14 +26,31 @@ import typing from qutebrowser.extensions import loader +def _add_module_info(func: typing.Callable) -> loader.ModuleInfo: + """Add module info to the given function.""" + module = importlib.import_module(func.__module__) + return loader.add_module_info(module) + + class init: # noqa: N801,N806 pylint: disable=invalid-name """Decorator to mark a function to run when initializing.""" def __call__(self, func: typing.Callable) -> typing.Callable: - module = importlib.import_module(func.__module__) - info = loader.add_module_info(module) + info = _add_module_info(func) if info.init_hook is not None: raise ValueError("init hook is already registered!") info.init_hook = func return func + + +class config_changed: + + """Decorator to get notified about changed configs.""" + + def __init__(self, option_filter=None): + self._filter = option_filter + + def __call__(self, func: typing.Callable) -> typing.Callable: + info = _add_module_info(func) + info.config_changed_hooks.append((self._filter, func)) |