restart from scratch

This commit is contained in:
Mathieu PATUREL
2017-01-03 16:22:25 +11:00
parent 93a04733da
commit 576956a8d1
10 changed files with 143 additions and 13 deletions

View File

@ -3,7 +3,7 @@
"keys": ["alt+m"], "keys": ["alt+m"],
"command": "toggle_setting", "command": "toggle_setting",
"args": { "args": {
"setting": "markdown_preview_enabled" "setting": "markdown_live_preview_enabled"
}, },
"context": [ "context": [
{ {

View File

@ -3,7 +3,7 @@
"caption": "MarkdownLivePreview: Toggle", "caption": "MarkdownLivePreview: Toggle",
"command": "toggle_setting", "command": "toggle_setting",
"args": { "args": {
"setting": "markdown_preview_enabled" "setting": "markdown_live_preview_enabled"
} }
} }
] ]

27
MLPApi.py Normal file
View File

@ -0,0 +1,27 @@
# -*- encoding: utf-8 -*-
import sublime
import sublime_plugin
from .functions import *
from .setting_names import *
def get_preview_name(md_view):
name = md_view.name() \
or os.path.basename(md_view.file_name()) \
or 'Untitled'
return name + '- Preview'
def create_preview(md_view):
window = md_view.window()
md_view_settings = md_view.settings()
preview = window.new_file()
preview.set_name(get_preview_name(md_view))
preview.set_scratch(True)
preview.settings().set(IS_PREVIEW, True)
window.run_command('new_pane') # move to new group
md_view_settings.set(PREVIEW_ID, preview.id())
return preview

52
MarkdownLivePreview.py Normal file
View File

@ -0,0 +1,52 @@
# -*- encoding: utf-8 -*-
import sys
import os.path
import sublime
import sublime_plugin
from .MLPApi import *
from .setting_names import *
from .functions import *
class MarkdownLivePreviewListener(sublime_plugin.EventListener):
def on_load(self, view):
if not is_markdown_view(view):
return
vsettings = view.settings()
def on_modified(self, md_view):
if not is_markdown_view(md_view):
return
window = md_view.window()
md_view_settings = md_view.settings()
if md_view_settings.get(PREVIEW_ENABLED) is not True:
return
if not md_view_settings.get(PREVIEW_ID):
create_preview(md_view)
window.focus_view(md_view)
def on_pre_close(self, view):
vsettings = view.settings()
window = view.window()
if vsettings.get(IS_PREVIEW) is True:
if vsettings.get(IS_HIDDEN) is True:
return
mdvsettings = get_view_from_id(window, vsettings.get(MD_VIEW_ID))
if mdvsettings is None:
return
mdvsettings = mdvsettings.settings()
mdvsettings.erase(PREVIEW_ENABLED)
mdvsettings.erase(PREVIEW_ID)
return
id = vsettings.get(PREVIEW_ID)
if vsettings.get(PREVIEW_ENABLED) is True and id is not None:
preview = get_view_from_id(window, id)
preview_settings = preview.settings()
preview_settings.erase(IS_PREVIEW)
preview_settings.erase(MD_VIEW_ID)
sublime.set_timeout_async(lambda: preview.close(), 250)

View File

@ -1,17 +1,16 @@
Fast: Fast:
☐ sync scroll @needsUpdate(because of images) ☐ sync scroll @needsUpdate(because of images)
regive focus to the right markdown view cache image in object when used, so that it's faster @needsTest
☐ call settings listener on_new too - might be too heavy ☐ call settings listener on_new too - might be too heavy
☐ use alt attribute for 404 error
Medium: Medium:
☐ auto refresh preview if loading images ☐ auto refresh preview if loading images
cache image in object when used, so that it's faster @needsTest use alt attribute for 404 error
☐ use MarkdownLivePreview syntax, so we can use syntax's settings ☐ use MarkdownLivePreview syntax, so we can use syntax's settings
Long: Long:
☐ fix #4 ☐ fix #4 @high
☐ support hanchor (TOC) @big ☐ support hanchor (TOC) @big
Unknown: Unknown:
@ -20,6 +19,7 @@ Unknown:
___________________ ___________________
Archive: Archive:
✔ regive focus to the right markdown view @done Mon 02 Jan 2017 at 18:34 @project(Fast)
✔ try/except for 404 @done Mon 02 Jan 2017 at 18:03 @project(Fast) ✔ try/except for 404 @done Mon 02 Jan 2017 at 18:03 @project(Fast)
✔ fix bug when empty `src` @done Mon 02 Jan 2017 at 17:15 @project(Fast) ✔ fix bug when empty `src` @done Mon 02 Jan 2017 at 17:15 @project(Fast)
✔ preview.set_scratch(True) @done Mon 02 Jan 2017 at 16:58 ✔ preview.set_scratch(True) @done Mon 02 Jan 2017 at 16:58

