diff options
author | hut <hut@hut.pm> | 2017-07-16 06:12:32 +0200 |
---|---|---|
committer | hut <hut@hut.pm> | 2017-07-16 06:13:05 +0200 |
commit | f3243faa22ffd78ef654cd7ae4357a908408ac19 (patch) | |
tree | d5c5c3f505ef2f9336101babf8d84cba155dc7a4 | |
parent | 064ac63da1acebd56e5bbf5ae7fe57fda8eb7bbc (diff) | |
download | ranger-f3243faa22ffd78ef654cd7ae4357a908408ac19.tar.gz |
container.directory: no need to Ctrl+R on ":set vcs_aware!"
this is done through setting the "vcs" attribute to a lazy_property and binding its __reset() function to the signal 'setopt.vcs_aware'.
-rw-r--r-- | ranger/container/directory.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/ranger/container/directory.py b/ranger/container/directory.py index fbbf4d22..c73e2408 100644 --- a/ranger/container/directory.py +++ b/ranger/container/directory.py @@ -129,8 +129,8 @@ class Directory( # pylint: disable=too-many-instance-attributes,too-many-public content_outdated = False content_loaded = False - vcs = None has_vcschild = False + _vcs_signal_handler_installed = False cumulative_size_calculated = False @@ -167,11 +167,18 @@ class Directory( # pylint: disable=too-many-instance-attributes,too-many-public self.settings = LocalSettings(path, self.settings) - if self.settings.vcs_aware: - self.vcs = Vcs(self) - self.use() + @lazy_property + def vcs(self): + if not self._vcs_signal_handler_installed: + self.settings.signal_bind('setopt.vcs_aware', + self.vcs__reset, # pylint: disable=no-member + weak=True, autosort=False) + self._vcs_signal_handler_installed = True + if self.settings.vcs_aware: + return Vcs(self) + def signal_function_factory(self, function): def signal_function(): self.load_if_outdated() |