Use phantomSet #11

This commit is contained in:
Mathieu PATUREL
2017-01-22 11:23:14 +11:00
parent c49ae26720
commit 0505ca30bc
6 changed files with 33 additions and 18 deletions

View File

@ -11,17 +11,19 @@ from .escape_amp import *
from .functions import * from .functions import *
from .setting_names import * from .setting_names import *
from .image_manager import CACHE_FILE from .image_manager import CACHE_FILE
from random import randint as rnd
__folder__ = os.path.dirname(__file__) __folder__ = os.path.dirname(__file__)
STYLE_FILE = os.path.join(os.path.dirname(__folder__), 'User', STYLE_FILE = os.path.join(os.path.dirname(__folder__), 'User',
'MarkdownLivePreview.css') 'MarkdownLivePreview.css')
# used to store the phantom's set
views = {}
def plugin_loaded(): def plugin_loaded():
global DEFAULT_STYLE_FILE global DEFAULT_STYLE_FILE
DEFAULT_STYLE_FILE = sublime.load_resource('Packages/MarkdownLivePreview/' DEFAULT_STYLE_FILE = sublime.load_resource('Packages/MarkdownLivePreview/default.css')
'default.css')
def get_preview_name(md_view): def get_preview_name(md_view):
file_name = md_view.file_name() file_name = md_view.file_name()
@ -35,7 +37,7 @@ def create_preview(window, file_name):
preview.set_name(get_preview_name(file_name)) preview.set_name(get_preview_name(file_name))
preview.set_scratch(True) preview.set_scratch(True)
preview.set_syntax_file('Packages/MarkdownLivePreview/.sublime/' preview.set_syntax_file('Packages/MarkdownLivePreview/.sublime/' + \
'MarkdownLivePreviewSyntax.hidden-tmLanguage') 'MarkdownLivePreviewSyntax.hidden-tmLanguage')
return preview return preview
@ -45,6 +47,7 @@ def get_style():
return content + "pre code .space {color: var(--light-bg)}" return content + "pre code .space {color: var(--light-bg)}"
def show_html(md_view, preview): def show_html(md_view, preview):
global views
html = [] html = []
html.append('<style>\n{}\n</style>'.format(get_style())) html.append('<style>\n{}\n</style>'.format(get_style()))
html.append(pre_with_br(md2.markdown(get_view_content(md_view), html.append(pre_with_br(md2.markdown(get_view_content(md_view),
@ -65,14 +68,14 @@ def show_html(md_view, preview):
html = html.replace('&nbspespace;', '<i class="space">.</i>') html = html.replace('&nbspespace;', '<i class="space">.</i>')
html = replace_img_src_base64(html, basepath=os.path.dirname( html = replace_img_src_base64(html, basepath=os.path.dirname(
md_view.file_name())) md_view.file_name()))
preview.erase_phantoms('markdown_preview')
preview.add_phantom('markdown_preview',
sublime.Region(-1),
html,
sublime.LAYOUT_BLOCK,
lambda href: sublime.run_command('open_url',
{'url': href}))
phantom_set = views.setdefault(preview.id(),
sublime.PhantomSet(preview, 'markdown_live_preview'))
phantom_set.update([sublime.Phantom(sublime.Region(0), html, sublime.LAYOUT_BLOCK,
lambda href: sublime.run_command('open_url',
{'url': href}))])
# lambda href: sublime.run_command('open_url', {'url': href})
# get the "ratio" of the markdown view's position. # get the "ratio" of the markdown view's position.
# 0 < y < 1 # 0 < y < 1
y = md_view.text_to_layout(md_view.sel()[0].begin())[1] / md_view.layout_extent()[1] y = md_view.text_to_layout(md_view.sel()[0].begin())[1] / md_view.layout_extent()[1]
@ -89,3 +92,6 @@ def show_html(md_view, preview):
def clear_cache(): def clear_cache():
"""Removes the cache file""" """Removes the cache file"""
os.remove(CACHE_FILE) os.remove(CACHE_FILE)
def release_phantoms_set():
global views

View File

@ -72,8 +72,8 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener):
if (is_markdown_view(view) if (is_markdown_view(view)
and get_settings().get('markdown_live_preview_on_open') and get_settings().get('markdown_live_preview_on_open')
and not vsettings.get(PREVIEW_ENABLED) and not vsettings.get(PREVIEW_ENABLED)
and vsettings.get('syntax') != 'Packages/MarkdownLivePreview/' and vsettings.get('syntax') != 'Packages/MarkdownLivePreview/' + \
'.sublime/MarkdownLivePreviewSyntax' '.sublime/MarkdownLivePreviewSyntax' + \
'.hidden-tmLanguage'): '.hidden-tmLanguage'):
sublime.run_command('new_markdown_live_preview') sublime.run_command('new_markdown_live_preview')
@ -110,3 +110,8 @@ class MarkdownLivePreviewClearCacheCommand(sublime_plugin.ApplicationCommand):
def run(self): def run(self):
clear_cache() clear_cache()
class MarkdownLivePreviewReleasePhantomSetCommand(sublime_plugin.ApplicationCommand):
def run(self):
release_phantoms_set()

View File

@ -5,6 +5,7 @@ Fast:
Medium: Medium:
☐ auto refresh preview if loading images ☐ auto refresh preview if loading images
☐ use alt attribute for 404 error ☐ use alt attribute for 404 error
☐ fix custom css @bug
Long: Long:
☐ support hanchor (TOC) @big ☐ support hanchor (TOC) @big

View File

@ -23,8 +23,8 @@ def replace_img_src_base64(html, basepath):
path, end = get_content_till(html, '"', start=index + len(tag_start)) path, end = get_content_till(html, '"', start=index + len(tag_start))
if ''.join(path).startswith('data:image/'): if ''.join(path).startswith('data:image/'):
continue continue
if ''.join(path).startswith(tuple(get_settings().get('load_from_internet ' if ''.join(path).startswith(tuple(get_settings().get('load_from_internet' + \
'_when_starts'))): '_when_starts', []))):
image = ImageManager.get(''.join(path)) image = ImageManager.get(''.join(path))
image = image or loading image = image or loading

View File

@ -1,5 +1,8 @@
dfsdfsdf # sample
asdf sdfdsf
asfd ![std](https://www.grafikart.fr/uploads/users/46570/2015/01/offtime-screens-11_1_.jpg)
sdfd
sdf