diff --git a/taskwiki/cache.py b/taskwiki/cache.py index d128ecd..9bc6244 100644 --- a/taskwiki/cache.py +++ b/taskwiki/cache.py @@ -174,6 +174,18 @@ class TaskCache(object): # Restore the old authority flag value self.buffer_has_authority = old_authority + def load_viewports(self): + for i in range(len(vim.current.buffer)): + port = viewport.ViewPort.from_line(i, self) + + if port is None: + continue + + port.load_tasks() + + # Save the viewport in the cache + self.viewport_cache[i] = port + def update_vwtasks_in_buffer(self): for task in self.vimwikitask_cache.values(): task.update_in_buffer() @@ -222,20 +234,9 @@ class TaskCache(object): vwtask.update_from_task() def evaluate_viewports(self): - i = 0 - while i < len(vim.current.buffer): - port = viewport.ViewPort.from_line(i, self) - i += 1 - - if port is None: - continue - - port.load_tasks() + for port in self.viewport_cache.values(): port.sync_with_taskwarrior() - # Save the viewport in the cache - self.viewport_cache[i] = port - def get_viewport_by_task(self, task): """ Looks for a viewport containing the given task by iterating over the cached diff --git a/taskwiki/taskwiki.py b/taskwiki/taskwiki.py index 5fbf90a..d8e634b 100644 --- a/taskwiki/taskwiki.py +++ b/taskwiki/taskwiki.py @@ -41,6 +41,7 @@ class WholeBuffer(object): cache.reset() cache.load_tasks() cache.load_vwtasks(buffer_has_authority=False) + cache.load_viewports() cache.update_vwtasks_from_tasks() cache.update_vwtasks_in_buffer() cache.evaluate_viewports() @@ -54,6 +55,7 @@ class WholeBuffer(object): cache.reset() cache.load_tasks() cache.load_vwtasks() + cache.load_viewports() cache.save_tasks() cache.update_vwtasks_in_buffer() cache.evaluate_viewports()