hide/show preview on focus working
This commit is contained in:
17
MLPApi.py
17
MLPApi.py
@ -15,13 +15,28 @@ def get_preview_name(md_view):
|
|||||||
def create_preview(md_view):
|
def create_preview(md_view):
|
||||||
window = md_view.window()
|
window = md_view.window()
|
||||||
md_view_settings = md_view.settings()
|
md_view_settings = md_view.settings()
|
||||||
|
md_view_settings.set(JUST_CREATED, True)
|
||||||
|
|
||||||
preview = window.new_file()
|
preview = window.new_file()
|
||||||
|
preview.settings().set(IS_PREVIEW, True)
|
||||||
preview.set_name(get_preview_name(md_view))
|
preview.set_name(get_preview_name(md_view))
|
||||||
preview.set_scratch(True)
|
preview.set_scratch(True)
|
||||||
preview.settings().set(IS_PREVIEW, True)
|
|
||||||
window.run_command('new_pane') # move to new group
|
window.run_command('new_pane') # move to new group
|
||||||
|
|
||||||
md_view_settings.set(PREVIEW_ID, preview.id())
|
md_view_settings.set(PREVIEW_ID, preview.id())
|
||||||
|
|
||||||
return preview
|
return preview
|
||||||
|
|
||||||
|
def hide_preview(md_view):
|
||||||
|
window = md_view.window()
|
||||||
|
if window is None:
|
||||||
|
return
|
||||||
|
mdvsettings = md_view.settings()
|
||||||
|
preview_id = mdvsettings.get(PREVIEW_ID)
|
||||||
|
mdvsettings.erase(PREVIEW_ID)
|
||||||
|
preview = get_view_from_id(window, preview_id)
|
||||||
|
if preview is None:
|
||||||
|
return print("MLPApi.py:35", '!!! preview is None', preview_id)
|
||||||
|
psettings = preview.settings()
|
||||||
|
psettings.set(IS_HIDDEN, True)
|
||||||
|
sublime.set_timeout(preview.close(), 250)
|
||||||
|
|||||||
@ -11,6 +11,10 @@ from .functions import *
|
|||||||
|
|
||||||
class MarkdownLivePreviewListener(sublime_plugin.EventListener):
|
class MarkdownLivePreviewListener(sublime_plugin.EventListener):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(MarkdownLivePreviewListener, *args, **kwargs)
|
||||||
|
self.last_deactivated_view = None
|
||||||
|
|
||||||
def on_load(self, view):
|
def on_load(self, view):
|
||||||
if not is_markdown_view(view):
|
if not is_markdown_view(view):
|
||||||
return
|
return
|
||||||
@ -25,7 +29,10 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener):
|
|||||||
return
|
return
|
||||||
|
|
||||||
if not md_view_settings.get(PREVIEW_ID):
|
if not md_view_settings.get(PREVIEW_ID):
|
||||||
|
print('normal, create preview')
|
||||||
|
MarkdownLivePreviewListener.md_view = md_view
|
||||||
create_preview(md_view)
|
create_preview(md_view)
|
||||||
|
MarkdownLivePreviewListener.has_preview = True
|
||||||
window.focus_view(md_view)
|
window.focus_view(md_view)
|
||||||
|
|
||||||
def on_pre_close(self, 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:
|
if vsettings.get(PREVIEW_ENABLED) is True and id is not None:
|
||||||
preview = get_view_from_id(window, id)
|
preview = get_view_from_id(window, id)
|
||||||
|
if preview is None:
|
||||||
|
print('preview is None', id)
|
||||||
preview_settings = preview.settings()
|
preview_settings = preview.settings()
|
||||||
preview_settings.erase(IS_PREVIEW)
|
preview_settings.erase(IS_PREVIEW)
|
||||||
preview_settings.erase(MD_VIEW_ID)
|
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
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
# DuckDuckGo - The Search engine you'll fall in love with
|
# DuckDuckGo - The Search engine you'll fall in love with
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
hello!
|
|
||||||
|
|||||||
@ -5,3 +5,4 @@ PREVIEW_ID = 'markdown_live_preview_id'
|
|||||||
IS_PREVIEW = 'is_markdown_live_preview'
|
IS_PREVIEW = 'is_markdown_live_preview'
|
||||||
IS_HIDDEN = 'is_hidden_markdown_live_preview'
|
IS_HIDDEN = 'is_hidden_markdown_live_preview'
|
||||||
MD_VIEW_ID = 'markdown_live_preview_md_id'
|
MD_VIEW_ID = 'markdown_live_preview_md_id'
|
||||||
|
JUST_CREATED = 'markdown_live_preview_just_created'
|
||||||
|
|||||||
Reference in New Issue
Block a user