From 4fa15d3fce02e3dde87e1b42a7572883a1cb9b96 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Oct 2013 09:25:53 -0700 Subject: [PATCH 1/9] Replace underscore-extensions with underscore-plus --- package.json | 3 +- spec/underscore-extensions-spec.coffee | 117 ----------------- src/underscore-extensions.coffee | 173 ------------------------- 3 files changed, 1 insertion(+), 292 deletions(-) delete mode 100644 spec/underscore-extensions-spec.coffee delete mode 100644 src/underscore-extensions.coffee diff --git a/package.json b/package.json index 5f5a55c6a..3a5e3c14b 100644 --- a/package.json +++ b/package.json @@ -35,10 +35,9 @@ "season": "0.13.0", "semver": "1.1.4", "space-pen": "1.3.0", - "tantamount": "0.5.0", "telepath": "0.8.1", "temp": "0.5.0", - "underscore": "1.4.4", + "underscore-plus": "0.1.0", "atom-light-ui": "0.4.0", "atom-light-syntax": "0.4.0", diff --git a/spec/underscore-extensions-spec.coffee b/spec/underscore-extensions-spec.coffee deleted file mode 100644 index d108474aa..000000000 --- a/spec/underscore-extensions-spec.coffee +++ /dev/null @@ -1,117 +0,0 @@ -{_} = require 'atom' - -describe "underscore extensions", -> - describe "_.adviseBefore", -> - [object, calls] = [] - - beforeEach -> - calls = [] - object = { - method: (args...) -> - calls.push(["original", this, args]) - } - - it "calls the given function before the advised method", -> - _.adviseBefore object, 'method', (args...) -> calls.push(["advice", this, args]) - object.method(1, 2, 3) - expect(calls).toEqual [['advice', object, [1, 2, 3]], ['original', object, [1, 2, 3]]] - - it "cancels the original method's invocation if the advice returns true", -> - _.adviseBefore object, 'method', -> false - object.method(1, 2, 3) - expect(calls).toEqual [] - - describe "_.endsWith", -> - it "returns whether the given string ends with the given suffix", -> - expect(_.endsWith("test.txt", ".txt")).toBeTruthy() - expect(_.endsWith("test.txt", "txt")).toBeTruthy() - expect(_.endsWith("test.txt", "test.txt")).toBeTruthy() - expect(_.endsWith("test.txt", "")).toBeTruthy() - expect(_.endsWith("test.txt", ".txt2")).toBeFalsy() - expect(_.endsWith("test.txt", ".tx")).toBeFalsy() - expect(_.endsWith("test.txt", "test")).toBeFalsy() - - describe "_.camelize(string)", -> - it "converts `string` to camel case", -> - expect(_.camelize("corey_dale_johnson")).toBe "coreyDaleJohnson" - expect(_.camelize("corey-dale-johnson")).toBe "coreyDaleJohnson" - expect(_.camelize("corey_dale-johnson")).toBe "coreyDaleJohnson" - expect(_.camelize("coreyDaleJohnson")).toBe "coreyDaleJohnson" - expect(_.camelize("CoreyDaleJohnson")).toBe "CoreyDaleJohnson" - - describe "_.dasherize(string)", -> - it "converts `string` to use dashes", -> - expect(_.dasherize("corey_dale_johnson")).toBe "corey-dale-johnson" - expect(_.dasherize("coreyDaleJohnson")).toBe "corey-dale-johnson" - expect(_.dasherize("CoreyDaleJohnson")).toBe "corey-dale-johnson" - expect(_.dasherize("corey-dale-johnson")).toBe "corey-dale-johnson" - - describe "_.underscore(string)", -> - it "converts `string` to use underscores", -> - expect(_.underscore("corey-dale-johnson")).toBe "corey_dale_johnson" - expect(_.underscore("coreyDaleJohnson")).toBe "corey_dale_johnson" - expect(_.underscore("CoreyDaleJohnson")).toBe "corey_dale_johnson" - expect(_.underscore("corey_dale_johnson")).toBe "corey_dale_johnson" - - describe "spliceWithArray(originalArray, start, length, insertedArray, chunkSize)", -> - describe "when the inserted array is smaller than the chunk size", -> - it "splices the array in place", -> - array = ['a', 'b', 'c'] - _.spliceWithArray(array, 1, 1, ['v', 'w', 'x', 'y', 'z'], 100) - expect(array).toEqual ['a', 'v', 'w', 'x', 'y', 'z', 'c'] - - describe "when the inserted array is larger than the chunk size", -> - it "splices the array in place one chunk at a time (to avoid stack overflows)", -> - array = ['a', 'b', 'c'] - _.spliceWithArray(array, 1, 1, ['v', 'w', 'x', 'y', 'z'], 2) - expect(array).toEqual ['a', 'v', 'w', 'x', 'y', 'z', 'c'] - - describe "_.humanizeEventName(eventName)", -> - describe "when no namespace exists", -> - it "undasherizes and capitalizes the event name", -> - expect(_.humanizeEventName('nonamespace')).toBe 'Nonamespace' - expect(_.humanizeEventName('no-name-space')).toBe 'No Name Space' - - describe "when a namespaces exists", -> - it "space separates the undasherized/capitalized versions of the namespace and event name", -> - expect(_.humanizeEventName('space:final-frontier')).toBe 'Space: Final Frontier' - expect(_.humanizeEventName('star-trek:the-next-generation')).toBe 'Star Trek: The Next Generation' - - describe "_.deepExtend(objects...)", -> - it "copies all key/values from each object into a new object", -> - first = - things: - string: "oh" - boolean: false - anotherArray: ['a', 'b', 'c'] - object: - first: 1 - second: 2 - - second = - things: - string: "cool" - array: [1,2,3] - anotherArray: ['aa', 'bb', 'cc'] - object: - first: 1 - - result = _.deepExtend(first, second) - - expect(result).toEqual - things: - string: "oh" - boolean: false - array: [1,2,3] - anotherArray: ['a', 'b', 'c'] - object: - first: 1 - second: 2 - - describe "_.isSubset(potentialSubset, potentialSuperset)", -> - it "returns whether the first argument is a subset of the second", -> - expect(_.isSubset([1, 2], [1, 2])).toBeTruthy() - expect(_.isSubset([1, 2], [1, 2, 3])).toBeTruthy() - expect(_.isSubset([], [1])).toBeTruthy() - expect(_.isSubset([], [])).toBeTruthy() - expect(_.isSubset([1, 2], [2, 3])).toBeFalsy() diff --git a/src/underscore-extensions.coffee b/src/underscore-extensions.coffee deleted file mode 100644 index fdfc0b845..000000000 --- a/src/underscore-extensions.coffee +++ /dev/null @@ -1,173 +0,0 @@ -_ = require 'underscore' - -_.mixin - remove: (array, element) -> - index = array.indexOf(element) - array.splice(index, 1) if index >= 0 - array - - spliceWithArray: (originalArray, start, length, insertedArray, chunkSize=100000) -> - if insertedArray.length < chunkSize - originalArray.splice(start, length, insertedArray...) - else - originalArray.splice(start, length) - for chunkStart in [0..insertedArray.length] by chunkSize - originalArray.splice(start + chunkStart, 0, insertedArray.slice(chunkStart, chunkStart + chunkSize)...) - - sum: (array) -> - sum = 0 - sum += elt for elt in array - sum - - adviseBefore: (object, methodName, advice) -> - original = object[methodName] - object[methodName] = (args...) -> - unless advice.apply(this, args) == false - original.apply(this, args) - - escapeRegExp: (string) -> - string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') - - escapeAttribute: (string) -> - string.replace(/"/g, '"').replace(/\n/g, '') - - humanizeEventName: (eventName, eventDoc) -> - [namespace, event] = eventName.split(':') - return _.undasherize(namespace) unless event? - - namespaceDoc = _.undasherize(namespace) - eventDoc ?= _.undasherize(event) - - "#{namespaceDoc}: #{eventDoc}" - - capitalize: (word) -> - if word.toLowerCase() is 'github' - 'GitHub' - else - word[0].toUpperCase() + word[1..] - - pluralize: (count=0, singular, plural=singular+'s') -> - if count is 1 - "#{count} #{singular}" - else - "#{count} #{plural}" - - camelize: (string) -> - string.replace /[_-]+(\w)/g, (m) -> m[1].toUpperCase() - - dasherize: (string) -> - string = string[0].toLowerCase() + string[1..] - string.replace /([A-Z])|(_)/g, (m, letter, underscore) -> - if letter - "-" + letter.toLowerCase() - else - "-" - - uncamelcase: (string) -> - result = string.replace /([A-Z])|(_)/g, (m, letter, underscore) -> " " + letter - _.capitalize(result) - - undasherize: (string) -> - string.split('-').map(_.capitalize).join(' ') - - underscore: (string) -> - string = string[0].toLowerCase() + string[1..] - string.replace /([A-Z])|(-)/g, (m, letter, dash) -> - if letter - "_" + letter.toLowerCase() - else - "_" - - losslessInvert: (hash) -> - inverted = {} - for key, value of hash - inverted[value] ?= [] - inverted[value].push(key) - inverted - - multiplyString: (string, n) -> - new Array(1 + n).join(string) - - nextTick: (fn) -> - unless @messageChannel - @pendingNextTickFns = [] - @messageChannel = new MessageChannel - @messageChannel.port1.onmessage = => - fn() while fn = @pendingNextTickFns.shift() - - @pendingNextTickFns.push(fn) - @messageChannel.port2.postMessage(0) - - endsWith: (string, suffix) -> - string.indexOf(suffix, string.length - suffix.length) isnt -1 - - # Transform the given object into another object. - # - # `object` - The object to transform. - # `iterator` - - # A function that takes `(key, value)` arguments and returns a - # `[key, value]` tuple. - # - # Returns a new object based with the key/values returned by the iterator. - mapObject: (object, iterator) -> - newObject = {} - for key, value of object - [key, value] = iterator(key, value) - newObject[key] = value - - newObject - - # Deep clones the given JSON object. - # - # `object` - The JSON object to clone. - # - # Returns a deep clone of the JSON object. - deepClone: (object) -> - if _.isArray(object) - object.map (value) -> _.deepClone(value) - else if _.isObject(object) - @mapObject object, (key, value) => [key, @deepClone(value)] - else - object - - deepExtend: (objects...) -> - result = {} - for object in objects - for key, value of object - if _.isObject(value) and not _.isArray(value) - result[key] = @deepExtend(result[key], value) - else - result[key] ?= value - - result - - valueForKeyPath: (object, keyPath) -> - keys = keyPath.split('.') - for key in keys - object = object[key] - return unless object? - object - - setValueForKeyPath: (object, keyPath, value) -> - keys = keyPath.split('.') - while keys.length > 1 - key = keys.shift() - object[key] ?= {} - object = object[key] - if value? - object[keys.shift()] = value - else - delete object[keys.shift()] - - compactObject: (object) -> - newObject = {} - for key, value of object - newObject[key] = value if value? - newObject - - isSubset: (potentialSubset, potentialSuperset) -> - _.every potentialSubset, (element) -> _.include(potentialSuperset, element) - -_.isEqual = require 'tantamount' - -module.exports = _ From 4d4551987f6cbf076d72a64eeecc99a3e5dc8612 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Oct 2013 09:34:59 -0700 Subject: [PATCH 2/9] Use underscore-plus in Grunt tasks --- Gruntfile.coffee | 2 +- tasks/convert-theme.coffee | 2 +- tasks/spec-task.coffee | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gruntfile.coffee b/Gruntfile.coffee index 730cafb48..89e11a1dd 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -2,7 +2,7 @@ fs = require 'fs' path = require 'path' fm = require 'json-front-matter' -_ = require 'underscore' +_ = require 'underscore-plus' packageJson = require './package.json' diff --git a/tasks/convert-theme.coffee b/tasks/convert-theme.coffee index 98a496cc4..39575ba73 100644 --- a/tasks/convert-theme.coffee +++ b/tasks/convert-theme.coffee @@ -1,6 +1,6 @@ path = require 'path' -_ = require 'underscore' +_ = require 'underscore-plus' plist = require 'plist' {ScopeSelector} = require 'first-mate' diff --git a/tasks/spec-task.coffee b/tasks/spec-task.coffee index ae661a555..f78fa6726 100644 --- a/tasks/spec-task.coffee +++ b/tasks/spec-task.coffee @@ -1,7 +1,7 @@ fs = require 'fs' path = require 'path' -_ = require 'underscore' +_ = require 'underscore-plus' async = require 'async' module.exports = (grunt) -> From 8dbc0259c10c53a0bd07f42dc1e748eed8d665e8 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Oct 2013 09:40:36 -0700 Subject: [PATCH 3/9] Upgrade to underscore-plus@0.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3a5e3c14b..f4dbe3054 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "space-pen": "1.3.0", "telepath": "0.8.1", "temp": "0.5.0", - "underscore-plus": "0.1.0", + "underscore-plus": "0.2.0", "atom-light-ui": "0.4.0", "atom-light-syntax": "0.4.0", From 216a5e61fd75849b0fd039a94156561ca522fc17 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Oct 2013 10:13:41 -0700 Subject: [PATCH 4/9] Update underscore-extensions requires --- exports/atom.coffee | 2 +- src/atom-package.coffee | 2 +- src/atom.coffee | 2 +- src/binding-set.coffee | 2 +- src/buffered-process.coffee | 2 +- src/command-installer.coffee | 2 +- src/config.coffee | 2 +- src/cursor-view.coffee | 2 +- src/cursor.coffee | 2 +- src/display-buffer-marker.coffee | 2 +- src/display-buffer.coffee | 2 +- src/edit-session.coffee | 2 +- src/editor.coffee | 2 +- src/file.coffee | 2 +- src/fs-utils.coffee | 2 +- src/git.coffee | 2 +- src/gutter.coffee | 2 +- src/jquery-extensions.coffee | 2 +- src/keymap.coffee | 2 +- src/language-mode.coffee | 2 +- src/package-manager.coffee | 2 +- src/pane-column.coffee | 2 +- src/pane-row.coffee | 2 +- src/pane.coffee | 2 +- src/project.coffee | 2 +- src/root-view.coffee | 2 +- src/space-pen-extensions.coffee | 2 +- src/syntax.coffee | 2 +- src/task.coffee | 2 +- src/text-buffer.coffee | 2 +- src/text-mate-grammar.coffee | 2 +- src/text-mate-package.coffee | 2 +- src/theme-manager.coffee | 2 +- src/token.coffee | 2 +- src/tokenized-buffer.coffee | 2 +- src/tokenized-line.coffee | 2 +- src/window-event-handler.coffee | 2 +- src/window.coffee | 2 +- 38 files changed, 38 insertions(+), 38 deletions(-) diff --git a/exports/atom.coffee b/exports/atom.coffee index 618f4b840..878a61011 100644 --- a/exports/atom.coffee +++ b/exports/atom.coffee @@ -2,7 +2,7 @@ {Document, Point, Range, Site} = require 'telepath' module.exports = - _: require '../src/underscore-extensions' + _: require 'underscore-plus' $: require '../src/jquery-extensions' $$: $$ $$$: $$$ diff --git a/src/atom-package.coffee b/src/atom-package.coffee index cacda0882..4f823c8a2 100644 --- a/src/atom-package.coffee +++ b/src/atom-package.coffee @@ -2,7 +2,7 @@ TextMateGrammar = require './text-mate-grammar' Package = require './package' fsUtils = require './fs-utils' path = require 'path' -_ = require './underscore-extensions' +_ = require 'underscore-plus' $ = require './jquery-extensions' CSON = require 'season' {Emitter} = require 'emissary' diff --git a/src/atom.coffee b/src/atom.coffee index d2eb54137..b923ba380 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -6,7 +6,7 @@ Emitter::subscriptionCount = (args...) -> @getSubscriptionCount(args...) fsUtils = require './fs-utils' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' Package = require './package' ipc = require 'ipc' remote = require 'remote' diff --git a/src/binding-set.coffee b/src/binding-set.coffee index 025df700c..a44685039 100644 --- a/src/binding-set.coffee +++ b/src/binding-set.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' Specificity = require '../vendor/specificity' diff --git a/src/buffered-process.coffee b/src/buffered-process.coffee index df647491d..d726d7b29 100644 --- a/src/buffered-process.coffee +++ b/src/buffered-process.coffee @@ -1,6 +1,6 @@ ChildProcess = require 'child_process' path = require 'path' -_ = require './underscore-extensions' +_ = require 'underscore-plus' # Public: A wrapper which provides buffering for ChildProcess. module.exports = diff --git a/src/command-installer.coffee b/src/command-installer.coffee index 0e1433484..d64de8316 100644 --- a/src/command-installer.coffee +++ b/src/command-installer.coffee @@ -1,6 +1,6 @@ path = require 'path' fs = require 'fs' -_ = require './underscore-extensions' +_ = require 'underscore-plus' async = require 'async' mkdirp = require 'mkdirp' fsUtils = require './fs-utils' diff --git a/src/config.coffee b/src/config.coffee index 15a30ce93..1f38c30c8 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -1,5 +1,5 @@ fsUtils = require './fs-utils' -_ = require './underscore-extensions' +_ = require 'underscore-plus' {Emitter} = require 'emissary' CSON = require 'season' fs = require 'fs' diff --git a/src/cursor-view.coffee b/src/cursor-view.coffee index 5cef2af46..c564c5cba 100644 --- a/src/cursor-view.coffee +++ b/src/cursor-view.coffee @@ -1,6 +1,6 @@ {View} = require './space-pen-extensions' {Point, Range} = require 'telepath' -_ = require './underscore-extensions' +_ = require 'underscore-plus' ### Internal ### module.exports = diff --git a/src/cursor.coffee b/src/cursor.coffee index 9f2ffc860..128f0bb17 100644 --- a/src/cursor.coffee +++ b/src/cursor.coffee @@ -1,6 +1,6 @@ {Point, Range} = require 'telepath' {Emitter} = require 'emissary' -_ = require './underscore-extensions' +_ = require 'underscore-plus' # Public: The `Cursor` class represents the little blinking line identifying # where text can be inserted. diff --git a/src/display-buffer-marker.coffee b/src/display-buffer-marker.coffee index d4360350a..1420cadbc 100644 --- a/src/display-buffer-marker.coffee +++ b/src/display-buffer-marker.coffee @@ -1,5 +1,5 @@ {Range} = require 'telepath' -_ = require './underscore-extensions' +_ = require 'underscore-plus' {Emitter, Subscriber} = require 'emissary' # Private: diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 933c057e6..4969fbfc0 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' {Emitter, Subscriber} = require 'emissary' guid = require 'guid' telepath = require 'telepath' diff --git a/src/edit-session.coffee b/src/edit-session.coffee index 69b903d11..bbdaa6a39 100644 --- a/src/edit-session.coffee +++ b/src/edit-session.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' path = require 'path' telepath = require 'telepath' diff --git a/src/editor.coffee b/src/editor.coffee index 5102302a3..2b4202f48 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -7,7 +7,7 @@ CursorView = require './cursor-view' SelectionView = require './selection-view' fsUtils = require './fs-utils' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' MeasureRange = document.createRange() TextNodeFilter = { acceptNode: -> NodeFilter.FILTER_ACCEPT } diff --git a/src/file.coffee b/src/file.coffee index 492ed5efb..47d80e3b3 100644 --- a/src/file.coffee +++ b/src/file.coffee @@ -3,7 +3,7 @@ Q = require 'q' path = require 'path' fsUtils = require './fs-utils' pathWatcher = require 'pathwatcher' -_ = require './underscore-extensions' +_ = require 'underscore-plus' # Public: Represents an individual file in the editor. # diff --git a/src/fs-utils.coffee b/src/fs-utils.coffee index 489c9af01..94a3b4b5d 100644 --- a/src/fs-utils.coffee +++ b/src/fs-utils.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' fs = require 'fs' mkdirp = require 'mkdirp' Module = require 'module' diff --git a/src/git.coffee b/src/git.coffee index 55519741a..6a75a89e9 100644 --- a/src/git.coffee +++ b/src/git.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' Task = require './task' {Emitter, Subscriber} = require 'emissary' diff --git a/src/gutter.coffee b/src/gutter.coffee index dda4e2dc1..e03a493e7 100644 --- a/src/gutter.coffee +++ b/src/gutter.coffee @@ -1,7 +1,7 @@ {View, $$, $$$} = require './space-pen-extensions' {Range} = require 'telepath' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' # Private: Represents the portion of the {Editor} containing row numbers. # diff --git a/src/jquery-extensions.coffee b/src/jquery-extensions.coffee index 76ee60178..d6ba4fbc3 100644 --- a/src/jquery-extensions.coffee +++ b/src/jquery-extensions.coffee @@ -1,5 +1,5 @@ $ = require '../vendor/jquery' -_ = require './underscore-extensions' +_ = require 'underscore-plus' $.fn.scrollBottom = (newValue) -> if newValue? diff --git a/src/keymap.coffee b/src/keymap.coffee index 46d4a3ae0..9eff8ed8d 100644 --- a/src/keymap.coffee +++ b/src/keymap.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' path = require 'path' CSON = require 'season' diff --git a/src/language-mode.coffee b/src/language-mode.coffee index aa8d4b88d..e0c16a31b 100644 --- a/src/language-mode.coffee +++ b/src/language-mode.coffee @@ -1,5 +1,5 @@ {Range} = require 'telepath' -_ = require './underscore-extensions' +_ = require 'underscore-plus' {OnigRegExp} = require 'oniguruma' {Emitter, Subscriber} = require 'emissary' diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 72cc94ea7..66f06d2ef 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -1,6 +1,6 @@ {Emitter} = require 'emissary' fsUtils = require './fs-utils' -_ = require './underscore-extensions' +_ = require 'underscore-plus' Package = require './package' path = require 'path' diff --git a/src/pane-column.coffee b/src/pane-column.coffee index 8cc5b5644..f4818f31a 100644 --- a/src/pane-column.coffee +++ b/src/pane-column.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' PaneAxis = require './pane-axis' # Internal: diff --git a/src/pane-row.coffee b/src/pane-row.coffee index 5d51677d3..ef1cc70fd 100644 --- a/src/pane-row.coffee +++ b/src/pane-row.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' PaneAxis = require './pane-axis' ### Internal ### diff --git a/src/pane.coffee b/src/pane.coffee index df3bcf08d..46bb7f75a 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -1,7 +1,7 @@ {dirname} = require 'path' {View} = require './space-pen-extensions' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' telepath = require 'telepath' PaneRow = require './pane-row' PaneColumn = require './pane-column' diff --git a/src/project.coffee b/src/project.coffee index 869b9c61d..f5c2e44cd 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -3,7 +3,7 @@ path = require 'path' url = require 'url' Q = require 'q' -_ = require './underscore-extensions' +_ = require 'underscore-plus' telepath = require 'telepath' {Range} = telepath TextBuffer = require './text-buffer' diff --git a/src/root-view.coffee b/src/root-view.coffee index 78ab2592c..04a377448 100644 --- a/src/root-view.coffee +++ b/src/root-view.coffee @@ -5,7 +5,7 @@ Q = require 'q' $ = require './jquery-extensions' {$$, View} = require './space-pen-extensions' fsUtils = require './fs-utils' -_ = require './underscore-extensions' +_ = require 'underscore-plus' telepath = require 'telepath' Editor = require './editor' Pane = require './pane' diff --git a/src/space-pen-extensions.coffee b/src/space-pen-extensions.coffee index ce049a630..497dc2f2e 100644 --- a/src/space-pen-extensions.coffee +++ b/src/space-pen-extensions.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' spacePen = require 'space-pen' jQuery = require './jquery-extensions' ConfigObserver = require './config-observer' diff --git a/src/syntax.coffee b/src/syntax.coffee index 9a5ed8714..484e8c1bf 100644 --- a/src/syntax.coffee +++ b/src/syntax.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' jQuery = require './jquery-extensions' Specificity = require '../vendor/specificity' {$$} = require './space-pen-extensions' diff --git a/src/task.coffee b/src/task.coffee index 766ce9f90..06e77d0d9 100644 --- a/src/task.coffee +++ b/src/task.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' child_process = require 'child_process' {Emitter} = require 'emissary' diff --git a/src/text-buffer.coffee b/src/text-buffer.coffee index 100a2f3c4..656eda5bf 100644 --- a/src/text-buffer.coffee +++ b/src/text-buffer.coffee @@ -4,7 +4,7 @@ Q = require 'q' {P} = require 'scandal' telepath = require 'telepath' -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' File = require './file' diff --git a/src/text-mate-grammar.coffee b/src/text-mate-grammar.coffee index f0d1e00c3..ff4a508ef 100644 --- a/src/text-mate-grammar.coffee +++ b/src/text-mate-grammar.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' plist = require 'plist' Token = require './token' diff --git a/src/text-mate-package.coffee b/src/text-mate-package.coffee index 1cfb9d5ba..8e7013d88 100644 --- a/src/text-mate-package.coffee +++ b/src/text-mate-package.coffee @@ -1,7 +1,7 @@ Package = require './package' fsUtils = require './fs-utils' path = require 'path' -_ = require './underscore-extensions' +_ = require 'underscore-plus' TextMateGrammar = require './text-mate-grammar' async = require 'async' diff --git a/src/theme-manager.coffee b/src/theme-manager.coffee index 79d4bf711..4cdddbd5d 100644 --- a/src/theme-manager.coffee +++ b/src/theme-manager.coffee @@ -3,7 +3,7 @@ path = require 'path' Package = require './package' AtomPackage = require './atom-package' -_ = require './underscore-extensions' +_ = require 'underscore-plus' $ = require './jquery-extensions' fsUtils = require './fs-utils' diff --git a/src/token.coffee b/src/token.coffee index 81b5b2556..de57949b0 100644 --- a/src/token.coffee +++ b/src/token.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' textUtils = require './text-utils' WhitespaceRegexesByTabLength = {} diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index 1a952754b..7c7058b73 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' TokenizedLine = require './tokenized-line' {Emitter, Subscriber} = require 'emissary' Token = require './token' diff --git a/src/tokenized-line.coffee b/src/tokenized-line.coffee index 763b4a18c..826fdfd5c 100644 --- a/src/tokenized-line.coffee +++ b/src/tokenized-line.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' ### Internal ### diff --git a/src/window-event-handler.coffee b/src/window-event-handler.coffee index 7b6d2655e..f464423e3 100644 --- a/src/window-event-handler.coffee +++ b/src/window-event-handler.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' ipc = require 'ipc' shell = require 'shell' {Subscriber} = require 'emissary' diff --git a/src/window.coffee b/src/window.coffee index 7a470d6ff..9817d81ff 100644 --- a/src/window.coffee +++ b/src/window.coffee @@ -1,6 +1,6 @@ path = require 'path' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' ipc = require 'ipc' WindowEventHandler = require './window-event-handler' From 5b6e8a1b20ec7f57c474a088abfeb5e4f83cf37a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Oct 2013 10:16:16 -0700 Subject: [PATCH 5/9] Use process.nextTick instead of MessageChannel --- exports/atom.coffee | 6 +++++- src/editor.coffee | 2 +- src/root-view.coffee | 2 +- src/window.coffee | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/exports/atom.coffee b/exports/atom.coffee index 878a61011..c1085e348 100644 --- a/exports/atom.coffee +++ b/exports/atom.coffee @@ -1,8 +1,12 @@ {View, $$, $$$} = require '../src/space-pen-extensions' {Document, Point, Range, Site} = require 'telepath' +_ = require 'underscore-plus' +#TODO Remove once all packages have been updated +_.nextTick = process.nextTick + module.exports = - _: require 'underscore-plus' + _: _ $: require '../src/jquery-extensions' $$: $$ $$$: $$$ diff --git a/src/editor.coffee b/src/editor.coffee index 2b4202f48..8df185f79 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -1185,7 +1185,7 @@ class Editor extends View return if @pendingDisplayUpdate return unless @isVisible() @pendingDisplayUpdate = true - _.nextTick => + process.nextTick => @updateDisplay() @pendingDisplayUpdate = false diff --git a/src/root-view.coffee b/src/root-view.coffee index 04a377448..82e39f3ac 100644 --- a/src/root-view.coffee +++ b/src/root-view.coffee @@ -130,7 +130,7 @@ class RootView extends View @panes.reopenItem() if @state.get('fullScreen') - _.nextTick => atom.setFullScreen(true) + process.nextTick => atom.setFullScreen(true) # Private: serialize: -> diff --git a/src/window.coffee b/src/window.coffee index 9817d81ff..6f85de46f 100644 --- a/src/window.coffee +++ b/src/window.coffee @@ -13,7 +13,7 @@ windowEventHandler = null # This is done in a next tick to prevent a white flicker from occurring # if called synchronously. displayWindow = -> - _.nextTick -> + process.nextTick -> atom.show() atom.focus() From 6a3638c7d3fceb6418d07a34767362f30e981e0b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Oct 2013 10:18:51 -0700 Subject: [PATCH 6/9] Use setImmediate instead of process.nextTick --- exports/atom.coffee | 2 +- src/editor.coffee | 2 +- src/root-view.coffee | 2 +- src/window.coffee | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/exports/atom.coffee b/exports/atom.coffee index c1085e348..c8ddbbbd7 100644 --- a/exports/atom.coffee +++ b/exports/atom.coffee @@ -3,7 +3,7 @@ _ = require 'underscore-plus' #TODO Remove once all packages have been updated -_.nextTick = process.nextTick +_.nextTick = setImmediate module.exports = _: _ diff --git a/src/editor.coffee b/src/editor.coffee index 8df185f79..916b2e828 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -1185,7 +1185,7 @@ class Editor extends View return if @pendingDisplayUpdate return unless @isVisible() @pendingDisplayUpdate = true - process.nextTick => + setImmediate => @updateDisplay() @pendingDisplayUpdate = false diff --git a/src/root-view.coffee b/src/root-view.coffee index 82e39f3ac..57e884429 100644 --- a/src/root-view.coffee +++ b/src/root-view.coffee @@ -130,7 +130,7 @@ class RootView extends View @panes.reopenItem() if @state.get('fullScreen') - process.nextTick => atom.setFullScreen(true) + setImmediate => atom.setFullScreen(true) # Private: serialize: -> diff --git a/src/window.coffee b/src/window.coffee index 6f85de46f..a7adb6648 100644 --- a/src/window.coffee +++ b/src/window.coffee @@ -13,7 +13,7 @@ windowEventHandler = null # This is done in a next tick to prevent a white flicker from occurring # if called synchronously. displayWindow = -> - process.nextTick -> + setImmediate -> atom.show() atom.focus() From 71f7e20eeb750dc18b4cce6a4cfc45b33abef8bd Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Oct 2013 10:22:11 -0700 Subject: [PATCH 7/9] :lipstick: --- exports/atom.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exports/atom.coffee b/exports/atom.coffee index c8ddbbbd7..0b41a15ff 100644 --- a/exports/atom.coffee +++ b/exports/atom.coffee @@ -1,7 +1,7 @@ {View, $$, $$$} = require '../src/space-pen-extensions' {Document, Point, Range, Site} = require 'telepath' - _ = require 'underscore-plus' + #TODO Remove once all packages have been updated _.nextTick = setImmediate From e2ecff22c28f3607fe9d3e9d108c4f34910128f0 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Oct 2013 13:57:34 -0700 Subject: [PATCH 8/9] Use underscore-plus instead of underscore --- spec/atom-reporter.coffee | 2 +- spec/text-mate-grammar-spec.coffee | 2 +- src/context-menu-manager.coffee | 2 +- src/menu-manager.coffee | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/atom-reporter.coffee b/spec/atom-reporter.coffee index 4f0d9fed2..05a729588 100644 --- a/spec/atom-reporter.coffee +++ b/spec/atom-reporter.coffee @@ -1,6 +1,6 @@ $ = require 'jquery' {View, $$} = require 'space-pen' -_ = require 'underscore' +_ = require 'underscore-plus' {convertStackTrace} = require 'coffeestack' sourceMaps = {} diff --git a/spec/text-mate-grammar-spec.coffee b/spec/text-mate-grammar-spec.coffee index d8cf67f23..1591fe37f 100644 --- a/spec/text-mate-grammar-spec.coffee +++ b/spec/text-mate-grammar-spec.coffee @@ -2,7 +2,7 @@ TextMateGrammar = require '../src/text-mate-grammar' TextMatePackage = require '../src/text-mate-package' {_, fs} = require 'atom' -describe "TextMateGrammar", -> +fdescribe "TextMateGrammar", -> grammar = null beforeEach -> diff --git a/src/context-menu-manager.coffee b/src/context-menu-manager.coffee index 1c9d540d1..a5b702aa9 100644 --- a/src/context-menu-manager.coffee +++ b/src/context-menu-manager.coffee @@ -1,5 +1,5 @@ $ = require 'jquery' -_ = require 'underscore' +_ = require 'underscore-plus' remote = require 'remote' # Public: Provides a registry for commands that you'd like to appear in the diff --git a/src/menu-manager.coffee b/src/menu-manager.coffee index c9c7d776f..02b521443 100644 --- a/src/menu-manager.coffee +++ b/src/menu-manager.coffee @@ -1,6 +1,6 @@ path = require 'path' -_ = require 'underscore' +_ = require 'underscore-plus' ipc = require 'ipc' CSON = require 'season' From 913f20333d4f4c7d378114e6de7edb9e1c3eae9d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Oct 2013 14:26:19 -0700 Subject: [PATCH 9/9] Update grammar selection for _.max change Somewhere between underscore 1.4.4 and 1.5.2 max() was changed to return the first element with the maximum value instead of the last. The specs were relying on that ordering when selecting a specific grammar by path. --- spec/text-mate-grammar-spec.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/text-mate-grammar-spec.coffee b/spec/text-mate-grammar-spec.coffee index 1591fe37f..33ef67a22 100644 --- a/spec/text-mate-grammar-spec.coffee +++ b/spec/text-mate-grammar-spec.coffee @@ -214,7 +214,7 @@ fdescribe "TextMateGrammar", -> atom.activatePackage('html-tmbundle', sync: true) atom.activatePackage('ruby-on-rails-tmbundle', sync: true) - grammar = syntax.selectGrammar('foo.html.erb') + grammar = syntax.grammarForScopeName('text.html.ruby') {tokens} = grammar.tokenizeLine("
<%= User.find(2).full_name %>
") expect(tokens[0]).toEqual value: '<', scopes: ["text.html.ruby","meta.tag.block.any.html","punctuation.definition.tag.begin.html"] @@ -263,7 +263,7 @@ fdescribe "TextMateGrammar", -> atom.deactivatePackage('html-tmbundle') atom.activatePackage('ruby-on-rails-tmbundle', sync: true) - grammar = syntax.selectGrammar('foo.html.erb') + grammar = syntax.grammarForScopeName('text.html.ruby') {tokens} = grammar.tokenizeLine("
<%= User.find(2).full_name %>
") expect(tokens[0]).toEqual value: "
", scopes: ["text.html.ruby"] expect(tokens[1]).toEqual value: '<%=', scopes: ["text.html.ruby","source.ruby.rails.embedded.html","punctuation.section.embedded.ruby"]