potentially fixes view in same window

This commit is contained in:
2025-04-25 09:55:12 +02:00
parent e7a15ea070
commit 4563a0f653

View File

@ -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()]
# dont 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