19
devListener.py Normal file
View File

@ -0,0 +1,19 @@
# -*- encoding: utf-8 -*-
import sublime
import sublime_plugin
import os.path
class MLPDevListener(sublime_plugin.EventListener):
def on_post_save(self, view):
if not (os.path.dirname(__file__) in view.file_name() and
view.file_name().endswith('.py')):
return
sublime.run_command('reload_plugin', {
'main': os.path.join(sublime.packages_path(),
'MarkdownLivePreview', 'md_in_popup.py'),
'scripts': ['image_manager', 'functions', 'MLPApi',
'setting_names'],
'quiet': True
})

View File

@ -5,6 +5,9 @@ import sublime
file404 = os.path.join(os.path.dirname(__file__), '404.png') file404 = os.path.join(os.path.dirname(__file__), '404.png')
def is_markdown_view(view):
return 'markdown' in view.scope_name(0)
def to_base64(path=None, content=None): def to_base64(path=None, content=None):
if path is None and content is None: if path is None and content is None:
return to_base64(file404) return to_base64(file404)

View File

@ -175,7 +175,7 @@ def show_html(md_view, preview):
vector[1] += preview.line_height() vector[1] += preview.line_height()
preview.set_viewport_position(vector, animate=False) preview.set_viewport_position(vector, animate=False)
class MLPDevListener(sublime_plugin.EventListener): class MLPDevListener:
def on_post_save(self, view): def on_post_save(self, view):
if not (os.path.dirname(__file__) in view.file_name() and if not (os.path.dirname(__file__) in view.file_name() and
@ -188,7 +188,8 @@ class MLPDevListener(sublime_plugin.EventListener):
'quiet': True 'quiet': True
}) })
class MarkdownLivePReviewListener(sublime_plugin.EventListener): # class MarkdownLivePReviewListener(sublime_plugin.EventListener):
class MarkdownLivePReviewListener:
def on_load(self, view): def on_load(self, view):
settings = view.settings() settings = view.settings()
@ -197,6 +198,31 @@ class MarkdownLivePReviewListener(sublime_plugin.EventListener):
settings.add_on_change('markdown_preview_enabled', settings.add_on_change('markdown_preview_enabled',
lambda: self.on_modified(view)) lambda: self.on_modified(view))
def on_deactivated_async(self, md_view):
md_view_settings = md_view.settings()
if md_view.window().active_view().settings()\
.get('is_markdown_preview'):
return
return
markdown_preview_enabled = md_view_settings.get(
'markdown_preview_enabled') is True
preview_id = md_view_settings.get('markdown_preview_id', None)
if not markdown_preview_enabled or not preview_id:
return
get_view_from_id(md_view.window(), preview_id).close()
md_view_settings.erase('markdown_preview_id')
def on_activated(self, md_view):
md_view_settings = md_view.settings()
markdown_preview_enabled = md_view_settings.get(
'markdown_preview_enabled') is True
if markdown_preview_enabled:
return
create_preview(md_view.window(), md_view)
def on_modified(self, md_view): def on_modified(self, md_view):
window = md_view.window() window = md_view.window()
md_view_settings = md_view.settings() md_view_settings = md_view.settings()

View File

@ -1,9 +1,5 @@
# DuckDuckGo - The Search engine you'll fall in love with # DuckDuckGo - The Search engine you'll fall in love with
![DuckDUckGo](http://www.articpost.com/wp-content/uploads/2014/08/DuckDuckGo-Search-Engine.jpg)
![image](http://afterishtar.pl/images/100x100.gif) ![image](http://afterishtar.pl/images/100x100.gif)
![image](http://erewer.omc/dsfdsf) hello!
This is a test

7
setting_names.py Normal file
View File

@ -0,0 +1,7 @@
# -*- encoding: utf-8 -*-
PREVIEW_ENABLED = 'markdown_live_preview_enabled'
PREVIEW_ID = 'markdown_live_preview_id'
IS_PREVIEW = 'is_markdown_live_preview'
IS_HIDDEN = 'is_hidden_markdown_live_preview'
MD_VIEW_ID = 'markdown_live_preview_md_id'