diff --git a/lib/renderer.coffee b/lib/renderer.coffee index 1ad36109..7b0db290 100644 --- a/lib/renderer.coffee +++ b/lib/renderer.coffee @@ -8,10 +8,17 @@ roaster = null # Defer until used pandocHelper = null # Defer until used {scopeForFenceName} = require './extension-helper' mathjaxHelper = require './mathjax-helper' +pathWatcher = require 'pathwatcher' + +MarkdownPreviewView = null # Defer until used +isMarkdownPreviewView = (object) -> + MarkdownPreviewView ?= require './markdown-preview-view' + object instanceof MarkdownPreviewView highlighter = null {resourcePath} = atom.getLoadSettings() packagePath = path.dirname(__dirname) +imgVersion = [] exports.toDOMFragment = (text='', filePath, grammar, renderLaTeX, callback) -> render text, filePath, renderLaTeX, (error, html) -> @@ -97,9 +104,26 @@ resolveImagePaths = (html, filePath) -> if src[0] is '/' unless fs.isFileSync(src) - img.attr('src', path.join(rootDirectory, src.substring(1))) + src = path.join(rootDirectory, src.substring(1)) + else + src = path.resolve(path.dirname(filePath), src) + + # Use most recent version of image + if imgVersion[src]? + if imgVersion[src] > 0 + src = "#{src}##{imgVersion[src]}" else - img.attr('src', path.resolve(path.dirname(filePath), src)) + imgVersion[src] = 0 + srcClosure = (src) -> + return _.debounce(((event, path) -> + imgVersion[src] += 1 + for item in atom.workspace.getPaneItems() + if isMarkdownPreviewView(item) + item.renderMarkdown() + return), 250) + pathWatcher.watch src, srcClosure(src) + + img.attr('src', src) o.html() diff --git a/package.json b/package.json index 72c95279..015ba72a 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "fs-plus": "^2.0.0", "grim": "^1.2.1", "highlights": "^1.0.0", - "pathwatcher": "^4.3", + "pathwatcher": "^4.4.3", "pdc": "~0.2.2", "roaster": "https://github.com/Galadirith/roaster/tarball/marked-mathjax", "temp": "^0.8.1",