diff --git a/MarkdownLivePreview.py b/MarkdownLivePreview.py index da25006..704aaf3 100644 --- a/MarkdownLivePreview.py +++ b/MarkdownLivePreview.py @@ -117,7 +117,7 @@ class OpenMarkdownPreviewCommand(sublime_plugin.TextCommand): markdown_view.set_syntax_file(syntax_file) markdown_view.settings().set( - MARKDOWN_VIEW_INFOS, {"original_window_id": original_window_id,}, + MARKDOWN_VIEW_INFOS, {"original_window_id": original_window_id, "preview_view_id": preview_view.id(),}, ) def is_enabled(self): @@ -162,7 +162,13 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener): if not infos: return - preview_view = markdown_view.window().active_view_in_group(1) + preview_view_id = infos.get("preview_view_id") + if not preview_view_id: + return # Should not happen if setup was correct + + preview_view = sublime.View(preview_view_id) + if not preview_view.is_valid(): + return # Preview view was closed before loading finished self.phantom_sets[markdown_view.id()] = sublime.PhantomSet(preview_view) self._update_preview(markdown_view) @@ -177,7 +183,7 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener): if markdown_view.id() in self.phantom_sets: del self.phantom_sets[markdown_view.id()] - # don’t close the entire window—just let the user close the preview tab: + # don't close the entire window—just let the user close the preview tab: # self.preview_window.run_command("close_window") # find the window with the right id @@ -243,7 +249,18 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener): total_region = sublime.Region(0, markdown_view.size()) markdown = markdown_view.substr(total_region) - preview_view = markdown_view.window().active_view_in_group(1) + infos = markdown_view.settings().get(MARKDOWN_VIEW_INFOS) + if not infos: + return # Should not happen + + preview_view_id = infos.get("preview_view_id") + if not preview_view_id: + return # Should not happen + + preview_view = sublime.View(preview_view_id) + if not preview_view.is_valid(): + return # Preview view was closed + # Get viewport_width, default to a large value if view isn't ready viewport_extent = preview_view.viewport_extent() viewport_width = viewport_extent[0] if viewport_extent else 1024