diff --git a/docs/changelog.rst b/docs/changelog.rst index f3d1884a4..9e86d131c 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -18,11 +18,6 @@ To update |kitty|, :doc:`follow the instructions `. - Allow the user to supply a custom Python function to draw tab bar. See :opt:`tab_bar_style` -- **Backward incompatibility**: The command line option ``--watcher`` has been - removed in favor of the :opt:`watcher` option in :file:`kitty.conf`. It can be set - from the command line as: ``kitty -o watcher=/path/to/watcher``. It has the - advantage of applying to all windows, not just the initially created ones. - - Add support for reporting mouse events with pixel co-ordinates using the ``SGR_PIXEL_PROTOCOL`` introduced in xterm 359 @@ -69,6 +64,11 @@ To update |kitty|, :doc:`follow the instructions `. - Unicode input kitten: Implement scrolling when more results are found than the available display space (:pull:`4068`) +- The command line option ``--watcher`` has been deprecated in favor of the + :opt:`watcher` option in :file:`kitty.conf`. It has the advantage of + applying to all windows, not just the initially created ones. Note that + ``--watcher`` now also applies to all windows, not just initially created ones. + 0.23.1 [2021-08-17] ---------------------- diff --git a/kitty/cli.py b/kitty/cli.py index 03a29d230..baede09c5 100644 --- a/kitty/cli.py +++ b/kitty/cli.py @@ -711,6 +711,10 @@ type=bool-set Print out information about the selection of fallback fonts for characters not present in the main font. +--watcher +This option is deprecated in favor of the :opt:`watcher` option in kitty.conf and should not be used. + + --execute -e type=bool-set ! diff --git a/kitty/main.py b/kitty/main.py index 2779c952e..32fc017a3 100644 --- a/kitty/main.py +++ b/kitty/main.py @@ -339,6 +339,10 @@ def _main() -> None: opts = create_opts(cli_opts, accumulate_bad_lines=bad_lines) init_glfw(opts, cli_opts.debug_keyboard, cli_opts.debug_rendering) setup_environment(opts, cli_opts) + if cli_opts.watcher: + from .window import global_watchers + global_watchers.set_extra(cli_opts.watcher) + log_error('The --watcher command line option has beed deprecated infavor of using the watcher option in kitty.conf') try: with setup_profiling(cli_opts): # Avoid needing to launch threads to reap zombies diff --git a/kitty/window.py b/kitty/window.py index 0d780f7a6..f12e60eba 100644 --- a/kitty/window.py +++ b/kitty/window.py @@ -13,7 +13,7 @@ from gettext import gettext as _ from itertools import chain from typing import ( TYPE_CHECKING, Any, Callable, Deque, Dict, Iterable, List, NamedTuple, - Optional, Pattern, Sequence, Tuple, Union, cast + Optional, Pattern, Sequence, Tuple, Union ) from .child import ProcessDesc @@ -315,15 +315,30 @@ class EdgeWidths: return {'left': self.left, 'right': self.right, 'top': self.top, 'bottom': self.bottom} -def global_watchers() -> Watchers: - spec = get_options().watcher - if getattr(global_watchers, 'options_spec', None) == spec: - return cast(Watchers, getattr(global_watchers, 'ans')) - from .launch import load_watch_modules - ans = load_watch_modules(spec) or Watchers() - setattr(global_watchers, 'ans', ans) - setattr(global_watchers, 'options_spec', spec) - return ans +class GlobalWatchers: + + def __init__(self) -> None: + self.options_spec: Optional[Dict[str, str]] = None + self.ans = Watchers() + self.extra = '' + + def __call__(self) -> Watchers: + spec = get_options().watcher + if spec == self.options_spec: + return self.ans + from .launch import load_watch_modules + if self.extra: + spec = spec.copy() + spec[self.extra] = self.extra + self.ans = load_watch_modules(spec.keys()) or self.ans + self.options_spec = spec.copy() + return self.ans + + def set_extra(self, extra: str) -> None: + self.extra = extra + + +global_watchers = GlobalWatchers() class Window: