From 1a8ebd561fc5f9c314b91a35fddf8f2f99ba9d49 Mon Sep 17 00:00:00 2001 From: simurai Date: Sat, 16 May 2015 14:26:01 +0900 Subject: [PATCH 01/19] :arrow_up: find-and-replace@v0.164.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 956aded57..bb8935277 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "dev-live-reload": "0.46.0", "encoding-selector": "0.20.0", "exception-reporting": "0.24.0", - "find-and-replace": "0.163.0", + "find-and-replace": "0.164.0", "fuzzy-finder": "0.85.0", "git-diff": "0.55.0", "go-to-line": "0.30.0", From 6431807a960b2b8444079b2c56f5b6040300dc62 Mon Sep 17 00:00:00 2001 From: simurai Date: Sat, 16 May 2015 15:29:14 +0900 Subject: [PATCH 02/19] :arrow_up: find-and-replace@v0.165.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bb8935277..2fa31e17d 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "dev-live-reload": "0.46.0", "encoding-selector": "0.20.0", "exception-reporting": "0.24.0", - "find-and-replace": "0.164.0", + "find-and-replace": "0.165.0", "fuzzy-finder": "0.85.0", "git-diff": "0.55.0", "go-to-line": "0.30.0", From aaf1e24c5da6b2b1578df8d5c420546f2afd9761 Mon Sep 17 00:00:00 2001 From: Thomas Johansen Date: Sat, 16 May 2015 09:29:17 +0200 Subject: [PATCH 03/19] :arrow_up: language-python@0.35.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2fa31e17d..24a740778 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "language-perl": "0.24.0", "language-php": "0.23.0", "language-property-list": "0.8.0", - "language-python": "0.34.0", + "language-python": "0.35.0", "language-ruby": "0.52.0", "language-ruby-on-rails": "0.21.0", "language-sass": "0.38.0", From e9c4a87f88e943a74dea73a8bc9825057f21477a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Machist=C3=A9=20N=2E=20Quintana?= Date: Sun, 17 May 2015 08:26:41 -0400 Subject: [PATCH 04/19] :arrow_up: find-and-replace@0.166.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2fa31e17d..3d0aa9656 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "dev-live-reload": "0.46.0", "encoding-selector": "0.20.0", "exception-reporting": "0.24.0", - "find-and-replace": "0.165.0", + "find-and-replace": "0.166.0", "fuzzy-finder": "0.85.0", "git-diff": "0.55.0", "go-to-line": "0.30.0", From 77396466998322acb687b2a6a04846ca5d1b2a76 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 12 May 2015 09:00:15 -0700 Subject: [PATCH 05/19] Check for updates every 30 minutes --- src/browser/auto-update-manager.coffee | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/browser/auto-update-manager.coffee b/src/browser/auto-update-manager.coffee index 654a8de67..0fd5bb792 100644 --- a/src/browser/auto-update-manager.coffee +++ b/src/browser/auto-update-manager.coffee @@ -53,7 +53,11 @@ class AutoUpdateManager @emitUpdateAvailableEvent(@getWindows()...) # Only released versions should check for updates. - @check(hidePopups: true) unless /\w{7}/.test(@version) + unless /\w{7}/.test(@version) + checkForUpdates = => @check(hidePopups: true) + thirtyMinutes = 1000 * 60 * 30 + setInterval(checkForUpdates, thirtyMinutes) + checkForUpdates() switch process.platform when 'win32' From 672cb89e848c5b04ec8d6f9dd12c0d30167e15d7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 May 2015 08:30:51 -0700 Subject: [PATCH 06/19] Extract schedule update check helper --- src/browser/auto-update-manager.coffee | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/browser/auto-update-manager.coffee b/src/browser/auto-update-manager.coffee index 0fd5bb792..5bd945310 100644 --- a/src/browser/auto-update-manager.coffee +++ b/src/browser/auto-update-manager.coffee @@ -53,11 +53,7 @@ class AutoUpdateManager @emitUpdateAvailableEvent(@getWindows()...) # Only released versions should check for updates. - unless /\w{7}/.test(@version) - checkForUpdates = => @check(hidePopups: true) - thirtyMinutes = 1000 * 60 * 30 - setInterval(checkForUpdates, thirtyMinutes) - checkForUpdates() + @scheduleUpdateCheck() unless /\w{7}/.test(@version) switch process.platform when 'win32' @@ -79,6 +75,12 @@ class AutoUpdateManager getState: -> @state + scheduleUpdateCheck: -> + checkForUpdates = => @check(hidePopups: true) + thirtyMinutes = 1000 * 60 * 30 + setInterval(checkForUpdates, thirtyMinutes) + checkForUpdates() + check: ({hidePopups}={}) -> unless hidePopups autoUpdater.once 'update-not-available', @onUpdateNotAvailable From 655ce1af77b289da481e074d309ad42d4965b207 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 15 May 2015 11:33:22 -0700 Subject: [PATCH 07/19] 30 minutes -> 4 hours --- src/browser/auto-update-manager.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/browser/auto-update-manager.coffee b/src/browser/auto-update-manager.coffee index 5bd945310..a2c239789 100644 --- a/src/browser/auto-update-manager.coffee +++ b/src/browser/auto-update-manager.coffee @@ -77,8 +77,8 @@ class AutoUpdateManager scheduleUpdateCheck: -> checkForUpdates = => @check(hidePopups: true) - thirtyMinutes = 1000 * 60 * 30 - setInterval(checkForUpdates, thirtyMinutes) + fourHours = 1000 * 60 * 60 * 4 + setInterval(checkForUpdates, fourHours) checkForUpdates() check: ({hidePopups}={}) -> From 9c13120c798b87fa2dd4fd577221a76512d7e3d4 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 09:25:42 -0700 Subject: [PATCH 08/19] :arrow_up: open-on-github@0.37 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ce58fe9dc..28e35df4f 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "markdown-preview": "0.149.0", "metrics": "0.48.0", "notifications": "0.46.0", - "open-on-github": "0.36.0", + "open-on-github": "0.37.0", "package-generator": "0.39.0", "release-notes": "0.52.0", "settings-view": "0.199.0", From 4dc1dfd4fabe080fe7145aa873b5c63df691e9ab Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 09:27:38 -0700 Subject: [PATCH 09/19] :arrow_up: language-clojure@0.15 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 28e35df4f..12d6d2b89 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "whitespace": "0.29.0", "wrap-guide": "0.33.0", "language-c": "0.44.0", - "language-clojure": "0.14.0", + "language-clojure": "0.15.0", "language-coffee-script": "0.40.0", "language-csharp": "0.5.0", "language-css": "0.29.0", From abebdb5a35a0207c00b69a9dc6d96fe79acaca7f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 09:32:20 -0700 Subject: [PATCH 10/19] :arrow_up: notifications@0.47 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 12d6d2b89..4249db43f 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "link": "0.30.0", "markdown-preview": "0.149.0", "metrics": "0.48.0", - "notifications": "0.46.0", + "notifications": "0.47.0", "open-on-github": "0.37.0", "package-generator": "0.39.0", "release-notes": "0.52.0", From dde59f5c6bbc79d04f17a04600b814d44e72eedf Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 09:34:25 -0700 Subject: [PATCH 11/19] :arrow_up: language-ruby@0.53 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4249db43f..e98d5ce2d 100644 --- a/package.json +++ b/package.json @@ -148,7 +148,7 @@ "language-php": "0.23.0", "language-property-list": "0.8.0", "language-python": "0.35.0", - "language-ruby": "0.52.0", + "language-ruby": "0.53.0", "language-ruby-on-rails": "0.21.0", "language-sass": "0.38.0", "language-shellscript": "0.14.0", From 8556f39c6039a2b5b881c2374d1cc2977b2061b8 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 18 May 2015 13:58:59 -0700 Subject: [PATCH 12/19] :arrow_up: autocomplete-plus --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e98d5ce2d..330117ff3 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "autocomplete-atom-api": "0.9.0", "autocomplete-css": "0.7.2", "autocomplete-html": "0.7.2", - "autocomplete-plus": "2.16.3", + "autocomplete-plus": "2.17.0", "autocomplete-snippets": "1.6.1", "autoflow": "0.23.0", "autosave": "0.20.0", From db9b655d49489e0f72c39ce562612be755c7392c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 11:18:33 -0700 Subject: [PATCH 13/19] Mark which grammars are from bundled packages --- src/package.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/package.coffee b/src/package.coffee index b48ed8014..65c7af822 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -303,6 +303,7 @@ class Package try grammar = atom.grammars.readGrammarSync(grammarPath) grammar.packageName = @name + grammar.bundledPackage = @bundledPackage @grammars.push(grammar) grammar.activate() catch error @@ -322,6 +323,7 @@ class Package atom.notifications.addFatalError("Failed to load a #{@name} package grammar", {stack, detail, dismissable: true}) else grammar.packageName = @name + grammar.bundledPackage = @bundledPackage @grammars.push(grammar) grammar.activate() if @grammarsActivated callback() From 403f7cbc6bbe6e5d567add6fd2bc4bf0f75db73a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 11:19:08 -0700 Subject: [PATCH 14/19] Favor non bundle packages when breaking ties --- src/grammar-registry.coffee | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/grammar-registry.coffee b/src/grammar-registry.coffee index 568de483a..bccfd4569 100644 --- a/src/grammar-registry.coffee +++ b/src/grammar-registry.coffee @@ -35,7 +35,16 @@ class GrammarRegistry extends FirstMate.GrammarRegistry # * `fileContents` A {String} of text for the file path. # # Returns a {Grammar}, never null. - selectGrammar: (filePath, fileContents) -> super + selectGrammar: (filePath, fileContents) -> + bestMatch = null + highestScore = -Infinity + for grammar in @grammars + score = grammar.getScore(filePath, fileContents) + if score > highestScore + bestMatch = grammar + else if score is highestScore + bestMatch = grammar if bestMatch.bundledPackage and not grammar.bundledPackage + bestMatch clearObservers: -> @off() if includeDeprecatedAPIs From 8b25eb4f0f32a4986422faf073a7bc6c4e026329 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 11:21:27 -0700 Subject: [PATCH 15/19] Guard against missing best match --- src/grammar-registry.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/grammar-registry.coffee b/src/grammar-registry.coffee index bccfd4569..ce08c09ce 100644 --- a/src/grammar-registry.coffee +++ b/src/grammar-registry.coffee @@ -40,10 +40,10 @@ class GrammarRegistry extends FirstMate.GrammarRegistry highestScore = -Infinity for grammar in @grammars score = grammar.getScore(filePath, fileContents) - if score > highestScore + if score > highestScore or not bestMatch? bestMatch = grammar - else if score is highestScore - bestMatch = grammar if bestMatch.bundledPackage and not grammar.bundledPackage + else if score is highestScore and bestMatch?.bundledPackage + bestMatch = grammar unless grammar.bundledPackage bestMatch clearObservers: -> From 84c4ee4c79ac0da95b6cc3e2fafdba03d15314ea Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 11:24:14 -0700 Subject: [PATCH 16/19] atom.syntax -> atom.grammars --- spec/{syntax-spec.coffee => grammars-spec.coffee} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename spec/{syntax-spec.coffee => grammars-spec.coffee} (99%) diff --git a/spec/syntax-spec.coffee b/spec/grammars-spec.coffee similarity index 99% rename from spec/syntax-spec.coffee rename to spec/grammars-spec.coffee index ecc0c0406..975fc3ea9 100644 --- a/spec/syntax-spec.coffee +++ b/spec/grammars-spec.coffee @@ -2,7 +2,7 @@ path = require 'path' fs = require 'fs-plus' temp = require 'temp' -describe "the `syntax` global", -> +describe "the `grammars` global", -> beforeEach -> waitsForPromise -> atom.packages.activatePackage('language-text') From 4378255ab67b367a6a982da858474e73c43ed4d8 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 11:24:34 -0700 Subject: [PATCH 17/19] syntax2 -> grammars2 --- spec/grammars-spec.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/grammars-spec.coffee b/spec/grammars-spec.coffee index 975fc3ea9..92807a32e 100644 --- a/spec/grammars-spec.coffee +++ b/spec/grammars-spec.coffee @@ -25,9 +25,9 @@ describe "the `grammars` global", -> filePath = '/foo/bar/file.js' expect(atom.grammars.selectGrammar(filePath).name).not.toBe 'Ruby' atom.grammars.setGrammarOverrideForPath(filePath, 'source.ruby') - syntax2 = atom.deserializers.deserialize(atom.grammars.serialize()) - syntax2.addGrammar(grammar) for grammar in atom.grammars.grammars when grammar isnt atom.grammars.nullGrammar - expect(syntax2.selectGrammar(filePath).name).toBe 'Ruby' + grammars2 = atom.deserializers.deserialize(atom.grammars.serialize()) + grammars2.addGrammar(grammar) for grammar in atom.grammars.grammars when grammar isnt atom.grammars.nullGrammar + expect(grammars2.selectGrammar(filePath).name).toBe 'Ruby' describe ".selectGrammar(filePath)", -> it "can use the filePath to load the correct grammar based on the grammar's filetype", -> From 00505188fa53e4d8b81e97cda5ba7ca3c63bb593 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 13:49:02 -0700 Subject: [PATCH 18/19] Add spec for grammar score tie-breaking --- .../package-with-rb-filetype/grammars/rb.cson | 11 +++++++++++ .../packages/package-with-rb-filetype/package.json | 4 ++++ spec/grammars-spec.coffee | 10 ++++++++++ src/grammar-registry.coffee | 1 + 4 files changed, 26 insertions(+) create mode 100644 spec/fixtures/packages/package-with-rb-filetype/grammars/rb.cson create mode 100644 spec/fixtures/packages/package-with-rb-filetype/package.json diff --git a/spec/fixtures/packages/package-with-rb-filetype/grammars/rb.cson b/spec/fixtures/packages/package-with-rb-filetype/grammars/rb.cson new file mode 100644 index 000000000..8b4d85412 --- /dev/null +++ b/spec/fixtures/packages/package-with-rb-filetype/grammars/rb.cson @@ -0,0 +1,11 @@ +'name': 'Test Ruby' +'scopeName': 'test.rb' +'fileTypes': [ + 'rb' +] +'patterns': [ + { + 'match': 'ruby' + 'name': 'meta.class.ruby' + } +] diff --git a/spec/fixtures/packages/package-with-rb-filetype/package.json b/spec/fixtures/packages/package-with-rb-filetype/package.json new file mode 100644 index 000000000..350967dc5 --- /dev/null +++ b/spec/fixtures/packages/package-with-rb-filetype/package.json @@ -0,0 +1,4 @@ +{ + "name": "package-with-rb-filetype", + "version": "1.0.0" +} diff --git a/spec/grammars-spec.coffee b/spec/grammars-spec.coffee index 92807a32e..52c7ea16c 100644 --- a/spec/grammars-spec.coffee +++ b/spec/grammars-spec.coffee @@ -94,6 +94,16 @@ describe "the `grammars` global", -> grammar2 = atom.grammars.loadGrammarSync(grammarPath2) expect(atom.grammars.selectGrammar('more.test', '')).toBe grammar2 + it "favors non-bundled packages when breaking scoring ties", -> + waitsForPromise -> + atom.packages.activatePackage(path.join(__dirname, 'fixtures', 'packages', 'package-with-rb-filetype')) + + runs -> + atom.grammars.grammarForScopeName('source.ruby').bundledPackage = true + atom.grammars.grammarForScopeName('test.rb').bundledPackage = false + + expect(atom.grammars.selectGrammar('test.rb').scopeName).toBe 'test.rb' + describe "when there is no file path", -> it "does not throw an exception (regression)", -> expect(-> atom.grammars.selectGrammar(null, '#!/usr/bin/ruby')).not.toThrow() diff --git a/src/grammar-registry.coffee b/src/grammar-registry.coffee index ce08c09ce..7b1ef823f 100644 --- a/src/grammar-registry.coffee +++ b/src/grammar-registry.coffee @@ -42,6 +42,7 @@ class GrammarRegistry extends FirstMate.GrammarRegistry score = grammar.getScore(filePath, fileContents) if score > highestScore or not bestMatch? bestMatch = grammar + highestScore = score else if score is highestScore and bestMatch?.bundledPackage bestMatch = grammar unless grammar.bundledPackage bestMatch From 33ac25479b443559f4cf695ae5b3a9233a4362d7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 18 May 2015 15:39:57 -0700 Subject: [PATCH 19/19] :art: Correct indentation --- spec/grammars-spec.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spec/grammars-spec.coffee b/spec/grammars-spec.coffee index 52c7ea16c..cc975468f 100644 --- a/spec/grammars-spec.coffee +++ b/spec/grammars-spec.coffee @@ -95,14 +95,14 @@ describe "the `grammars` global", -> expect(atom.grammars.selectGrammar('more.test', '')).toBe grammar2 it "favors non-bundled packages when breaking scoring ties", -> - waitsForPromise -> - atom.packages.activatePackage(path.join(__dirname, 'fixtures', 'packages', 'package-with-rb-filetype')) + waitsForPromise -> + atom.packages.activatePackage(path.join(__dirname, 'fixtures', 'packages', 'package-with-rb-filetype')) - runs -> - atom.grammars.grammarForScopeName('source.ruby').bundledPackage = true - atom.grammars.grammarForScopeName('test.rb').bundledPackage = false + runs -> + atom.grammars.grammarForScopeName('source.ruby').bundledPackage = true + atom.grammars.grammarForScopeName('test.rb').bundledPackage = false - expect(atom.grammars.selectGrammar('test.rb').scopeName).toBe 'test.rb' + expect(atom.grammars.selectGrammar('test.rb').scopeName).toBe 'test.rb' describe "when there is no file path", -> it "does not throw an exception (regression)", ->