hide/show preview on focus working

This commit is contained in:
Mathieu PATUREL
2017-01-04 10:26:58 +11:00
parent 576956a8d1
commit 3ad29ede37
4 changed files with 84 additions and 4 deletions

View File

@ -11,6 +11,10 @@ from .functions import *
class MarkdownLivePreviewListener(sublime_plugin.EventListener):
def __init__(self, *args, **kwargs):
super(MarkdownLivePreviewListener, *args, **kwargs)
self.last_deactivated_view = None
def on_load(self, view):
if not is_markdown_view(view):
return
@ -25,7 +29,10 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener):
return
if not md_view_settings.get(PREVIEW_ID):
print('normal, create preview')
MarkdownLivePreviewListener.md_view = md_view
create_preview(md_view)
MarkdownLivePreviewListener.has_preview = True
window.focus_view(md_view)
def on_pre_close(self, view):
@ -46,7 +53,66 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener):
if vsettings.get(PREVIEW_ENABLED) is True and id is not None:
preview = get_view_from_id(window, id)
if preview is None:
print('preview is None', id)
preview_settings = preview.settings()
preview_settings.erase(IS_PREVIEW)
preview_settings.erase(MD_VIEW_ID)
sublime.set_timeout_async(lambda: preview.close(), 250)
sublime.set_timeout(lambda: preview.close(), 250)
def on_deactivated(self, view):
self.last_deactivated_view = view
return
vsettings = view.settings()
if vsettings.get(IS_PREVIEW) is True:
return
if vsettings.get(PREVIEW_ENABLED):
id = vsettings.get(IS_PREVIEW)
if id is not None:
return
create_preview(view)
def on_activated(self, view):
vsettings = view.settings()
if vsettings.get(IS_PREVIEW) is True:
return
if vsettings.get(PREVIEW_ENABLED):
id = vsettings.get(PREVIEW_ID)
if vsettings.get(JUST_CREATED) is True:
vsettings.erase(JUST_CREATED)
print("MarkdownLivePreview.py:84", 'dont create, just created')
return
if id is not None:
print("MarkdownLivePreview.py:86", "dont create, already have a preview id")
return
print("MarkdownLivePreview.py:87", 'create preview')
return create_preview(view)
if self.last_deactivated_view:
hide_preview(self.last_deactivated_view)
return
def just_created_preview():
return MarkdownLivePreviewListener.just_created_preview
vsettings = view.settings()
if vsettings.get(PREVIEW_ENABLED) is True:
if vsettings.get(PREVIEW_ID) is not None:
print('return because already have a preview')
return
# 'view' is the markdown view, which wasn't focus, so didn't have
# any preview
MarkdownLivePreviewListener.md_view = view
MarkdownLivePreviewListener.has_preview = True
print('create preview')
MarkdownLivePreviewListener.just_created_preview = True
create_preview(view)
elif vsettings.get(IS_PREVIEW) is True or just_created_preview():
print('do nothing because focus view is the preview')
MarkdownLivePreviewListener.just_created_preview = False
elif MarkdownLivePreviewListener.has_preview:
print('hide preview', view.name().__repr__(), view.file_name())
hide_preview(MarkdownLivePreviewListener.md_view)
MarkdownLivePreviewListener.has_preview = False