Compare commits

..

13 Commits

Author SHA1 Message Date
79c785176f 🐛 check if color scheme is valid before loading 2018-08-04 10:59:39 +10:00
82ad98085f 🐛 don't copy to html to clipboard. Fix #36 2017-09-29 07:12:55 +10:00
dd184c5fdd Merge pull request #35 from sepich/master
Fix for #33
Specify encoding when opening resource (`utf-8`)
2017-09-18 08:36:22 +10:00
c334c49592 Fix for #33 2017-09-17 21:32:57 +03:00
41c28e2b24 use option 'strike' although no-sublime-support 2017-07-29 14:34:57 +10:00
e1eb17fe96 🔀 Merge branch 'master' of github.com:math2001/MarkdownLivePreview 2017-03-22 18:35:59 +11:00
823d22afee 🎨 on_modified → async; use timeout only if needed 2017-03-22 18:32:42 +11:00
91f4bc5052 🐛 timeout to update preview 2017-03-22 17:53:07 +11:00
7126c0e090 use setting for delay before updating preview 2017-03-22 17:40:20 +11:00
6a3dd6ac2f update preview at the most once every 0.8s 2017-03-22 17:30:32 +11:00
1542e5e898 🐛 in functions.py@get_resource 2017-03-18 14:39:17 +11:00
05c471b5d9 add get_resource function
Allow to load the last version of a resource when extracted
2017-03-07 08:28:56 +11:00
76f580ba29 open color scheme as resource #25
allows the color scheme to be in a packaged package
2017-03-07 08:24:19 +11:00
8 changed files with 38 additions and 15 deletions

View File

@ -12,5 +12,8 @@
// Choose what to do with YAML/TOML (---/+++ respectively) headers
// Valid values: "wrap_in_pre", "remove".
"header_action": "wrap_in_pre"
"header_action": "wrap_in_pre",
// Wait at least the specified *seconds* before updating the preview.
"update_preview_every": 0
}

View File

@ -42,7 +42,7 @@ def markdown2html(md, basepath, color_scheme):
# the option no-code-highlighting does not exists in the official version of markdown2 for now
# I personaly edited the file (markdown2.py:1743)
html += md2.markdown(md, extras=['fenced-code-blocks', 'tables'])
html += md2.markdown(md, extras=['fenced-code-blocks', 'tables', 'strike'])
# tables aren't supported by the Phantoms
# This function transforms them into aligned ASCII tables and displays them in a <pre> block
@ -73,8 +73,7 @@ def markdown2html(md, basepath, color_scheme):
def show_html(md_view, preview):
global windows_phantom_set
html = markdown2html(get_view_content(md_view), os.path.dirname(md_view.file_name()),
os.path.join(sublime.packages_path(), '..', md_view.settings().get('color_scheme')))
html = markdown2html(get_view_content(md_view), os.path.dirname(md_view.file_name()), md_view.settings().get('color_scheme'))
phantom_set = windows_phantom_set.setdefault(preview.window().id(),
sublime.PhantomSet(preview, 'markdown_live_preview'))

View File

@ -2,6 +2,7 @@
import sublime
import sublime_plugin
import time
from .MLPApi import *
from .setting_names import *
@ -46,6 +47,11 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener):
def update(self, view):
vsettings = view.settings()
now = time.time()
if now - vsettings.get(LAST_UPDATE, 0) < get_settings().get('update_preview_every'):
return
vsettings.set(LAST_UPDATE, now)
if not vsettings.get(PREVIEW_ENABLED):
return
id = vsettings.get(PREVIEW_ID)
@ -58,10 +64,14 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener):
show_html(view, preview)
return view, preview
def on_modified(self, view):
def on_modified_async(self, view):
if not is_markdown_view(view): # faster than getting the settings
return
delay = get_settings().get('update_preview_every')
if not delay:
self.update(view)
else:
sublime.set_timeout(lambda: self.update(view), delay * 1000)
def on_window_command(self, window, command, args):
if command == 'close' and window.settings().get(PREVIEW_WINDOW):
@ -78,7 +88,6 @@ class MarkdownLivePreviewListener(sublime_plugin.EventListener):
'.hidden-tmLanguage'
and not any(filter(lambda window: window.settings().get(PREVIEW_WINDOW) is True,
sublime.windows()))):
# print("MarkdownLivePreview.py:81", 'open window')
sublime.run_command('new_markdown_live_preview')

View File

@ -10,7 +10,7 @@ hope: You'll enjoy using it!
And `<!-- vicious ones ;) -->`
Some `inline code` with *italic* and **bold** text.
Some `inline code` with *italic*, **bold** text, and ~~strike through~~.
```python
import this

View File

@ -127,6 +127,13 @@ def get_style(color_scheme):
if os.path.exists(USER_STYLE_FILE):
with open(USER_STYLE_FILE) as fp:
css += '\n' + fp.read() + '\n'
if color_scheme:
css += pygments_from_theme(color_scheme)
if color_scheme and color_scheme.endswith('.tmTheme'):
css += pygments_from_theme(get_resource(color_scheme))
return ''.join([line.strip() + ' ' for line in css.splitlines()])
def get_resource(resource):
if os.path.exists(os.path.join(sublime.packages_path(), '..', resource)):
with open(os.path.join(sublime.packages_path(), '..', resource), encoding='utf-8') as fp:
return fp.read()
else:
return sublime.load_resource(resource)

View File

@ -2,7 +2,7 @@
import os
import sys
from xml.dom.minidom import parse
from xml.dom.minidom import parseString
from collections import defaultdict
class Style:
@ -55,9 +55,9 @@ class Style:
# colors and font styles from colortheme file
def get_settings(file_name):
def get_settings(color_scheme_content):
settings = defaultdict(lambda: [])
dom = parse(file_name)
dom = parseString(color_scheme_content)
arr = dom.getElementsByTagName('array')[0]
editor_cfg = arr.getElementsByTagName('dict')[0].getElementsByTagName('dict')[0]
editor_vals = editor_cfg.getElementsByTagName('string')
@ -82,8 +82,8 @@ def get_settings(file_name):
return settings
def pygments_from_theme(file):
settings = get_settings(file)
def pygments_from_theme(color_scheme_content):
settings = get_settings(color_scheme_content)
styles = []
#Generic

View File

@ -7,3 +7,4 @@ IS_HIDDEN = 'is_hidden_markdown_live_preview'
MD_VIEW_ID = 'markdown_live_preview_md_id'
PREVIEW_WINDOW = 'markdown_live_preview_window'
ON_OPEN = 'markdown_live_preview_on_open'
LAST_UPDATE = 'markdonw_live_preview_last_run'

View File

@ -10,3 +10,7 @@ else:
```
![img](docs/imgs/syntax-specific-settings.png)
<ol>
<li>test</li>
</ol>