From 78c5fd42da76a899126e4a0ee5ee57270d837b6a Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 10 Feb 2016 17:53:07 -0800 Subject: [PATCH 1/7] Temporarily disable deserializers & viewProviders metadata fields --- spec/package-manager-spec.coffee | 78 -------------------------------- src/package.coffee | 10 +--- 2 files changed, 1 insertion(+), 87 deletions(-) diff --git a/spec/package-manager-spec.coffee b/spec/package-manager-spec.coffee index 46d1d11ee20..23c3b96acf3 100644 --- a/spec/package-manager-spec.coffee +++ b/spec/package-manager-spec.coffee @@ -83,75 +83,6 @@ describe "PackageManager", -> expect(loadedPackage.name).toBe "package-with-main" - it "registers any deserializers specified in the package's package.json", -> - pack = atom.packages.loadPackage("package-with-deserializers") - - state1 = {deserializer: 'Deserializer1', a: 'b'} - expect(atom.deserializers.deserialize(state1)).toEqual { - wasDeserializedBy: 'Deserializer1' - state: state1 - } - - state2 = {deserializer: 'Deserializer2', c: 'd'} - expect(atom.deserializers.deserialize(state2)).toEqual { - wasDeserializedBy: 'Deserializer2' - state: state2 - } - - expect(pack.mainModule).toBeNull() - - describe "when there are view providers specified in the package's package.json", -> - model1 = {worksWithViewProvider1: true} - model2 = {worksWithViewProvider2: true} - - afterEach -> - atom.packages.deactivatePackage('package-with-view-providers') - atom.packages.unloadPackage('package-with-view-providers') - - it "does not load the view providers immediately", -> - pack = atom.packages.loadPackage("package-with-view-providers") - expect(pack.mainModule).toBeNull() - - expect(-> atom.views.getView(model1)).toThrow() - expect(-> atom.views.getView(model2)).toThrow() - - it "registers the view providers when the package is activated", -> - pack = atom.packages.loadPackage("package-with-view-providers") - - waitsForPromise -> - atom.packages.activatePackage("package-with-view-providers").then -> - element1 = atom.views.getView(model1) - expect(element1 instanceof HTMLDivElement).toBe true - expect(element1.dataset.createdBy).toBe 'view-provider-1' - - element2 = atom.views.getView(model2) - expect(element2 instanceof HTMLDivElement).toBe true - expect(element2.dataset.createdBy).toBe 'view-provider-2' - - it "registers the view providers when any of the package's deserializers are used", -> - pack = atom.packages.loadPackage("package-with-view-providers") - - spyOn(atom.views, 'addViewProvider').andCallThrough() - atom.deserializers.deserialize({ - deserializer: 'DeserializerFromPackageWithViewProviders', - a: 'b' - }) - expect(atom.views.addViewProvider.callCount).toBe 2 - - atom.deserializers.deserialize({ - deserializer: 'DeserializerFromPackageWithViewProviders', - a: 'b' - }) - expect(atom.views.addViewProvider.callCount).toBe 2 - - element1 = atom.views.getView(model1) - expect(element1 instanceof HTMLDivElement).toBe true - expect(element1.dataset.createdBy).toBe 'view-provider-1' - - element2 = atom.views.getView(model2) - expect(element2 instanceof HTMLDivElement).toBe true - expect(element2.dataset.createdBy).toBe 'view-provider-2' - it "registers the config schema in the package's metadata, if present", -> pack = atom.packages.loadPackage("package-with-json-config-schema") expect(atom.config.getSchema('package-with-json-config-schema')).toEqual { @@ -180,15 +111,6 @@ describe "PackageManager", -> beforeEach -> mockLocalStorage() - it "defers loading the package's main module if the package previously used no Atom APIs when its main module was required", -> - pack1 = atom.packages.loadPackage('package-with-main') - expect(pack1.mainModule).toBeDefined() - - atom.packages.unloadPackage('package-with-main') - - pack2 = atom.packages.loadPackage('package-with-main') - expect(pack2.mainModule).toBeNull() - it "does not defer loading the package's main module if the package previously used Atom APIs when its main module was required", -> pack1 = atom.packages.loadPackage('package-with-eval-time-api-calls') expect(pack1.mainModule).toBeDefined() diff --git a/src/package.coffee b/src/package.coffee index 8230ce4e408..6611babe1f3 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -84,7 +84,6 @@ class Package @loadKeymaps() @loadMenus() @loadStylesheets() - @loadDeserializers() @configSchemaRegisteredOnLoad = @registerConfigSchemaFromMetadata() @settingsPromise = @loadSettings() if @shouldRequireMainModuleOnLoad() and not @mainModule? @@ -94,13 +93,7 @@ class Package this shouldRequireMainModuleOnLoad: -> - not ( - @metadata.deserializers? or - @metadata.viewProviders? or - @metadata.configSchema? or - @activationShouldBeDeferred() or - localStorage.getItem(@getCanDeferMainModuleRequireStorageKey()) is 'true' - ) + not @activationShouldBeDeferred() reset: -> @stylesheets = [] @@ -131,7 +124,6 @@ class Package try @requireMainModule() unless @mainModule? @configSchemaRegisteredOnActivate = @registerConfigSchemaFromMainModule() - @registerViewProviders() @activateStylesheets() if @mainModule? and not @mainActivated @mainModule.activateConfig?() From 05731e3912c4cf82c5f790566be51ea660b53a7a Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 11 Feb 2016 11:02:05 -0800 Subject: [PATCH 2/7] 1.5.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a92749be006..ec6724e619e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom", "productName": "Atom", - "version": "1.5.1", + "version": "1.5.2", "description": "A hackable text editor for the 21st Century.", "main": "./src/browser/main.js", "repository": { From 3cc911fa79f58724fbb5d83552f6692f200eba99 Mon Sep 17 00:00:00 2001 From: Josh Abernathy Date: Fri, 12 Feb 2016 15:32:34 -0500 Subject: [PATCH 3/7] Merge pull request #10797 from atom/fix-status-with-multiple-paths Fix status with multiple paths --- spec/git-spec.coffee | 30 ++++++++++++++++++++++++++++++ src/git-repository.coffee | 3 +-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/spec/git-spec.coffee b/spec/git-spec.coffee index c84ff6aa950..df0a72efd8a 100644 --- a/spec/git-spec.coffee +++ b/spec/git-spec.coffee @@ -249,6 +249,36 @@ describe "GitRepository", -> expect(repo.isStatusModified(status)).toBe false expect(repo.isStatusNew(status)).toBe false + it 'caches the proper statuses when multiple project are open', -> + otherWorkingDirectory = copyRepository() + + atom.project.setPaths([workingDirectory, otherWorkingDirectory]) + + waitsForPromise -> + atom.workspace.open('b.txt') + + statusHandler = null + runs -> + repo = atom.project.getRepositories()[0] + + statusHandler = jasmine.createSpy('statusHandler') + repo.onDidChangeStatuses statusHandler + repo.refreshStatus() + + waitsFor -> + statusHandler.callCount > 0 + + runs -> + subDir = path.join(workingDirectory, 'dir') + fs.mkdirSync(subDir) + + filePath = path.join(subDir, 'b.txt') + fs.writeFileSync(filePath, '') + + status = repo.getCachedPathStatus(filePath) + expect(repo.isStatusModified(status)).toBe true + expect(repo.isStatusNew(status)).toBe false + describe "buffer events", -> [editor] = [] diff --git a/src/git-repository.coffee b/src/git-repository.coffee index cf85cb0767b..244a6abad39 100644 --- a/src/git-repository.coffee +++ b/src/git-repository.coffee @@ -465,8 +465,7 @@ class GitRepository relativeProjectPaths = @project?.getPaths() .map (path) => @relativize(path) - .filter (path) -> path.length > 0 - .map (path) -> path + '/**' + .map (path) -> if path.length > 0 then path + '/**' else '*' @statusTask?.terminate() @statusTask = Task.once @handlerPath, @getPath(), relativeProjectPaths, ({statuses, upstream, branch, submodules}) => From 3e71894a59950a5c88247a2cd9a64c35ee60d26e Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 12 Feb 2016 15:35:18 -0500 Subject: [PATCH 4/7] 1.5.3. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ec6724e619e..dc92f902c26 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom", "productName": "Atom", - "version": "1.5.2", + "version": "1.5.3", "description": "A hackable text editor for the 21st Century.", "main": "./src/browser/main.js", "repository": { From 00922323fffbbe044e36fa46a74272dc43622452 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 29 Feb 2016 14:40:01 -0800 Subject: [PATCH 5/7] Merge pull request #10972 from atom/mb-new-branching-model Update build scripts to use the new railcar branching model --- build/Gruntfile.coffee | 38 +++++++++++++++------------ build/tasks/publish-build-task.coffee | 13 +++------ build/tasks/set-version-task.coffee | 4 +-- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index 60d5916b817..a4434dac626 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -34,23 +34,10 @@ module.exports = (grunt) -> grunt.file.setBase(path.resolve('..')) # Options + [defaultChannel, releaseBranch] = getDefaultChannelAndReleaseBranch(packageJson.version) installDir = grunt.option('install-dir') - buildDir = grunt.option('build-dir') - buildDir ?= path.join(os.tmpdir(), 'atom-build') - buildDir = path.resolve(buildDir) - - channel = grunt.option('channel') - releasableBranches = ['stable', 'beta'] - if process.env.APPVEYOR and not process.env.APPVEYOR_PULL_REQUEST_NUMBER - channel ?= process.env.APPVEYOR_REPO_BRANCH if process.env.APPVEYOR_REPO_BRANCH in releasableBranches - - if process.env.TRAVIS and not process.env.TRAVIS_PULL_REQUEST - channel ?= process.env.TRAVIS_BRANCH if process.env.TRAVIS_BRANCH in releasableBranches - - if process.env.JANKY_BRANCH - channel ?= process.env.JANKY_BRANCH if process.env.JANKY_BRANCH in releasableBranches - - channel ?= 'dev' + buildDir = path.resolve(grunt.option('build-dir') ? path.join(os.tmpdir(), 'atom-build')) + channel = grunt.option('channel') ? defaultChannel metadata = packageJson appName = packageJson.productName @@ -180,7 +167,7 @@ module.exports = (grunt) -> pkg: grunt.file.readJSON('package.json') atom: { - appName, channel, metadata, + appName, channel, metadata, releaseBranch, appFileName, apmFileName, appDir, buildDir, contentsDir, installDir, shellAppDir, symbolsDir, } @@ -301,3 +288,20 @@ module.exports = (grunt) -> unless process.platform is 'linux' or grunt.option('no-install') defaultTasks.push 'install' grunt.registerTask('default', defaultTasks) + +getDefaultChannelAndReleaseBranch = (version) -> + if version.match(/dev/) or isBuildingPR() + channel = 'dev' + releaseBranch = null + else + if version.match(/beta/) + channel = 'beta' + else + channel = 'stable' + + minorVersion = version.match(/^\d\.\d/)[0] + releaseBranch = "#{minorVersion}-releases" + [channel, releaseBranch] + +isBuildingPR = -> + process.env.APPVEYOR_PULL_REQUEST_NUMBER? or process.env.TRAVIS_PULL_REQUEST? diff --git a/build/tasks/publish-build-task.coffee b/build/tasks/publish-build-task.coffee index 4f8df6336d5..de46eb4feb0 100644 --- a/build/tasks/publish-build-task.coffee +++ b/build/tasks/publish-build-task.coffee @@ -31,14 +31,9 @@ module.exports = (gruntObject) -> cp path.join(docsOutputDir, 'api.json'), path.join(buildDir, 'atom-api.json') grunt.registerTask 'upload-assets', 'Upload the assets to a GitHub release', -> - channel = grunt.config.get('atom.channel') - switch channel - when 'stable' - isPrerelease = false - when 'beta' - isPrerelease = true - else - return + releaseBranch = grunt.config.get('atom.releaseBranch') + isPrerelease = grunt.config.get('atom.channel') is 'beta' + return unless releaseBranch? doneCallback = @async() startTime = Date.now() @@ -55,7 +50,7 @@ module.exports = (gruntObject) -> zipAssets buildDir, assets, (error) -> return done(error) if error? - getAtomDraftRelease isPrerelease, channel, (error, release) -> + getAtomDraftRelease isPrerelease, releaseBranch, (error, release) -> return done(error) if error? assetNames = (asset.assetName for asset in assets) deleteExistingAssets release, assetNames, (error) -> diff --git a/build/tasks/set-version-task.coffee b/build/tasks/set-version-task.coffee index fc2382476fd..c7a29b5843b 100644 --- a/build/tasks/set-version-task.coffee +++ b/build/tasks/set-version-task.coffee @@ -5,9 +5,7 @@ module.exports = (grunt) -> {spawn} = require('./task-helpers')(grunt) getVersion = (callback) -> - releasableBranches = ['stable', 'beta'] - channel = grunt.config.get('atom.channel') - shouldUseCommitHash = if channel in releasableBranches then false else true + shouldUseCommitHash = grunt.config.get('atom.channel') is 'dev' inRepository = fs.existsSync(path.resolve(__dirname, '..', '..', '.git')) {version} = require(path.join(grunt.config.get('atom.appDir'), 'package.json')) if shouldUseCommitHash and inRepository From 753b83520f807231481d2e43b6672ffb1ac28726 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 29 Feb 2016 16:41:16 -0800 Subject: [PATCH 6/7] Prepare 1.5.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dc92f902c26..570f90bf24b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom", "productName": "Atom", - "version": "1.5.3", + "version": "1.5.4", "description": "A hackable text editor for the 21st Century.", "main": "./src/browser/main.js", "repository": { From b8cc0b4fc51965f3ee6e84f3a23ee29230fd5b4b Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 25 Feb 2016 09:10:53 -0800 Subject: [PATCH 7/7] Merge pull request #10967 from b6pzeusbc54tvhw5jgpyw8pwz2x6gs/change-getLineCount-to-getScreenLineCount Fix a inconsistent getLineCount() use --- src/text-editor.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 983669e2865..348eec65bf9 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -3197,7 +3197,7 @@ class TextEditor extends Model # top of the visible area. setFirstVisibleScreenRow: (screenRow, fromView) -> unless fromView - maxScreenRow = @getLineCount() - 1 + maxScreenRow = @getScreenLineCount() - 1 unless @config.get('editor.scrollPastEnd') height = @displayBuffer.getHeight() lineHeightInPixels = @displayBuffer.getLineHeightInPixels() @@ -3215,7 +3215,7 @@ class TextEditor extends Model height = @displayBuffer.getHeight() lineHeightInPixels = @displayBuffer.getLineHeightInPixels() if height? and lineHeightInPixels? - Math.min(@firstVisibleScreenRow + Math.floor(height / lineHeightInPixels), @getLineCount() - 1) + Math.min(@firstVisibleScreenRow + Math.floor(height / lineHeightInPixels), @getScreenLineCount() - 1) else null