From 61cf2984eba7d6430bf7d8b0adc2bcac5daea8b2 Mon Sep 17 00:00:00 2001 From: Mathieu PATUREL Date: Thu, 14 Nov 2019 11:24:31 +1100 Subject: [PATCH] Fix restoration of markdown_view as an original_view for unsaved files It use to ask for confirmation (to save) because on_pre_close is run after this dialog. Hence, we set the markdown_view as scratch for unsaved files. :^) --- MarkdownLivePreview.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/MarkdownLivePreview.py b/MarkdownLivePreview.py index 1fac793..6e0dba5 100644 --- a/MarkdownLivePreview.py +++ b/MarkdownLivePreview.py @@ -34,19 +34,17 @@ class OpenMarkdownPreviewCommand(sublime_plugin.TextCommand): syntax_file = original_view.settings().get('syntax') - if file_name is None: - + if file_name: + original_view.close() + else: # the file isn't saved, we need to restore the content manually total_region = sublime.Region(0, original_view.size()) content = original_view.substr(total_region) original_view.erase(edit, total_region) original_view.close() - # FIXME: save the document to a temporary file, so that if we crash, # the user doesn't lose what he wrote - else: - original_view.close() sublime.run_command('new_window') preview_window = sublime.active_window() @@ -63,6 +61,7 @@ class OpenMarkdownPreviewCommand(sublime_plugin.TextCommand): else: markdown_view = preview_window.new_file() markdown_view.run_command('mdlp_insert', {'point': 0, 'string': content}) + markdown_view.set_scratch(True) markdown_view.set_syntax_file(syntax_file) markdown_view.settings().set(SETTING_MDLP, { @@ -81,8 +80,6 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener): """ Close the view in the preview window, and store information for the on_close listener (see doc there) """ - print('pre close') - if not markdown_view.settings().get(SETTING_MDLP): return @@ -113,13 +110,16 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener): # find the window with the right id original_window = next(window for window in sublime.windows() \ if window.id() == infos['original_window_id']) - print(original_window.id(), self.preview_window.id(), infos) if self.file_name: original_window.open_file(self.file_name) else: + assert markdown_view.is_scratch(), "markdown view of an unsaved file should " \ + "be a scratch" # note here that this is called original_view, because it's what semantically # makes sense, but this original_view.id() will be different than the one # that we closed first to reopen in the preview window # shouldn't cause any trouble though original_view = original_window.new_file() original_view.run_command('mdlp_insert', {'point': 0, 'string': self.content}) + + original_view.set_syntax_file(markdown_view.settings().get('syntax')) \ No newline at end of file