From 63e8e816e38b79f026f08f1d2a88ad7af0e4eab3 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 7 Oct 2015 15:29:51 -0700 Subject: [PATCH 01/14] 1.1.0-beta1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e4271b17..86f24f6f1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom", "productName": "Atom", - "version": "1.2.0-dev", + "version": "1.1.0-beta1", "description": "A hackable text editor for the 21st Century.", "main": "./src/browser/main.js", "repository": { From 73728f501a9a7cde5b473e38f8e773a1c3efd847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=BDu=C5=BEak?= Date: Thu, 8 Oct 2015 10:49:43 +0200 Subject: [PATCH 02/14] :arrow_up: settings-view@0.226.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5e4271b17..ace6ec897 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "open-on-github": "0.38.0", "package-generator": "0.40.0", "release-notes": "0.53.0", - "settings-view": "0.225.0", + "settings-view": "0.226.0", "snippets": "0.100.0", "spell-check": "0.61.0", "status-bar": "0.79.0", From 1d5fa01dc46c52ab352622dcc6456fcbcfc7079c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=BDu=C5=BEak?= Date: Fri, 9 Oct 2015 12:21:39 +0200 Subject: [PATCH 03/14] :arrow_up: settings-view@0.227.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ace6ec897..39623dabd 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "open-on-github": "0.38.0", "package-generator": "0.40.0", "release-notes": "0.53.0", - "settings-view": "0.226.0", + "settings-view": "0.227.0", "snippets": "0.100.0", "spell-check": "0.61.0", "status-bar": "0.79.0", From d35160af1cc728251f686885cd193ff66afae515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=BDu=C5=BEak?= Date: Fri, 9 Oct 2015 21:11:20 +0200 Subject: [PATCH 04/14] :arrow_up: settings-view@0.229.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 39623dabd..f91bd08ef 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "open-on-github": "0.38.0", "package-generator": "0.40.0", "release-notes": "0.53.0", - "settings-view": "0.227.0", + "settings-view": "0.229.0", "snippets": "0.100.0", "spell-check": "0.61.0", "status-bar": "0.79.0", From af36a23e953eee0d979f974e8379ba64f9bdaa5a Mon Sep 17 00:00:00 2001 From: Thomas Johansen Date: Sat, 10 Oct 2015 01:21:49 +0200 Subject: [PATCH 05/14] :bug: Fix #4300 by preventing 'will-navigate' --- src/browser/atom-window.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/browser/atom-window.coffee b/src/browser/atom-window.coffee index 1372d46ec..e341f25d3 100644 --- a/src/browser/atom-window.coffee +++ b/src/browser/atom-window.coffee @@ -142,6 +142,8 @@ class AtomWindow when 0 then @browserWindow.destroy() when 1 then @browserWindow.restart() + @browserWindow.webContents.on 'will-navigate', (event) -> event.preventDefault() + @setupContextMenu() if @isSpec From 69d9da1fa5c076df8eecb1323aee2659e4f3e63c Mon Sep 17 00:00:00 2001 From: simurai Date: Sat, 10 Oct 2015 19:58:31 +0900 Subject: [PATCH 06/14] :arrow_up: tree-view@v0.190.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f91bd08ef..65a393cf0 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "symbols-view": "0.109.0", "tabs": "0.84.0", "timecop": "0.33.0", - "tree-view": "0.189.0", + "tree-view": "0.190.0", "update-package-dependencies": "0.10.0", "welcome": "0.30.0", "whitespace": "0.31.0", From 7d541be125870cdf4512ec4954b77475ebab8fd4 Mon Sep 17 00:00:00 2001 From: Friedrich von Never Date: Mon, 12 Oct 2015 21:51:06 +0600 Subject: [PATCH 07/14] Mention node.js 4.0. --- docs/build-instructions/windows.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-instructions/windows.md b/docs/build-instructions/windows.md index f54e1e049..600a7479d 100644 --- a/docs/build-instructions/windows.md +++ b/docs/build-instructions/windows.md @@ -20,7 +20,7 @@ * [Visual Studio Express 2013 or 2015 for Windows Desktop](http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_2) * For VS 2015, be sure to customize the installation to include Visual C++. It's not installed by default. * Some have experienced issues with Node locating C++ on VS 2015. If so, try VS 2013. - * [node.js](http://nodejs.org/download/) (0.10.x or 0.12.x) or [io.js](https://iojs.org) (1.x or 2.x) + * [node.js](http://nodejs.org/download/) (0.10.x, 0.12.x or 4.x) or [io.js](https://iojs.org) (1.x or 2.x) * [Python](https://www.python.org/downloads/) v2.7.x (required by [node-gyp](https://github.com/TooTallNate/node-gyp)) * [GitHub Desktop](http://desktop.github.com/) From 41984a2317d64ea30c450075cceae0bd6f78afea Mon Sep 17 00:00:00 2001 From: Ross Allen Date: Fri, 2 Oct 2015 10:57:28 -0700 Subject: [PATCH 08/14] Add `onDidStopChangingActivePaneItem` for async callbacks `onDidChangeActivePaneItem` is called synchronously when the active pane item changes, and several non-critical actions preform work on that event. Critical UI feedback, like changing the active tab, needs to happen synchronously, but most other functionality should be run asynchronously. --- spec/pane-container-spec.coffee | 23 +++++++++++++++++++++++ src/pane-container.coffee | 19 +++++++++++++++++++ src/workspace.coffee | 25 ++++++++++++++++++++++++- 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/spec/pane-container-spec.coffee b/spec/pane-container-spec.coffee index 58e159279..d0f2913aa 100644 --- a/spec/pane-container-spec.coffee +++ b/spec/pane-container-spec.coffee @@ -122,6 +122,29 @@ describe "PaneContainer", -> pane2.activate() expect(observed).toEqual [pane1.itemAtIndex(0), pane2.itemAtIndex(0)] + describe "::onDidStopChangingActivePaneItem()", -> + [container, pane1, pane2, observed] = [] + + beforeEach -> + container = new PaneContainer(root: new Pane(items: [new Object, new Object])) + container.getRoot().splitRight(items: [new Object, new Object]) + [pane1, pane2] = container.getPanes() + + observed = [] + container.onDidStopChangingActivePaneItem (item) -> observed.push(item) + + it "invokes observers when the active item of the active pane stops changing", -> + pane2.activateNextItem() + pane2.activateNextItem() + advanceClock(100) + expect(observed).toEqual [pane2.itemAtIndex(0)] + + it "invokes observers when the active pane stops changing", -> + pane1.activate() + pane2.activate() + advanceClock(100) + expect(observed).toEqual [pane2.itemAtIndex(0)] + describe "::observePanes()", -> it "invokes observers with all current and future panes", -> container = new PaneContainer diff --git a/src/pane-container.coffee b/src/pane-container.coffee index 786c4b84f..a8d1fa5d2 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -12,6 +12,8 @@ class PaneContainer extends Model @version: 1 root: null + stoppedChangingActivePaneItemDelay: 100 + stoppedChangingActivePaneItemTimeout: null @deserialize: (state) -> container = Object.create(@prototype) # allows us to pass a self reference to our child before invoking constructor @@ -82,6 +84,9 @@ class PaneContainer extends Model onDidChangeActivePaneItem: (fn) -> @emitter.on 'did-change-active-pane-item', fn + onDidStopChangingActivePaneItem: (fn) -> + @emitter.on 'did-stop-changing-active-pane-item', fn + observeActivePaneItem: (fn) -> fn(@getActivePaneItem()) @onDidChangeActivePaneItem(fn) @@ -189,12 +194,18 @@ class PaneContainer extends Model # Called by Model superclass when destroyed destroyed: -> + @cancelStoppedChangingActivePaneItemTimeout() pane.destroy() for pane in @getPanes() @subscriptions.dispose() @emitter.dispose() + cancelStoppedChangingActivePaneItemTimeout: -> + if @stoppedChangingActivePaneItemTimeout? + clearTimeout(@stoppedChangingActivePaneItemTimeout) + monitorActivePaneItem: -> childSubscription = null + @subscriptions.add @observeActivePane (activePane) => if childSubscription? @subscriptions.remove(childSubscription) @@ -202,6 +213,14 @@ class PaneContainer extends Model childSubscription = activePane.observeActiveItem (activeItem) => @emitter.emit 'did-change-active-pane-item', activeItem + @cancelStoppedChangingActivePaneItemTimeout() + stoppedChangingActivePaneItemCallback = => + @stoppedChangingActivePaneItemTimeout = null + @emitter.emit 'did-stop-changing-active-pane-item', activeItem + @stoppedChangingActivePaneItemTimeout = + setTimeout( + stoppedChangingActivePaneItemCallback, + @stoppedChangingActivePaneItemDelay) @subscriptions.add(childSubscription) diff --git a/src/workspace.coffee b/src/workspace.coffee index bda6e9b45..2ff12ac19 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -209,11 +209,34 @@ class Workspace extends Model # Essential: Invoke the given callback when the active pane item changes. # + # Because observers are invoked synchronously, it's important not to perform + # any expensive operations via this method. Consider + # {::onDidStopChangingActivePaneItem} to delay operations until after changes + # stop occurring. + # # * `callback` {Function} to be called when the active pane item changes. # * `item` The active pane item. # # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. - onDidChangeActivePaneItem: (callback) -> @paneContainer.onDidChangeActivePaneItem(callback) + onDidChangeActivePaneItem: (callback) -> + @paneContainer.onDidChangeActivePaneItem(callback) + + # Essential: Invoke the given callback when the active pane item stops + # changing. + # + # Observers are called asynchronously 100ms after the last active pane item + # change. Handling changes here rather than in the synchronous + # {::onDidChangeActivePaneItem} prevents unneeded work if the user is quickly + # changing or closing tabs and ensures critical UI feedback, like changing the + # highlighted tab, gets priority over work that can be done asynchronously. + # + # * `callback` {Function} to be called when the active pane item stopts + # changing. + # * `item` The active pane item. + # + # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. + onDidStopChangingActivePaneItem: (callback) -> + @paneContainer.onDidStopChangingActivePaneItem(callback) # Essential: Invoke the given callback with the current active pane item and # with all future active pane items in the workspace. From 8d7949344dd759acd57f4093b4cd171b6520ef85 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 12 Oct 2015 10:43:35 -0700 Subject: [PATCH 09/14] :arrow_up: language-shellscript@0.18 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 65a393cf0..bd1189ddb 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "language-ruby": "0.60.0", "language-ruby-on-rails": "0.23.0", "language-sass": "0.41.0", - "language-shellscript": "0.17.0", + "language-shellscript": "0.18.0", "language-source": "0.9.0", "language-sql": "0.17.0", "language-text": "0.7.0", From 13bd16f2b8803dcc08766a989179ff687eafb880 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 12 Oct 2015 11:14:27 -0700 Subject: [PATCH 10/14] :arrow_up: autoflow@0.26 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bd1189ddb..9df7bc7df 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "autocomplete-html": "0.7.2", "autocomplete-plus": "2.22.0", "autocomplete-snippets": "1.7.1", - "autoflow": "0.25.0", + "autoflow": "0.26.0", "autosave": "0.22.0", "background-tips": "0.26.0", "bookmarks": "0.38.0", From e7fcac40ec57b434ab60759d3f61c26175df4313 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 12 Oct 2015 11:15:53 -0700 Subject: [PATCH 11/14] :arrow_up: language-clojure@0.18 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9df7bc7df..c13dcebb4 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "whitespace": "0.31.0", "wrap-guide": "0.38.0", "language-c": "0.48.0", - "language-clojure": "0.17.0", + "language-clojure": "0.18.0", "language-coffee-script": "0.42.0", "language-csharp": "0.11.0", "language-css": "0.34.0", From bcbf999d9503387ff23df0c66a53f680fc57746c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 12 Oct 2015 11:24:30 -0700 Subject: [PATCH 12/14] :arrow_up: language-sass@0.42 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c13dcebb4..cab3ba3b8 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "language-python": "0.40.0", "language-ruby": "0.60.0", "language-ruby-on-rails": "0.23.0", - "language-sass": "0.41.0", + "language-sass": "0.42.0", "language-shellscript": "0.18.0", "language-source": "0.9.0", "language-sql": "0.17.0", From 12143f6380e7782221055a8f61e20230d64dfbb2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 12 Oct 2015 11:29:19 -0700 Subject: [PATCH 13/14] :arrow_up: language-html@0.42 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cab3ba3b8..5a337ca05 100644 --- a/package.json +++ b/package.json @@ -122,7 +122,7 @@ "language-gfm": "0.81.0", "language-git": "0.10.0", "language-go": "0.39.0", - "language-html": "0.41.3", + "language-html": "0.42.0", "language-hyperlink": "0.14.0", "language-java": "0.16.0", "language-javascript": "0.96.0", From b27c1140a751e36a0d2a51032ed027f87efd68e9 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 12 Oct 2015 13:36:43 -0700 Subject: [PATCH 14/14] :arrow_up: language-shellscript@0.19 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5a337ca05..fcf4e3721 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "language-ruby": "0.60.0", "language-ruby-on-rails": "0.23.0", "language-sass": "0.42.0", - "language-shellscript": "0.18.0", + "language-shellscript": "0.19.0", "language-source": "0.9.0", "language-sql": "0.17.0", "language-text": "0.7.0",