diff --git a/README.md b/README.md index d4223f0..c9b2f10 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,25 @@ Or Settings/Preferences ➔ Packages ➔ Search for `coffeescript-preview` - [x] [Updates on Tab Change](https://github.com/Glavin001/atom-coffeescript-preview/issues/3) - [x] [Highlights using active Atom theme](https://github.com/Glavin001/atom-coffeescript-preview/issues/5) +## Package Settings + +- `Refresh Debounce Period` (milliseconds) - +Set the debounce rate for preview refreshing. +For instance, if you type or switch tabs, +how long of a pause before the preview refreshes. +- `Update On Tab Change` (boolean) - +Should the preview update to the currently active tab? + ## Screenshots +### Preview CoffeeScript as JavaScript + ![screenshot](https://raw.githubusercontent.com/Glavin001/atom-coffeescript-preview/master/screenshot.png) +### Syncing with Tab Changes + ![screencapture](https://cloud.githubusercontent.com/assets/1885333/3576573/99212e10-0b93-11e4-8cd5-9da29e9230dd.gif) + [npm]: https://www.npmjs.org/package/generator-atom-package [atom-doc]: https://atom.io/docs/latest/creating-a-package "Official documentation" diff --git a/lib/coffeescript-preview-view.coffee b/lib/coffeescript-preview-view.coffee index c58bef4..097f447 100644 --- a/lib/coffeescript-preview-view.coffee +++ b/lib/coffeescript-preview-view.coffee @@ -47,6 +47,11 @@ class CoffeePreviewView extends ScrollView atom.config.observe 'editor.fontSize', () => @changeHandler() + # Setup debounced renderer + atom.config.observe 'coffeescript-preview.refreshDebouncePeriod', \ + (wait) => + @debouncedRenderHTMLCode = _.debounce @renderHTMLCode.bind(@), wait + serialize: -> deserializer: 'CoffeePreviewView' filePath: @getPath() @@ -87,7 +92,6 @@ class CoffeePreviewView extends ScrollView null handleTabChanges: => - console.log 'changed tab' updateOnTabChange = atom.config.get 'coffeescript-preview.updateOnTabChange' if updateOnTabChange @@ -120,9 +124,11 @@ class CoffeePreviewView extends ScrollView renderHTML: -> @showLoading() if @editor? - @renderHTMLCode(@editor.getText()) + @debouncedRenderHTMLCode() - renderHTMLCode: (coffeeText) => + renderHTMLCode: () => + # console.log 'renderHTMLCode' + coffeeText = @editor.getText() try # Compile CoffeeScript into JavaScript text = coffeescript.compile coffeeText diff --git a/lib/coffeescript-preview.coffee b/lib/coffeescript-preview.coffee index 33c8adb..e3771d9 100644 --- a/lib/coffeescript-preview.coffee +++ b/lib/coffeescript-preview.coffee @@ -12,6 +12,7 @@ CoffeePreviewView = require './coffeescript-preview-view' module.exports = configDefaults: updateOnTabChange: true + refreshDebouncePeriod: 100 coffeePreviewView: null @@ -63,7 +64,6 @@ module.exports = return unless editor? uri = "coffeescript-preview://editor" previewPane = atom.workspace.paneForUri(uri) - console.log previewPane if previewPane previewPane.destroyItem(previewPane.itemForUri(uri)) return