summaryrefslogtreecommitdiff
path: root/qutebrowser/api
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2018-12-10 15:40:19 +0100
committerFlorian Bruhin <me@the-compiler.org>2018-12-10 15:48:26 +0100
commit3b53270ee379088b6feeb4d0d81f7ea9707d2b8b (patch)
treefd4411572d556f73d66019c54f4af1eab2c6af4e /qutebrowser/api
parent6001640a8a194c41df9b510b0c2949776adff30e (diff)
downloadqutebrowser-3b53270ee379088b6feeb4d0d81f7ea9707d2b8b.tar.gz
qutebrowser-3b53270ee379088b6feeb4d0d81f7ea9707d2b8b.zip
Use hook system for config_changed hook
Diffstat (limited to 'qutebrowser/api')
-rw-r--r--qutebrowser/api/config.py2
-rw-r--r--qutebrowser/api/hook.py21
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))