From 5c57cb0cfe2c5e3337e9fd870a603a1afde52748 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 8 Jun 2015 23:50:27 +0200 Subject: [PATCH 01/49] Show a warning prompt when opening files over 20MB We still have some trouble on files this large. I want to show a progress bar, but for now this is better than freezing without any warning at all. --- spec/workspace-spec.coffee | 26 +++++++++++++++++++++++++- src/project.coffee | 23 ++++++++++++++++++----- src/workspace.coffee | 7 ++++--- 3 files changed, 47 insertions(+), 9 deletions(-) diff --git a/spec/workspace-spec.coffee b/spec/workspace-spec.coffee index 4918fc65f..7dfee3c1a 100644 --- a/spec/workspace-spec.coffee +++ b/spec/workspace-spec.coffee @@ -224,7 +224,7 @@ describe "Workspace", -> expect(workspace.paneContainer.root.children[0]).toBe pane1 expect(workspace.paneContainer.root.children[1]).toBe pane4 - describe "when the file is large (over 2mb)", -> + describe "when the file is over 2MB", -> it "opens the editor with largeFileMode: true", -> spyOn(fs, 'getSizeSync').andReturn 2 * 1048577 # 2MB @@ -235,6 +235,30 @@ describe "Workspace", -> runs -> expect(editor.displayBuffer.largeFileMode).toBe true + describe "when the file is over 20MB", -> + it "prompts the user to make sure they want to open a file this big", -> + spyOn(fs, 'getSizeSync').andReturn 20 * 1048577 # 20MB + spyOn(atom, 'confirm').andCallFake -> selectedButtonIndex + selectedButtonIndex = 1 # cancel + + editor = null + waitsForPromise -> + workspace.open('sample.js').then (e) -> editor = e + + runs -> + expect(editor).toBeUndefined() + expect(atom.confirm).toHaveBeenCalled() + + atom.confirm.reset() + selectedButtonIndex = 0 # open the file + + waitsForPromise -> + workspace.open('sample.js').then (e) -> editor = e + + runs -> + expect(atom.confirm).toHaveBeenCalled() + expect(editor.displayBuffer.largeFileMode).toBe true + describe "when passed a path that matches a custom opener", -> it "returns the resource returned by the custom opener", -> fooOpener = (pathToOpen, options) -> {foo: pathToOpen, options} if pathToOpen?.match(/\.foo/) diff --git a/src/project.coffee b/src/project.coffee index c10ce4a3b..e2079b22f 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -323,8 +323,22 @@ class Project extends Model # allow ENOENT errors to create an editor for paths that dont exist throw error unless error.code is 'ENOENT' - @bufferForPath(filePath).then (buffer) => - @buildEditorForBuffer(buffer, options) + absoluteFilePath = @resolvePath(filePath) + + fileSize = fs.getSizeSync(absoluteFilePath) + + if fileSize >= 20 * 1048576 # 20MB + choice = atom.confirm + message: 'Atom can have issues with files over 20MB.' + detailedMessage: "Do you still want to try to load this?" + buttons: ["Open", "Cancel"] + if choice is 1 + error = new Error + error.code = 'CANCELLED' + throw error + + @bufferForPath(absoluteFilePath).then (buffer) => + @buildEditorForBuffer(buffer, _.extend({fileSize}, options)) # Retrieves all the {TextBuffer}s in the project; that is, the # buffers for all open files. @@ -354,8 +368,7 @@ class Project extends Model # * `filePath` A {String} representing a path. If `null`, an "Untitled" buffer is created. # # Returns a promise that resolves to the {TextBuffer}. - bufferForPath: (filePath) -> - absoluteFilePath = @resolvePath(filePath) + bufferForPath: (absoluteFilePath) -> existingBuffer = @findBufferForPath(absoluteFilePath) if absoluteFilePath Q(existingBuffer ? @buildBuffer(absoluteFilePath)) @@ -405,7 +418,7 @@ class Project extends Model buffer?.destroy() buildEditorForBuffer: (buffer, editorOptions) -> - largeFileMode = fs.getSizeSync(buffer.getPath()) >= 2 * 1048576 # 2MB + largeFileMode = editorOptions.fileSize >= 2 * 1048576 # 2MB editor = new TextEditor(_.extend({buffer, largeFileMode, registerEditor: true}, editorOptions)) editor diff --git a/src/workspace.coffee b/src/workspace.coffee index 157d002de..c399250d6 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -429,15 +429,16 @@ class Workspace extends Model item ?= atom.project.open(uri, options) catch error switch error.code - when 'EFILETOOLARGE' - atom.notifications.addWarning("#{error.message} Large file support is being tracked at [atom/atom#307](https://github.com/atom/atom/issues/307).") + when 'CANCELLED' + return Q() when 'EACCES' atom.notifications.addWarning("Permission denied '#{error.path}'") + return Q() when 'EPERM', 'EBUSY' atom.notifications.addWarning("Unable to open '#{error.path}'", detail: error.message) + return Q() else throw error - return Q() Q(item) .then (item) => From 04c95671819cad198c786b2bb40b5f37fa5a786f Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 10 Jun 2015 01:30:12 +0200 Subject: [PATCH 02/49] Massage message a bit --- src/project.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/project.coffee b/src/project.coffee index e2079b22f..12bccaae8 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -329,9 +329,9 @@ class Project extends Model if fileSize >= 20 * 1048576 # 20MB choice = atom.confirm - message: 'Atom can have issues with files over 20MB.' - detailedMessage: "Do you still want to try to load this?" - buttons: ["Open", "Cancel"] + message: 'Atom currently freezes during the loading of very large files.' + detailedMessage: "Do you still want to load this file?" + buttons: ["Proceed", "Cancel"] if choice is 1 error = new Error error.code = 'CANCELLED' From fc4f2a102ebf3aa5b1f3e2de07023a33c92f4ee6 Mon Sep 17 00:00:00 2001 From: simurai Date: Sat, 20 Jun 2015 16:16:05 +0900 Subject: [PATCH 03/49] :arrow_up: one-dark/light-ui@v0.9.1 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0d1c07fae..3de65bf7e 100644 --- a/package.json +++ b/package.json @@ -77,10 +77,10 @@ "atom-light-ui": "0.41.0", "base16-tomorrow-dark-theme": "0.26.0", "base16-tomorrow-light-theme": "0.9.0", - "one-dark-ui": "0.9.0", + "one-dark-ui": "0.9.1", "one-dark-syntax": "0.7.1", "one-light-syntax": "0.7.0", - "one-light-ui": "0.9.0", + "one-light-ui": "0.9.1", "solarized-dark-syntax": "0.35.0", "solarized-light-syntax": "0.21.0", "archive-view": "0.58.0", From 776eee2413038f556320db726395280691859a05 Mon Sep 17 00:00:00 2001 From: Tony Han Date: Sat, 20 Jun 2015 17:55:19 +0800 Subject: [PATCH 04/49] :memo: fix doc for TextEditor setText --- src/text-editor.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 7afc99236..3b19970b8 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -749,6 +749,8 @@ class TextEditor extends Model ### # Essential: Replaces the entire contents of the buffer with the given {String}. + # + # * `text` A {String} to replace with setText: (text) -> @buffer.setText(text) # Essential: Set the text in the given {Range} in buffer coordinates. From cd35107f8c10cf46b51b4ededbaf51f0d222d5c1 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 17 Jun 2015 21:35:33 +0200 Subject: [PATCH 05/49] Call atom.onDidThrowError handlers with the error object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …and remove a bunch of dead source maps handling. Source map handling for stack traces is now built into Chromium so it shouldn’t be needed here. Original event properties maintained for backward compatibility with the 1.0 API. Can be deprecated for 2.0 once we transition exception-reporter. --- spec/atom-spec.coffee | 41 ++++++++++++++++++++++++++++------------- src/atom.coffee | 36 ++++++++++++++++-------------------- 2 files changed, 44 insertions(+), 33 deletions(-) diff --git a/spec/atom-spec.coffee b/spec/atom-spec.coffee index 99a7f432e..9a03981d0 100644 --- a/spec/atom-spec.coffee +++ b/spec/atom-spec.coffee @@ -86,13 +86,13 @@ describe "the `atom` global", -> error = e window.onerror.call(window, e.toString(), 'abc', 2, 3, e) - delete willThrowSpy.mostRecentCall.args[0].preventDefault - expect(willThrowSpy).toHaveBeenCalledWith - message: error.toString() - url: 'abc' - line: 2 - column: 3 - originalError: error + expect(willThrowSpy).toHaveBeenCalledWith(error) + + # Deprecated event properties + expect(error.url).toBe 'abc' + expect(error.line).toBe 2 + expect(error.column).toBe 3 + expect(error.originalError).toBe error it "will not show the devtools when preventDefault() is called", -> willThrowSpy.andCallFake (errorObject) -> errorObject.preventDefault() @@ -120,12 +120,27 @@ describe "the `atom` global", -> catch e error = e window.onerror.call(window, e.toString(), 'abc', 2, 3, e) - expect(didThrowSpy).toHaveBeenCalledWith - message: error.toString() - url: 'abc' - line: 2 - column: 3 - originalError: error + + expect(didThrowSpy).toHaveBeenCalledWith(error) + + # Deprecated event properties + expect(error.url).toBe 'abc' + expect(error.line).toBe 2 + expect(error.column).toBe 3 + expect(error.originalError).toBe error + + it "will not show the devtools when preventDefault() is called", -> + didThrowSpy.andCallFake (errorObject) -> errorObject.preventDefault() + atom.onDidThrowError(didThrowSpy) + + try + a + 1 + catch e + window.onerror.call(window, e.toString(), 'abc', 2, 3, e) + + expect(didThrowSpy).toHaveBeenCalled() + expect(atom.openDevTools).not.toHaveBeenCalled() + expect(atom.executeJavaScriptInDevTools).not.toHaveBeenCalled() describe "saving and loading", -> afterEach -> atom.mode = "spec" diff --git a/src/atom.coffee b/src/atom.coffee index 316c51e29..9e89aa784 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -198,28 +198,29 @@ class Atom extends Model initialize: -> sourceMapCache = {} - window.onerror = => - @lastUncaughtError = Array::slice.call(arguments) - [message, url, line, column, originalError] = @lastUncaughtError + window.onerror = (message, url, line, column, error) => + @lastUncaughtError = error - convertedLine = convertLine(url, line, column, sourceMapCache) - {line, column} = convertedLine if convertedLine? - originalError.stack = convertStackTrace(originalError.stack, sourceMapCache) if originalError - - eventObject = {message, url, line, column, originalError} + # TODO: These should be deprecated for 2.0 once we transition the + # exception-reporting package to the new API. + error.url = url + error.line = line + error.column = column + error.originalError = error openDevTools = true - eventObject.preventDefault = -> openDevTools = false + error.preventDefault = -> openDevTools = false - @emitter.emit 'will-throw-error', eventObject + # TODO: Deprecate onWillThrowError once we transition the notifications + # package to use onDidThrowError instead. + @emitter.emit 'will-throw-error', error + @emit 'uncaught-error', arguments... if includeDeprecatedAPIs + @emitter.emit 'did-throw-error', error if openDevTools @openDevTools() @executeJavaScriptInDevTools('DevToolsAPI.showConsole()') - @emit 'uncaught-error', arguments... if includeDeprecatedAPIs - @emitter.emit 'did-throw-error', {message, url, line, column, originalError} - @disposables?.dispose() @disposables = new CompositeDisposable @@ -321,13 +322,8 @@ class Atom extends Model # Extended: Invoke the given callback whenever there is an unhandled error. # - # * `callback` {Function} to be called whenever there is an unhandled error - # * `event` {Object} - # * `originalError` {Object} the original error object - # * `message` {String} the original error object - # * `url` {String} Url to the file where the error originated. - # * `line` {Number} - # * `column` {Number} + # * `callback` {Function} to be called whenever there is an unhandled error. + # * `error` The unhandled {Error} object. # # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. onDidThrowError: (callback) -> From a1f6a15c0b98f14731a83565ad418f36112985b0 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 17 Jun 2015 22:33:18 +0200 Subject: [PATCH 06/49] Add atom.assert and atom.onDidFailAssertion --- spec/atom-spec.coffee | 31 +++++++++++++++++++++++++++++++ src/atom.coffee | 17 +++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/spec/atom-spec.coffee b/spec/atom-spec.coffee index 9a03981d0..15af4ad50 100644 --- a/spec/atom-spec.coffee +++ b/spec/atom-spec.coffee @@ -142,6 +142,37 @@ describe "the `atom` global", -> expect(atom.openDevTools).not.toHaveBeenCalled() expect(atom.executeJavaScriptInDevTools).not.toHaveBeenCalled() + describe ".assert(condition, message, metadata)", -> + errors = null + + beforeEach -> + errors = [] + atom.onDidFailAssertion (error) -> errors.push(error) + + describe "if the condition is false", -> + it "notifies onDidFailAssertion handlers with an error object based on the call site of the assertion", -> + atom.assert(false, "a == b") + expect(errors.length).toBe 1 + expect(errors[0].message).toBe "Assertion failed: a == b" + expect(errors[0].stack).toContain('atom-spec') + + describe "if metadata is an object", -> + it "assigns the object on the error as `metadata`", -> + metadata = {foo: 'bar'} + atom.assert(false, "a == b", metadata) + expect(errors[0].metadata).toBe metadata + + describe "if metadata is a function", -> + it "assigns the function's return value on the error as `metadata`", -> + metadata = {foo: 'bar'} + atom.assert(false, "a == b", -> metadata) + expect(errors[0].metadata).toBe metadata + + describe "if the condition is true", -> + it "does nothing", -> + atom.assert(true, "a == b") + expect(errors).toEqual [] + describe "saving and loading", -> afterEach -> atom.mode = "spec" diff --git a/src/atom.coffee b/src/atom.coffee index 9e89aa784..4af35a91e 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -329,6 +329,9 @@ class Atom extends Model onDidThrowError: (callback) -> @emitter.on 'did-throw-error', callback + onDidFailAssertion: (callback) -> + @emitter.on 'did-fail-assertion', callback + ### Section: Atom Details ### @@ -711,6 +714,20 @@ class Atom extends Model Section: Private ### + assert: (condition, message, metadata) -> + return if condition + + error = new Error("Assertion failed: " + message) + Error.captureStackTrace(error, @assert) + + if metadata? + if typeof metadata is 'function' + error.metadata = metadata() + else + error.metadata = metadata + + @emitter.emit 'did-fail-assertion', error + deserializeProject: -> Project = require './project' From 11c3b3444b5756966e9778628c666fd767342348 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Sat, 20 Jun 2015 17:34:42 +0200 Subject: [PATCH 07/49] Return a boolean from atom.assert --- spec/atom-spec.coffee | 6 ++++-- src/atom.coffee | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/spec/atom-spec.coffee b/spec/atom-spec.coffee index 15af4ad50..c8c4a598f 100644 --- a/spec/atom-spec.coffee +++ b/spec/atom-spec.coffee @@ -151,7 +151,8 @@ describe "the `atom` global", -> describe "if the condition is false", -> it "notifies onDidFailAssertion handlers with an error object based on the call site of the assertion", -> - atom.assert(false, "a == b") + result = atom.assert(false, "a == b") + expect(result).toBe false expect(errors.length).toBe 1 expect(errors[0].message).toBe "Assertion failed: a == b" expect(errors[0].stack).toContain('atom-spec') @@ -170,7 +171,8 @@ describe "the `atom` global", -> describe "if the condition is true", -> it "does nothing", -> - atom.assert(true, "a == b") + result = atom.assert(true, "a == b") + expect(result).toBe true expect(errors).toEqual [] describe "saving and loading", -> diff --git a/src/atom.coffee b/src/atom.coffee index 4af35a91e..209a39e9c 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -715,7 +715,7 @@ class Atom extends Model ### assert: (condition, message, metadata) -> - return if condition + return true if condition error = new Error("Assertion failed: " + message) Error.captureStackTrace(error, @assert) @@ -728,6 +728,8 @@ class Atom extends Model @emitter.emit 'did-fail-assertion', error + false + deserializeProject: -> Project = require './project' From 64fca5db2081ae208e9bf262bbfe72c60941c862 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Sat, 20 Jun 2015 17:36:12 +0200 Subject: [PATCH 08/49] Absorb exception in isFoldableCodeAtRow and report assertion failure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Can’t figure out what’s going on in this bug, but we can hopefully make it less damaging and collect more information via the new assertion system. Refs #5905 --- src/tokenized-buffer.coffee | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index 7fb21937d..bbb6b3748 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -292,7 +292,17 @@ class TokenizedBuffer extends Model # Returns a {Boolean} indicating whether the given buffer row starts # a a foldable row range due to the code's indentation patterns. isFoldableCodeAtRow: (row) -> - return false if @buffer.isRowBlank(row) or @tokenizedLineForRow(row).isComment() + # Investigating an exception that's occurring here due to the line being + # undefined. This should paper over the problem but we want to figure out + # what is happening: + tokenizedLine = @tokenizedLineForRow(row) + atom.assert tokenizedLine?, "TokenizedLine is defined", => + metadata: + row: row + rowCount: @tokenizedLines.length + return false unless tokenizedLine? + + return false if @buffer.isRowBlank(row) or tokenizedLine.isComment() nextRow = @buffer.nextNonBlankRow(row) return false unless nextRow? From a24816f76b513cea1078cd3511978686e5332bd0 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Sat, 20 Jun 2015 18:07:47 +0200 Subject: [PATCH 09/49] Handle null errors to support existing uses in tests --- src/atom.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/atom.coffee b/src/atom.coffee index 209a39e9c..f3bbafcc2 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -203,6 +203,7 @@ class Atom extends Model # TODO: These should be deprecated for 2.0 once we transition the # exception-reporting package to the new API. + error ?= {} error.url = url error.line = line error.column = column From d1057b5de7fbcdf4f2acd1c73789b6785b8ce203 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Sat, 20 Jun 2015 18:27:35 +0200 Subject: [PATCH 10/49] Fill error message in if needed for package specs --- src/atom.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/atom.coffee b/src/atom.coffee index f3bbafcc2..0704f0bfb 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -204,6 +204,7 @@ class Atom extends Model # TODO: These should be deprecated for 2.0 once we transition the # exception-reporting package to the new API. error ?= {} + error.message ?= message error.url = url error.line = line error.column = column From 4e1d47b09f2fb90fd84e6969231bb245dd273068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Machist=C3=A9=20N=2E=20Quintana?= Date: Sat, 20 Jun 2015 12:45:47 -0400 Subject: [PATCH 11/49] :memo: Mark Clipboard::write's metadata argument as optional --- src/clipboard.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/clipboard.coffee b/src/clipboard.coffee index 2412394a6..84ff9ab3b 100644 --- a/src/clipboard.coffee +++ b/src/clipboard.coffee @@ -31,7 +31,7 @@ class Clipboard # {::readWithMetadata}. # # * `text` The {String} to store. - # * `metadata` The additional info to associate with the text. + # * `metadata` (optional) The additional info to associate with the text. write: (text, metadata) -> @signatureForMetadata = @md5(text) @metadata = metadata From e3ee6231d4bd75413919d929051c2333685eadbc Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Sat, 20 Jun 2015 19:00:48 +0200 Subject: [PATCH 12/49] :arrow_up: notifications --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3de65bf7e..17c7f084b 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "link": "0.30.0", "markdown-preview": "0.150.0", "metrics": "0.51.0", - "notifications": "0.56.0", + "notifications": "0.57.0", "open-on-github": "0.37.0", "package-generator": "0.39.0", "release-notes": "0.53.0", From d32f30780ae710ad5cdf8e3f4d076c4d99c02fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=BDu=C5=BEak?= Date: Sun, 21 Jun 2015 17:48:32 +0200 Subject: [PATCH 13/49] Massage the message a bit more --- src/project.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/project.coffee b/src/project.coffee index 12bccaae8..b21e74076 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -329,7 +329,7 @@ class Project extends Model if fileSize >= 20 * 1048576 # 20MB choice = atom.confirm - message: 'Atom currently freezes during the loading of very large files.' + message: 'Atom will be unresponsive during the loading of very large files.' detailedMessage: "Do you still want to load this file?" buttons: ["Proceed", "Cancel"] if choice is 1 From 720ea9a8118ccc92373a364cf79838dffba3e4e9 Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Sun, 21 Jun 2015 20:38:19 -0600 Subject: [PATCH 14/49] :arrow_up: language-css@0.32.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3de65bf7e..e28046038 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "language-clojure": "0.16.0", "language-coffee-script": "0.41.0", "language-csharp": "0.6.0", - "language-css": "0.31.0", + "language-css": "0.32.0", "language-gfm": "0.77.0", "language-git": "0.10.0", "language-go": "0.27.0", From d9282f89d96a37c52b31986cd5360ecc12af171f Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Sun, 21 Jun 2015 20:38:34 -0600 Subject: [PATCH 15/49] :arrow_up: language-todo@0.24.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e28046038..a39105844 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "language-source": "0.9.0", "language-sql": "0.16.0", "language-text": "0.7.0", - "language-todo": "0.23.0", + "language-todo": "0.24.0", "language-toml": "0.16.0", "language-xml": "0.30.0", "language-yaml": "0.22.0" From e817de4f3f06d16dd6d11bbdcef35c32ab6d9a5b Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Sun, 21 Jun 2015 20:55:46 -0600 Subject: [PATCH 16/49] :arrow_up: autocomplete-css@0.8.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a39105844..6bf6a5a6c 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "solarized-light-syntax": "0.21.0", "archive-view": "0.58.0", "autocomplete-atom-api": "0.9.0", - "autocomplete-css": "0.7.2", + "autocomplete-css": "0.8.0", "autocomplete-html": "0.7.2", "autocomplete-plus": "2.17.4", "autocomplete-snippets": "1.7.0", From 6521c869c45d8af4612d996871ba7df803daca89 Mon Sep 17 00:00:00 2001 From: Ivan Zuzak Date: Mon, 22 Jun 2015 07:56:21 +0200 Subject: [PATCH 17/49] Failing test to demonstrate problem --- spec/command-registry-spec.coffee | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec/command-registry-spec.coffee b/spec/command-registry-spec.coffee index b92d3e6b0..799bceb8e 100644 --- a/spec/command-registry-spec.coffee +++ b/spec/command-registry-spec.coffee @@ -158,6 +158,15 @@ describe "CommandRegistry", -> addError = error expect(addError.message).toContain(badSelector) + it "throws an error when called with an non-function callback", -> + badCallback = null + addError = null + try + registry.add '.selector', 'foo:bar', badCallback + catch error + addError = error + expect(addError.message).toContain("Can't register a command with non-function callback.") + describe "::findCommands({target})", -> it "returns commands that can be invoked on the target or its ancestors", -> registry.add '.parent', 'namespace:command-1', -> From d47737718be131781c7af48b1414049e7784c705 Mon Sep 17 00:00:00 2001 From: Ivan Zuzak Date: Mon, 22 Jun 2015 07:59:08 +0200 Subject: [PATCH 18/49] Throw error for commands with non-function callbacks --- src/command-registry.coffee | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/command-registry.coffee b/src/command-registry.coffee index 72098eda0..a9b953536 100644 --- a/src/command-registry.coffee +++ b/src/command-registry.coffee @@ -93,6 +93,9 @@ class CommandRegistry return disposable if typeof target is 'string' + if typeof callback isnt 'function' + throw new Error("Can't register a command with non-function callback.") + validateSelector(target) @addSelectorBasedListener(target, commandName, callback) else From 4336cdf0af15537d2c2556077c6d07db4e7b4fcc Mon Sep 17 00:00:00 2001 From: Alex Mayer Date: Mon, 22 Jun 2015 11:42:21 -0400 Subject: [PATCH 19/49] Add Fedora 22 Install Directions To README Fedora 22 uses dnf yum command will not work --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 24c7ce370..93fe03c8b 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Currently only a 64-bit version is available. The Linux version does not currently automatically update so you will need to repeat these steps to upgrade to future releases. -### Red Hat Linux (Fedora, CentOS, Red Hat) +### Red Hat Linux (Fedora 21 and under, CentOS, Red Hat) Currently only a 64-bit version is available. @@ -62,6 +62,17 @@ Currently only a 64-bit version is available. The Linux version does not currently automatically update so you will need to repeat these steps to upgrade to future releases. +### Fedora 22+ + +Currently only a 64-bit version is available. + +1. Download `atom.x86_64.rpm` from the [Atom releases page](https://github.com/atom/atom/releases/latest). +2. Run `sudo dnf atom.x86_64.rpm` on the downloaded package. +3. Launch Atom using the installed `atom` command. + +The Linux version does not currently automatically update so you will need to +repeat these steps to upgrade to future releases. + ## Building * [Linux](docs/build-instructions/linux.md) From a0e3335bff0afa8ebca789227d684d4802195bc2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 08:48:59 -0700 Subject: [PATCH 20/49] :arrow_up: language-perl@0.26 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6bf6a5a6c..9d1144549 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "language-make": "0.14.0", "language-mustache": "0.11.0", "language-objective-c": "0.15.0", - "language-perl": "0.25.0", + "language-perl": "0.26.0", "language-php": "0.24.0", "language-property-list": "0.8.0", "language-python": "0.36.0", From b660ec2bb1b28b2c8144db8072e3bf673c716c34 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 09:05:24 -0700 Subject: [PATCH 21/49] :arrow_up: language-sql@0.17 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9d1144549..4c3a8a932 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "language-sass": "0.39.0", "language-shellscript": "0.15.0", "language-source": "0.9.0", - "language-sql": "0.16.0", + "language-sql": "0.17.0", "language-text": "0.7.0", "language-todo": "0.24.0", "language-toml": "0.16.0", From a25f8729dcf4e585625f284ddb53933ac4881d89 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 09:23:13 -0700 Subject: [PATCH 22/49] :arrow_up: language-php@0.25 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4c3a8a932..946f07777 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "language-mustache": "0.11.0", "language-objective-c": "0.15.0", "language-perl": "0.26.0", - "language-php": "0.24.0", + "language-php": "0.25.0", "language-property-list": "0.8.0", "language-python": "0.36.0", "language-ruby": "0.56.0", From 941d4a207a29882c7ad5d3b5ba18c0aab0344160 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 09:25:21 -0700 Subject: [PATCH 23/49] :arrow_up: language-php@0.26 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 946f07777..6209a8952 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "language-mustache": "0.11.0", "language-objective-c": "0.15.0", "language-perl": "0.26.0", - "language-php": "0.25.0", + "language-php": "0.26.0", "language-property-list": "0.8.0", "language-python": "0.36.0", "language-ruby": "0.56.0", From 9aa78606b326cfbe0e82acff388230f76b2c5987 Mon Sep 17 00:00:00 2001 From: Ivan Zuzak Date: Mon, 22 Jun 2015 18:47:41 +0200 Subject: [PATCH 24/49] Catch both string and object targets --- src/command-registry.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/command-registry.coffee b/src/command-registry.coffee index a9b953536..870093e2f 100644 --- a/src/command-registry.coffee +++ b/src/command-registry.coffee @@ -92,10 +92,10 @@ class CommandRegistry disposable.add @add(target, commandName, callback) return disposable - if typeof target is 'string' - if typeof callback isnt 'function' - throw new Error("Can't register a command with non-function callback.") + if typeof callback isnt 'function' + throw new Error("Can't register a command with non-function callback.") + if typeof target is 'string' validateSelector(target) @addSelectorBasedListener(target, commandName, callback) else From 326457d21b6a5f3bf74b6d11761db97e10edda51 Mon Sep 17 00:00:00 2001 From: Ivan Zuzak Date: Mon, 22 Jun 2015 18:55:08 +0200 Subject: [PATCH 25/49] Add test for object target case --- spec/command-registry-spec.coffee | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/spec/command-registry-spec.coffee b/spec/command-registry-spec.coffee index 799bceb8e..0a8cafa6b 100644 --- a/spec/command-registry-spec.coffee +++ b/spec/command-registry-spec.coffee @@ -158,15 +158,26 @@ describe "CommandRegistry", -> addError = error expect(addError.message).toContain(badSelector) - it "throws an error when called with an non-function callback", -> + it "throws an error when called with a non-function callback and selector target", -> badCallback = null addError = null + try registry.add '.selector', 'foo:bar', badCallback catch error addError = error expect(addError.message).toContain("Can't register a command with non-function callback.") + it "throws an error when called with an non-function callback and object target", -> + badCallback = null + addError = null + + try + registry.add document.body, 'foo:bar', badCallback + catch error + addError = error + expect(addError.message).toContain("Can't register a command with non-function callback.") + describe "::findCommands({target})", -> it "returns commands that can be invoked on the target or its ancestors", -> registry.add '.parent', 'namespace:command-1', -> From 9de1f3daff65df8b477ac65a3d1d0aa206d9cd4b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 10:11:04 -0700 Subject: [PATCH 26/49] :arrow_up: legal-eagle@0.10 Closes atom/atom#7366 --- build/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/package.json b/build/package.json index c60bdbae5..c02ff68aa 100644 --- a/build/package.json +++ b/build/package.json @@ -25,7 +25,7 @@ "grunt-peg": "~1.1.0", "grunt-shell": "~0.3.1", "harmony-collections": "~0.3.8", - "legal-eagle": "~0.9.0", + "legal-eagle": "~0.10.0", "minidump": "~0.8", "npm": "2.5.1", "rcedit": "~0.3.0", From 0e932025d8e2c8e2166ca63d95e4b65f327e6296 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 22 Jun 2015 12:19:24 -0500 Subject: [PATCH 27/49] :arrow_up: exception-reporting --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a44a60319..70112b2e2 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "deprecation-cop": "0.52.0", "dev-live-reload": "0.46.0", "encoding-selector": "0.20.0", - "exception-reporting": "0.25.0", + "exception-reporting": "0.26.0", "find-and-replace": "0.173.0", "fuzzy-finder": "0.87.0", "git-diff": "0.55.0", From b7a8ddd1532a019843ea6619f22046ebccd271a1 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 22 Jun 2015 14:27:05 -0500 Subject: [PATCH 28/49] Revert "Add assertion mechanism" --- package.json | 2 +- spec/atom-spec.coffee | 74 +++++++------------------------------ src/atom.coffee | 57 ++++++++++------------------ src/tokenized-buffer.coffee | 12 +----- 4 files changed, 35 insertions(+), 110 deletions(-) diff --git a/package.json b/package.json index 70112b2e2..135c8d2c0 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "link": "0.30.0", "markdown-preview": "0.150.0", "metrics": "0.51.0", - "notifications": "0.57.0", + "notifications": "0.56.0", "open-on-github": "0.37.0", "package-generator": "0.39.0", "release-notes": "0.53.0", diff --git a/spec/atom-spec.coffee b/spec/atom-spec.coffee index c8c4a598f..99a7f432e 100644 --- a/spec/atom-spec.coffee +++ b/spec/atom-spec.coffee @@ -86,13 +86,13 @@ describe "the `atom` global", -> error = e window.onerror.call(window, e.toString(), 'abc', 2, 3, e) - expect(willThrowSpy).toHaveBeenCalledWith(error) - - # Deprecated event properties - expect(error.url).toBe 'abc' - expect(error.line).toBe 2 - expect(error.column).toBe 3 - expect(error.originalError).toBe error + delete willThrowSpy.mostRecentCall.args[0].preventDefault + expect(willThrowSpy).toHaveBeenCalledWith + message: error.toString() + url: 'abc' + line: 2 + column: 3 + originalError: error it "will not show the devtools when preventDefault() is called", -> willThrowSpy.andCallFake (errorObject) -> errorObject.preventDefault() @@ -120,60 +120,12 @@ describe "the `atom` global", -> catch e error = e window.onerror.call(window, e.toString(), 'abc', 2, 3, e) - - expect(didThrowSpy).toHaveBeenCalledWith(error) - - # Deprecated event properties - expect(error.url).toBe 'abc' - expect(error.line).toBe 2 - expect(error.column).toBe 3 - expect(error.originalError).toBe error - - it "will not show the devtools when preventDefault() is called", -> - didThrowSpy.andCallFake (errorObject) -> errorObject.preventDefault() - atom.onDidThrowError(didThrowSpy) - - try - a + 1 - catch e - window.onerror.call(window, e.toString(), 'abc', 2, 3, e) - - expect(didThrowSpy).toHaveBeenCalled() - expect(atom.openDevTools).not.toHaveBeenCalled() - expect(atom.executeJavaScriptInDevTools).not.toHaveBeenCalled() - - describe ".assert(condition, message, metadata)", -> - errors = null - - beforeEach -> - errors = [] - atom.onDidFailAssertion (error) -> errors.push(error) - - describe "if the condition is false", -> - it "notifies onDidFailAssertion handlers with an error object based on the call site of the assertion", -> - result = atom.assert(false, "a == b") - expect(result).toBe false - expect(errors.length).toBe 1 - expect(errors[0].message).toBe "Assertion failed: a == b" - expect(errors[0].stack).toContain('atom-spec') - - describe "if metadata is an object", -> - it "assigns the object on the error as `metadata`", -> - metadata = {foo: 'bar'} - atom.assert(false, "a == b", metadata) - expect(errors[0].metadata).toBe metadata - - describe "if metadata is a function", -> - it "assigns the function's return value on the error as `metadata`", -> - metadata = {foo: 'bar'} - atom.assert(false, "a == b", -> metadata) - expect(errors[0].metadata).toBe metadata - - describe "if the condition is true", -> - it "does nothing", -> - result = atom.assert(true, "a == b") - expect(result).toBe true - expect(errors).toEqual [] + expect(didThrowSpy).toHaveBeenCalledWith + message: error.toString() + url: 'abc' + line: 2 + column: 3 + originalError: error describe "saving and loading", -> afterEach -> atom.mode = "spec" diff --git a/src/atom.coffee b/src/atom.coffee index 0704f0bfb..316c51e29 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -198,31 +198,28 @@ class Atom extends Model initialize: -> sourceMapCache = {} - window.onerror = (message, url, line, column, error) => - @lastUncaughtError = error + window.onerror = => + @lastUncaughtError = Array::slice.call(arguments) + [message, url, line, column, originalError] = @lastUncaughtError - # TODO: These should be deprecated for 2.0 once we transition the - # exception-reporting package to the new API. - error ?= {} - error.message ?= message - error.url = url - error.line = line - error.column = column - error.originalError = error + convertedLine = convertLine(url, line, column, sourceMapCache) + {line, column} = convertedLine if convertedLine? + originalError.stack = convertStackTrace(originalError.stack, sourceMapCache) if originalError + + eventObject = {message, url, line, column, originalError} openDevTools = true - error.preventDefault = -> openDevTools = false + eventObject.preventDefault = -> openDevTools = false - # TODO: Deprecate onWillThrowError once we transition the notifications - # package to use onDidThrowError instead. - @emitter.emit 'will-throw-error', error - @emit 'uncaught-error', arguments... if includeDeprecatedAPIs - @emitter.emit 'did-throw-error', error + @emitter.emit 'will-throw-error', eventObject if openDevTools @openDevTools() @executeJavaScriptInDevTools('DevToolsAPI.showConsole()') + @emit 'uncaught-error', arguments... if includeDeprecatedAPIs + @emitter.emit 'did-throw-error', {message, url, line, column, originalError} + @disposables?.dispose() @disposables = new CompositeDisposable @@ -324,16 +321,18 @@ class Atom extends Model # Extended: Invoke the given callback whenever there is an unhandled error. # - # * `callback` {Function} to be called whenever there is an unhandled error. - # * `error` The unhandled {Error} object. + # * `callback` {Function} to be called whenever there is an unhandled error + # * `event` {Object} + # * `originalError` {Object} the original error object + # * `message` {String} the original error object + # * `url` {String} Url to the file where the error originated. + # * `line` {Number} + # * `column` {Number} # # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. onDidThrowError: (callback) -> @emitter.on 'did-throw-error', callback - onDidFailAssertion: (callback) -> - @emitter.on 'did-fail-assertion', callback - ### Section: Atom Details ### @@ -716,22 +715,6 @@ class Atom extends Model Section: Private ### - assert: (condition, message, metadata) -> - return true if condition - - error = new Error("Assertion failed: " + message) - Error.captureStackTrace(error, @assert) - - if metadata? - if typeof metadata is 'function' - error.metadata = metadata() - else - error.metadata = metadata - - @emitter.emit 'did-fail-assertion', error - - false - deserializeProject: -> Project = require './project' diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index bbb6b3748..7fb21937d 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -292,17 +292,7 @@ class TokenizedBuffer extends Model # Returns a {Boolean} indicating whether the given buffer row starts # a a foldable row range due to the code's indentation patterns. isFoldableCodeAtRow: (row) -> - # Investigating an exception that's occurring here due to the line being - # undefined. This should paper over the problem but we want to figure out - # what is happening: - tokenizedLine = @tokenizedLineForRow(row) - atom.assert tokenizedLine?, "TokenizedLine is defined", => - metadata: - row: row - rowCount: @tokenizedLines.length - return false unless tokenizedLine? - - return false if @buffer.isRowBlank(row) or tokenizedLine.isComment() + return false if @buffer.isRowBlank(row) or @tokenizedLineForRow(row).isComment() nextRow = @buffer.nextNonBlankRow(row) return false unless nextRow? From efd518ecb39a7588e5f04b7e2e9e19416a888d2f Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 22 Jun 2015 14:27:46 -0500 Subject: [PATCH 29/49] :arrow_down: exception-reporting --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 70112b2e2..a44a60319 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "deprecation-cop": "0.52.0", "dev-live-reload": "0.46.0", "encoding-selector": "0.20.0", - "exception-reporting": "0.26.0", + "exception-reporting": "0.25.0", "find-and-replace": "0.173.0", "fuzzy-finder": "0.87.0", "git-diff": "0.55.0", From 1aab5e74d962bb6160a9844300c596234940a169 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 22 Jun 2015 14:48:28 -0500 Subject: [PATCH 30/49] :arrow_up: find-and-replace --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a44a60319..605388378 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.25.0", - "find-and-replace": "0.173.0", + "find-and-replace": "0.174.0", "fuzzy-finder": "0.87.0", "git-diff": "0.55.0", "go-to-line": "0.30.0", From 8de583b3571e381f55ebce292bd301cf404a0074 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 13:32:48 -0700 Subject: [PATCH 31/49] Prepare 0.212 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4c0dde1a2..7b0274aeb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom", "productName": "Atom", - "version": "0.211.0", + "version": "0.212.0", "description": "A hackable text editor for the 21st Century.", "main": "./src/browser/main.js", "repository": { From 8384fdbaf382aa678dfe39d39388323ec3476b2c Mon Sep 17 00:00:00 2001 From: Bo Lopker Date: Tue, 23 Jun 2015 02:12:02 -0700 Subject: [PATCH 32/49] Correct Fedora 22 install instructions --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 93fe03c8b..18d4e78ab 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ repeat these steps to upgrade to future releases. Currently only a 64-bit version is available. 1. Download `atom.x86_64.rpm` from the [Atom releases page](https://github.com/atom/atom/releases/latest). -2. Run `sudo dnf atom.x86_64.rpm` on the downloaded package. +2. Run `sudo dnf install atom.x86_64.rpm` on the downloaded package. 3. Launch Atom using the installed `atom` command. The Linux version does not currently automatically update so you will need to From 6527400bae13cff97f06fe1ce9edcd80703f4b13 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 24 Jun 2015 12:06:46 -0500 Subject: [PATCH 33/49] :arrow_up: language-todo@0.25 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7b0274aeb..2ef1addaf 100644 --- a/package.json +++ b/package.json @@ -155,7 +155,7 @@ "language-source": "0.9.0", "language-sql": "0.17.0", "language-text": "0.7.0", - "language-todo": "0.24.0", + "language-todo": "0.25.0", "language-toml": "0.16.0", "language-xml": "0.30.0", "language-yaml": "0.22.0" From e82d6461ec5319b5e5774d2fa59fc1608af62e82 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 18 Jun 2015 08:53:49 -0700 Subject: [PATCH 34/49] Prepare 1.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2ef1addaf..bbf3974ce 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom", "productName": "Atom", - "version": "0.212.0", + "version": "1.0.0", "description": "A hackable text editor for the 21st Century.", "main": "./src/browser/main.js", "repository": { From 40534fa6d73af616ca55a2a861be798583fc3c0c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 09:41:16 -0700 Subject: [PATCH 35/49] Remove 1.0 roadmap link from README --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 18d4e78ab..13f7374f2 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,6 @@ Visit [atom.io](https://atom.io) to learn more or visit the [Atom forum](https:/ Follow [@AtomEditor](https://twitter.com/atomeditor) on Twitter for important announcements. -Visit [issue #3684](https://github.com/atom/atom/issues/3684) to learn more -about the Atom 1.0 roadmap. - ## Documentation If you want to read about using Atom or developing packages in Atom, the [Atom Flight Manual](https://atom.io/docs/latest/) is free and available online, along with ePub, PDF and mobi versions. You can find the source to the manual in [atom/docs](https://github.com/atom/docs). From 367322ef26269e91249a1c9f10e73426123f5900 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 09:42:17 -0700 Subject: [PATCH 36/49] Remove react/reactionary --- exports/atom.coffee | 8 -------- package.json | 2 -- 2 files changed, 10 deletions(-) diff --git a/exports/atom.coffee b/exports/atom.coffee index 67cd23741..5a3d9673e 100644 --- a/exports/atom.coffee +++ b/exports/atom.coffee @@ -120,14 +120,6 @@ unless process.env.ATOM_SHELL_INTERNAL_RUN_AS_NODE """ require '../src/select-list-view' - Object.defineProperty module.exports, 'React', get: -> - deprecate "Please require `react-atom-fork` instead: `React = require 'react-atom-fork'`. Add `\"react-atom-fork\": \"^0.11\"` to your package dependencies." - require 'react-atom-fork' - - Object.defineProperty module.exports, 'Reactionary', get: -> - deprecate "Please require `reactionary-atom-fork` instead: `Reactionary = require 'reactionary-atom-fork'`. Add `\"reactionary-atom-fork\": \"^0.9\"` to your package dependencies." - require 'reactionary-atom-fork' - if includeDeprecatedAPIs Object.defineProperty module.exports, 'Git', get: -> deprecate "Please require `GitRepository` instead of `Git`: `{GitRepository} = require 'atom'`" diff --git a/package.json b/package.json index bbf3974ce..e1bbac5fe 100644 --- a/package.json +++ b/package.json @@ -51,8 +51,6 @@ "property-accessors": "^1.1.3", "q": "^1.1.2", "random-words": "0.0.1", - "react-atom-fork": "^0.11.5", - "reactionary-atom-fork": "^1.0.0", "runas": "2.0.0", "scandal": "2.0.3", "scoped-property-store": "^0.17.0", From 0fa514b6e1c740ae45915878f698378d2f35cca7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 09:45:42 -0700 Subject: [PATCH 37/49] Remove open with deprecated APIs commands --- src/browser/atom-application.coffee | 2 -- src/workspace-element.coffee | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index b35bd5b5b..907828b6f 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -172,8 +172,6 @@ class AtomApplication @on 'application:open-folder', -> @promptForPathToOpen('folder', getLoadSettings()) @on 'application:open-dev', -> @promptForPathToOpen('all', devMode: true) @on 'application:open-safe', -> @promptForPathToOpen('all', safeMode: true) - @on 'application:open-with-deprecated-apis', -> @promptForPathToOpen('all', includeDeprecatedAPIs: true) - @on 'application:open-dev-with-deprecated-apis', -> @promptForPathToOpen('all', {includeDeprecatedAPIs: true, devMode: true}) @on 'application:inspect', ({x, y, atomWindow}) -> atomWindow ?= @focusedWindow() atomWindow?.browserWindow.inspectElement(x, y) diff --git a/src/workspace-element.coffee b/src/workspace-element.coffee index 6a276a7fc..028a6e561 100644 --- a/src/workspace-element.coffee +++ b/src/workspace-element.coffee @@ -140,8 +140,6 @@ atom.commands.add 'atom-workspace', 'application:open-folder': -> ipc.send('command', 'application:open-folder') 'application:open-dev': -> ipc.send('command', 'application:open-dev') 'application:open-safe': -> ipc.send('command', 'application:open-safe') - 'application:open-with-deprecated-apis': -> ipc.send('command', 'application:open-with-deprecated-apis') - 'application:open-dev-with-deprecated-apis': -> ipc.send('command', 'application:open-dev-with-deprecated-apis') 'application:add-project-folder': -> atom.addProjectFolder() 'application:minimize': -> ipc.send('command', 'application:minimize') 'application:zoom': -> ipc.send('command', 'application:zoom') From 85a4ae7fea820f5846edec4fc7438d089ef33b0b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 09:48:25 -0700 Subject: [PATCH 38/49] Remove --include-deprecated-apis command line option --- src/browser/atom-application.coffee | 35 +++++++++++++---------------- src/browser/atom-window.coffee | 3 +-- src/browser/main.coffee | 4 +--- static/index.js | 2 +- 4 files changed, 18 insertions(+), 26 deletions(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index 907828b6f..29996f33d 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -61,7 +61,7 @@ class AtomApplication exit: (status) -> app.exit(status) constructor: (options) -> - {@resourcePath, @version, @devMode, @safeMode, @includeDeprecatedAPIs, @socketPath} = options + {@resourcePath, @version, @devMode, @safeMode, @socketPath} = options # Normalize to make sure drive letter case is consistent on Windows @resourcePath = path.normalize(@resourcePath) if @resourcePath @@ -86,16 +86,16 @@ class AtomApplication else @loadState() or @openPath(options) - openWithOptions: ({pathsToOpen, urlsToOpen, test, pidToKillWhenClosed, devMode, safeMode, includeDeprecatedAPIs, newWindow, specDirectory, logFile, profileStartup}) -> + openWithOptions: ({pathsToOpen, urlsToOpen, test, pidToKillWhenClosed, devMode, safeMode, newWindow, specDirectory, logFile, profileStartup}) -> if test - @runSpecs({exitWhenDone: true, @resourcePath, specDirectory, logFile, includeDeprecatedAPIs}) + @runSpecs({exitWhenDone: true, @resourcePath, specDirectory, logFile}) else if pathsToOpen.length > 0 - @openPaths({pathsToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, includeDeprecatedAPIs, profileStartup}) + @openPaths({pathsToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup}) else if urlsToOpen.length > 0 - @openUrl({urlToOpen, devMode, safeMode, includeDeprecatedAPIs}) for urlToOpen in urlsToOpen + @openUrl({urlToOpen, devMode, safeMode}) for urlToOpen in urlsToOpen else # Always open a editor window if this is the first instance of Atom. - @openPath({pidToKillWhenClosed, newWindow, devMode, safeMode, includeDeprecatedAPIs, profileStartup}) + @openPath({pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup}) # Public: Removes the {AtomWindow} from the global window list. removeWindow: (window) -> @@ -160,7 +160,6 @@ class AtomApplication getLoadSettings = => devMode: @focusedWindow()?.devMode safeMode: @focusedWindow()?.safeMode - includeDeprecatedAPIs: @focusedWindow()?.includeDeprecatedAPIs @on 'application:run-all-specs', -> @runSpecs(exitWhenDone: false, resourcePath: global.devResourcePath, safeMode: @focusedWindow()?.safeMode) @on 'application:run-benchmarks', -> @runBenchmarks() @@ -229,7 +228,7 @@ class AtomApplication app.on 'open-url', (event, urlToOpen) => event.preventDefault() - @openUrl({urlToOpen, @devMode, @safeMode, @includeDeprecatedAPIs}) + @openUrl({urlToOpen, @devMode, @safeMode}) app.on 'activate-with-no-open-windows', (event) => event.preventDefault() @@ -356,11 +355,10 @@ class AtomApplication # :newWindow - Boolean of whether this should be opened in a new window. # :devMode - Boolean to control the opened window's dev mode. # :safeMode - Boolean to control the opened window's safe mode. - # :includeDeprecatedAPIs - Boolean to control the opened window's included deprecated APIs. # :profileStartup - Boolean to control creating a profile of the startup time. # :window - {AtomWindow} to open file paths in. - openPath: ({pathToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, includeDeprecatedAPIs, profileStartup, window}) -> - @openPaths({pathsToOpen: [pathToOpen], pidToKillWhenClosed, newWindow, devMode, safeMode, includeDeprecatedAPIs, profileStartup, window}) + openPath: ({pathToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup, window}) -> + @openPaths({pathsToOpen: [pathToOpen], pidToKillWhenClosed, newWindow, devMode, safeMode, profileStartup, window}) # Public: Opens multiple paths, in existing windows if possible. # @@ -370,10 +368,9 @@ class AtomApplication # :newWindow - Boolean of whether this should be opened in a new window. # :devMode - Boolean to control the opened window's dev mode. # :safeMode - Boolean to control the opened window's safe mode. - # :includeDeprecatedAPIs - Boolean to control the opened window's included deprecated APIs. # :windowDimensions - Object with height and width keys. # :window - {AtomWindow} to open file paths in. - openPaths: ({pathsToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, includeDeprecatedAPIs, windowDimensions, profileStartup, window}={}) -> + openPaths: ({pathsToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, windowDimensions, profileStartup, window}={}) -> pathsToOpen = pathsToOpen.map (pathToOpen) -> if fs.existsSync(pathToOpen) fs.normalize(pathToOpen) @@ -408,7 +405,7 @@ class AtomApplication bootstrapScript ?= require.resolve('../window-bootstrap') resourcePath ?= @resourcePath - openedWindow = new AtomWindow({locationsToOpen, bootstrapScript, resourcePath, devMode, safeMode, includeDeprecatedAPIs, windowDimensions, profileStartup}) + openedWindow = new AtomWindow({locationsToOpen, bootstrapScript, resourcePath, devMode, safeMode, windowDimensions, profileStartup}) if pidToKillWhenClosed? @pidsToOpenWindows[pidToKillWhenClosed] = openedWindow @@ -455,7 +452,6 @@ class AtomApplication urlsToOpen: [] devMode: @devMode safeMode: @safeMode - includeDeprecatedAPIs: @includeDeprecatedAPIs }) true else @@ -501,7 +497,7 @@ class AtomApplication # :specPath - The directory to load specs from. # :safeMode - A Boolean that, if true, won't run specs from ~/.atom/packages # and ~/.atom/dev/packages, defaults to false. - runSpecs: ({exitWhenDone, resourcePath, specDirectory, logFile, safeMode, includeDeprecatedAPIs}) -> + runSpecs: ({exitWhenDone, resourcePath, specDirectory, logFile, safeMode}) -> if resourcePath isnt @resourcePath and not fs.existsSync(resourcePath) resourcePath = @resourcePath @@ -513,8 +509,7 @@ class AtomApplication isSpec = true devMode = true safeMode ?= false - includeDeprecatedAPIs ?= true - new AtomWindow({bootstrapScript, resourcePath, exitWhenDone, isSpec, devMode, specDirectory, logFile, safeMode, includeDeprecatedAPIs}) + new AtomWindow({bootstrapScript, resourcePath, exitWhenDone, isSpec, devMode, specDirectory, logFile, safeMode}) runBenchmarks: ({exitWhenDone, specDirectory}={}) -> try @@ -557,9 +552,9 @@ class AtomApplication # :safeMode - A Boolean which controls whether any newly opened windows # should be in safe mode or not. # :window - An {AtomWindow} to use for opening a selected file path. - promptForPathToOpen: (type, {devMode, safeMode, includeDeprecatedAPIs, window}) -> + promptForPathToOpen: (type, {devMode, safeMode, window}) -> @promptForPath type, (pathsToOpen) => - @openPaths({pathsToOpen, devMode, safeMode, includeDeprecatedAPIs, window}) + @openPaths({pathsToOpen, devMode, safeMode, window}) promptForPath: (type, callback) -> properties = diff --git a/src/browser/atom-window.coffee b/src/browser/atom-window.coffee index eaa58ffa5..f20e69c5a 100644 --- a/src/browser/atom-window.coffee +++ b/src/browser/atom-window.coffee @@ -18,7 +18,7 @@ class AtomWindow isSpec: null constructor: (settings={}) -> - {@resourcePath, pathToOpen, locationsToOpen, @isSpec, @exitWhenDone, @safeMode, @devMode, @includeDeprecatedAPIs} = settings + {@resourcePath, pathToOpen, locationsToOpen, @isSpec, @exitWhenDone, @safeMode, @devMode} = settings locationsToOpen ?= [{pathToOpen}] if pathToOpen locationsToOpen ?= [] @@ -47,7 +47,6 @@ class AtomWindow loadSettings.resourcePath = @resourcePath loadSettings.devMode ?= false loadSettings.safeMode ?= false - loadSettings.includeDeprecatedAPIs ?= false # Only send to the first non-spec window created if @constructor.includeShellLoadTime and not @isSpec diff --git a/src/browser/main.coffee b/src/browser/main.coffee index eb08ebe61..392fd1995 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -137,7 +137,6 @@ parseCommandLine = -> executedFrom = args['executed-from'] devMode = args['dev'] safeMode = args['safe'] - includeDeprecatedAPIs = args['include-deprecated-apis'] pathsToOpen = args._ test = args['test'] specDirectory = args['spec-directory'] @@ -171,7 +170,6 @@ parseCommandLine = -> process.env.PATH = args['path-environment'] if args['path-environment'] {resourcePath, pathsToOpen, executedFrom, test, version, pidToKillWhenClosed, - devMode, includeDeprecatedAPIs, safeMode, newWindow, specDirectory, logFile, - socketPath, profileStartup} + devMode, safeMode, newWindow, specDirectory, logFile, socketPath, profileStartup} start() diff --git a/static/index.js b/static/index.js index 24c59c975..c0ee749eb 100644 --- a/static/index.js +++ b/static/index.js @@ -75,7 +75,7 @@ var setupWindow = function(loadSettings) { ModuleCache.register(loadSettings); ModuleCache.add(loadSettings.resourcePath); - require('grim').includeDeprecatedAPIs = !!loadSettings.includeDeprecatedAPIs; + require('grim').includeDeprecatedAPIs = false; // Start the crash reporter before anything else. require('crash-reporter').start({ From 0c4e052247c8891378a2517a5b696661220ce2af Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 09:49:40 -0700 Subject: [PATCH 39/49] Remove --include-deprecated-apis from apm test commands --- build/tasks/spec-task.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/tasks/spec-task.coffee b/build/tasks/spec-task.coffee index 6f1476556..bfd5a8604 100644 --- a/build/tasks/spec-task.coffee +++ b/build/tasks/spec-task.coffee @@ -95,7 +95,7 @@ module.exports = (grunt) -> if process.platform in ['darwin', 'linux'] options = cmd: appPath - args: ['--test', "--resource-path=#{resourcePath}", "--spec-directory=#{coreSpecsPath}", '--include-deprecated-apis'] + args: ['--test', "--resource-path=#{resourcePath}", "--spec-directory=#{coreSpecsPath}"] opts: env: _.extend({}, process.env, ATOM_INTEGRATION_TESTS_ENABLED: true @@ -104,7 +104,7 @@ module.exports = (grunt) -> else if process.platform is 'win32' options = cmd: process.env.comspec - args: ['/c', appPath, '--test', "--resource-path=#{resourcePath}", "--spec-directory=#{coreSpecsPath}", '--log-file=ci.log', '--include-deprecated-apis'] + args: ['/c', appPath, '--test', "--resource-path=#{resourcePath}", "--spec-directory=#{coreSpecsPath}", '--log-file=ci.log'] opts: env: _.extend({}, process.env, ATOM_INTEGRATION_TESTS_ENABLED: true From 993d702ce986af14cfb76e588fe8d802fbc3753f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 13:41:27 -0700 Subject: [PATCH 40/49] Include deprecated APIs when running core specs --- static/index.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/static/index.js b/static/index.js index c0ee749eb..8fe71a6a9 100644 --- a/static/index.js +++ b/static/index.js @@ -75,7 +75,8 @@ var setupWindow = function(loadSettings) { ModuleCache.register(loadSettings); ModuleCache.add(loadSettings.resourcePath); - require('grim').includeDeprecatedAPIs = false; + // Only include deprecated APIs when running core spec + require('grim').includeDeprecatedAPIs = isRunningCoreSpecs(loadSettings); // Start the crash reporter before anything else. require('crash-reporter').start({ @@ -219,6 +220,14 @@ var setupWindowBackground = function() { }, false); } +var isRunningCoreSpecs = function(loadSettings) { + return !!(loadSettings && + loadSettings.isSpec && + loadSettings.specDirectory && + loadSettings.resourcePath && + path.dirname(loadSettings.specDirectory) === loadSettings.resourcePath); +} + parseLoadSettings(); setupWindowBackground(); From 4d75175bdd8824a037cc626941420ec94d96ef3a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 15:36:03 -0700 Subject: [PATCH 41/49] :arrow_up: apm@1.0.0 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index bb9fd4647..66462db4e 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "0.171.0" + "atom-package-manager": "1.0.0" } } From 3e1c18ed409d97ad209cab8b223071dd64ee5ba6 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 22 Jun 2015 15:36:49 -0700 Subject: [PATCH 42/49] :arrow_up: apm@1.0.1 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index 66462db4e..d1f210f29 100644 --- a/apm/package.json +++ b/apm/package.json @@ -6,6 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "atom-package-manager": "1.0.0" + "atom-package-manager": "1.0.1" } } From 38745761e2b67d613d7104808a5c8f50b0abf474 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 25 Jun 2015 05:05:58 -0500 Subject: [PATCH 43/49] :arrow_up: pathwatcher@4.4.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e1bbac5fe..2f9289ded 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "normalize-package-data": "^2.0.0", "nslog": "^2.0.0", "oniguruma": "^4.1", - "pathwatcher": "^4.4", + "pathwatcher": "^4.4.1", "property-accessors": "^1.1.3", "q": "^1.1.2", "random-words": "0.0.1", From 2ff8f90608d0b493748530a2607a195283c6cac6 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 25 Jun 2015 09:40:30 -0500 Subject: [PATCH 44/49] Prepare 1.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f9289ded..0f56d7962 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom", "productName": "Atom", - "version": "1.0.0", + "version": "1.0.1", "description": "A hackable text editor for the 21st Century.", "main": "./src/browser/main.js", "repository": { From f30e352f6f2dae5c60cfd932c841dc6682082732 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 25 Jun 2015 13:19:14 -0500 Subject: [PATCH 45/49] :arrow_up: deprecation-cop@0.53 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0f56d7962..dd7b53893 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "bookmarks": "0.35.0", "bracket-matcher": "0.76.0", "command-palette": "0.36.0", - "deprecation-cop": "0.52.0", + "deprecation-cop": "0.53.0", "dev-live-reload": "0.46.0", "encoding-selector": "0.20.0", "exception-reporting": "0.25.0", From 77d7e7a69ffe3b6457dfd581ac3c7e4baeb0c4d3 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 25 Jun 2015 13:20:27 -0500 Subject: [PATCH 46/49] :arrow_up: settings-view@0.209 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dd7b53893..9fbe029ae 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "open-on-github": "0.37.0", "package-generator": "0.39.0", "release-notes": "0.53.0", - "settings-view": "0.208.0", + "settings-view": "0.209.0", "snippets": "0.95.0", "spell-check": "0.59.0", "status-bar": "0.74.0", From 3a3e4c1eb9e05a4c4ad34f7e7a6d0712afddb252 Mon Sep 17 00:00:00 2001 From: Andrew Burkett Date: Thu, 25 Jun 2015 16:12:30 -0700 Subject: [PATCH 47/49] Fix Arch build instructions --- docs/build-instructions/linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-instructions/linux.md b/docs/build-instructions/linux.md index 7b81786b7..4874489ab 100644 --- a/docs/build-instructions/linux.md +++ b/docs/build-instructions/linux.md @@ -30,7 +30,7 @@ Ubuntu LTS 12.04 64-bit is the recommended platform. ### Arch * `sudo pacman -S gconf base-devel git nodejs libgnome-keyring python2` -* `export python=/usr/bin/python2` before building Atom. +* `export PYTHON=/usr/bin/python2` before building Atom. ### Slackware From 13272728a2bf3b5aa08cd664efe7755d95d07fc4 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 26 Jun 2015 09:34:03 -0500 Subject: [PATCH 48/49] :arrow_up: language-python@0.37 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9fbe029ae..66b9d2b5d 100644 --- a/package.json +++ b/package.json @@ -145,7 +145,7 @@ "language-perl": "0.26.0", "language-php": "0.26.0", "language-property-list": "0.8.0", - "language-python": "0.36.0", + "language-python": "0.37.0", "language-ruby": "0.56.0", "language-ruby-on-rails": "0.22.0", "language-sass": "0.39.0", From 85879ffdb5b1975ed5208300bc43bc71695d3c98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Cascos?= Date: Mon, 29 Jun 2015 01:38:25 +0200 Subject: [PATCH 49/49] Update license in package.json --- package.json | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/package.json b/package.json index 66b9d2b5d..923cad95d 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,7 @@ "bugs": { "url": "https://github.com/atom/atom/issues" }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/atom/atom/raw/master/LICENSE.md" - } - ], + "license": "MIT", "atomShellVersion": "0.22.3", "dependencies": { "async": "0.2.6",