From 2e10517e1cb5f405617fff8ea17d5b28eb0265bf Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 29 Jan 2015 11:54:29 -0800 Subject: [PATCH 001/121] :arrow_up: asar@0.2.2 --- build/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/build/package.json b/build/package.json index aa3742e40..cb9954147 100644 --- a/build/package.json +++ b/build/package.json @@ -6,6 +6,7 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { + "asar": "^0.2.2", "async": "~0.2.9", "donna": "1.0.7", "formidable": "~1.0.14", From f9e80439d0c9caa40c2bd2070b236af1a13c20f7 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 29 Jan 2015 11:54:46 -0800 Subject: [PATCH 002/121] Add generate-asar task --- build/Gruntfile.coffee | 4 ++-- build/tasks/generate-asar-task.coffee | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 build/tasks/generate-asar-task.coffee diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index 05efaeb38..ed4c7b933 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -223,7 +223,7 @@ module.exports = (grunt) -> ciTasks = ['output-disk-space', 'download-atom-shell', 'download-atom-shell-chromedriver', 'build'] ciTasks.push('dump-symbols') if process.platform isnt 'win32' - ciTasks.push('set-version', 'check-licenses', 'lint') + ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') ciTasks.push('mkdeb') if process.platform is 'linux' ciTasks.push('create-windows-installer') if process.platform is 'win32' ciTasks.push('test') if process.platform is 'darwin' @@ -231,6 +231,6 @@ module.exports = (grunt) -> ciTasks.push('publish-build') grunt.registerTask('ci', ciTasks) - defaultTasks = ['download-atom-shell', 'download-atom-shell-chromedriver', 'build', 'set-version'] + defaultTasks = ['download-atom-shell', 'download-atom-shell-chromedriver', 'build', 'set-version', 'generate-asar'] defaultTasks.push 'install' unless process.platform is 'linux' grunt.registerTask('default', defaultTasks) diff --git a/build/tasks/generate-asar-task.coffee b/build/tasks/generate-asar-task.coffee new file mode 100644 index 000000000..266c6bf57 --- /dev/null +++ b/build/tasks/generate-asar-task.coffee @@ -0,0 +1,14 @@ +asar = require 'asar' +path = require 'path' + +module.exports = (grunt) -> + {rm} = require('./task-helpers')(grunt) + + grunt.registerTask 'generate-asar', 'Generate asar archive for the app', -> + done = @async() + + appDir = grunt.config.get('atom.appDir') + asar.createPackage appDir, path.resolve(appDir, '..', 'app.asar'), (err) -> + return done(err) if err? + rm appDir + done() From e79a23f39a4ea47fefcf3a4435f24cdf13ae58e2 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Sun, 1 Feb 2015 17:52:46 -0800 Subject: [PATCH 003/121] Do not set "cwd" for tasks The task can be inside an asar archive, which is not allowed to be cwd. --- src/task.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/task.coffee b/src/task.coffee index 9572494b8..cfea0fae5 100644 --- a/src/task.coffee +++ b/src/task.coffee @@ -83,7 +83,7 @@ class Task taskPath = taskPath.replace(/\\/g, "\\\\") env = _.extend({}, process.env, {taskPath, userAgent: navigator.userAgent}) - @childProcess = fork '--eval', [bootstrap], {env, cwd: __dirname} + @childProcess = fork '--eval', [bootstrap], {env} @on "task:log", -> console.log(arguments...) @on "task:warn", -> console.warn(arguments...) From a8b919f0e045b8e8dcfc1b8ff9137edd8b64401e Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 4 Feb 2015 12:17:39 -0800 Subject: [PATCH 004/121] Print errors that happened before task-bootstrap --- src/task.coffee | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/task.coffee b/src/task.coffee index cfea0fae5..d752ea11d 100644 --- a/src/task.coffee +++ b/src/task.coffee @@ -83,7 +83,7 @@ class Task taskPath = taskPath.replace(/\\/g, "\\\\") env = _.extend({}, process.env, {taskPath, userAgent: navigator.userAgent}) - @childProcess = fork '--eval', [bootstrap], {env} + @childProcess = fork '--eval', [bootstrap], {env, silent: true} @on "task:log", -> console.log(arguments...) @on "task:warn", -> console.warn(arguments...) @@ -100,6 +100,11 @@ class Task @childProcess.removeAllListeners() @childProcess.on 'message', ({event, args}) => @emit(event, args...) if @childProcess? + # Catch the errors that happened before task-bootstrap. + @childProcess.stdout.on 'data', (data) -> + console.log data.toString() + @childProcess.stderr.on 'data', (data) -> + console.error data.toString() # Public: Starts the task. # From 505754783fbf94d3cfc6c8f882e7721e46571965 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 5 Feb 2015 14:38:25 -0800 Subject: [PATCH 005/121] Warn empty app dir --- build/tasks/generate-asar-task.coffee | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build/tasks/generate-asar-task.coffee b/build/tasks/generate-asar-task.coffee index 266c6bf57..b6b0064ce 100644 --- a/build/tasks/generate-asar-task.coffee +++ b/build/tasks/generate-asar-task.coffee @@ -1,4 +1,5 @@ asar = require 'asar' +fs = require 'fs' path = require 'path' module.exports = (grunt) -> @@ -8,6 +9,10 @@ module.exports = (grunt) -> done = @async() appDir = grunt.config.get('atom.appDir') + unless fs.existsSync(appDir) + grunt.log.error 'The app has to be built before generating asar archive.' + return done(false) + asar.createPackage appDir, path.resolve(appDir, '..', 'app.asar'), (err) -> return done(err) if err? rm appDir From 01130230e4f6d6bd023e663b9e79ed548987b59e Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 25 Mar 2015 10:27:25 +0800 Subject: [PATCH 006/121] Copy LICENSE.md to process.resourcesPath The LICENSE file is needed by mkdeb task, we should move it out of asar archive. --- build/tasks/generate-license-task.coffee | 2 +- script/mkdeb | 2 +- src/browser/atom-application.coffee | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/tasks/generate-license-task.coffee b/build/tasks/generate-license-task.coffee index 6b616f5cb..eaf1a9a66 100644 --- a/build/tasks/generate-license-task.coffee +++ b/build/tasks/generate-license-task.coffee @@ -17,7 +17,7 @@ module.exports = (grunt) -> licenseText = getLicenseText(dependencyLicenses) if mode is 'save' - targetPath = path.join(grunt.config.get('atom.appDir'), 'LICENSE.md') + targetPath = path.resolve(grunt.config.get('atom.appDir'), '..', 'LICENSE.md') fs.writeFileSync(targetPath, licenseText) else console.log licenseText diff --git a/script/mkdeb b/script/mkdeb index 272fe23f3..c39b6d649 100755 --- a/script/mkdeb +++ b/script/mkdeb @@ -33,7 +33,7 @@ cp "$ICON_FILE" "$TARGET/usr/share/pixmaps" # Copy generated LICENSE.md to /usr/share/doc/atom/copyright mkdir -m $FILE_MODE -p "$TARGET/usr/share/doc/atom" -cp "$TARGET/usr/share/atom/resources/app/LICENSE.md" "$TARGET/usr/share/doc/atom/copyright" +cp "$TARGET/usr/share/atom/resources/LICENSE.md" "$TARGET/usr/share/doc/atom/copyright" # Add lintian overrides mkdir -m $FILE_MODE -p "$TARGET/usr/share/lintian/overrides" diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index d79b2bf76..7d88858c5 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -190,7 +190,7 @@ class AtomApplication @openPathOnEvent('application:open-your-keymap', 'atom://.atom/keymap') @openPathOnEvent('application:open-your-snippets', 'atom://.atom/snippets') @openPathOnEvent('application:open-your-stylesheet', 'atom://.atom/stylesheet') - @openPathOnEvent('application:open-license', path.join(@resourcePath, 'LICENSE.md')) + @openPathOnEvent('application:open-license', path.join(process.resourcesPath, 'LICENSE.md')) app.on 'window-all-closed', -> app.quit() if process.platform in ['win32', 'linux'] From 3ce12693e6be43f35f8494bb63fcc0bdf06635c3 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 25 Mar 2015 13:35:03 +0800 Subject: [PATCH 007/121] Install apm to process.resourcesPath --- build/tasks/build-task.coffee | 6 +++--- src/command-installer.coffee | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/tasks/build-task.coffee b/build/tasks/build-task.coffee index fcb1eb6a8..74e5d8821 100644 --- a/build/tasks/build-task.coffee +++ b/build/tasks/build-task.coffee @@ -22,7 +22,7 @@ module.exports = (grunt) -> mkdir appDir if process.platform isnt 'win32' - cp 'atom.sh', path.join(appDir, 'atom.sh') + cp 'atom.sh', path.resolve(appDir, '..', 'atom.sh') cp 'package.json', path.join(appDir, 'package.json') @@ -145,9 +145,9 @@ module.exports = (grunt) -> cp 'src', path.join(appDir, 'src'), filter: /.+\.(cson|coffee)$/ cp 'static', path.join(appDir, 'static') - cp path.join('apm', 'node_modules', 'atom-package-manager'), path.join(appDir, 'apm'), filter: filterNodeModule + cp path.join('apm', 'node_modules', 'atom-package-manager'), path.resolve(appDir, '..', 'apm'), filter: filterNodeModule if process.platform isnt 'win32' - fs.symlinkSync(path.join('..', '..', 'bin', 'apm'), path.join(appDir, 'apm', 'node_modules', '.bin', 'apm')) + fs.symlinkSync(path.join('..', '..', 'bin', 'apm'), path.resolve(appDir, '..', 'apm', 'node_modules', '.bin', 'apm')) if process.platform is 'darwin' grunt.file.recurse path.join('resources', 'mac'), (sourcePath, rootDirectory, subDirectory='', filename) -> diff --git a/src/command-installer.coffee b/src/command-installer.coffee index 1d3a16777..b9d40bce0 100644 --- a/src/command-installer.coffee +++ b/src/command-installer.coffee @@ -36,7 +36,7 @@ module.exports = message: "Failed to install shell commands" detailedMessage: error.message - resourcePath = atom.getLoadSettings().resourcePath + resourcePath = process.resourcesPath @installAtomCommand resourcePath, true, (error) => if error? showErrorDialog(error) From 2d9f2091c5631bf43c7932bc92db9820888c80a3 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 25 Mar 2015 16:46:36 +0800 Subject: [PATCH 008/121] Unpack native module files It improves performance and makes virus scanners happy --- build/package.json | 2 +- build/tasks/generate-asar-task.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/package.json b/build/package.json index cb9954147..d7323db5c 100644 --- a/build/package.json +++ b/build/package.json @@ -6,7 +6,7 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "asar": "^0.2.2", + "asar": "^0.4.0", "async": "~0.2.9", "donna": "1.0.7", "formidable": "~1.0.14", diff --git a/build/tasks/generate-asar-task.coffee b/build/tasks/generate-asar-task.coffee index b6b0064ce..1f74fbf5d 100644 --- a/build/tasks/generate-asar-task.coffee +++ b/build/tasks/generate-asar-task.coffee @@ -13,7 +13,7 @@ module.exports = (grunt) -> grunt.log.error 'The app has to be built before generating asar archive.' return done(false) - asar.createPackage appDir, path.resolve(appDir, '..', 'app.asar'), (err) -> + asar.createPackageWithOptions appDir, path.resolve(appDir, '..', 'app.asar'), {unpack: '*.node'}, (err) -> return done(err) if err? rm appDir done() From c52058ef12a8b20946ea1be21488d3bedecade6a Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Wed, 25 Mar 2015 19:04:19 +0800 Subject: [PATCH 009/121] Always install commands from process.resourcesPath --- src/atom.coffee | 4 ++-- src/command-installer.coffee | 13 ++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index 707500479..fc4f59ef2 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -581,9 +581,9 @@ class Atom extends Model {resourcePath, safeMode} = @getLoadSettings() CommandInstaller = require './command-installer' - CommandInstaller.installAtomCommand resourcePath, false, (error) -> + CommandInstaller.installAtomCommand false, (error) -> console.warn error.message if error? - CommandInstaller.installApmCommand resourcePath, false, (error) -> + CommandInstaller.installApmCommand false, (error) -> console.warn error.message if error? dimensions = @restoreWindowDimensions() diff --git a/src/command-installer.coffee b/src/command-installer.coffee index b9d40bce0..c7772b4f5 100644 --- a/src/command-installer.coffee +++ b/src/command-installer.coffee @@ -36,12 +36,11 @@ module.exports = message: "Failed to install shell commands" detailedMessage: error.message - resourcePath = process.resourcesPath - @installAtomCommand resourcePath, true, (error) => + @installAtomCommand true, (error) => if error? showErrorDialog(error) else - @installApmCommand resourcePath, true, (error) -> + @installApmCommand true, (error) -> if error? showErrorDialog(error) else @@ -49,12 +48,12 @@ module.exports = message: "Commands installed." detailedMessage: "The shell commands `atom` and `apm` are installed." - installAtomCommand: (resourcePath, askForPrivilege, callback) -> - commandPath = path.join(resourcePath, 'atom.sh') + installAtomCommand: (askForPrivilege, callback) -> + commandPath = path.join(process.resourcesPath, 'atom.sh') @createSymlink commandPath, askForPrivilege, callback - installApmCommand: (resourcePath, askForPrivilege, callback) -> - commandPath = path.join(resourcePath, 'apm', 'node_modules', '.bin', 'apm') + installApmCommand: (askForPrivilege, callback) -> + commandPath = path.join(process.resourcesPath, 'apm', 'node_modules', '.bin', 'apm') @createSymlink commandPath, askForPrivilege, callback createSymlink: (commandPath, askForPrivilege, callback) -> From 685e4ebe960d5cb77bca606fb78fdaa81b96b0ed Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 26 Mar 2015 17:51:26 +0800 Subject: [PATCH 010/121] Update path to apm in squirrel-update and package-manager --- src/browser/squirrel-update.coffee | 2 +- src/package-manager.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/browser/squirrel-update.coffee b/src/browser/squirrel-update.coffee index 1603a7c0a..3bdd84223 100644 --- a/src/browser/squirrel-update.coffee +++ b/src/browser/squirrel-update.coffee @@ -142,7 +142,7 @@ addCommandsToPath = (callback) -> atomShCommand = "#!/bin/sh\r\n\"$0/../#{relativeAtomShPath.replace(/\\/g, '/')}\" \"$@\"" apmCommandPath = path.join(binFolder, 'apm.cmd') - relativeApmPath = path.relative(binFolder, path.join(process.resourcesPath, 'app', 'apm', 'bin', 'apm.cmd')) + relativeApmPath = path.relative(binFolder, path.join(process.resourcesPath, 'apm', 'bin', 'apm.cmd')) apmCommand = "@echo off\r\n\"%~dp0\\#{relativeApmPath}\" %*" apmShCommandPath = path.join(binFolder, 'apm') diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 444497c5b..2bbcf7fe7 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -134,7 +134,7 @@ class PackageManager commandName = 'apm' commandName += '.cmd' if process.platform is 'win32' - apmRoot = path.resolve(__dirname, '..', 'apm') + apmRoot = path.resolve(__dirname, '..', '..', 'apm') @apmPath = path.join(apmRoot, 'bin', commandName) unless fs.isFileSync(@apmPath) @apmPath = path.join(apmRoot, 'node_modules', 'atom-package-manager', 'bin', commandName) From e05bb2290296da549582c657a3fb4f8ec6499f0d Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Mon, 30 Mar 2015 15:02:02 +0800 Subject: [PATCH 011/121] :arrow_up: apm@0.153.0 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index e10632417..106878360 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.152.0" + "atom-package-manager": "0.153.0" } } From 14ba61f08d1f6ee128c5ae20e31fbec75ba502fc Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Mon, 30 Mar 2015 19:10:56 +0800 Subject: [PATCH 012/121] :arrow_up: apm@0.154.0 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index 106878360..c43f6e6be 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.153.0" + "atom-package-manager": "0.154.0" } } From 271ad2908badff9eaa74bae9514bd1a8d0402396 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Mon, 30 Mar 2015 19:31:38 +0800 Subject: [PATCH 013/121] :arrow_up: apm@0.155.0 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index c43f6e6be..318047a78 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.154.0" + "atom-package-manager": "0.155.0" } } From 89d1bc9a716009791d186f21251b0c8573002733 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 2 Apr 2015 10:08:55 +0800 Subject: [PATCH 014/121] :arrow_up: apm@0.158.0 --- apm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm/package.json b/apm/package.json index 84f73451d..e7a0c8fdc 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.157.0" + "atom-package-manager": "0.158.0" } } From 33d5a2b3fc3e493773d8f1bfc078a7f13533b637 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 3 Apr 2015 18:21:39 +0800 Subject: [PATCH 015/121] InspectorFrontendAPI changed to DevToolsAPI --- src/atom.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/atom.coffee b/src/atom.coffee index fc4f59ef2..95ed0d4c9 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -226,7 +226,7 @@ class Atom extends Model if openDevTools @openDevTools() - @executeJavaScriptInDevTools('InspectorFrontendAPI.showConsole()') + @executeJavaScriptInDevTools('DevToolsAPI.showConsole()') @emit 'uncaught-error', arguments... @emitter.emit 'did-throw-error', {message, url, line, column, originalError} From 6910c81b4636bc16f0cdbc47875fe92d21e7a97c Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 3 Apr 2015 18:25:45 +0800 Subject: [PATCH 016/121] Fix error when running apm in packages --- src/package-manager.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 2bbcf7fe7..c00087084 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -134,7 +134,7 @@ class PackageManager commandName = 'apm' commandName += '.cmd' if process.platform is 'win32' - apmRoot = path.resolve(__dirname, '..', '..', 'apm') + apmRoot = path.join(process.resourcesPath, 'apm') @apmPath = path.join(apmRoot, 'bin', commandName) unless fs.isFileSync(@apmPath) @apmPath = path.join(apmRoot, 'node_modules', 'atom-package-manager', 'bin', commandName) From decab183b7ddef217ed0ecd58875915f81c31c79 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Fri, 3 Apr 2015 10:34:21 -0700 Subject: [PATCH 017/121] Fix screen/buffer range error in paragraph cursor motions --- spec/text-editor-spec.coffee | 26 ++++++++++---------------- src/cursor.coffee | 4 ++-- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/spec/text-editor-spec.coffee b/spec/text-editor-spec.coffee index 51226a22b..439a1ddb6 100644 --- a/spec/text-editor-spec.coffee +++ b/spec/text-editor-spec.coffee @@ -831,35 +831,29 @@ describe "TextEditor", -> describe ".moveToBeginningOfNextParagraph()", -> it "moves the cursor before the first line of the next paragraph", -> - editor.setCursorBufferPosition [0,6] - cursor = editor.getLastCursor() + editor.setCursorBufferPosition [0, 6] + editor.foldBufferRow(4) editor.moveToBeginningOfNextParagraph() - - expect(cursor.getBufferPosition()).toEqual { row : 10, column : 0 } + expect(editor.getCursorBufferPosition()).toEqual [10, 0] editor.setText("") - editor.setCursorBufferPosition [0,0] - cursor = editor.getLastCursor() + editor.setCursorBufferPosition [0, 0] editor.moveToBeginningOfNextParagraph() - - expect(cursor.getBufferPosition()).toEqual [0, 0] + expect(editor.getCursorBufferPosition()).toEqual [0, 0] describe ".moveToBeginningOfPreviousParagraph()", -> it "moves the cursor before the first line of the pevious paragraph", -> - editor.setCursorBufferPosition [10,0] - cursor = editor.getLastCursor() + editor.setCursorBufferPosition [10, 0] + editor.foldBufferRow(4) editor.moveToBeginningOfPreviousParagraph() - - expect(cursor.getBufferPosition()).toEqual { row : 0, column : 0 } + expect(editor.getCursorBufferPosition()).toEqual [0, 0] editor.setText("") - editor.setCursorBufferPosition [0,0] - cursor = editor.getLastCursor() + editor.setCursorBufferPosition [0, 0] editor.moveToBeginningOfPreviousParagraph() - - expect(cursor.getBufferPosition()).toEqual [0, 0] + expect(editor.getCursorBufferPosition()).toEqual [0, 0] describe ".getCurrentParagraphBufferRange()", -> it "returns the buffer range of the current paragraph, delimited by blank lines or the beginning / end of the file", -> diff --git a/src/cursor.coffee b/src/cursor.coffee index acfc7fc9e..1656b9dc2 100644 --- a/src/cursor.coffee +++ b/src/cursor.coffee @@ -672,7 +672,7 @@ class Cursor extends Model if !range.start.isEqual(start) position = range.start stop() - @editor.screenPositionForBufferPosition(position) + position getBeginningOfPreviousParagraphBufferPosition: -> start = @getBufferPosition() @@ -685,4 +685,4 @@ class Cursor extends Model if !range.start.isEqual(zero) position = range.start stop() - @editor.screenPositionForBufferPosition(position) + position From 3de83f6860d9086d5366a80ce8f5516851d3865c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 11:03:43 -0700 Subject: [PATCH 018/121] Revert "Add asar support in Atom" --- apm/package.json | 2 +- build/Gruntfile.coffee | 4 ++-- build/package.json | 1 - build/tasks/build-task.coffee | 6 +++--- build/tasks/generate-asar-task.coffee | 19 ------------------- build/tasks/generate-license-task.coffee | 2 +- script/mkdeb | 2 +- src/atom.coffee | 6 +++--- src/browser/atom-application.coffee | 2 +- src/browser/squirrel-update.coffee | 2 +- src/command-installer.coffee | 13 +++++++------ src/package-manager.coffee | 2 +- src/task.coffee | 7 +------ 13 files changed, 22 insertions(+), 46 deletions(-) delete mode 100644 build/tasks/generate-asar-task.coffee diff --git a/apm/package.json b/apm/package.json index e7a0c8fdc..84f73451d 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.158.0" + "atom-package-manager": "0.157.0" } } diff --git a/build/Gruntfile.coffee b/build/Gruntfile.coffee index ed4c7b933..05efaeb38 100644 --- a/build/Gruntfile.coffee +++ b/build/Gruntfile.coffee @@ -223,7 +223,7 @@ module.exports = (grunt) -> ciTasks = ['output-disk-space', 'download-atom-shell', 'download-atom-shell-chromedriver', 'build'] ciTasks.push('dump-symbols') if process.platform isnt 'win32' - ciTasks.push('set-version', 'check-licenses', 'lint', 'generate-asar') + ciTasks.push('set-version', 'check-licenses', 'lint') ciTasks.push('mkdeb') if process.platform is 'linux' ciTasks.push('create-windows-installer') if process.platform is 'win32' ciTasks.push('test') if process.platform is 'darwin' @@ -231,6 +231,6 @@ module.exports = (grunt) -> ciTasks.push('publish-build') grunt.registerTask('ci', ciTasks) - defaultTasks = ['download-atom-shell', 'download-atom-shell-chromedriver', 'build', 'set-version', 'generate-asar'] + defaultTasks = ['download-atom-shell', 'download-atom-shell-chromedriver', 'build', 'set-version'] defaultTasks.push 'install' unless process.platform is 'linux' grunt.registerTask('default', defaultTasks) diff --git a/build/package.json b/build/package.json index ef5b314a0..297ddadfd 100644 --- a/build/package.json +++ b/build/package.json @@ -6,7 +6,6 @@ "url": "https://github.com/atom/atom.git" }, "dependencies": { - "asar": "^0.4.0", "async": "~0.2.9", "donna": "1.0.7", "formidable": "~1.0.14", diff --git a/build/tasks/build-task.coffee b/build/tasks/build-task.coffee index 74e5d8821..fcb1eb6a8 100644 --- a/build/tasks/build-task.coffee +++ b/build/tasks/build-task.coffee @@ -22,7 +22,7 @@ module.exports = (grunt) -> mkdir appDir if process.platform isnt 'win32' - cp 'atom.sh', path.resolve(appDir, '..', 'atom.sh') + cp 'atom.sh', path.join(appDir, 'atom.sh') cp 'package.json', path.join(appDir, 'package.json') @@ -145,9 +145,9 @@ module.exports = (grunt) -> cp 'src', path.join(appDir, 'src'), filter: /.+\.(cson|coffee)$/ cp 'static', path.join(appDir, 'static') - cp path.join('apm', 'node_modules', 'atom-package-manager'), path.resolve(appDir, '..', 'apm'), filter: filterNodeModule + cp path.join('apm', 'node_modules', 'atom-package-manager'), path.join(appDir, 'apm'), filter: filterNodeModule if process.platform isnt 'win32' - fs.symlinkSync(path.join('..', '..', 'bin', 'apm'), path.resolve(appDir, '..', 'apm', 'node_modules', '.bin', 'apm')) + fs.symlinkSync(path.join('..', '..', 'bin', 'apm'), path.join(appDir, 'apm', 'node_modules', '.bin', 'apm')) if process.platform is 'darwin' grunt.file.recurse path.join('resources', 'mac'), (sourcePath, rootDirectory, subDirectory='', filename) -> diff --git a/build/tasks/generate-asar-task.coffee b/build/tasks/generate-asar-task.coffee deleted file mode 100644 index 1f74fbf5d..000000000 --- a/build/tasks/generate-asar-task.coffee +++ /dev/null @@ -1,19 +0,0 @@ -asar = require 'asar' -fs = require 'fs' -path = require 'path' - -module.exports = (grunt) -> - {rm} = require('./task-helpers')(grunt) - - grunt.registerTask 'generate-asar', 'Generate asar archive for the app', -> - done = @async() - - appDir = grunt.config.get('atom.appDir') - unless fs.existsSync(appDir) - grunt.log.error 'The app has to be built before generating asar archive.' - return done(false) - - asar.createPackageWithOptions appDir, path.resolve(appDir, '..', 'app.asar'), {unpack: '*.node'}, (err) -> - return done(err) if err? - rm appDir - done() diff --git a/build/tasks/generate-license-task.coffee b/build/tasks/generate-license-task.coffee index eaf1a9a66..6b616f5cb 100644 --- a/build/tasks/generate-license-task.coffee +++ b/build/tasks/generate-license-task.coffee @@ -17,7 +17,7 @@ module.exports = (grunt) -> licenseText = getLicenseText(dependencyLicenses) if mode is 'save' - targetPath = path.resolve(grunt.config.get('atom.appDir'), '..', 'LICENSE.md') + targetPath = path.join(grunt.config.get('atom.appDir'), 'LICENSE.md') fs.writeFileSync(targetPath, licenseText) else console.log licenseText diff --git a/script/mkdeb b/script/mkdeb index c39b6d649..272fe23f3 100755 --- a/script/mkdeb +++ b/script/mkdeb @@ -33,7 +33,7 @@ cp "$ICON_FILE" "$TARGET/usr/share/pixmaps" # Copy generated LICENSE.md to /usr/share/doc/atom/copyright mkdir -m $FILE_MODE -p "$TARGET/usr/share/doc/atom" -cp "$TARGET/usr/share/atom/resources/LICENSE.md" "$TARGET/usr/share/doc/atom/copyright" +cp "$TARGET/usr/share/atom/resources/app/LICENSE.md" "$TARGET/usr/share/doc/atom/copyright" # Add lintian overrides mkdir -m $FILE_MODE -p "$TARGET/usr/share/lintian/overrides" diff --git a/src/atom.coffee b/src/atom.coffee index f05ce11f6..a71adeeeb 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -226,7 +226,7 @@ class Atom extends Model if openDevTools @openDevTools() - @executeJavaScriptInDevTools('DevToolsAPI.showConsole()') + @executeJavaScriptInDevTools('InspectorFrontendAPI.showConsole()') @emit 'uncaught-error', arguments... @emitter.emit 'did-throw-error', {message, url, line, column, originalError} @@ -581,9 +581,9 @@ class Atom extends Model {resourcePath, safeMode} = @getLoadSettings() CommandInstaller = require './command-installer' - CommandInstaller.installAtomCommand false, (error) -> + CommandInstaller.installAtomCommand resourcePath, false, (error) -> console.warn error.message if error? - CommandInstaller.installApmCommand false, (error) -> + CommandInstaller.installApmCommand resourcePath, false, (error) -> console.warn error.message if error? dimensions = @restoreWindowDimensions() diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index 7d88858c5..d79b2bf76 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -190,7 +190,7 @@ class AtomApplication @openPathOnEvent('application:open-your-keymap', 'atom://.atom/keymap') @openPathOnEvent('application:open-your-snippets', 'atom://.atom/snippets') @openPathOnEvent('application:open-your-stylesheet', 'atom://.atom/stylesheet') - @openPathOnEvent('application:open-license', path.join(process.resourcesPath, 'LICENSE.md')) + @openPathOnEvent('application:open-license', path.join(@resourcePath, 'LICENSE.md')) app.on 'window-all-closed', -> app.quit() if process.platform in ['win32', 'linux'] diff --git a/src/browser/squirrel-update.coffee b/src/browser/squirrel-update.coffee index 3bdd84223..1603a7c0a 100644 --- a/src/browser/squirrel-update.coffee +++ b/src/browser/squirrel-update.coffee @@ -142,7 +142,7 @@ addCommandsToPath = (callback) -> atomShCommand = "#!/bin/sh\r\n\"$0/../#{relativeAtomShPath.replace(/\\/g, '/')}\" \"$@\"" apmCommandPath = path.join(binFolder, 'apm.cmd') - relativeApmPath = path.relative(binFolder, path.join(process.resourcesPath, 'apm', 'bin', 'apm.cmd')) + relativeApmPath = path.relative(binFolder, path.join(process.resourcesPath, 'app', 'apm', 'bin', 'apm.cmd')) apmCommand = "@echo off\r\n\"%~dp0\\#{relativeApmPath}\" %*" apmShCommandPath = path.join(binFolder, 'apm') diff --git a/src/command-installer.coffee b/src/command-installer.coffee index c7772b4f5..1d3a16777 100644 --- a/src/command-installer.coffee +++ b/src/command-installer.coffee @@ -36,11 +36,12 @@ module.exports = message: "Failed to install shell commands" detailedMessage: error.message - @installAtomCommand true, (error) => + resourcePath = atom.getLoadSettings().resourcePath + @installAtomCommand resourcePath, true, (error) => if error? showErrorDialog(error) else - @installApmCommand true, (error) -> + @installApmCommand resourcePath, true, (error) -> if error? showErrorDialog(error) else @@ -48,12 +49,12 @@ module.exports = message: "Commands installed." detailedMessage: "The shell commands `atom` and `apm` are installed." - installAtomCommand: (askForPrivilege, callback) -> - commandPath = path.join(process.resourcesPath, 'atom.sh') + installAtomCommand: (resourcePath, askForPrivilege, callback) -> + commandPath = path.join(resourcePath, 'atom.sh') @createSymlink commandPath, askForPrivilege, callback - installApmCommand: (askForPrivilege, callback) -> - commandPath = path.join(process.resourcesPath, 'apm', 'node_modules', '.bin', 'apm') + installApmCommand: (resourcePath, askForPrivilege, callback) -> + commandPath = path.join(resourcePath, 'apm', 'node_modules', '.bin', 'apm') @createSymlink commandPath, askForPrivilege, callback createSymlink: (commandPath, askForPrivilege, callback) -> diff --git a/src/package-manager.coffee b/src/package-manager.coffee index c00087084..444497c5b 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -134,7 +134,7 @@ class PackageManager commandName = 'apm' commandName += '.cmd' if process.platform is 'win32' - apmRoot = path.join(process.resourcesPath, 'apm') + apmRoot = path.resolve(__dirname, '..', 'apm') @apmPath = path.join(apmRoot, 'bin', commandName) unless fs.isFileSync(@apmPath) @apmPath = path.join(apmRoot, 'node_modules', 'atom-package-manager', 'bin', commandName) diff --git a/src/task.coffee b/src/task.coffee index d752ea11d..9572494b8 100644 --- a/src/task.coffee +++ b/src/task.coffee @@ -83,7 +83,7 @@ class Task taskPath = taskPath.replace(/\\/g, "\\\\") env = _.extend({}, process.env, {taskPath, userAgent: navigator.userAgent}) - @childProcess = fork '--eval', [bootstrap], {env, silent: true} + @childProcess = fork '--eval', [bootstrap], {env, cwd: __dirname} @on "task:log", -> console.log(arguments...) @on "task:warn", -> console.warn(arguments...) @@ -100,11 +100,6 @@ class Task @childProcess.removeAllListeners() @childProcess.on 'message', ({event, args}) => @emit(event, args...) if @childProcess? - # Catch the errors that happened before task-bootstrap. - @childProcess.stdout.on 'data', (data) -> - console.log data.toString() - @childProcess.stderr.on 'data', (data) -> - console.error data.toString() # Public: Starts the task. # From f79c2669fc95992499858592bbee9910345b14c6 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 09:46:23 -0700 Subject: [PATCH 019/121] Add 1.0 API preview command line option --- src/atom.coffee | 10 +++++++--- src/browser/atom-application.coffee | 24 ++++++++++++++---------- src/browser/atom-window.coffee | 3 ++- src/browser/main.coffee | 5 ++++- 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index a71adeeeb..c45744408 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -342,15 +342,19 @@ class Atom extends Model # Public: Is the current window in development mode? inDevMode: -> - @getLoadSettings().devMode + @devMode ?= @getLoadSettings().devMode # Public: Is the current window in safe mode? inSafeMode: -> - @getLoadSettings().safeMode + @safeMode ?= @getLoadSettings().safeMode # Public: Is the current window running specs? inSpecMode: -> - @getLoadSettings().isSpec + @specMode ?= @getLoadSettings().isSpec + + # Is the current window in 1.0 API preview mode? + inApiPreviewMode: -> + @apiPreviewMode ?= @getLoadSettings().apiPreviewMode # Public: Get the version of the Atom application. # diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index d79b2bf76..fb9085416 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -60,7 +60,7 @@ class AtomApplication exit: (status) -> app.exit(status) constructor: (options) -> - {@resourcePath, @version, @devMode, @safeMode, @socketPath} = options + {@resourcePath, @version, @devMode, @safeMode, @apiPreviewMode, @socketPath} = options # Normalize to make sure drive letter case is consistent on Windows @resourcePath = path.normalize(@resourcePath) if @resourcePath @@ -82,15 +82,15 @@ class AtomApplication @openWithOptions(options) # Opens a new window based on the options provided. - openWithOptions: ({pathsToOpen, urlsToOpen, test, pidToKillWhenClosed, devMode, safeMode, newWindow, specDirectory, logFile}) -> + openWithOptions: ({pathsToOpen, urlsToOpen, test, pidToKillWhenClosed, devMode, safeMode, apiPreviewMode, newWindow, specDirectory, logFile}) -> if test @runSpecs({exitWhenDone: true, @resourcePath, specDirectory, logFile}) else if pathsToOpen.length > 0 - @openPaths({pathsToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode}) + @openPaths({pathsToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, apiPreviewMode}) else if urlsToOpen.length > 0 - @openUrl({urlToOpen, devMode, safeMode}) for urlToOpen in urlsToOpen + @openUrl({urlToOpen, devMode, safeMode, apiPreviewMode}) for urlToOpen in urlsToOpen else - @openPath({pidToKillWhenClosed, newWindow, devMode, safeMode}) # Always open a editor window if this is the first instance of Atom. + @openPath({pidToKillWhenClosed, newWindow, devMode, safeMode, apiPreviewMode}) # Always open a editor window if this is the first instance of Atom. # Public: Removes the {AtomWindow} from the global window list. removeWindow: (window) -> @@ -146,6 +146,7 @@ class AtomApplication getLoadSettings = => devMode: @focusedWindow()?.devMode safeMode: @focusedWindow()?.safeMode + apiPreviewMode: @focusedWindow()?.apiPreviewMode @on 'application:run-all-specs', -> @runSpecs(exitWhenDone: false, resourcePath: global.devResourcePath, safeMode: @focusedWindow()?.safeMode) @on 'application:run-benchmarks', -> @runBenchmarks() @@ -157,6 +158,7 @@ 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-api-preview', -> @promptForPathToOpen('all', apiPreviewMode: true) @on 'application:inspect', ({x,y, atomWindow}) -> atomWindow ?= @focusedWindow() atomWindow?.browserWindow.inspectElement(x, y) @@ -209,7 +211,7 @@ class AtomApplication app.on 'open-url', (event, urlToOpen) => event.preventDefault() - @openUrl({urlToOpen, @devMode, @safeMode}) + @openUrl({urlToOpen, @devMode, @safeMode, @apiPreviewMode}) app.on 'activate-with-no-open-windows', (event) => event.preventDefault() @@ -333,9 +335,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. + # :apiPreviewMode - Boolean to control the opened window's 1.0 API preview mode. # :window - {AtomWindow} to open file paths in. - openPath: ({pathToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, window}) -> - @openPaths({pathsToOpen: [pathToOpen], pidToKillWhenClosed, newWindow, devMode, safeMode, window}) + openPath: ({pathToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, apiPreviewMode, window}) -> + @openPaths({pathsToOpen: [pathToOpen], pidToKillWhenClosed, newWindow, devMode, safeMode, apiPreviewMode, window}) # Public: Opens a single path, in an existing window if possible. # @@ -345,9 +348,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. + # :apiPreviewMode - Boolean to control the opened window's 1.0 API preview mode. # :windowDimensions - Object with height and width keys. # :window - {AtomWindow} to open file paths in. - openPaths: ({pathsToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, windowDimensions, window}={}) -> + openPaths: ({pathsToOpen, pidToKillWhenClosed, newWindow, devMode, safeMode, apiPreviewMode, windowDimensions, window}={}) -> pathsToOpen = (fs.normalize(pathToOpen) for pathToOpen in pathsToOpen) locationsToOpen = (@locationForPathToOpen(pathToOpen) for pathToOpen in pathsToOpen) @@ -377,7 +381,7 @@ class AtomApplication bootstrapScript ?= require.resolve('../window-bootstrap') resourcePath ?= @resourcePath - openedWindow = new AtomWindow({locationsToOpen, bootstrapScript, resourcePath, devMode, safeMode, windowDimensions}) + openedWindow = new AtomWindow({locationsToOpen, bootstrapScript, resourcePath, devMode, safeMode, apiPreviewMode, windowDimensions}) if pidToKillWhenClosed? @pidsToOpenWindows[pidToKillWhenClosed] = openedWindow diff --git a/src/browser/atom-window.coffee b/src/browser/atom-window.coffee index 66fad179e..fff98799c 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} = settings + {@resourcePath, pathToOpen, locationsToOpen, @isSpec, @exitWhenDone, @safeMode, @devMode, @apiPreviewMode} = settings locationsToOpen ?= [{pathToOpen}] if pathToOpen locationsToOpen ?= [] @@ -47,6 +47,7 @@ class AtomWindow loadSettings.resourcePath = @resourcePath loadSettings.devMode ?= false loadSettings.safeMode ?= false + loadSettings.apiPreviewMode ?= 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 09db16357..812771e9a 100644 --- a/src/browser/main.coffee +++ b/src/browser/main.coffee @@ -106,6 +106,7 @@ parseCommandLine = -> ATOM_HOME The root path for all configuration files and folders. Defaults to `~/.atom`. """ + options.alias('1', 'one').boolean('1').describe('1', 'Run in 1.0 API preview mode.') options.alias('d', 'dev').boolean('d').describe('d', 'Run in development mode.') options.alias('f', 'foreground').boolean('f').describe('f', 'Keep the browser process in the foreground.') options.alias('h', 'help').boolean('h').describe('h', 'Print this usage message.') @@ -131,6 +132,7 @@ parseCommandLine = -> executedFrom = args['executed-from'] devMode = args['dev'] safeMode = args['safe'] + apiPreviewMode = args['one'] pathsToOpen = args._ pathsToOpen = [executedFrom] if executedFrom and pathsToOpen.length is 0 test = args['test'] @@ -164,6 +166,7 @@ parseCommandLine = -> process.env.PATH = args['path-environment'] if args['path-environment'] {resourcePath, pathsToOpen, executedFrom, test, version, pidToKillWhenClosed, - devMode, safeMode, newWindow, specDirectory, logFile, socketPath} + devMode, apiPreviewMode, safeMode, newWindow, specDirectory, logFile, + socketPath} start() From 80cb757cfec8f2da6385fb7be6a9d6e390c131d5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 09:47:44 -0700 Subject: [PATCH 020/121] Add api preview open ipc event proxy --- src/workspace-element.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/workspace-element.coffee b/src/workspace-element.coffee index 425d920d8..5afe2cf0e 100644 --- a/src/workspace-element.coffee +++ b/src/workspace-element.coffee @@ -136,6 +136,7 @@ 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-api-preview': -> ipc.send('command', 'application:open-api-preview') 'application:minimize': -> ipc.send('command', 'application:minimize') 'application:zoom': -> ipc.send('command', 'application:zoom') 'application:bring-all-windows-to-front': -> ipc.send('command', 'application:bring-all-windows-to-front') From 5a7d746eaeec84d4bea4304808f295676304809b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:18:11 -0700 Subject: [PATCH 021/121] Conditionally include deprecations in Atom --- src/atom.coffee | 88 +++++++++++++++++++++++++------------------------ static/index.js | 2 ++ 2 files changed, 47 insertions(+), 43 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index c45744408..49a76481b 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -6,7 +6,7 @@ remote = require 'remote' shell = require 'shell' _ = require 'underscore-plus' -{deprecate} = require 'grim' +{deprecate, includeDeprecations} = require 'grim' {Emitter} = require 'event-kit' {Model} = require 'theorist' fs = require 'fs-plus' @@ -34,35 +34,36 @@ class Atom extends Model atom = @deserialize(@loadState(mode)) ? new this({mode, @version}) atom.deserializeTimings.atom = Date.now() - startTime - workspaceViewDeprecationMessage = """ - atom.workspaceView is no longer available. - In most cases you will not need the view. See the Workspace docs for - alternatives: https://atom.io/docs/api/latest/Workspace. - If you do need the view, please use `atom.views.getView(atom.workspace)`, - which returns an HTMLElement. - """ + if includeDeprecations + workspaceViewDeprecationMessage = """ + atom.workspaceView is no longer available. + In most cases you will not need the view. See the Workspace docs for + alternatives: https://atom.io/docs/api/latest/Workspace. + If you do need the view, please use `atom.views.getView(atom.workspace)`, + which returns an HTMLElement. + """ - serviceHubDeprecationMessage = """ - atom.services is no longer available. To register service providers and - consumers, use the `providedServices` and `consumedServices` fields in - your package's package.json. - """ + serviceHubDeprecationMessage = """ + atom.services is no longer available. To register service providers and + consumers, use the `providedServices` and `consumedServices` fields in + your package's package.json. + """ - Object.defineProperty atom, 'workspaceView', - get: -> - deprecate(workspaceViewDeprecationMessage) - atom.__workspaceView - set: (newValue) -> - deprecate(workspaceViewDeprecationMessage) - atom.__workspaceView = newValue + Object.defineProperty atom, 'workspaceView', + get: -> + deprecate(workspaceViewDeprecationMessage) + atom.__workspaceView + set: (newValue) -> + deprecate(workspaceViewDeprecationMessage) + atom.__workspaceView = newValue - Object.defineProperty atom, 'services', - get: -> - deprecate(serviceHubDeprecationMessage) - atom.packages.serviceHub - set: (newValue) -> - deprecate(serviceHubDeprecationMessage) - atom.packages.serviceHub = newValue + Object.defineProperty atom, 'services', + get: -> + deprecate(serviceHubDeprecationMessage) + atom.packages.serviceHub + set: (newValue) -> + deprecate(serviceHubDeprecationMessage) + atom.packages.serviceHub = newValue atom @@ -263,7 +264,10 @@ class Atom extends Model @config = new Config({configDirPath, resourcePath}) @keymaps = new KeymapManager({configDirPath, resourcePath}) - @keymap = @keymaps # Deprecated + + if includeDeprecations + @keymap = @keymaps # Deprecated + @keymaps.subscribeToFileReadFailure() @tooltips = new TooltipManager @notifications = new NotificationManager @@ -279,9 +283,10 @@ class Atom extends Model @grammars = @deserializers.deserialize(@state.grammars ? @state.syntax) ? new GrammarRegistry() - Object.defineProperty this, 'syntax', get: -> - deprecate "The atom.syntax global is deprecated. Use atom.grammars instead." - @grammars + if includeDeprecations + Object.defineProperty this, 'syntax', get: -> + deprecate "The atom.syntax global is deprecated. Use atom.grammars instead." + @grammars @subscribe @packages.onDidActivateInitialPackages => @watchThemes() @@ -352,10 +357,6 @@ class Atom extends Model inSpecMode: -> @specMode ?= @getLoadSettings().isSpec - # Is the current window in 1.0 API preview mode? - inApiPreviewMode: -> - @apiPreviewMode ?= @getLoadSettings().apiPreviewMode - # Public: Get the version of the Atom application. # # Returns the version text {String}. @@ -831,17 +832,18 @@ class Atom extends Model updateAvailable: (details) -> @emitter.emit 'update-available', details - # Deprecated: Callers should be converted to use atom.deserializers - registerRepresentationClass: -> - deprecate("Callers should be converted to use atom.deserializers") - - # Deprecated: Callers should be converted to use atom.deserializers - registerRepresentationClasses: -> - deprecate("Callers should be converted to use atom.deserializers") - setBodyPlatformClass: -> document.body.classList.add("platform-#{process.platform}") setAutoHideMenuBar: (autoHide) -> ipc.send('call-window-method', 'setAutoHideMenuBar', autoHide) ipc.send('call-window-method', 'setMenuBarVisibility', !autoHide) + +if includeDeprecations + # Deprecated: Callers should be converted to use atom.deserializers + Atom::registerRepresentationClass = -> + deprecate("Callers should be converted to use atom.deserializers") + + # Deprecated: Callers should be converted to use atom.deserializers + Atom::registerRepresentationClasses = -> + deprecate("Callers should be converted to use atom.deserializers") diff --git a/static/index.js b/static/index.js index d99a9e9e7..7c8e92571 100644 --- a/static/index.js +++ b/static/index.js @@ -34,6 +34,8 @@ window.onload = function() { ModuleCache.register(loadSettings); ModuleCache.add(loadSettings.resourcePath); + require('grim').includeDeprecations = !loadSettings.apiPreviewMode; + // Start the crash reporter before anything else. require('crash-reporter').start({ productName: 'Atom', From 69b0d90e6449842ef3eec8da6324bb37019f3379 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:23:41 -0700 Subject: [PATCH 022/121] Remove unused require --- src/token.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/src/token.coffee b/src/token.coffee index 778ea16e6..941daf032 100644 --- a/src/token.coffee +++ b/src/token.coffee @@ -1,5 +1,4 @@ _ = require 'underscore-plus' -{deprecate} = require 'grim' textUtils = require './text-utils' WhitespaceRegexesByTabLength = {} From 87fca98bab08173dda5f360442f45a618a16e02c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:24:48 -0700 Subject: [PATCH 023/121] Deprecate TextEditorComponent::setShowInvisibles --- src/text-editor-component.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index 43f8184db..071d39271 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -754,6 +754,7 @@ class TextEditorComponent # Deprecated setShowInvisibles: (showInvisibles) -> + grim.deprecate "Use config.set('editor.showInvisibles', showInvisibles) instead" atom.config.set('editor.showInvisibles', showInvisibles) setScrollSensitivity: (scrollSensitivity) => From 94d42197eb32702ba4b067b50fe36a3420c224f0 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:29:13 -0700 Subject: [PATCH 024/121] Conditionally include deprecations --- exports/atom.coffee | 190 +++++++++++++++++++------------------- src/styles-element.coffee | 5 +- 2 files changed, 99 insertions(+), 96 deletions(-) diff --git a/exports/atom.coffee b/exports/atom.coffee index 5afa04022..6b9243098 100644 --- a/exports/atom.coffee +++ b/exports/atom.coffee @@ -1,7 +1,7 @@ TextBuffer = require 'text-buffer' {Point, Range} = TextBuffer {Emitter, Disposable, CompositeDisposable} = require 'event-kit' -{deprecate} = require 'grim' +{includeDeprecations, deprecate} = require 'grim' module.exports = BufferedNodeProcess: require '../src/buffered-node-process' @@ -21,109 +21,111 @@ unless process.env.ATOM_SHELL_INTERNAL_RUN_AS_NODE module.exports.Task = require '../src/task' module.exports.TextEditor = require '../src/text-editor' - {$, $$, $$$, View} = require '../src/space-pen-extensions' + if includeDeprecations + {$, $$, $$$, View} = require '../src/space-pen-extensions' - Object.defineProperty module.exports, 'Workspace', get: -> - deprecate """ - Requiring `Workspace` from `atom` is no longer supported. - If you need this, please open an issue on - https://github.com/atom/atom/issues/new - And let us know what you are using it for. - """ - require '../src/workspace' + Object.defineProperty module.exports, 'Workspace', get: -> + deprecate """ + Requiring `Workspace` from `atom` is no longer supported. + If you need this, please open an issue on + https://github.com/atom/atom/issues/new + And let us know what you are using it for. + """ + require '../src/workspace' - Object.defineProperty module.exports, 'WorkspaceView', get: -> - deprecate """ - Requiring `WorkspaceView` from `atom` is no longer supported. - Use `atom.views.getView(atom.workspace)` instead. - """ - require '../src/workspace-view' + Object.defineProperty module.exports, 'WorkspaceView', get: -> + deprecate """ + Requiring `WorkspaceView` from `atom` is no longer supported. + Use `atom.views.getView(atom.workspace)` instead. + """ + require '../src/workspace-view' - Object.defineProperty module.exports, '$', get: -> - deprecate """ - Requiring `$` from `atom` is no longer supported. - If you are using `space-pen`, please require `$` from `atom-space-pen-views`. Otherwise require `jquery` instead: - `{$} = require 'atom-space-pen-views'` - or - `$ = require 'jquery'` - Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. - Or add `"jquery": "^2"` to your package dependencies. - """ - $ + Object.defineProperty module.exports, '$', get: -> + deprecate """ + Requiring `$` from `atom` is no longer supported. + If you are using `space-pen`, please require `$` from `atom-space-pen-views`. Otherwise require `jquery` instead: + `{$} = require 'atom-space-pen-views'` + or + `$ = require 'jquery'` + Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. + Or add `"jquery": "^2"` to your package dependencies. + """ + $ - Object.defineProperty module.exports, '$$', get: -> - deprecate """ - Requiring `$$` from `atom` is no longer supported. - Please require `atom-space-pen-views` instead: - `{$$} = require 'atom-space-pen-views'` - Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. - """ - $$ + Object.defineProperty module.exports, '$$', get: -> + deprecate """ + Requiring `$$` from `atom` is no longer supported. + Please require `atom-space-pen-views` instead: + `{$$} = require 'atom-space-pen-views'` + Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. + """ + $$ - Object.defineProperty module.exports, '$$$', get: -> - deprecate """ - Requiring `$$$` from `atom` is no longer supported. - Please require `atom-space-pen-views` instead: - `{$$$} = require 'atom-space-pen-views'` - Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. - """ - $$$ + Object.defineProperty module.exports, '$$$', get: -> + deprecate """ + Requiring `$$$` from `atom` is no longer supported. + Please require `atom-space-pen-views` instead: + `{$$$} = require 'atom-space-pen-views'` + Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. + """ + $$$ - Object.defineProperty module.exports, 'View', get: -> - deprecate """ - Requiring `View` from `atom` is no longer supported. - Please require `atom-space-pen-views` instead: - `{View} = require 'atom-space-pen-views'` - Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. - """ - View + Object.defineProperty module.exports, 'View', get: -> + deprecate """ + Requiring `View` from `atom` is no longer supported. + Please require `atom-space-pen-views` instead: + `{View} = require 'atom-space-pen-views'` + Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. + """ + View - Object.defineProperty module.exports, 'EditorView', get: -> - deprecate """ - Requiring `EditorView` from `atom` is no longer supported. - Please require `TextEditorView` from `atom-space-pen-view` instead: - `{TextEditorView} = require 'atom-space-pen-views'` - Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. - """ - require '../src/text-editor-view' + Object.defineProperty module.exports, 'EditorView', get: -> + deprecate """ + Requiring `EditorView` from `atom` is no longer supported. + Please require `TextEditorView` from `atom-space-pen-view` instead: + `{TextEditorView} = require 'atom-space-pen-views'` + Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. + """ + require '../src/text-editor-view' - Object.defineProperty module.exports, 'TextEditorView', get: -> - deprecate """ - Requiring `TextEditorView` from `atom` is no longer supported. - Please require `TextEditorView` from `atom-space-pen-view` instead: - `{TextEditorView} = require 'atom-space-pen-views'` - Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. - """ - require '../src/text-editor-view' + Object.defineProperty module.exports, 'TextEditorView', get: -> + deprecate """ + Requiring `TextEditorView` from `atom` is no longer supported. + Please require `TextEditorView` from `atom-space-pen-view` instead: + `{TextEditorView} = require 'atom-space-pen-views'` + Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. + """ + require '../src/text-editor-view' - Object.defineProperty module.exports, 'ScrollView', get: -> - deprecate """ - Requiring `ScrollView` from `atom` is no longer supported. - Please require `ScrollView` from `atom-space-pen-view` instead: - `{ScrollView} = require 'atom-space-pen-views'` - Note that the API has changed slightly! Please read the docs at https://github.com/atom/atom-space-pen-views - Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. - """ - require '../src/scroll-view' + Object.defineProperty module.exports, 'ScrollView', get: -> + deprecate """ + Requiring `ScrollView` from `atom` is no longer supported. + Please require `ScrollView` from `atom-space-pen-view` instead: + `{ScrollView} = require 'atom-space-pen-views'` + Note that the API has changed slightly! Please read the docs at https://github.com/atom/atom-space-pen-views + Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. + """ + require '../src/scroll-view' - Object.defineProperty module.exports, 'SelectListView', get: -> - deprecate """ - Requiring `SelectListView` from `atom` is no longer supported. - Please require `SelectListView` from `atom-space-pen-view` instead: - `{SelectListView} = require 'atom-space-pen-views'` - Note that the API has changed slightly! Please read the docs at https://github.com/atom/atom-space-pen-views - Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. - """ - require '../src/select-list-view' + Object.defineProperty module.exports, 'SelectListView', get: -> + deprecate """ + Requiring `SelectListView` from `atom` is no longer supported. + Please require `SelectListView` from `atom-space-pen-view` instead: + `{SelectListView} = require 'atom-space-pen-views'` + Note that the API has changed slightly! Please read the docs at https://github.com/atom/atom-space-pen-views + Add `"atom-space-pen-views": "^2.0.3"` to your package dependencies. + """ + 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, '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' + 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' -Object.defineProperty module.exports, 'Git', get: -> - deprecate "Please require `GitRepository` instead of `Git`: `{GitRepository} = require 'atom'`" - module.exports.GitRepository +if includeDeprecations + Object.defineProperty module.exports, 'Git', get: -> + deprecate "Please require `GitRepository` instead of `Git`: `{GitRepository} = require 'atom'`" + module.exports.GitRepository diff --git a/src/styles-element.coffee b/src/styles-element.coffee index fc3b888cf..eaf7c53c8 100644 --- a/src/styles-element.coffee +++ b/src/styles-element.coffee @@ -1,4 +1,5 @@ {Emitter, CompositeDisposable} = require 'event-kit' +{includeDeprecations} = require 'grim' class StylesElement extends HTMLElement subscriptions: null @@ -18,7 +19,7 @@ class StylesElement extends HTMLElement @styleElementClonesByOriginalElement = new WeakMap attachedCallback: -> - if @context is 'atom-text-editor' + if includeDeprecations and @context is 'atom-text-editor' for styleElement in @children @upgradeDeprecatedSelectors(styleElement) @initialize() @@ -66,7 +67,7 @@ class StylesElement extends HTMLElement @insertBefore(styleElementClone, insertBefore) - if @context is 'atom-text-editor' + if includeDeprecations and @context is 'atom-text-editor' @upgradeDeprecatedSelectors(styleElementClone) @emitter.emit 'did-add-style-element', styleElementClone From bc58574238a377493fa9ebe2c7456d7f388dbeb6 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:41:27 -0700 Subject: [PATCH 025/121] Conditionally include deprecations in Cursor --- src/cursor.coffee | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/cursor.coffee b/src/cursor.coffee index 1656b9dc2..a930666c3 100644 --- a/src/cursor.coffee +++ b/src/cursor.coffee @@ -39,13 +39,13 @@ class Cursor extends Model textChanged: textChanged cursor: this - @emit 'moved', movedEvent + @emit 'moved', movedEvent if Grim.includeDeprecations @emitter.emit 'did-change-position', movedEvent @editor.cursorMoved(movedEvent) @marker.onDidDestroy => @destroyed = true @editor.removeCursor(this) - @emit 'destroyed' + @emit 'destroyed' if Grim.includeDeprecations @emitter.emit 'did-destroy' @emitter.dispose() @@ -89,6 +89,8 @@ class Cursor extends Model @emitter.on 'did-change-visibility', callback on: (eventName) -> + return unless Grim.includeDeprecations + switch eventName when 'moved' Grim.deprecate("Use Cursor::onDidChangePosition instead") @@ -222,9 +224,6 @@ class Cursor extends Model # Returns a {ScopeDescriptor} getScopeDescriptor: -> @editor.scopeDescriptorForBufferPosition(@getBufferPosition()) - getScopes: -> - Grim.deprecate 'Use Cursor::getScopeDescriptor() instead' - @getScopeDescriptor().getScopesArray() # Public: Returns true if this cursor has no non-whitespace characters before # its current position. @@ -476,10 +475,6 @@ class Cursor extends Model endOfWordPosition or currentBufferPosition - getMoveNextWordBoundaryBufferPosition: (options) -> - Grim.deprecate 'Use `::getNextWordBoundaryBufferPosition(options)` instead' - @getNextWordBoundaryBufferPosition(options) - # Public: Retrieves the buffer position of where the current word starts. # # * `options` (optional) An {Object} with the following keys: @@ -593,7 +588,7 @@ class Cursor extends Model setVisible: (visible) -> if @visible != visible @visible = visible - @emit 'visibility-changed', @visible + @emit 'visibility-changed', @visible if Grim.includeDeprecations @emitter.emit 'did-change-visibility', @visible # Public: Returns the visibility of the cursor. @@ -686,3 +681,12 @@ class Cursor extends Model position = range.start stop() position + +if Grim.includeDeprecations + Cursor::getScopes = -> + Grim.deprecate 'Use Cursor::getScopeDescriptor() instead' + @getScopeDescriptor().getScopesArray() + + Cursor::getMoveNextWordBoundaryBufferPosition = (options) -> + Grim.deprecate 'Use `::getNextWordBoundaryBufferPosition(options)` instead' + @getNextWordBoundaryBufferPosition(options) From 4884e32a3df1261296aa276ac12764e530628664 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:41:40 -0700 Subject: [PATCH 026/121] Conditionally include deprecations in ContextMenuManager --- src/context-menu-manager.coffee | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/context-menu-manager.coffee b/src/context-menu-manager.coffee index ed91f5e6c..69caa5d6d 100644 --- a/src/context-menu-manager.coffee +++ b/src/context-menu-manager.coffee @@ -101,25 +101,26 @@ class ContextMenuManager # with the following argument: # * `event` The click event that deployed the context menu. add: (itemsBySelector) -> - # Detect deprecated file path as first argument - if itemsBySelector? and typeof itemsBySelector isnt 'object' - Grim.deprecate """ - ContextMenuManager::add has changed to take a single object as its - argument. Please see - https://atom.io/docs/api/latest/ContextMenuManager for more info. - """ - itemsBySelector = arguments[1] - devMode = arguments[2]?.devMode - - # Detect deprecated format for items object - for key, value of itemsBySelector - unless _.isArray(value) + if Grim.includeDeprecations + # Detect deprecated file path as first argument + if itemsBySelector? and typeof itemsBySelector isnt 'object' Grim.deprecate """ ContextMenuManager::add has changed to take a single object as its argument. Please see https://atom.io/docs/api/latest/ContextMenuManager for more info. """ - itemsBySelector = @convertLegacyItemsBySelector(itemsBySelector, devMode) + itemsBySelector = arguments[1] + devMode = arguments[2]?.devMode + + # Detect deprecated format for items object + for key, value of itemsBySelector + unless _.isArray(value) + Grim.deprecate """ + ContextMenuManager::add has changed to take a single object as its + argument. Please see + https://atom.io/docs/api/latest/ContextMenuManager for more info. + """ + itemsBySelector = @convertLegacyItemsBySelector(itemsBySelector, devMode) addedItemSets = [] From 2d9eaa5c7529210c575189421e15621d961b2fe0 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:45:18 -0700 Subject: [PATCH 027/121] Conditionally include deprecations in Decoration --- src/decoration.coffee | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/decoration.coffee b/src/decoration.coffee index cbf649473..92316042c 100644 --- a/src/decoration.coffee +++ b/src/decoration.coffee @@ -30,7 +30,6 @@ nextId = -> idCounter++ # the marker. module.exports = class Decoration - EmitterMixin.includeInto(this) # Private: Check if the `decorationProperties.type` matches `type` # @@ -123,9 +122,6 @@ class Decoration # Essential: Returns the {Decoration}'s properties. getProperties: -> @properties - getParams: -> - Grim.deprecate 'Use Decoration::getProperties instead' - @getProperties() # Essential: Update the marker with new Properties. Allows you to change the decoration's class. # @@ -143,9 +139,6 @@ class Decoration @properties.id = @id @emit 'updated', {oldParams: oldProperties, newParams: newProperties} @emitter.emit 'did-change-properties', {oldProperties, newProperties} - update: (newProperties) -> - Grim.deprecate 'Use Decoration::setProperties instead' - @setProperties(newProperties) ### Section: Private methods @@ -171,7 +164,10 @@ class Decoration return @flashQueue.shift() if @flashQueue?.length > 0 null - on: (eventName) -> +if Grim.includeDeprecations + EmitterMixin.includeInto(Decoration) + + Decoration::on = (eventName) -> switch eventName when 'updated' Grim.deprecate 'Use Decoration::onDidChangeProperties instead' @@ -183,3 +179,11 @@ class Decoration Grim.deprecate 'Decoration::on is deprecated. Use event subscription methods instead.' EmitterMixin::on.apply(this, arguments) + + Decoration::getParams = -> + Grim.deprecate 'Use Decoration::getProperties instead' + @getProperties() + + Decoration::update = -> (newProperties) -> + Grim.deprecate 'Use Decoration::setProperties instead' + @setProperties(newProperties) From 1fdbd4db3fc9788466d844432958beb50c8018c3 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:46:00 -0700 Subject: [PATCH 028/121] Conditionally include deprecations in DeserializerManager --- src/deserializer-manager.coffee | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/deserializer-manager.coffee b/src/deserializer-manager.coffee index 40c5ea7f3..4efc71ec5 100644 --- a/src/deserializer-manager.coffee +++ b/src/deserializer-manager.coffee @@ -37,11 +37,6 @@ class DeserializerManager delete @deserializers[deserializer.name] for deserializer in deserializers return - remove: (classes...) -> - Grim.deprecate("Call .dispose() on the Disposable return from ::add instead") - delete @deserializers[name] for {name} in classes - return - # Public: Deserialize the state and params. # # * `state` The state {Object} to deserialize. @@ -65,3 +60,9 @@ class DeserializerManager name = state.get?('deserializer') ? state.deserializer @deserializers[name] + +if Grim.includeDeprecations + DeserializerManager::remove = (classes...) -> + Grim.deprecate("Call .dispose() on the Disposable return from ::add instead") + delete @deserializers[name] for {name} in classes + return From 15c48c5388a5e7ecfb0ed6a40693873d3a88eb67 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:49:44 -0700 Subject: [PATCH 029/121] Conditionally include deprecations in DisplayBuffer --- src/display-buffer.coffee | 69 ++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 6ec4ce859..aef36fc99 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -151,38 +151,11 @@ class DisplayBuffer extends Model onDidUpdateMarkers: (callback) -> @emitter.on 'did-update-markers', callback - on: (eventName) -> - switch eventName - when 'changed' - Grim.deprecate("Use DisplayBuffer::onDidChange instead") - when 'grammar-changed' - Grim.deprecate("Use DisplayBuffer::onDidChangeGrammar instead") - when 'soft-wrap-changed' - Grim.deprecate("Use DisplayBuffer::onDidChangeSoftWrap instead") - when 'character-widths-changed' - Grim.deprecate("Use DisplayBuffer::onDidChangeCharacterWidths instead") - when 'decoration-added' - Grim.deprecate("Use DisplayBuffer::onDidAddDecoration instead") - when 'decoration-removed' - Grim.deprecate("Use DisplayBuffer::onDidRemoveDecoration instead") - when 'decoration-changed' - Grim.deprecate("Use decoration.getMarker().onDidChange() instead") - when 'decoration-updated' - Grim.deprecate("Use Decoration::onDidChangeProperties instead") - when 'marker-created' - Grim.deprecate("Use Decoration::onDidCreateMarker instead") - when 'markers-updated' - Grim.deprecate("Use Decoration::onDidUpdateMarkers instead") - else - Grim.deprecate("DisplayBuffer::on is deprecated. Use event subscription methods instead.") - - EmitterMixin::on.apply(this, arguments) - emitDidChange: (eventProperties, refreshMarkers=true) -> if refreshMarkers @pauseMarkerChangeEvents() @refreshMarkerScreenPositions() - @emit 'changed', eventProperties + @emit 'changed', eventProperties if Grim.includeDeprecations @emitter.emit 'did-change', eventProperties @resumeMarkerChangeEvents() @@ -336,7 +309,7 @@ class DisplayBuffer extends Model characterWidthsChanged: -> @computeScrollWidth() - @emit 'character-widths-changed', @scopedCharacterWidthsChangeCount + @emit 'character-widths-changed', @scopedCharacterWidthsChangeCount if Grim.includeDeprecations @emitter.emit 'did-change-character-widths', @scopedCharacterWidthsChangeCount clearScopedCharWidths: -> @@ -454,7 +427,7 @@ class DisplayBuffer extends Model @softWrapped = softWrapped @updateWrappedScreenLines() softWrapped = @isSoftWrapped() - @emit 'soft-wrap-changed', softWrapped + @emit 'soft-wrap-changed', softWrapped if Grim.includeDeprecations @emitter.emit 'did-change-soft-wrapped', softWrapped softWrapped else @@ -938,7 +911,7 @@ class DisplayBuffer extends Model @decorationsByMarkerId[marker.id] ?= [] @decorationsByMarkerId[marker.id].push(decoration) @decorationsById[decoration.id] = decoration - @emit 'decoration-added', decoration + @emit 'decoration-added', decoration if Grim.includeDeprecations @emitter.emit 'did-add-decoration', decoration decoration @@ -950,7 +923,7 @@ class DisplayBuffer extends Model if index > -1 decorations.splice(index, 1) delete @decorationsById[decoration.id] - @emit 'decoration-removed', decoration + @emit 'decoration-removed', decoration if Grim.includeDeprecations @emitter.emit 'did-remove-decoration', decoration delete @decorationsByMarkerId[marker.id] if decorations.length is 0 @@ -1102,7 +1075,7 @@ class DisplayBuffer extends Model resumeMarkerChangeEvents: -> marker.resumeChangeEvents() for marker in @getMarkers() - @emit 'markers-updated' + @emit 'markers-updated' if Grim.includeDeprecations @emitter.emit 'did-update-markers' refreshMarkerScreenPositions: -> @@ -1244,7 +1217,7 @@ class DisplayBuffer extends Model if marker = @getMarker(textBufferMarker.id) # The marker might have been removed in some other handler called before # this one. Only emit when the marker still exists. - @emit 'marker-created', marker + @emit 'marker-created', marker if Grim.includeDeprecations @emitter.emit 'did-create-marker', marker createFoldForMarker: (marker) -> @@ -1253,3 +1226,31 @@ class DisplayBuffer extends Model foldForMarker: (marker) -> @foldsByMarkerId[marker.id] + +if Grim.includeDeprecations + DisplayBuffer::on = (eventName) -> + switch eventName + when 'changed' + Grim.deprecate("Use DisplayBuffer::onDidChange instead") + when 'grammar-changed' + Grim.deprecate("Use DisplayBuffer::onDidChangeGrammar instead") + when 'soft-wrap-changed' + Grim.deprecate("Use DisplayBuffer::onDidChangeSoftWrap instead") + when 'character-widths-changed' + Grim.deprecate("Use DisplayBuffer::onDidChangeCharacterWidths instead") + when 'decoration-added' + Grim.deprecate("Use DisplayBuffer::onDidAddDecoration instead") + when 'decoration-removed' + Grim.deprecate("Use DisplayBuffer::onDidRemoveDecoration instead") + when 'decoration-changed' + Grim.deprecate("Use decoration.getMarker().onDidChange() instead") + when 'decoration-updated' + Grim.deprecate("Use Decoration::onDidChangeProperties instead") + when 'marker-created' + Grim.deprecate("Use Decoration::onDidCreateMarker instead") + when 'markers-updated' + Grim.deprecate("Use Decoration::onDidUpdateMarkers instead") + else + Grim.deprecate("DisplayBuffer::on is deprecated. Use event subscription methods instead.") + + EmitterMixin::on.apply(this, arguments) From efcfcc73a4c414ad899ec2d621604aceb8c27702 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:54:13 -0700 Subject: [PATCH 030/121] Conditionally include deprecations in GitRepository --- src/git-repository.coffee | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/git-repository.coffee b/src/git-repository.coffee index ae10e7459..2fb61bdff 100644 --- a/src/git-repository.coffee +++ b/src/git-repository.coffee @@ -5,7 +5,7 @@ EmitterMixin = require('emissary').Emitter {Emitter, Disposable, CompositeDisposable} = require 'event-kit' fs = require 'fs-plus' GitUtils = require 'git-utils' -{deprecate} = require 'grim' +{includeDeprecations, deprecate} = require 'grim' Task = require './task' @@ -155,16 +155,6 @@ class GitRepository onDidChangeStatuses: (callback) -> @emitter.on 'did-change-statuses', callback - on: (eventName) -> - switch eventName - when 'status-changed' - deprecate 'Use GitRepository::onDidChangeStatus instead' - when 'statuses-changed' - deprecate 'Use GitRepository::onDidChangeStatuses instead' - else - deprecate 'GitRepository::on is deprecated. Use event subscription methods instead.' - EmitterMixin::on.apply(this, arguments) - ### Section: Repository Details ### @@ -252,9 +242,6 @@ class GitRepository # * `path` (optional) {String} path in the repository to get this information # for, only needed if the repository has submodules. getOriginURL: (path) -> @getConfigValue('remote.origin.url', path) - getOriginUrl: (path) -> - deprecate 'Use ::getOriginURL instead.' - @getOriginURL(path) # Public: Returns the upstream branch for the current HEAD, or null if there # is no upstream branch for the current HEAD. @@ -492,3 +479,18 @@ class GitRepository unless statusesUnchanged @emit 'statuses-changed' @emitter.emit 'did-change-statuses' + +if includeDeprecations + GitRepository::on = (eventName) -> + switch eventName + when 'status-changed' + deprecate 'Use GitRepository::onDidChangeStatus instead' + when 'statuses-changed' + deprecate 'Use GitRepository::onDidChangeStatuses instead' + else + deprecate 'GitRepository::on is deprecated. Use event subscription methods instead.' + EmitterMixin::on.apply(this, arguments) + + GitRepository::getOriginUrl = (path) -> + deprecate 'Use ::getOriginURL instead.' + @getOriginURL(path) From 00b31c5c6e1cab3ae55fd7c21a325cc3c320712a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:54:54 -0700 Subject: [PATCH 031/121] Conditionally include Emitter mixin --- src/git-repository.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/git-repository.coffee b/src/git-repository.coffee index 2fb61bdff..a14869655 100644 --- a/src/git-repository.coffee +++ b/src/git-repository.coffee @@ -1,7 +1,6 @@ {basename, join} = require 'path' _ = require 'underscore-plus' -EmitterMixin = require('emissary').Emitter {Emitter, Disposable, CompositeDisposable} = require 'event-kit' fs = require 'fs-plus' GitUtils = require 'git-utils' @@ -43,8 +42,6 @@ Task = require './task' # ``` module.exports = class GitRepository - EmitterMixin.includeInto(this) - @exists: (path) -> if git = @open(path) git.destroy() @@ -481,6 +478,9 @@ class GitRepository @emitter.emit 'did-change-statuses' if includeDeprecations + EmitterMixin = require('emissary').Emitter + EmitterMixin.includeInto(GitRepository) + GitRepository::on = (eventName) -> switch eventName when 'status-changed' From d799254cbbfee658d842a0d560d7c42e5692e231 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 12:59:27 -0700 Subject: [PATCH 032/121] Conditionally include deprecations in Marker --- src/marker.coffee | 60 +++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/src/marker.coffee b/src/marker.coffee index 962ebb7e7..798dcc12d 100644 --- a/src/marker.coffee +++ b/src/marker.coffee @@ -1,7 +1,5 @@ {Range} = require 'text-buffer' _ = require 'underscore-plus' -{Subscriber} = require 'emissary' -EmitterMixin = require('emissary').Emitter {Emitter} = require 'event-kit' Grim = require 'grim' @@ -45,9 +43,6 @@ Grim = require 'grim' # See {TextEditor::markBufferRange} for usage. module.exports = class Marker - EmitterMixin.includeInto(this) - Subscriber.includeInto(this) - bufferMarkerSubscription: null oldHeadBufferPosition: null oldHeadScreenPosition: null @@ -118,17 +113,6 @@ class Marker onDidDestroy: (callback) -> @emitter.on 'did-destroy', callback - on: (eventName) -> - switch eventName - when 'changed' - Grim.deprecate("Use Marker::onDidChange instead") - when 'destroyed' - Grim.deprecate("Use Marker::onDidDestroy instead") - else - Grim.deprecate("Marker::on is deprecated. Use documented event subscription methods instead.") - - EmitterMixin::on.apply(this, arguments) - ### Section: Marker Details ### @@ -161,9 +145,6 @@ class Marker # the marker. getProperties: -> @bufferMarker.getProperties() - getAttributes: -> - Grim.deprecate 'Use Marker::getProperties instead' - @getProperties() # Essential: Merges an {Object} containing new properties into the marker's # existing properties. @@ -171,16 +152,10 @@ class Marker # * `properties` {Object} setProperties: (properties) -> @bufferMarker.setProperties(properties) - setAttributes: (properties) -> - Grim.deprecate 'Use Marker::getProperties instead' - @setProperties(properties) matchesProperties: (attributes) -> attributes = @displayBuffer.translateToBufferMarkerParams(attributes) @bufferMarker.matchesParams(attributes) - matchesAttributes: (attributes) -> - Grim.deprecate 'Use Marker::matchesProperties instead' - @matchesProperties(attributes) ### Section: Comparing to other markers @@ -344,7 +319,7 @@ class Marker destroyed: -> delete @displayBuffer.markers[@id] - @emit 'destroyed' + @emit 'destroyed' if Grim.includeDeprecations @emitter.emit 'did-destroy' @emitter.dispose() @@ -375,7 +350,7 @@ class Marker if @deferredChangeEvents? @deferredChangeEvents.push(changeEvent) else - @emit 'changed', changeEvent + @emit 'changed', changeEvent if Grim.includeDeprecations @emitter.emit 'did-change', changeEvent @oldHeadBufferPosition = newHeadBufferPosition @@ -392,9 +367,38 @@ class Marker @deferredChangeEvents = null for event in deferredChangeEvents - @emit 'changed', event + @emit 'changed', event if Grim.includeDeprecations @emitter.emit 'did-change', event return getPixelRange: -> @displayBuffer.pixelRangeForScreenRange(@getScreenRange(), false) + +if Grim.includeDeprecations + {Subscriber} = require 'emissary' + EmitterMixin = require('emissary').Emitter + EmitterMixin.includeInto(Marker) + Subscriber.includeInto(Marker) + + Marker::on = (eventName) -> + switch eventName + when 'changed' + Grim.deprecate("Use Marker::onDidChange instead") + when 'destroyed' + Grim.deprecate("Use Marker::onDidDestroy instead") + else + Grim.deprecate("Marker::on is deprecated. Use documented event subscription methods instead.") + + EmitterMixin::on.apply(this, arguments) + + Marker::getAttributes = -> + Grim.deprecate 'Use Marker::getProperties instead' + @getProperties() + + Marker::setAttributes = (properties) -> + Grim.deprecate 'Use Marker::setProperties instead' + @setProperties(properties) + + Marker::matchesAttributes = (attributes) -> + Grim.deprecate 'Use Marker::matchesProperties instead' + @matchesProperties(attributes) From 729fe91e36837c228fa104a5aec9a6e8d5afeca1 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 13:02:11 -0700 Subject: [PATCH 033/121] Conditionally include deprecations in Selection --- src/selection.coffee | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/selection.coffee b/src/selection.coffee index ea4b54034..2a2d1c98c 100644 --- a/src/selection.coffee +++ b/src/selection.coffee @@ -63,18 +63,6 @@ class Selection extends Model onDidDestroy: (callback) -> @emitter.on 'did-destroy', callback - on: (eventName) -> - switch eventName - when 'screen-range-changed' - Grim.deprecate("Use Selection::onDidChangeRange instead. Call ::getScreenRange() yourself in your callback if you need the range.") - when 'destroyed' - Grim.deprecate("Use Selection::onDidDestroy instead.") - else - Grim.deprecate("Selection::on is deprecated. Use documented event subscription methods instead.") - - super - - ### Section: Managing the selection range ### @@ -416,16 +404,6 @@ class Selection extends Model @selectLeft() if @isEmpty() and not @editor.isFoldedAtScreenRow(@cursor.getScreenRow()) @deleteSelectedText() - # Deprecated: Use {::deleteToBeginningOfWord} instead. - backspaceToBeginningOfWord: -> - deprecate("Use Selection::deleteToBeginningOfWord() instead") - @deleteToBeginningOfWord() - - # Deprecated: Use {::deleteToBeginningOfLine} instead. - backspaceToBeginningOfLine: -> - deprecate("Use Selection::deleteToBeginningOfLine() instead") - @deleteToBeginningOfLine() - # Public: Removes from the start of the selection to the beginning of the # current word if the selection is empty otherwise it deletes the selection. deleteToBeginningOfWord: -> @@ -789,3 +767,25 @@ class Selection extends Model getGoalScreenRange: -> if goalScreenRange = @marker.getProperties().goalScreenRange Range.fromObject(goalScreenRange) + +if Grim.includeDeprecations + Selection::on = (eventName) -> + switch eventName + when 'screen-range-changed' + Grim.deprecate("Use Selection::onDidChangeRange instead. Call ::getScreenRange() yourself in your callback if you need the range.") + when 'destroyed' + Grim.deprecate("Use Selection::onDidDestroy instead.") + else + Grim.deprecate("Selection::on is deprecated. Use documented event subscription methods instead.") + + super + + # Deprecated: Use {::deleteToBeginningOfWord} instead. + Selection::backspaceToBeginningOfWord = -> + deprecate("Use Selection::deleteToBeginningOfWord() instead") + @deleteToBeginningOfWord() + + # Deprecated: Use {::deleteToBeginningOfLine} instead. + Selection::backspaceToBeginningOfLine = -> + deprecate("Use Selection::deleteToBeginningOfLine() instead") + @deleteToBeginningOfLine() From baca3284f4be42cead249ba381bfa4118baa830f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 13:03:10 -0700 Subject: [PATCH 034/121] Conditionally include deprecations in TextEditorComponent --- src/text-editor-component.coffee | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index 071d39271..c2babdca4 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -747,16 +747,6 @@ class TextEditorComponent setShowIndentGuide: (showIndentGuide) -> atom.config.set("editor.showIndentGuide", showIndentGuide) - # Deprecated - setInvisibles: (invisibles={}) -> - grim.deprecate "Use config.set('editor.invisibles', invisibles) instead" - atom.config.set('editor.invisibles', invisibles) - - # Deprecated - setShowInvisibles: (showInvisibles) -> - grim.deprecate "Use config.set('editor.showInvisibles', showInvisibles) instead" - atom.config.set('editor.showInvisibles', showInvisibles) - setScrollSensitivity: (scrollSensitivity) => if scrollSensitivity = parseInt(scrollSensitivity) @scrollSensitivity = Math.abs(scrollSensitivity) / 100 @@ -789,3 +779,14 @@ class TextEditorComponent updateParentViewMiniClass: -> @hostElement.classList.toggle('mini', @editor.isMini()) @rootElement.classList.toggle('mini', @editor.isMini()) + +if grim.includeDeprecations + # Deprecated + TextEditorComponent::setInvisibles = (invisibles={}) -> + grim.deprecate "Use config.set('editor.invisibles', invisibles) instead" + atom.config.set('editor.invisibles', invisibles) + + # Deprecated + TextEditorComponent::setShowInvisibles = (showInvisibles) -> + grim.deprecate "Use config.set('editor.showInvisibles', showInvisibles) instead" + atom.config.set('editor.showInvisibles', showInvisibles) From f91630553870b576ddf261217d29a95dada0ee0f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 13:06:54 -0700 Subject: [PATCH 035/121] Conditionally include deprecations in TokenizedBuffer --- src/tokenized-buffer.coffee | 40 +++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index cf7d15c28..303906ada 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -1,6 +1,5 @@ _ = require 'underscore-plus' {Model} = require 'theorist' -EmitterMixin = require('emissary').Emitter {Emitter} = require 'event-kit' {Point, Range} = require 'text-buffer' Serializable = require 'serializable' @@ -56,19 +55,6 @@ class TokenizedBuffer extends Model onDidTokenize: (callback) -> @emitter.on 'did-tokenize', callback - on: (eventName) -> - switch eventName - when 'changed' - Grim.deprecate("Use TokenizedBuffer::onDidChange instead") - when 'grammar-changed' - Grim.deprecate("Use TokenizedBuffer::onDidChangeGrammar instead") - when 'tokenized' - Grim.deprecate("Use TokenizedBuffer::onDidTokenize instead") - else - Grim.deprecate("TokenizedBuffer::on is deprecated. Use event subscription methods instead.") - - EmitterMixin::on.apply(this, arguments) - grammarAddedOrUpdated: (grammar) => if grammar.injectionSelector? @retokenizeLines() if @hasTokenForSelector(grammar.injectionSelector) @@ -94,7 +80,7 @@ class TokenizedBuffer extends Model @retokenizeLines() - @emit 'grammar-changed', grammar + @emit 'grammar-changed', grammar if Grim.includeDeprecations @emitter.emit 'did-change-grammar', grammar reloadGrammar: -> @@ -116,7 +102,7 @@ class TokenizedBuffer extends Model @invalidateRow(0) @fullyTokenized = false event = {start: 0, end: lastRow, delta: 0} - @emit 'changed', event + @emit 'changed', event if Grim.includeDeprecations @emitter.emit 'did-change', event setVisible: (@visible) -> @@ -178,7 +164,7 @@ class TokenizedBuffer extends Model [startRow, endRow] = @updateFoldableStatus(startRow, endRow) event = {start: startRow, end: endRow, delta: 0} - @emit 'changed', event + @emit 'changed', event if Grim.includeDeprecations @emitter.emit 'did-change', event if @firstInvalidRow()? @@ -188,7 +174,7 @@ class TokenizedBuffer extends Model markTokenizationComplete: -> unless @fullyTokenized - @emit 'tokenized' + @emit 'tokenized' if Grim.includeDeprecations @emitter.emit 'did-tokenize' @fullyTokenized = true @@ -235,7 +221,7 @@ class TokenizedBuffer extends Model end -= delta event = { start, end, delta, bufferChange: e } - @emit 'changed', event + @emit 'changed', event if Grim.includeDeprecations @emitter.emit 'did-change', event retokenizeWhitespaceRowsIfIndentLevelChanged: (row, increment) -> @@ -470,3 +456,19 @@ class TokenizedBuffer extends Model line = @tokenizedLineForRow(row).text console.log row, line, line.length return + +if Grim.includeDeprecations + EmitterMixin = require('emissary').Emitter + + TokenizedBuffer::on = (eventName) -> + switch eventName + when 'changed' + Grim.deprecate("Use TokenizedBuffer::onDidChange instead") + when 'grammar-changed' + Grim.deprecate("Use TokenizedBuffer::onDidChangeGrammar instead") + when 'tokenized' + Grim.deprecate("Use TokenizedBuffer::onDidTokenize instead") + else + Grim.deprecate("TokenizedBuffer::on is deprecated. Use event subscription methods instead.") + + EmitterMixin::on.apply(this, arguments) From 8375526ca658aa76e58f522c5cd91fac0b062760 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 13:23:08 -0700 Subject: [PATCH 036/121] Use CompositeDisposable instead of Subscriber mixin --- src/marker.coffee | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/marker.coffee b/src/marker.coffee index 798dcc12d..bd48eb48c 100644 --- a/src/marker.coffee +++ b/src/marker.coffee @@ -1,6 +1,6 @@ {Range} = require 'text-buffer' _ = require 'underscore-plus' -{Emitter} = require 'event-kit' +{CompositeDisposable, Emitter} = require 'event-kit' Grim = require 'grim' # Essential: Represents a buffer annotation that remains logically stationary @@ -57,6 +57,7 @@ class Marker constructor: ({@bufferMarker, @displayBuffer}) -> @emitter = new Emitter + @disposables = new CompositeDisposable @id = @bufferMarker.id @oldHeadBufferPosition = @getHeadBufferPosition() @oldHeadScreenPosition = @getHeadScreenPosition() @@ -64,14 +65,14 @@ class Marker @oldTailScreenPosition = @getTailScreenPosition() @wasValid = @isValid() - @subscribe @bufferMarker.onDidDestroy => @destroyed() - @subscribe @bufferMarker.onDidChange (event) => @notifyObservers(event) + @disposables.add @bufferMarker.onDidDestroy => @destroyed() + @disposables.add @bufferMarker.onDidChange (event) => @notifyObservers(event) # Essential: Destroys the marker, causing it to emit the 'destroyed' event. Once # destroyed, a marker cannot be restored by undo/redo operations. destroy: -> @bufferMarker.destroy() - @unsubscribe() + @disposables.dispose() # Essential: Creates and returns a new {Marker} with the same properties as this # marker. @@ -375,10 +376,8 @@ class Marker @displayBuffer.pixelRangeForScreenRange(@getScreenRange(), false) if Grim.includeDeprecations - {Subscriber} = require 'emissary' EmitterMixin = require('emissary').Emitter EmitterMixin.includeInto(Marker) - Subscriber.includeInto(Marker) Marker::on = (eventName) -> switch eventName From f7c4fa4bccdc5ae1f9d67de5d31f240591b14243 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 13:24:28 -0700 Subject: [PATCH 037/121] Only do legacy emits when deprecations are included --- src/git-repository.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/git-repository.coffee b/src/git-repository.coffee index a14869655..0ae4abf3a 100644 --- a/src/git-repository.coffee +++ b/src/git-repository.coffee @@ -313,7 +313,7 @@ class GitRepository else delete @statuses[relativePath] if currentPathStatus isnt pathStatus - @emit 'status-changed', path, pathStatus + @emit 'status-changed', path, pathStatus if includeDeprecations @emitter.emit 'did-change-status', {path, pathStatus} pathStatus @@ -474,7 +474,7 @@ class GitRepository submoduleRepo.upstream = submodules[submodulePath]?.upstream ? {ahead: 0, behind: 0} unless statusesUnchanged - @emit 'statuses-changed' + @emit 'statuses-changed' if includeDeprecations @emitter.emit 'did-change-statuses' if includeDeprecations From 6a6036db580722b24faf437ff7b785035121f801 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 13:25:51 -0700 Subject: [PATCH 038/121] Add command for open dev and api preview modes --- src/browser/atom-application.coffee | 1 + src/workspace-element.coffee | 1 + 2 files changed, 2 insertions(+) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index fb9085416..ec4fe650a 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -159,6 +159,7 @@ class AtomApplication @on 'application:open-dev', -> @promptForPathToOpen('all', devMode: true) @on 'application:open-safe', -> @promptForPathToOpen('all', safeMode: true) @on 'application:open-api-preview', -> @promptForPathToOpen('all', apiPreviewMode: true) + @on 'application:open-dev-api-preview', -> @promptForPathToOpen('all', {apiPreviewMode: 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 5afe2cf0e..f2805ff08 100644 --- a/src/workspace-element.coffee +++ b/src/workspace-element.coffee @@ -137,6 +137,7 @@ atom.commands.add 'atom-workspace', 'application:open-dev': -> ipc.send('command', 'application:open-dev') 'application:open-safe': -> ipc.send('command', 'application:open-safe') 'application:open-api-preview': -> ipc.send('command', 'application:open-api-preview') + 'application:open-dev-api-preview': -> ipc.send('command', 'application:open-dev-api-preview') 'application:minimize': -> ipc.send('command', 'application:minimize') 'application:zoom': -> ipc.send('command', 'application:zoom') 'application:bring-all-windows-to-front': -> ipc.send('command', 'application:bring-all-windows-to-front') From 914c1b55e51d8b411b86a06a85d15b953eecb520 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 13:28:56 -0700 Subject: [PATCH 039/121] Pass through apiPreviewMode flag --- src/browser/atom-application.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/browser/atom-application.coffee b/src/browser/atom-application.coffee index ec4fe650a..45c0c8b5c 100644 --- a/src/browser/atom-application.coffee +++ b/src/browser/atom-application.coffee @@ -503,9 +503,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, window}) -> + promptForPathToOpen: (type, {devMode, safeMode, apiPreviewMode, window}) -> @promptForPath type, (pathsToOpen) => - @openPaths({pathsToOpen, devMode, safeMode, window}) + @openPaths({pathsToOpen, devMode, safeMode, apiPreviewMode, window}) promptForPath: (type, callback) -> properties = From f34b6c9e95f8d778dc7b2f1258293ff8831da200 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 14:25:37 -0700 Subject: [PATCH 040/121] Conditionally include deprecations in GrammarRegistry --- src/grammar-registry.coffee | 42 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/grammar-registry.coffee b/src/grammar-registry.coffee index 911ffafbe..b95b561da 100644 --- a/src/grammar-registry.coffee +++ b/src/grammar-registry.coffee @@ -1,14 +1,6 @@ -_ = require 'underscore-plus' -{deprecate} = require 'grim' -{specificity} = require 'clear-cut' -{Subscriber} = require 'emissary' {Emitter} = require 'event-kit' +{includeDeprecations, deprecate} = require 'grim' FirstMate = require 'first-mate' -{ScopeSelector} = FirstMate -ScopedPropertyStore = require 'scoped-property-store' -PropertyAccessors = require 'property-accessors' - -{$, $$} = require './space-pen-extensions' Token = require './token' # Extended: Syntax class holding the grammars used for tokenizing. @@ -19,16 +11,12 @@ Token = require './token' # language-specific comment regexes. See {::getProperty} for more details. module.exports = class GrammarRegistry extends FirstMate.GrammarRegistry - PropertyAccessors.includeInto(this) - Subscriber.includeInto(this) - @deserialize: ({grammarOverridesByPath}) -> grammarRegistry = new GrammarRegistry() grammarRegistry.grammarOverridesByPath = grammarOverridesByPath grammarRegistry atom.deserializers.add(this) - atom.deserializers.add(name: 'Syntax', deserialize: @deserialize) # Support old serialization constructor: -> super(maxTokensPerLine: 100) @@ -49,28 +37,38 @@ class GrammarRegistry extends FirstMate.GrammarRegistry # Returns a {Grammar}, never null. selectGrammar: (filePath, fileContents) -> super + clearObservers: -> + @off() if includeDeprecations + @emitter = new Emitter + +if includeDeprecations + PropertyAccessors = require 'property-accessors' + PropertyAccessors.includeInto(GrammarRegistry) + + {Subscriber} = require 'emissary' + Subscriber.includeInto(GrammarRegistry) + + # Support old serialization + atom.deserializers.add(name: 'Syntax', deserialize: GrammarRegistry.deserialize) + # Deprecated: Used by settings-view to display snippets for packages - @::accessor 'propertyStore', -> + GrammarRegistry::accessor 'propertyStore', -> deprecate("Do not use this. Use a public method on Config") atom.config.scopedSettingsStore - addProperties: (args...) -> + GrammarRegistry::addProperties = (args...) -> args.unshift(null) if args.length == 2 deprecate 'Consider using atom.config.set() instead. A direct (but private) replacement is available at atom.config.addScopedSettings().' atom.config.addScopedSettings(args...) - removeProperties: (name) -> + GrammarRegistry::removeProperties = (name) -> deprecate 'atom.config.addScopedSettings() now returns a disposable you can call .dispose() on' atom.config.scopedSettingsStore.removeProperties(name) - getProperty: (scope, keyPath) -> + GrammarRegistry::getProperty = (scope, keyPath) -> deprecate 'A direct (but private) replacement is available at atom.config.getRawScopedValue().' atom.config.getRawScopedValue(scope, keyPath) - propertiesForScope: (scope, keyPath) -> + GrammarRegistry::propertiesForScope = (scope, keyPath) -> deprecate 'Use atom.config.getAll instead.' atom.config.settingsForScopeDescriptor(scope, keyPath) - - clearObservers: -> - @off() - @emitter = new Emitter From b9570be338eda576cede3b1d1987b3d5b58e74c3 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 14:36:12 -0700 Subject: [PATCH 041/121] Conditionally include deprecations in PackageManager --- src/package-manager.coffee | 48 ++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 444497c5b..7399eaab1 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -1,7 +1,6 @@ path = require 'path' _ = require 'underscore-plus' -EmitterMixin = require('emissary').Emitter {Emitter} = require 'event-kit' fs = require 'fs-plus' Q = require 'q' @@ -28,8 +27,6 @@ ThemePackage = require './theme-package' # settings and also by calling `enablePackage()/disablePackage()`. module.exports = class PackageManager - EmitterMixin.includeInto(this) - constructor: ({configDirPath, @devMode, safeMode, @resourcePath}) -> @emitter = new Emitter @packageDirPaths = [] @@ -57,11 +54,6 @@ class PackageManager # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. onDidLoadInitialPackages: (callback) -> @emitter.on 'did-load-initial-packages', callback - @emitter.on 'did-load-all', callback # TODO: Remove once deprecated pre-1.0 APIs are gone - - onDidLoadAll: (callback) -> - Grim.deprecate("Use `::onDidLoadInitialPackages` instead.") - @onDidLoadInitialPackages(callback) # Public: Invoke the given callback when all packages have been activated. # @@ -70,11 +62,6 @@ class PackageManager # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. onDidActivateInitialPackages: (callback) -> @emitter.on 'did-activate-initial-packages', callback - @emitter.on 'did-activate-all', callback # TODO: Remove once deprecated pre-1.0 APIs are gone - - onDidActivateAll: (callback) -> - Grim.deprecate("Use `::onDidActivateInitialPackages` instead.") - @onDidActivateInitialPackages(callback) # Public: Invoke the given callback when a package is activated. # @@ -112,16 +99,6 @@ class PackageManager onDidUnloadPackage: (callback) -> @emitter.on 'did-unload-package', callback - on: (eventName) -> - switch eventName - when 'loaded' - Grim.deprecate 'Use PackageManager::onDidLoadInitialPackages instead' - when 'activated' - Grim.deprecate 'Use PackageManager::onDidActivateInitialPackages instead' - else - Grim.deprecate 'PackageManager::on is deprecated. Use event subscription methods instead.' - EmitterMixin::on.apply(this, arguments) - ### Section: Package system data ### @@ -331,7 +308,7 @@ class PackageManager packagePaths = packagePaths.filter (packagePath) => not @isPackageDisabled(path.basename(packagePath)) packagePaths = _.uniq packagePaths, (packagePath) -> path.basename(packagePath) @loadPackage(packagePath) for packagePath in packagePaths - @emit 'loaded' + @emit 'loaded' if Grim.includeDeprecations @emitter.emit 'did-load-initial-packages' loadPackage: (nameOrPath) -> @@ -380,7 +357,7 @@ class PackageManager packages = @getLoadedPackagesForTypes(types) promises = promises.concat(activator.activatePackages(packages)) Q.all(promises).then => - @emit 'activated' + @emit 'activated' if Grim.includeDeprecations @emitter.emit 'did-activate-initial-packages' # another type of package manager can handle other package types. @@ -432,3 +409,24 @@ class PackageManager stack = "#{error.stack}\n at #{metadataPath}:1:1" message = "Failed to load the #{path.basename(packagePath)} package" atom.notifications.addError(message, {stack, detail, dismissable: true}) + +if Grim.includeDeprecations + PackageManager::onDidLoadAll = (callback) -> + Grim.deprecate("Use `::onDidLoadInitialPackages` instead.") + @onDidLoadInitialPackages(callback) + + PackageManager::onDidActivateAll = (callback) -> + Grim.deprecate("Use `::onDidActivateInitialPackages` instead.") + @onDidActivateInitialPackages(callback) + + EmitterMixin = require('emissary').Emitter + EmitterMixin.includeInto(PackageManager) + PackageManager::on = (eventName) -> + switch eventName + when 'loaded' + Grim.deprecate 'Use PackageManager::onDidLoadInitialPackages instead' + when 'activated' + Grim.deprecate 'Use PackageManager::onDidActivateInitialPackages instead' + else + Grim.deprecate 'PackageManager::on is deprecated. Use event subscription methods instead.' + EmitterMixin::on.apply(this, arguments) From 484e78f09605c161c5f756fe66c460afcf0dec50 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 14:39:26 -0700 Subject: [PATCH 042/121] Conditionally include deprecations in Package --- src/package.coffee | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/package.coffee b/src/package.coffee index ebc771123..7b590aab4 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -4,10 +4,9 @@ _ = require 'underscore-plus' async = require 'async' CSON = require 'season' fs = require 'fs-plus' -EmitterMixin = require('emissary').Emitter {Emitter, CompositeDisposable} = require 'event-kit' Q = require 'q' -{deprecate} = require 'grim' +{includeDeprecations, deprecate} = require 'grim' ModuleCache = require './module-cache' ScopedProperties = require './scoped-properties' @@ -21,8 +20,6 @@ catch error # stylesheets, keymaps, grammar, editor properties, and menus. module.exports = class Package - EmitterMixin.includeInto(this) - @isBundledPackagePath: (packagePath) -> if atom.packages.devMode return false unless atom.packages.resourcePath.startsWith("#{process.resourcesPath}#{path.sep}") @@ -43,11 +40,11 @@ class Package metadata ?= {} metadata.name = packageName - if metadata.stylesheetMain? + if includeDeprecations and metadata.stylesheetMain? deprecate("Use the `mainStyleSheet` key instead of `stylesheetMain` in the `package.json` of `#{packageName}`", {packageName}) metadata.mainStyleSheet = metadata.stylesheetMain - if metadata.stylesheets? + if includeDeprecations and metadata.stylesheets? deprecate("Use the `styleSheets` key instead of `stylesheets` in the `package.json` of `#{packageName}`", {packageName}) metadata.styleSheets = metadata.stylesheets @@ -87,14 +84,6 @@ class Package onDidDeactivate: (callback) -> @emitter.on 'did-deactivate', callback - on: (eventName) -> - switch eventName - when 'deactivated' - deprecate 'Use Package::onDidDeactivate instead' - else - deprecate 'Package::on is deprecated. Use event subscription methods instead.' - EmitterMixin::on.apply(this, arguments) - ### Section: Instance Methods ### @@ -174,7 +163,7 @@ class Package if @mainModule? if @mainModule.config? and typeof @mainModule.config is 'object' atom.config.setSchema @name, {type: 'object', properties: @mainModule.config} - else if @mainModule.configDefaults? and typeof @mainModule.configDefaults is 'object' + else if includeDeprecations and @mainModule.configDefaults? and typeof @mainModule.configDefaults is 'object' deprecate """Use a config schema instead. See the configuration section of https://atom.io/docs/latest/hacking-atom-package-word-count and https://atom.io/docs/api/latest/Config for more details""" @@ -268,7 +257,7 @@ class Package [stylesheetPath, atom.themes.loadStylesheet(stylesheetPath, true)] getStylesheetsPath: -> - if fs.isDirectorySync(path.join(@path, 'stylesheets')) + if includeDeprecations and fs.isDirectorySync(path.join(@path, 'stylesheets')) deprecate("Store package style sheets in the `styles/` directory instead of `stylesheets/` in the `#{@name}` package", packageName: @name) path.join(@path, 'stylesheets') else @@ -339,7 +328,7 @@ class Package deferred = Q.defer() - if fs.isDirectorySync(path.join(@path, 'scoped-properties')) + if includeDeprecations and fs.isDirectorySync(path.join(@path, 'scoped-properties')) settingsDirPath = path.join(@path, 'scoped-properties') deprecate("Store package settings files in the `settings/` directory instead of `scoped-properties/`", packageName: @name) else @@ -467,7 +456,7 @@ class Package else if _.isArray(commands) @activationCommands[selector].push(commands...) - if @metadata.activationEvents? + if includeDeprecations and @metadata.activationEvents? deprecate """ Use `activationCommands` instead of `activationEvents` in your package.json Commands should be grouped by selector as follows: @@ -585,3 +574,15 @@ class Package stack = error.stack ? error atom.notifications.addFatalError(message, {stack, detail, dismissable: true}) + +if includeDeprecations + EmitterMixin = require('emissary').Emitter + EmitterMixin.includeInto(Package) + + Package::on = (eventName) -> + switch eventName + when 'deactivated' + deprecate 'Use Package::onDidDeactivate instead' + else + deprecate 'Package::on is deprecated. Use event subscription methods instead.' + EmitterMixin::on.apply(this, arguments) From 193ab71aca7ad131e00ba6d47640c48140502315 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 14:43:15 -0700 Subject: [PATCH 043/121] Call dispose instead of unsubscribe on marker --- src/display-buffer.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index aef36fc99..27e2ae936 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -1084,7 +1084,7 @@ class DisplayBuffer extends Model return destroyed: -> - marker.unsubscribe() for id, marker of @markers + marker.disposables.dispose() for id, marker of @markers @scopedConfigSubscriptions.dispose() @unsubscribe() @tokenizedBuffer.destroy() From 7a52ef7d0a0a5f5fa9f17e8f2329654398fdc899 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 14:50:55 -0700 Subject: [PATCH 044/121] Use disposables in Atom --- src/atom.coffee | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index 49a76481b..ace3245ef 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -7,7 +7,7 @@ shell = require 'shell' _ = require 'underscore-plus' {deprecate, includeDeprecations} = require 'grim' -{Emitter} = require 'event-kit' +{CompositeDisposable, Emitter} = require 'event-kit' {Model} = require 'theorist' fs = require 'fs-plus' {convertStackTrace, convertLine} = require 'coffeestack' @@ -198,6 +198,7 @@ class Atom extends Model # Call .loadOrCreate instead constructor: (@state) -> @emitter = new Emitter + @disposables = new CompositeDisposable {@mode} = @state DeserializerManager = require './deserializer-manager' @deserializers = new DeserializerManager() @@ -232,7 +233,9 @@ class Atom extends Model @emit 'uncaught-error', arguments... @emitter.emit 'did-throw-error', {message, url, line, column, originalError} - @unsubscribe() + @disposables?.dispose() + @disposables = new CompositeDisposable + @setBodyPlatformClass() @loadTime = null @@ -288,7 +291,7 @@ class Atom extends Model deprecate "The atom.syntax global is deprecated. Use atom.grammars instead." @grammars - @subscribe @packages.onDidActivateInitialPackages => @watchThemes() + @disposables.add @packages.onDidActivateInitialPackages => @watchThemes() Project = require './project' TextBuffer = require 'text-buffer' @@ -605,7 +608,7 @@ class Atom extends Model @requireUserInitScript() unless safeMode @menu.update() - @subscribe @config.onDidChange 'core.autoHideMenuBar', ({newValue}) => + @disposables.add @config.onDidChange 'core.autoHideMenuBar', ({newValue}) => @setAutoHideMenuBar(newValue) @setAutoHideMenuBar(true) if @config.get('core.autoHideMenuBar') @@ -755,7 +758,7 @@ class Atom extends Model # Notify the browser project of the window's current project path watchProjectPath: -> - @subscribe @project.onDidChangePaths => + @disposables.add @project.onDidChangePaths => @constructor.updateLoadSetting('initialPaths', @project.getPaths()) exit: (status) -> From 8eded9f9bdf5c3ae753cb3e62fc97e1943c781eb Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 14:52:12 -0700 Subject: [PATCH 045/121] Use disposables in DisplayBuffer --- src/display-buffer.coffee | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 27e2ae936..277a79200 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -42,6 +42,7 @@ class DisplayBuffer extends Model super @emitter = new Emitter + @disposables = new CompositeDisposable @tokenizedBuffer ?= new TokenizedBuffer({tabLength, buffer, @invisibles}) @buffer = @tokenizedBuffer.buffer @@ -50,10 +51,10 @@ class DisplayBuffer extends Model @foldsByMarkerId = {} @decorationsById = {} @decorationsByMarkerId = {} - @subscribe @tokenizedBuffer.observeGrammar @subscribeToScopedConfigSettings - @subscribe @tokenizedBuffer.onDidChange @handleTokenizedBufferChange - @subscribe @buffer.onDidUpdateMarkers @handleBufferMarkersUpdated - @subscribe @buffer.onDidCreateMarker @handleBufferMarkerCreated + @disposables.add @tokenizedBuffer.observeGrammar @subscribeToScopedConfigSettings + @disposables.add @tokenizedBuffer.onDidChange @handleTokenizedBufferChange + @disposables.add @buffer.onDidUpdateMarkers @handleBufferMarkersUpdated + @disposables.add @buffer.onDidCreateMarker @handleBufferMarkerCreated @updateAllScreenLines() @createFoldForMarker(marker) for marker in @buffer.findMarkers(@getFoldMarkerAttributes()) @@ -907,7 +908,7 @@ class DisplayBuffer extends Model decorateMarker: (marker, decorationParams) -> marker = @getMarker(marker.id) decoration = new Decoration(marker, this, decorationParams) - @subscribe decoration.onDidDestroy => @removeDecoration(decoration) + @disposables.add decoration.onDidDestroy => @removeDecoration(decoration) @decorationsByMarkerId[marker.id] ?= [] @decorationsByMarkerId[marker.id].push(decoration) @decorationsById[decoration.id] = decoration @@ -1086,7 +1087,7 @@ class DisplayBuffer extends Model destroyed: -> marker.disposables.dispose() for id, marker of @markers @scopedConfigSubscriptions.dispose() - @unsubscribe() + @disposables.dispose() @tokenizedBuffer.destroy() logLines: (start=0, end=@getLastRow()) -> From 382974412fa4151a5e7ea9e900d1363cd4884a21 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 15:01:53 -0700 Subject: [PATCH 046/121] Conditionally include deprecations in Workspace --- src/workspace.coffee | 143 ++++++++++++++++++++++--------------------- 1 file changed, 73 insertions(+), 70 deletions(-) diff --git a/src/workspace.coffee b/src/workspace.coffee index 4afce1f37..a5a4e5e30 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -1,4 +1,4 @@ -{deprecate} = require 'grim' +{includeDeprecations, deprecate} = require 'grim' _ = require 'underscore-plus' path = require 'path' {join} = path @@ -33,16 +33,6 @@ class Workspace extends Model atom.deserializers.add(this) Serializable.includeInto(this) - Object.defineProperty @::, 'activePaneItem', - get: -> - Grim.deprecate "Use ::getActivePaneItem() instead of the ::activePaneItem property" - @getActivePaneItem() - - Object.defineProperty @::, 'activePane', - get: -> - Grim.deprecate "Use ::getActivePane() instead of the ::activePane property" - @getActivePane() - @properties paneContainer: null fullScreen: false @@ -342,32 +332,6 @@ class Workspace extends Model @onDidAddPaneItem ({item, pane, index}) -> callback({textEditor: item, pane, index}) if item instanceof TextEditor - eachEditor: (callback) -> - deprecate("Use Workspace::observeTextEditors instead") - - callback(editor) for editor in @getEditors() - @subscribe this, 'editor-created', (editor) -> callback(editor) - - getEditors: -> - deprecate("Use Workspace::getTextEditors instead") - - editors = [] - for pane in @paneContainer.getPanes() - editors.push(item) for item in pane.getItems() when item instanceof TextEditor - - editors - - on: (eventName) -> - switch eventName - when 'editor-created' - deprecate("Use Workspace::onDidAddTextEditor or Workspace::observeTextEditors instead.") - when 'uri-opened' - deprecate("Use Workspace::onDidOpen or Workspace::onDidAddPaneItem instead. https://atom.io/docs/api/latest/Workspace#instance-onDidOpen") - else - deprecate("Subscribing via ::on is deprecated. Use documented event subscription methods instead.") - - super - ### Section: Opening ### @@ -425,7 +389,7 @@ class Workspace extends Model # the containing pane. Defaults to `true`. openSync: (uri='', options={}) -> # TODO: Remove deprecated changeFocus option - if options.changeFocus? + if includeDeprecations and options.changeFocus? deprecate("The `changeFocus` option has been renamed to `activatePane`") options.activatePane = options.changeFocus delete options.changeFocus @@ -446,7 +410,7 @@ class Workspace extends Model openURIInPane: (uri, pane, options={}) -> # TODO: Remove deprecated changeFocus option - if options.changeFocus? + if includeDeprecations and options.changeFocus? deprecate("The `changeFocus` option has been renamed to `activatePane`") options.activatePane = options.changeFocus delete options.changeFocus @@ -496,12 +460,6 @@ class Workspace extends Model else Q() - # Deprecated - reopenItemSync: -> - deprecate("Use Workspace::reopenItem instead") - if uri = @destroyedItemURIs.pop() - @openSync(uri) - # Public: Register an opener for a uri. # # An {TextEditor} will be used if no openers return a value. @@ -519,24 +477,20 @@ class Workspace extends Model # Returns a {Disposable} on which `.dispose()` can be called to remove the # opener. addOpener: (opener) -> - packageName = @getCallingPackageName() + if includeDeprecations + packageName = @getCallingPackageName() - wrappedOpener = (uri, options) -> - item = opener(uri, options) - if item? and typeof item.getUri is 'function' and typeof item.getURI isnt 'function' - Grim.deprecate("Pane item with class `#{item.constructor.name}` should implement `::getURI` instead of `::getUri`.", {packageName}) - item + wrappedOpener = (uri, options) -> + item = opener(uri, options) + if item? and typeof item.getUri is 'function' and typeof item.getURI isnt 'function' + Grim.deprecate("Pane item with class `#{item.constructor.name}` should implement `::getURI` instead of `::getUri`.", {packageName}) + item - @openers.push(wrappedOpener) - new Disposable => _.remove(@openers, wrappedOpener) - - registerOpener: (opener) -> - Grim.deprecate("Call Workspace::addOpener instead") - @addOpener(opener) - - unregisterOpener: (opener) -> - Grim.deprecate("Call .dispose() on the Disposable returned from ::addOpener instead") - _.remove(@openers, opener) + @openers.push(wrappedOpener) + new Disposable => _.remove(@openers, wrappedOpener) + else + @openers.push(opener) + new Disposable => _.remove(@openers, opener) getOpeners: -> @openers @@ -599,11 +553,6 @@ class Workspace extends Model activeItem = @getActivePaneItem() activeItem if activeItem instanceof TextEditor - # Deprecated - getActiveEditor: -> - Grim.deprecate "Call ::getActiveTextEditor instead" - @getActivePane()?.getActiveEditor() - # Save all pane items. saveAll: -> @paneContainer.saveAll() @@ -667,10 +616,6 @@ class Workspace extends Model paneForURI: (uri) -> @paneContainer.paneForURI(uri) - paneForUri: (uri) -> - deprecate("Use ::paneForURI instead.") - @paneForURI(uri) - # Extended: Get the {Pane} containing the given item. # # * `item` Item the returned pane contains. @@ -945,3 +890,61 @@ class Workspace extends Model checkFinished() deferred.promise + +if includeDeprecations + Object.defineProperty Workspace::, 'activePaneItem', + get: -> + Grim.deprecate "Use ::getActivePaneItem() instead of the ::activePaneItem property" + @getActivePaneItem() + + Object.defineProperty Workspace::, 'activePane', + get: -> + Grim.deprecate "Use ::getActivePane() instead of the ::activePane property" + @getActivePane() + + Workspace::eachEditor = (callback) -> + deprecate("Use Workspace::observeTextEditors instead") + + callback(editor) for editor in @getEditors() + @subscribe this, 'editor-created', (editor) -> callback(editor) + + Workspace::getEditors = -> + deprecate("Use Workspace::getTextEditors instead") + + editors = [] + for pane in @paneContainer.getPanes() + editors.push(item) for item in pane.getItems() when item instanceof TextEditor + + editors + + Workspace::on = (eventName) -> + switch eventName + when 'editor-created' + deprecate("Use Workspace::onDidAddTextEditor or Workspace::observeTextEditors instead.") + when 'uri-opened' + deprecate("Use Workspace::onDidOpen or Workspace::onDidAddPaneItem instead. https://atom.io/docs/api/latest/Workspace#instance-onDidOpen") + else + deprecate("Subscribing via ::on is deprecated. Use documented event subscription methods instead.") + + super + + Workspace::reopenItemSync = -> + deprecate("Use Workspace::reopenItem instead") + if uri = @destroyedItemURIs.pop() + @openSync(uri) + + Workspace::registerOpener = (opener) -> + Grim.deprecate("Call Workspace::addOpener instead") + @addOpener(opener) + + Workspace::unregisterOpener = (opener) -> + Grim.deprecate("Call .dispose() on the Disposable returned from ::addOpener instead") + _.remove(@openers, opener) + + Workspace::getActiveEditor = -> + Grim.deprecate "Call ::getActiveTextEditor instead" + @getActivePane()?.getActiveEditor() + + Workspace::paneForUri = (uri) -> + deprecate("Use ::paneForURI instead.") + @paneForURI(uri) From 8e56a252e014121a147e6386635547d8a99f4447 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 15:02:56 -0700 Subject: [PATCH 047/121] Only call emit when deprecations are included --- src/decoration.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/decoration.coffee b/src/decoration.coffee index 92316042c..b3ad4b7ff 100644 --- a/src/decoration.coffee +++ b/src/decoration.coffee @@ -66,7 +66,7 @@ class Decoration @markerDestroyDisposable.dispose() @markerDestroyDisposable = null @destroyed = true - @emit 'destroyed' + @emit 'destroyed' if Grim.includeDeprecations @emitter.emit 'did-destroy' @emitter.dispose() @@ -137,7 +137,7 @@ class Decoration oldProperties = @properties @properties = newProperties @properties.id = @id - @emit 'updated', {oldParams: oldProperties, newParams: newProperties} + @emit 'updated', {oldParams: oldProperties, newParams: newProperties} if Grim.includeDeprecations @emitter.emit 'did-change-properties', {oldProperties, newProperties} ### @@ -157,7 +157,7 @@ class Decoration flashObject = {class: klass, duration} @flashQueue ?= [] @flashQueue.push(flashObject) - @emit 'flash' + @emit 'flash' if Grim.includeDeprecations @emitter.emit 'did-flash' consumeNextFlash: -> From b0b9172154d523f9a1e04af62f65138a27401f4d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 15:24:40 -0700 Subject: [PATCH 048/121] Conditionally include deprecations in TextEditor --- src/text-editor.coffee | 437 +++++++++++++++++++++-------------------- 1 file changed, 226 insertions(+), 211 deletions(-) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 548725cf6..1821a8a52 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -2,7 +2,7 @@ _ = require 'underscore-plus' path = require 'path' Serializable = require 'serializable' Delegator = require 'delegato' -{deprecate} = require 'grim' +{includeDeprecations, deprecate} = require 'grim' {Model} = require 'theorist' EmitterMixin = require('emissary').Emitter {CompositeDisposable, Emitter} = require 'event-kit' @@ -174,9 +174,6 @@ class TextEditor extends Model subscriptions.add atom.config.onDidChange 'editor.showInvisibles', scope: scopeDescriptor, => @updateInvisibles() subscriptions.add atom.config.onDidChange 'editor.invisibles', scope: scopeDescriptor, => @updateInvisibles() - getViewClass: -> - require './text-editor-view' - destroyed: -> @unsubscribe() @scopedConfigSubscriptions.dispose() @@ -461,76 +458,12 @@ class TextEditor extends Model onDidChangeIcon: (callback) -> @emitter.on 'did-change-icon', callback - on: (eventName) -> - switch eventName - when 'title-changed' - deprecate("Use TextEditor::onDidChangeTitle instead") - when 'path-changed' - deprecate("Use TextEditor::onDidChangePath instead") - when 'modified-status-changed' - deprecate("Use TextEditor::onDidChangeModified instead") - when 'soft-wrap-changed' - deprecate("Use TextEditor::onDidChangeSoftWrapped instead") - when 'grammar-changed' - deprecate("Use TextEditor::onDidChangeGrammar instead") - when 'character-widths-changed' - deprecate("Use TextEditor::onDidChangeCharacterWidths instead") - when 'contents-modified' - deprecate("Use TextEditor::onDidStopChanging instead") - when 'contents-conflicted' - deprecate("Use TextEditor::onDidConflict instead") - - when 'will-insert-text' - deprecate("Use TextEditor::onWillInsertText instead") - when 'did-insert-text' - deprecate("Use TextEditor::onDidInsertText instead") - - when 'cursor-added' - deprecate("Use TextEditor::onDidAddCursor instead") - when 'cursor-removed' - deprecate("Use TextEditor::onDidRemoveCursor instead") - when 'cursor-moved' - deprecate("Use TextEditor::onDidChangeCursorPosition instead") - - when 'selection-added' - deprecate("Use TextEditor::onDidAddSelection instead") - when 'selection-removed' - deprecate("Use TextEditor::onDidRemoveSelection instead") - when 'selection-screen-range-changed' - deprecate("Use TextEditor::onDidChangeSelectionRange instead") - - when 'decoration-added' - deprecate("Use TextEditor::onDidAddDecoration instead") - when 'decoration-removed' - deprecate("Use TextEditor::onDidRemoveDecoration instead") - when 'decoration-updated' - deprecate("Use Decoration::onDidChangeProperties instead. You will get the decoration back from `TextEditor::decorateMarker()`") - when 'decoration-changed' - deprecate("Use Marker::onDidChange instead. e.g. `editor::decorateMarker(...).getMarker().onDidChange()`") - - when 'screen-lines-changed' - deprecate("Use TextEditor::onDidChange instead") - - when 'scroll-top-changed' - deprecate("Use TextEditor::onDidChangeScrollTop instead") - when 'scroll-left-changed' - deprecate("Use TextEditor::onDidChangeScrollLeft instead") - - else - deprecate("TextEditor::on is deprecated. Use documented event subscription methods instead.") - - EmitterMixin::on.apply(this, arguments) - # Retrieves the current {TextBuffer}. getBuffer: -> @buffer # Retrieves the current buffer's URI. getURI: -> @buffer.getUri() - getUri: -> - deprecate("Use `::getURI` instead") - @getURI() - # Create an {TextEditor} with its initial state based on this object copy: -> displayBuffer = @displayBuffer.copy() @@ -698,9 +631,6 @@ class TextEditor extends Model # # * `bufferRow` A {Number} representing a zero-indexed buffer row. lineTextForBufferRow: (bufferRow) -> @buffer.lineForRow(bufferRow) - lineForBufferRow: (bufferRow) -> - deprecate 'Use TextEditor::lineTextForBufferRow(bufferRow) instead' - @lineTextForBufferRow(bufferRow) # Essential: Returns a {String} representing the contents of the line at the # given screen row. @@ -714,23 +644,9 @@ class TextEditor extends Model # # Returns {TokenizedLine} tokenizedLineForScreenRow: (screenRow) -> @displayBuffer.tokenizedLineForScreenRow(screenRow) - lineForScreenRow: (screenRow) -> - deprecate "TextEditor::tokenizedLineForScreenRow(bufferRow) is the new name. But it's private. Try to use TextEditor::lineTextForScreenRow instead" - @tokenizedLineForScreenRow(screenRow) # {Delegates to: DisplayBuffer.tokenizedLinesForScreenRows} tokenizedLinesForScreenRows: (start, end) -> @displayBuffer.tokenizedLinesForScreenRows(start, end) - linesForScreenRows: (start, end) -> - deprecate "Use TextEditor::tokenizedLinesForScreenRows instead" - @tokenizedLinesForScreenRows(start, end) - - # Returns a {Number} representing the line length for the given - # buffer row, exclusive of its line-ending character(s). - # - # * `row` A {Number} indicating the buffer row. - lineLengthForBufferRow: (row) -> - deprecate "Use editor.lineTextForBufferRow(row).length instead" - @lineTextForBufferRow(row).length bufferRowForScreenRow: (row) -> @displayBuffer.bufferRowForScreenRow(row) @@ -981,11 +897,6 @@ class TextEditor extends Model @createFold(foldStartRow + delta, foldEndRow + delta) return - # Deprecated: Use {::duplicateLines} instead. - duplicateLine: -> - deprecate("Use TextEditor::duplicateLines() instead") - @duplicateLines() - replaceSelectedText: (options={}, fn) -> {selectWordIfEmpty} = options @mutateSelectedText (selection) -> @@ -1116,16 +1027,6 @@ class TextEditor extends Model deleteLine: -> @mutateSelectedText (selection) -> selection.deleteLine() - # Deprecated: Use {::deleteToBeginningOfWord} instead. - backspaceToBeginningOfWord: -> - deprecate("Use TextEditor::deleteToBeginningOfWord() instead") - @deleteToBeginningOfWord() - - # Deprecated: Use {::deleteToBeginningOfLine} instead. - backspaceToBeginningOfLine: -> - deprecate("Use TextEditor::deleteToBeginningOfLine() instead") - @deleteToBeginningOfLine() - ### Section: History ### @@ -1351,7 +1252,7 @@ class TextEditor extends Model # # Returns a {Decoration} object decorateMarker: (marker, decorationParams) -> - if decorationParams.type is 'gutter' + if includeDeprecations and decorationParams.type is 'gutter' deprecate("Decorations of `type: 'gutter'` have been renamed to `type: 'line-number'`.") decorationParams.type = 'line-number' @displayBuffer.decorateMarker(marker, decorationParams) @@ -1387,11 +1288,6 @@ class TextEditor extends Model getLineDecorations: (propertyFilter) -> @displayBuffer.getLineDecorations(propertyFilter) - # Soft-deprecated (forgot to deprecated this pre 1.0) - getGutterDecorations: (propertyFilter) -> - deprecate("Use ::getLineNumberDecorations instead") - @getLineNumberDecorations(propertyFilter) - # Extended: Get all decorations of type 'line-number'. # # * `propertyFilter` (optional) An {Object} containing key value pairs that @@ -1585,13 +1481,6 @@ class TextEditor extends Model getCursorScreenPositions: -> cursor.getScreenPosition() for cursor in @getCursors() - # Get the row of the most recently added cursor in screen coordinates. - # - # Returns the screen row {Number}. - getCursorScreenRow: -> - deprecate('Use `editor.getCursorScreenPosition().row` instead') - @getCursorScreenPosition().row - # Essential: Move the cursor to the given position in screen coordinates. # # If there are multiple cursors, they will be consolidated to a single cursor. @@ -1632,85 +1521,52 @@ class TextEditor extends Model # * `lineCount` (optional) {Number} number of lines to move moveUp: (lineCount) -> @moveCursors (cursor) -> cursor.moveUp(lineCount, moveToEndOfSelection: true) - moveCursorUp: (lineCount) -> - deprecate("Use TextEditor::moveUp() instead") - @moveUp(lineCount) # Essential: Move every cursor down one row in screen coordinates. # # * `lineCount` (optional) {Number} number of lines to move moveDown: (lineCount) -> @moveCursors (cursor) -> cursor.moveDown(lineCount, moveToEndOfSelection: true) - moveCursorDown: (lineCount) -> - deprecate("Use TextEditor::moveDown() instead") - @moveDown(lineCount) # Essential: Move every cursor left one column. # # * `columnCount` (optional) {Number} number of columns to move (default: 1) moveLeft: (columnCount) -> @moveCursors (cursor) -> cursor.moveLeft(columnCount, moveToEndOfSelection: true) - moveCursorLeft: -> - deprecate("Use TextEditor::moveLeft() instead") - @moveLeft() # Essential: Move every cursor right one column. # # * `columnCount` (optional) {Number} number of columns to move (default: 1) moveRight: (columnCount) -> @moveCursors (cursor) -> cursor.moveRight(columnCount, moveToEndOfSelection: true) - moveCursorRight: -> - deprecate("Use TextEditor::moveRight() instead") - @moveRight() # Essential: Move every cursor to the beginning of its line in buffer coordinates. moveToBeginningOfLine: -> @moveCursors (cursor) -> cursor.moveToBeginningOfLine() - moveCursorToBeginningOfLine: -> - deprecate("Use TextEditor::moveToBeginningOfLine() instead") - @moveToBeginningOfLine() # Essential: Move every cursor to the beginning of its line in screen coordinates. moveToBeginningOfScreenLine: -> @moveCursors (cursor) -> cursor.moveToBeginningOfScreenLine() - moveCursorToBeginningOfScreenLine: -> - deprecate("Use TextEditor::moveToBeginningOfScreenLine() instead") - @moveToBeginningOfScreenLine() # Essential: Move every cursor to the first non-whitespace character of its line. moveToFirstCharacterOfLine: -> @moveCursors (cursor) -> cursor.moveToFirstCharacterOfLine() - moveCursorToFirstCharacterOfLine: -> - deprecate("Use TextEditor::moveToFirstCharacterOfLine() instead") - @moveToFirstCharacterOfLine() # Essential: Move every cursor to the end of its line in buffer coordinates. moveToEndOfLine: -> @moveCursors (cursor) -> cursor.moveToEndOfLine() - moveCursorToEndOfLine: -> - deprecate("Use TextEditor::moveToEndOfLine() instead") - @moveToEndOfLine() # Essential: Move every cursor to the end of its line in screen coordinates. moveToEndOfScreenLine: -> @moveCursors (cursor) -> cursor.moveToEndOfScreenLine() - moveCursorToEndOfScreenLine: -> - deprecate("Use TextEditor::moveToEndOfScreenLine() instead") - @moveToEndOfScreenLine() # Essential: Move every cursor to the beginning of its surrounding word. moveToBeginningOfWord: -> @moveCursors (cursor) -> cursor.moveToBeginningOfWord() - moveCursorToBeginningOfWord: -> - deprecate("Use TextEditor::moveToBeginningOfWord() instead") - @moveToBeginningOfWord() # Essential: Move every cursor to the end of its surrounding word. moveToEndOfWord: -> @moveCursors (cursor) -> cursor.moveToEndOfWord() - moveCursorToEndOfWord: -> - deprecate("Use TextEditor::moveToEndOfWord() instead") - @moveToEndOfWord() # Cursor Extended @@ -1719,63 +1575,37 @@ class TextEditor extends Model # If there are multiple cursors, they will be merged into a single cursor. moveToTop: -> @moveCursors (cursor) -> cursor.moveToTop() - moveCursorToTop: -> - deprecate("Use TextEditor::moveToTop() instead") - @moveToTop() # Extended: Move every cursor to the bottom of the buffer. # # If there are multiple cursors, they will be merged into a single cursor. moveToBottom: -> @moveCursors (cursor) -> cursor.moveToBottom() - moveCursorToBottom: -> - deprecate("Use TextEditor::moveToBottom() instead") - @moveToBottom() # Extended: Move every cursor to the beginning of the next word. moveToBeginningOfNextWord: -> @moveCursors (cursor) -> cursor.moveToBeginningOfNextWord() - moveCursorToBeginningOfNextWord: -> - deprecate("Use TextEditor::moveToBeginningOfNextWord() instead") - @moveToBeginningOfNextWord() # Extended: Move every cursor to the previous word boundary. moveToPreviousWordBoundary: -> @moveCursors (cursor) -> cursor.moveToPreviousWordBoundary() - moveCursorToPreviousWordBoundary: -> - deprecate("Use TextEditor::moveToPreviousWordBoundary() instead") - @moveToPreviousWordBoundary() # Extended: Move every cursor to the next word boundary. moveToNextWordBoundary: -> @moveCursors (cursor) -> cursor.moveToNextWordBoundary() - moveCursorToNextWordBoundary: -> - deprecate("Use TextEditor::moveToNextWordBoundary() instead") - @moveToNextWordBoundary() # Extended: Move every cursor to the beginning of the next paragraph. moveToBeginningOfNextParagraph: -> @moveCursors (cursor) -> cursor.moveToBeginningOfNextParagraph() - moveCursorToBeginningOfNextParagraph: -> - deprecate("Use TextEditor::moveToBeginningOfNextParagraph() instead") - @moveToBeginningOfNextParagraph() # Extended: Move every cursor to the beginning of the previous paragraph. moveToBeginningOfPreviousParagraph: -> @moveCursors (cursor) -> cursor.moveToBeginningOfPreviousParagraph() - moveCursorToBeginningOfPreviousParagraph: -> - deprecate("Use TextEditor::moveToBeginningOfPreviousParagraph() instead") - @moveToBeginningOfPreviousParagraph() # Extended: Returns the most recently added {Cursor} getLastCursor: -> _.last(@cursors) - # Deprecated: - getCursor: -> - deprecate("Use TextEditor::getLastCursor() instead") - @getLastCursor() - # Extended: Returns the word surrounding the most recently added cursor. # # * `options` (optional) See {Cursor::getBeginningOfCurrentWordBufferPosition}. @@ -2087,16 +1917,10 @@ class TextEditor extends Model # This method merges selections on successive lines. selectLinesContainingCursors: -> @expandSelectionsForward (selection) -> selection.selectLine() - selectLine: -> - deprecate('Use TextEditor::selectLinesContainingCursors instead') - @selectLinesContainingCursors() # Essential: Select the word surrounding each cursor. selectWordsContainingCursors: -> @expandSelectionsForward (selection) -> selection.selectWord() - selectWord: -> - deprecate('Use TextEditor::selectWordsContainingCursors instead') - @selectWordsContainingCursors() # Selection Extended @@ -2152,15 +1976,6 @@ class TextEditor extends Model getLastSelection: -> _.last(@selections) - # Deprecated: - getSelection: (index) -> - if index? - deprecate("Use TextEditor::getSelections()[index] instead when getting a specific selection") - @getSelections()[index] - else - deprecate("Use TextEditor::getLastSelection() instead") - @getLastSelection() - # Extended: Get current {Selection}s. # # Returns: An {Array} of {Selection}s. @@ -2428,9 +2243,6 @@ class TextEditor extends Model # # Returns a {Boolean}. isSoftWrapped: (softWrapped) -> @displayBuffer.isSoftWrapped() - getSoftWrapped: -> - deprecate("Use TextEditor::isSoftWrapped instead") - @displayBuffer.isSoftWrapped() # Essential: Enable or disable soft wrapping for this editor. # @@ -2438,17 +2250,11 @@ class TextEditor extends Model # # Returns a {Boolean}. setSoftWrapped: (softWrapped) -> @displayBuffer.setSoftWrapped(softWrapped) - setSoftWrap: (softWrapped) -> - deprecate("Use TextEditor::setSoftWrapped instead") - @setSoftWrapped(softWrapped) # Essential: Toggle soft wrapping for this editor # # Returns a {Boolean}. toggleSoftWrapped: -> @setSoftWrapped(not @isSoftWrapped()) - toggleSoftWrap: -> - deprecate("Use TextEditor::toggleSoftWrapped instead") - @toggleSoftWrapped() # Public: Gets the column at which column will soft wrap getSoftWrapColumn: -> @displayBuffer.getSoftWrapColumn() @@ -2573,9 +2379,6 @@ class TextEditor extends Model # Returns a {ScopeDescriptor}. scopeDescriptorForBufferPosition: (bufferPosition) -> @displayBuffer.scopeDescriptorForBufferPosition(bufferPosition) - scopesForBufferPosition: (bufferPosition) -> - deprecate 'Use ::scopeDescriptorForBufferPosition instead. The return value has changed! It now returns a `ScopeDescriptor`' - @scopeDescriptorForBufferPosition(bufferPosition).getScopesArray() # Extended: Get the range in buffer coordinates of all tokens surrounding the # cursor that match the given scope selector. @@ -2607,13 +2410,6 @@ class TextEditor extends Model # {Delegates to: DisplayBuffer.tokenForBufferPosition} tokenForBufferPosition: (bufferPosition) -> @displayBuffer.tokenForBufferPosition(bufferPosition) - scopesAtCursor: -> - deprecate 'Use editor.getLastCursor().getScopeDescriptor() instead' - @getLastCursor().getScopeDescriptor().getScopesArray() - getCursorScopes: -> - deprecate 'Use editor.getLastCursor().getScopeDescriptor() instead' - @scopesAtCursor() - ### Section: Clipboard Operations ### @@ -3030,11 +2826,6 @@ class TextEditor extends Model pixelRectForScreenRange: (screenRange) -> @displayBuffer.pixelRectForScreenRange(screenRange) - # Deprecated: Call {::joinLines} instead. - joinLine: -> - deprecate("Use TextEditor::joinLines() instead") - @joinLines() - ### Section: Utility ### @@ -3043,3 +2834,227 @@ class TextEditor extends Model "" logScreenLines: (start, end) -> @displayBuffer.logLines(start, end) + +if includeDeprecations + TextEditor::getViewClass = -> + require './text-editor-view' + + TextEditor::joinLine = -> + deprecate("Use TextEditor::joinLines() instead") + @joinLines() + + TextEditor::scopesAtCursor = -> + deprecate 'Use editor.getLastCursor().getScopeDescriptor() instead' + @getLastCursor().getScopeDescriptor().getScopesArray() + + TextEditor::getCursorScopes = -> + deprecate 'Use editor.getLastCursor().getScopeDescriptor() instead' + @scopesAtCursor() + + TextEditor::getUri = -> + deprecate("Use `::getURI` instead") + @getURI() + + TextEditor::lineForBufferRow = (bufferRow) -> + deprecate 'Use TextEditor::lineTextForBufferRow(bufferRow) instead' + @lineTextForBufferRow(bufferRow) + + TextEditor::lineForScreenRow = (screenRow) -> + deprecate "TextEditor::tokenizedLineForScreenRow(bufferRow) is the new name. But it's private. Try to use TextEditor::lineTextForScreenRow instead" + @tokenizedLineForScreenRow(screenRow) + + TextEditor::linesForScreenRows = (start, end) -> + deprecate "Use TextEditor::tokenizedLinesForScreenRows instead" + @tokenizedLinesForScreenRows(start, end) + + TextEditor::lineLengthForBufferRow = (row) -> + deprecate "Use editor.lineTextForBufferRow(row).length instead" + @lineTextForBufferRow(row).length + + TextEditor::duplicateLine = -> + deprecate("Use TextEditor::duplicateLines() instead") + @duplicateLines() + + TextEditor::scopesForBufferPosition = (bufferPosition) -> + deprecate 'Use ::scopeDescriptorForBufferPosition instead. The return value has changed! It now returns a `ScopeDescriptor`' + @scopeDescriptorForBufferPosition(bufferPosition).getScopesArray() + + TextEditor::toggleSoftWrap = -> + deprecate("Use TextEditor::toggleSoftWrapped instead") + @toggleSoftWrapped() + + TextEditor::setSoftWrap = (softWrapped) -> + deprecate("Use TextEditor::setSoftWrapped instead") + @setSoftWrapped(softWrapped) + + TextEditor::backspaceToBeginningOfWord = -> + deprecate("Use TextEditor::deleteToBeginningOfWord() instead") + @deleteToBeginningOfWord() + + TextEditor::backspaceToBeginningOfLine = -> + deprecate("Use TextEditor::deleteToBeginningOfLine() instead") + @deleteToBeginningOfLine() + + TextEditor::getGutterDecorations = (propertyFilter) -> + deprecate("Use ::getLineNumberDecorations instead") + @getLineNumberDecorations(propertyFilter) + + TextEditor::getCursorScreenRow = -> + deprecate('Use `editor.getCursorScreenPosition().row` instead') + @getCursorScreenPosition().row + + TextEditor::moveCursorUp = (lineCount) -> + deprecate("Use TextEditor::moveUp() instead") + @moveUp(lineCount) + + TextEditor::moveCursorDown = (lineCount) -> + deprecate("Use TextEditor::moveDown() instead") + @moveDown(lineCount) + + TextEditor::moveCursorLeft = -> + deprecate("Use TextEditor::moveLeft() instead") + @moveLeft() + + TextEditor::moveCursorRight = -> + deprecate("Use TextEditor::moveRight() instead") + @moveRight() + + TextEditor::moveCursorToBeginningOfLine = -> + deprecate("Use TextEditor::moveToBeginningOfLine() instead") + @moveToBeginningOfLine() + + TextEditor::moveCursorToBeginningOfScreenLine = -> + deprecate("Use TextEditor::moveToBeginningOfScreenLine() instead") + @moveToBeginningOfScreenLine() + + TextEditor::moveCursorToFirstCharacterOfLine = -> + deprecate("Use TextEditor::moveToFirstCharacterOfLine() instead") + @moveToFirstCharacterOfLine() + + TextEditor::moveCursorToEndOfLine = -> + deprecate("Use TextEditor::moveToEndOfLine() instead") + @moveToEndOfLine() + + TextEditor::moveCursorToEndOfScreenLine = -> + deprecate("Use TextEditor::moveToEndOfScreenLine() instead") + @moveToEndOfScreenLine() + + TextEditor::moveCursorToBeginningOfWord = -> + deprecate("Use TextEditor::moveToBeginningOfWord() instead") + @moveToBeginningOfWord() + + TextEditor::moveCursorToEndOfWord = -> + deprecate("Use TextEditor::moveToEndOfWord() instead") + @moveToEndOfWord() + + TextEditor::moveCursorToTop = -> + deprecate("Use TextEditor::moveToTop() instead") + @moveToTop() + + TextEditor::moveCursorToBottom = -> + deprecate("Use TextEditor::moveToBottom() instead") + @moveToBottom() + + TextEditor::moveCursorToBeginningOfNextWord = -> + deprecate("Use TextEditor::moveToBeginningOfNextWord() instead") + @moveToBeginningOfNextWord() + + TextEditor::moveCursorToPreviousWordBoundary = -> + deprecate("Use TextEditor::moveToPreviousWordBoundary() instead") + @moveToPreviousWordBoundary() + + TextEditor::moveCursorToNextWordBoundary = -> + deprecate("Use TextEditor::moveToNextWordBoundary() instead") + @moveToNextWordBoundary() + + TextEditor::moveCursorToBeginningOfNextParagraph = -> + deprecate("Use TextEditor::moveToBeginningOfNextParagraph() instead") + @moveToBeginningOfNextParagraph() + + TextEditor::moveCursorToBeginningOfPreviousParagraph = -> + deprecate("Use TextEditor::moveToBeginningOfPreviousParagraph() instead") + @moveToBeginningOfPreviousParagraph() + + TextEditor::getCursor = -> + deprecate("Use TextEditor::getLastCursor() instead") + @getLastCursor() + + TextEditor::selectLine = -> + deprecate('Use TextEditor::selectLinesContainingCursors instead') + @selectLinesContainingCursors() + + TextEditor::selectWord = -> + deprecate('Use TextEditor::selectWordsContainingCursors instead') + @selectWordsContainingCursors() + + TextEditor::getSelection = (index) -> + if index? + deprecate("Use TextEditor::getSelections()[index] instead when getting a specific selection") + @getSelections()[index] + else + deprecate("Use TextEditor::getLastSelection() instead") + @getLastSelection() + + TextEditor::getSoftWrapped = -> + deprecate("Use TextEditor::isSoftWrapped instead") + @displayBuffer.isSoftWrapped() + + TextEditor::on = (eventName) -> + switch eventName + when 'title-changed' + deprecate("Use TextEditor::onDidChangeTitle instead") + when 'path-changed' + deprecate("Use TextEditor::onDidChangePath instead") + when 'modified-status-changed' + deprecate("Use TextEditor::onDidChangeModified instead") + when 'soft-wrap-changed' + deprecate("Use TextEditor::onDidChangeSoftWrapped instead") + when 'grammar-changed' + deprecate("Use TextEditor::onDidChangeGrammar instead") + when 'character-widths-changed' + deprecate("Use TextEditor::onDidChangeCharacterWidths instead") + when 'contents-modified' + deprecate("Use TextEditor::onDidStopChanging instead") + when 'contents-conflicted' + deprecate("Use TextEditor::onDidConflict instead") + + when 'will-insert-text' + deprecate("Use TextEditor::onWillInsertText instead") + when 'did-insert-text' + deprecate("Use TextEditor::onDidInsertText instead") + + when 'cursor-added' + deprecate("Use TextEditor::onDidAddCursor instead") + when 'cursor-removed' + deprecate("Use TextEditor::onDidRemoveCursor instead") + when 'cursor-moved' + deprecate("Use TextEditor::onDidChangeCursorPosition instead") + + when 'selection-added' + deprecate("Use TextEditor::onDidAddSelection instead") + when 'selection-removed' + deprecate("Use TextEditor::onDidRemoveSelection instead") + when 'selection-screen-range-changed' + deprecate("Use TextEditor::onDidChangeSelectionRange instead") + + when 'decoration-added' + deprecate("Use TextEditor::onDidAddDecoration instead") + when 'decoration-removed' + deprecate("Use TextEditor::onDidRemoveDecoration instead") + when 'decoration-updated' + deprecate("Use Decoration::onDidChangeProperties instead. You will get the decoration back from `TextEditor::decorateMarker()`") + when 'decoration-changed' + deprecate("Use Marker::onDidChange instead. e.g. `editor::decorateMarker(...).getMarker().onDidChange()`") + + when 'screen-lines-changed' + deprecate("Use TextEditor::onDidChange instead") + + when 'scroll-top-changed' + deprecate("Use TextEditor::onDidChangeScrollTop instead") + when 'scroll-left-changed' + deprecate("Use TextEditor::onDidChangeScrollLeft instead") + + else + deprecate("TextEditor::on is deprecated. Use documented event subscription methods instead.") + + EmitterMixin::on.apply(this, arguments) From 164d5e46b0552cf5012bce20958f61e3d9467ac3 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 15:29:58 -0700 Subject: [PATCH 049/121] Only call emit when including deprecations --- src/package.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/package.coffee b/src/package.coffee index 7b590aab4..f9d3ac576 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -356,7 +356,7 @@ class Package @mainModule?.deactivate?() catch e console.error "Error deactivating package '#{@name}'", e.stack - @emit 'deactivated' + @emit 'deactivated' if includeDeprecations @emitter.emit 'did-deactivate' deactivateConfig: -> From 97bf4fb4d18f739cd385f6e3678f11ce3ae028de Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 15:56:29 -0700 Subject: [PATCH 050/121] :arrow_up: command-palette@0.35 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 795ee2bc6..02b3c9669 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "background-tips": "0.23.0", "bookmarks": "0.35.0", "bracket-matcher": "0.73.0", - "command-palette": "0.34.0", + "command-palette": "0.35.0", "deprecation-cop": "0.39.0", "dev-live-reload": "0.45.0", "encoding-selector": "0.19.0", From c24948ebccb2c510d3963ec0c624052f8d201ff5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 16:15:09 -0700 Subject: [PATCH 051/121] Conditionally include deprecations in Pane --- src/pane.coffee | 85 +++++++++++++++++++++++++------------------------ 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/src/pane.coffee b/src/pane.coffee index a6e456d6a..d1e83c609 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -42,7 +42,7 @@ class Pane extends Model # Called by the Serializable mixin during serialization. serializeParams: -> - if typeof @activeItem?.getURI is 'function' + if Grim.includeDeprecations and typeof @activeItem?.getURI is 'function' activeItemURI = @activeItem.getURI() else if typeof @activeItem?.getUri is 'function' activeItemURI = @activeItem.getUri() @@ -203,39 +203,6 @@ class Pane extends Model onWillDestroyItem: (callback) -> @emitter.on 'will-destroy-item', callback - on: (eventName) -> - switch eventName - when 'activated' - Grim.deprecate("Use Pane::onDidActivate instead") - when 'destroyed' - Grim.deprecate("Use Pane::onDidDestroy instead") - when 'item-added' - Grim.deprecate("Use Pane::onDidAddItem instead") - when 'item-removed' - Grim.deprecate("Use Pane::onDidRemoveItem instead") - when 'item-moved' - Grim.deprecate("Use Pane::onDidMoveItem instead") - when 'before-item-destroyed' - Grim.deprecate("Use Pane::onWillDestroyItem instead") - else - Grim.deprecate("Subscribing via ::on is deprecated. Use documented event subscription methods instead.") - super - - behavior: (behaviorName) -> - switch behaviorName - when 'active' - Grim.deprecate("The $active behavior property is deprecated. Use ::observeActive or ::onDidChangeActive instead.") - when 'container' - Grim.deprecate("The $container behavior property is deprecated.") - when 'activeItem' - Grim.deprecate("The $activeItem behavior property is deprecated. Use ::observeActiveItem or ::onDidChangeActiveItem instead.") - when 'focused' - Grim.deprecate("The $focused behavior property is deprecated.") - else - Grim.deprecate("Pane::behavior is deprecated. Use event subscription methods instead.") - - super - # Called by the view layer to indicate that the pane has gained focus. focus: -> @focused = true @@ -535,10 +502,6 @@ class Pane extends Model itemUri is uri - itemForUri: (uri) -> - Grim.deprecate("Use `::itemForURI` instead.") - @itemForURI(uri) - # Public: Activate the first item that matches the given URI. # # Returns a {Boolean} indicating whether an item matching the URI was found. @@ -549,10 +512,6 @@ class Pane extends Model else false - activateItemForUri: (uri) -> - Grim.deprecate("Use `::activateItemForURI` instead.") - @activateItemForURI(uri) - copyActiveItem: -> if @activeItem? @activeItem.copy?() ? atom.deserializers.deserialize(@activeItem.serialize()) @@ -701,3 +660,45 @@ class Pane extends Model atom.notifications.addWarning("Unable to save file: A directory in the path '#{fileName}' could not be written to") else throw error + +if Grim.includeDeprecations + Pane::on = (eventName) -> + switch eventName + when 'activated' + Grim.deprecate("Use Pane::onDidActivate instead") + when 'destroyed' + Grim.deprecate("Use Pane::onDidDestroy instead") + when 'item-added' + Grim.deprecate("Use Pane::onDidAddItem instead") + when 'item-removed' + Grim.deprecate("Use Pane::onDidRemoveItem instead") + when 'item-moved' + Grim.deprecate("Use Pane::onDidMoveItem instead") + when 'before-item-destroyed' + Grim.deprecate("Use Pane::onWillDestroyItem instead") + else + Grim.deprecate("Subscribing via ::on is deprecated. Use documented event subscription methods instead.") + super + + Pane::behavior = (behaviorName) -> + switch behaviorName + when 'active' + Grim.deprecate("The $active behavior property is deprecated. Use ::observeActive or ::onDidChangeActive instead.") + when 'container' + Grim.deprecate("The $container behavior property is deprecated.") + when 'activeItem' + Grim.deprecate("The $activeItem behavior property is deprecated. Use ::observeActiveItem or ::onDidChangeActiveItem instead.") + when 'focused' + Grim.deprecate("The $focused behavior property is deprecated.") + else + Grim.deprecate("Pane::behavior is deprecated. Use event subscription methods instead.") + + super + + Pane::itemForUri = (uri) -> + Grim.deprecate("Use `::itemForURI` instead.") + @itemForURI(uri) + + Pane::activateItemForUri = (uri) -> + Grim.deprecate("Use `::activateItemForURI` instead.") + @activateItemForURI(uri) From edf17f1fdbaeb4ea1a6a46a2501f8c94e1fc9d81 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 16:19:53 -0700 Subject: [PATCH 052/121] Conditionally include deprecations in Project --- src/project.coffee | 115 ++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 59 deletions(-) diff --git a/src/project.coffee b/src/project.coffee index f0d368531..02be678fe 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -4,7 +4,7 @@ url = require 'url' _ = require 'underscore-plus' fs = require 'fs-plus' Q = require 'q' -{deprecate} = require 'grim' +{includeDeprecations, deprecate} = require 'grim' {Model} = require 'theorist' {Subscriber} = require 'emissary' {Emitter} = require 'event-kit' @@ -25,12 +25,6 @@ class Project extends Model atom.deserializers.add(this) Serializable.includeInto(this) - @pathForRepositoryUrl: (repoUrl) -> - deprecate '::pathForRepositoryUrl will be removed. Please remove from your code.' - [repoName] = url.parse(repoUrl).path.split('/')[-1..] - repoName = repoName.replace(/\.git$/, '') - path.join(atom.config.get('core.projectHome'), repoName) - ### Section: Construction and Destruction ### @@ -73,8 +67,10 @@ class Project extends Model @subscribeToBuffer(buffer) for buffer in @buffers - Grim.deprecate("Pass 'paths' array instead of 'path' to project constructor") if path? - paths ?= _.compact([path]) + if Grim.includeDeprecations and path? + Grim.deprecate("Pass 'paths' array instead of 'path' to project constructor") + paths ?= _.compact([path]) + @setPaths(paths) destroyed: -> @@ -122,13 +118,6 @@ class Project extends Model onDidAddBuffer: (callback) -> @emitter.on 'did-add-buffer', callback - on: (eventName) -> - if eventName is 'path-changed' - Grim.deprecate("Use Project::onDidChangePaths instead") - else - Grim.deprecate("Project::on is deprecated. Use documented event subscription methods instead.") - super - ### Section: Accessing the git repository ### @@ -144,9 +133,6 @@ class Project extends Model # project.repositoryForDirectory.bind(project))) # ``` getRepositories: -> @repositories - getRepo: -> - Grim.deprecate("Use ::getRepositories instead") - @getRepositories()[0] # Public: Get the repository for a given directory asynchronously. # @@ -180,9 +166,6 @@ class Project extends Model # Public: Get an {Array} of {String}s containing the paths of the project's # directories. getPaths: -> rootDirectory.getPath() for rootDirectory in @rootDirectories - getPath: -> - Grim.deprecate("Use ::getPaths instead") - @getPaths()[0] # Public: Set the paths of the project's directories. # @@ -198,10 +181,6 @@ class Project extends Model @emit "path-changed" @emitter.emit 'did-change-paths', projectPaths - setPath: (path) -> - Grim.deprecate("Use ::setPaths instead") - @setPaths([path]) - # Public: Add a path to the project's list of root paths # # * `projectPath` {String} The path to the directory to add. @@ -257,13 +236,6 @@ class Project extends Model # Public: Get an {Array} of {Directory}s associated with this project. getDirectories: -> @rootDirectories - getRootDirectory: -> - Grim.deprecate("Use ::getDirectories instead") - @getDirectories()[0] - - resolve: (uri) -> - Grim.deprecate("Use `Project::getDirectories()[0]?.resolve()` instead") - @resolvePath(uri) resolvePath: (uri) -> return unless uri @@ -329,18 +301,6 @@ class Project extends Model contains: (pathToCheck) -> @rootDirectories.some (dir) -> dir.contains(pathToCheck) - ### - Section: Searching and Replacing - ### - - scan: (regex, options={}, iterator) -> - Grim.deprecate("Use atom.workspace.scan instead of atom.project.scan") - atom.workspace.scan(regex, options, iterator) - - replace: (regex, replacementText, filePaths, iterator) -> - Grim.deprecate("Use atom.workspace.replace instead of atom.project.replace") - atom.workspace.replace(regex, replacementText, filePaths, iterator) - ### Section: Private ### @@ -365,12 +325,6 @@ class Project extends Model @bufferForPath(filePath).then (buffer) => @buildEditorForBuffer(buffer, options) - # Deprecated - openSync: (filePath, options={}) -> - deprecate("Use Project::open instead") - filePath = @resolvePath(filePath) - @buildEditorForBuffer(@bufferForPathSync(filePath), options) - # Retrieves all the {TextBuffer}s in the project; that is, the # buffers for all open files. # @@ -479,22 +433,65 @@ class Project extends Model detail: error.message dismissable: true - # Deprecated: delegate - registerOpener: (opener) -> +if includeDeprecations + Project.pathForRepositoryUrl = (repoUrl) -> + deprecate '::pathForRepositoryUrl will be removed. Please remove from your code.' + [repoName] = url.parse(repoUrl).path.split('/')[-1..] + repoName = repoName.replace(/\.git$/, '') + path.join(atom.config.get('core.projectHome'), repoName) + + Project::registerOpener = (opener) -> deprecate("Use Workspace::addOpener instead") atom.workspace.addOpener(opener) - # Deprecated: delegate - unregisterOpener: (opener) -> + Project::unregisterOpener = (opener) -> deprecate("Call .dispose() on the Disposable returned from ::addOpener instead") atom.workspace.unregisterOpener(opener) - # Deprecated: delegate - eachEditor: (callback) -> + Project::eachEditor = (callback) -> deprecate("Use Workspace::observeTextEditors instead") atom.workspace.observeTextEditors(callback) - # Deprecated: delegate - getEditors: -> + Project::getEditors = -> deprecate("Use Workspace::getTextEditors instead") atom.workspace.getTextEditors() + + Project::on = (eventName) -> + if eventName is 'path-changed' + Grim.deprecate("Use Project::onDidChangePaths instead") + else + Grim.deprecate("Project::on is deprecated. Use documented event subscription methods instead.") + super + + Project::getRepo = -> + Grim.deprecate("Use ::getRepositories instead") + @getRepositories()[0] + + Project::getPath = -> + Grim.deprecate("Use ::getPaths instead") + @getPaths()[0] + + Project::setPath = (path) -> + Grim.deprecate("Use ::setPaths instead") + @setPaths([path]) + + Project::getRootDirectory = -> + Grim.deprecate("Use ::getDirectories instead") + @getDirectories()[0] + + Project::resolve = (uri) -> + Grim.deprecate("Use `Project::getDirectories()[0]?.resolve()` instead") + @resolvePath(uri) + + Project::scan = (regex, options={}, iterator) -> + Grim.deprecate("Use atom.workspace.scan instead of atom.project.scan") + atom.workspace.scan(regex, options, iterator) + + Project::replace = (regex, replacementText, filePaths, iterator) -> + Grim.deprecate("Use atom.workspace.replace instead of atom.project.replace") + atom.workspace.replace(regex, replacementText, filePaths, iterator) + + Project::openSync = (filePath, options={}) -> + deprecate("Use Project::open instead") + filePath = @resolvePath(filePath) + @buildEditorForBuffer(@bufferForPathSync(filePath), options) From 9e904268411b0b955823371cee7a79102f01726e Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 16:42:20 -0700 Subject: [PATCH 053/121] Only do legacy emit when including deprecations --- src/workspace.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/workspace.coffee b/src/workspace.coffee index a5a4e5e30..858ae063f 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -112,7 +112,7 @@ class Workspace extends Model _.uniq(packageNames) editorAdded: (editor) -> - @emit 'editor-created', editor + @emit 'editor-created', editor if includeDeprecations installShellCommands: -> require('./command-installer').installShellCommandsInteractively() @@ -446,7 +446,7 @@ class Workspace extends Model if options.initialLine? or options.initialColumn? item.setCursorBufferPosition?([options.initialLine, options.initialColumn]) index = pane.getActiveItemIndex() - @emit "uri-opened" + @emit "uri-opened" if includeDeprecations @emitter.emit 'did-open', {uri, pane, item, index} item From 23d1c72a5f3945aa1b8f76c884ee95bfe613f05a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 17:06:10 -0700 Subject: [PATCH 054/121] Remove unused imports --- src/context-menu-manager.coffee | 4 +--- src/decoration.coffee | 2 +- src/display-buffer.coffee | 3 ++- src/marker.coffee | 1 - src/pane.coffee | 1 - 5 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/context-menu-manager.coffee b/src/context-menu-manager.coffee index 69caa5d6d..4565c8b55 100644 --- a/src/context-menu-manager.coffee +++ b/src/context-menu-manager.coffee @@ -1,6 +1,4 @@ -{$} = require './space-pen-extensions' _ = require 'underscore-plus' -remote = require 'remote' path = require 'path' CSON = require 'season' fs = require 'fs-plus' @@ -189,7 +187,7 @@ class ContextMenuManager menuTemplate = @templateForEvent(event) return unless menuTemplate?.length > 0 - remote.getCurrentWindow().emit('context-menu', menuTemplate) + atom.getCurrentWindow().emit('context-menu', menuTemplate) return clear: -> diff --git a/src/decoration.coffee b/src/decoration.coffee index b3ad4b7ff..a556a3a3c 100644 --- a/src/decoration.coffee +++ b/src/decoration.coffee @@ -1,5 +1,4 @@ _ = require 'underscore-plus' -EmitterMixin = require('emissary').Emitter {Emitter} = require 'event-kit' Grim = require 'grim' @@ -165,6 +164,7 @@ class Decoration null if Grim.includeDeprecations + EmitterMixin = require('emissary').Emitter EmitterMixin.includeInto(Decoration) Decoration::on = (eventName) -> diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 277a79200..12b839143 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -1,5 +1,4 @@ _ = require 'underscore-plus' -EmitterMixin = require('emissary').Emitter Serializable = require 'serializable' {Model} = require 'theorist' {CompositeDisposable, Emitter} = require 'event-kit' @@ -1229,6 +1228,8 @@ class DisplayBuffer extends Model @foldsByMarkerId[marker.id] if Grim.includeDeprecations + EmitterMixin = require('emissary').Emitter + DisplayBuffer::on = (eventName) -> switch eventName when 'changed' diff --git a/src/marker.coffee b/src/marker.coffee index bd48eb48c..c177b792e 100644 --- a/src/marker.coffee +++ b/src/marker.coffee @@ -1,4 +1,3 @@ -{Range} = require 'text-buffer' _ = require 'underscore-plus' {CompositeDisposable, Emitter} = require 'event-kit' Grim = require 'grim' diff --git a/src/pane.coffee b/src/pane.coffee index d1e83c609..07e621e46 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -5,7 +5,6 @@ Serializable = require 'serializable' Grim = require 'grim' PaneAxis = require './pane-axis' TextEditor = require './text-editor' -PaneView = null # Extended: A container for presenting content in the center of the workspace. # Panes can contain multiple items, one of which is *active* at a given time. From 63072bf8aee0909ab69585f4e5109d649855a3e2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 17:11:42 -0700 Subject: [PATCH 055/121] Check deprecations flag for space pen shim inclusion --- src/atom.coffee | 4 +++- src/text-editor-component.coffee | 7 ++++--- src/text-editor-element.coffee | 5 +++-- src/workspace-element.coffee | 6 +++--- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index ace3245ef..b787764be 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -721,7 +721,9 @@ class Atom extends Model deserializeWorkspaceView: -> Workspace = require './workspace' - WorkspaceView = require './workspace-view' + + if includeDeprecations + WorkspaceView = require './workspace-view' startTime = Date.now() @workspace = Workspace.deserialize(@state.workspace) ? new Workspace diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index c2babdca4..b57920952 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -152,9 +152,10 @@ class TextEditorComponent if @editor.isAlive() @updateParentViewFocusedClassIfNeeded() @updateParentViewMiniClass() - @hostElement.__spacePenView.trigger 'cursor:moved' if cursorMoved - @hostElement.__spacePenView.trigger 'selection:changed' if selectionChanged - @hostElement.__spacePenView.trigger 'editor:display-updated' + if grim.includeDeprecations + @hostElement.__spacePenView.trigger 'cursor:moved' if cursorMoved + @hostElement.__spacePenView.trigger 'selection:changed' if selectionChanged + @hostElement.__spacePenView.trigger 'editor:display-updated' readAfterUpdateSync: => @linesComponent.measureCharactersInNewLines() if @isVisible() and not @newState.content.scrollingVertically diff --git a/src/text-editor-element.coffee b/src/text-editor-element.coffee index ccd69dca8..5822f533c 100644 --- a/src/text-editor-element.coffee +++ b/src/text-editor-element.coffee @@ -3,6 +3,7 @@ Path = require 'path' {defaults} = require 'underscore-plus' TextBuffer = require 'text-buffer' +Grim = require 'grim' TextEditor = require './text-editor' TextEditorComponent = require './text-editor-component' TextEditorView = null @@ -20,7 +21,7 @@ class TextEditorElement extends HTMLElement createdCallback: -> @emitter = new Emitter @initializeContent() - @createSpacePenShim() + @createSpacePenShim() if Grim.includeDeprecations @addEventListener 'focus', @focused.bind(this) @addEventListener 'blur', @blurred.bind(this) @@ -86,7 +87,7 @@ class TextEditorElement extends HTMLElement @model.onDidChangeGrammar => @addGrammarScopeAttribute() @model.onDidChangeEncoding => @addEncodingAttribute() @model.onDidDestroy => @unmountComponent() - @__spacePenView.setModel(@model) + @__spacePenView.setModel(@model) if Grim.includeDeprecations @model getModel: -> diff --git a/src/workspace-element.coffee b/src/workspace-element.coffee index f2805ff08..66ded0084 100644 --- a/src/workspace-element.coffee +++ b/src/workspace-element.coffee @@ -16,10 +16,10 @@ class WorkspaceElement extends HTMLElement @initializeContent() @observeScrollbarStyle() @observeTextEditorFontConfig() - @createSpacePenShim() + @createSpacePenShim() if Grim.includeDeprecations attachedCallback: -> - callAttachHooks(this) + callAttachHooks(this) if Grim.includeDeprecations @focus() detachedCallback: -> @@ -82,7 +82,7 @@ class WorkspaceElement extends HTMLElement @appendChild(@panelContainers.modal) - @__spacePenView.setModel(@model) + @__spacePenView.setModel(@model) if Grim.includeDeprecations this getModel: -> @model From dd72bbe0ef1eae13eff908f006ae4181aae3756f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 17:19:44 -0700 Subject: [PATCH 056/121] Conditionally include deprecations in Config --- src/config.coffee | 163 ++++++++++++++++++++-------------------------- 1 file changed, 70 insertions(+), 93 deletions(-) diff --git a/src/config.coffee b/src/config.coffee index 4901f21dc..b48d69ca0 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -371,13 +371,13 @@ class Config observe: -> if arguments.length is 2 [keyPath, callback] = arguments - else if arguments.length is 3 and (_.isArray(arguments[0]) or arguments[0] instanceof ScopeDescriptor) + else if Grim.includeDeprecations and arguments.length is 3 and (_.isArray(arguments[0]) or arguments[0] instanceof ScopeDescriptor) Grim.deprecate """ Passing a scope descriptor as the first argument to Config::observe is deprecated. Pass a `scope` in an options hash as the third argument instead. """ [scopeDescriptor, keyPath, callback] = arguments - else if arguments.length is 3 and (_.isString(arguments[0]) and _.isObject(arguments[1])) + else if Grim.includeDeprecations and arguments.length is 3 and (_.isString(arguments[0]) and _.isObject(arguments[1])) [keyPath, options, callback] = arguments scopeDescriptor = options.scope if options.callNow? @@ -419,7 +419,7 @@ class Config [callback] = arguments else if arguments.length is 2 [keyPath, callback] = arguments - else if _.isArray(arguments[0]) or arguments[0] instanceof ScopeDescriptor + else if Grim.includeDeprecations and _.isArray(arguments[0]) or arguments[0] instanceof ScopeDescriptor Grim.deprecate """ Passing a scope descriptor as the first argument to Config::onDidChange is deprecated. Pass a `scope` in an options hash as the third argument instead. @@ -498,7 +498,7 @@ class Config if typeof arguments[0] is 'string' or not arguments[0]? [keyPath, options] = arguments {scope} = options - else + else if Grim.includeDeprecations Grim.deprecate """ Passing a scope descriptor as the first argument to Config::get is deprecated. Pass a `scope` in an options hash as the final argument instead. @@ -578,7 +578,7 @@ class Config # * `true` if the value was set. # * `false` if the value was not able to be coerced to the type specified in the setting's schema. set: -> - if arguments[0]?[0] is '.' + if Grim.includeDeprecations and arguments[0]?[0] is '.' Grim.deprecate """ Passing a scope selector as the first argument to Config::set is deprecated. Pass a `scopeSelector` in an options hash as the final argument instead. @@ -617,7 +617,7 @@ class Config # * `scopeSelector` (optional) {String}. See {::set} # * `source` (optional) {String}. See {::set} unset: (keyPath, options) -> - if typeof options is 'string' + if Grim.includeDeprecations and typeof options is 'string' Grim.deprecate """ Passing a scope selector as the first argument to Config::unset is deprecated. Pass a `scopeSelector` in an options hash as the second argument instead. @@ -652,47 +652,6 @@ class Config getSources: -> _.uniq(_.pluck(@scopedSettingsStore.propertySets, 'source')).sort() - # Deprecated: Restore the global setting at `keyPath` to its default value. - # - # Returns the new value. - restoreDefault: (scopeSelector, keyPath) -> - Grim.deprecate("Use ::unset instead.") - @unset(scopeSelector, keyPath) - @get(keyPath) - - # Deprecated: Get the global default value of the key path. _Please note_ that in most - # cases calling this is not necessary! {::get} returns the default value when - # a custom value is not specified. - # - # * `scopeSelector` (optional) {String}. eg. '.source.ruby' - # * `keyPath` The {String} name of the key. - # - # Returns the default value. - getDefault: -> - Grim.deprecate("Use `::get(keyPath, {scope, excludeSources: [atom.config.getUserConfigPath()]})` instead") - if arguments.length is 1 - [keyPath] = arguments - else - [scopeSelector, keyPath] = arguments - scope = [scopeSelector] - @get(keyPath, {scope, excludeSources: [@getUserConfigPath()]}) - - # Deprecated: Is the value at `keyPath` its default value? - # - # * `scopeSelector` (optional) {String}. eg. '.source.ruby' - # * `keyPath` The {String} name of the key. - # - # Returns a {Boolean}, `true` if the current value is the default, `false` - # otherwise. - isDefault: -> - Grim.deprecate("Use `not ::get(keyPath, {scope, sources: [atom.config.getUserConfigPath()]})?` instead") - if arguments.length is 1 - [keyPath] = arguments - else - [scopeSelector, keyPath] = arguments - scope = [scopeSelector] - not @get(keyPath, {scope, sources: [@getUserConfigPath()]})? - # Extended: Retrieve the schema for a specific key path. The schema will tell # you what type the keyPath expects, and other metadata about the config # option. @@ -709,12 +668,6 @@ class Config schema = schema.properties?[key] schema - # Deprecated: Returns a new {Object} containing all of the global settings and - # defaults. Returns the scoped settings when a `scopeSelector` is specified. - getSettings: -> - Grim.deprecate "Use ::get(keyPath) instead" - _.deepExtend({}, @settings, @defaultSettings) - # Extended: Get the {String} path to the config file being used. getUserConfigPath: -> @configFilePath @@ -732,31 +685,6 @@ class Config @transactDepth-- @emitChangeEvent() - ### - Section: Deprecated - ### - - getInt: (keyPath) -> - Grim.deprecate '''Config::getInt is no longer necessary. Use ::get instead. - Make sure the config option you are accessing has specified an `integer` - schema. See the schema section of - https://atom.io/docs/api/latest/Config for more info.''' - parseInt(@get(keyPath)) - - getPositiveInt: (keyPath, defaultValue=0) -> - Grim.deprecate '''Config::getPositiveInt is no longer necessary. Use ::get instead. - Make sure the config option you are accessing has specified an `integer` - schema with `minimum: 1`. See the schema section of - https://atom.io/docs/api/latest/Config for more info.''' - Math.max(@getInt(keyPath), 0) or defaultValue - - toggle: (keyPath) -> - Grim.deprecate 'Config::toggle is no longer supported. Please remove from your code.' - @set(keyPath, !@get(keyPath)) - - unobserve: (keyPath) -> - Grim.deprecate 'Config::unobserve no longer does anything. Call `.dispose()` on the object returned by Config::observe instead.' - ### Section: Internal methods used by core ### @@ -1056,16 +984,6 @@ class Config @emitChangeEvent() - addScopedSettings: (source, selector, value, options) -> - Grim.deprecate("Use ::set instead") - settingsBySelector = {} - settingsBySelector[selector] = value - disposable = @scopedSettingsStore.addProperties(source, settingsBySelector, options) - @emitChangeEvent() - new Disposable => - disposable.dispose() - @emitChangeEvent() - setRawScopedValue: (keyPath, value, source, selector, options) -> if keyPath? newValue = {} @@ -1094,11 +1012,6 @@ class Config oldValue = newValue callback(event) - settingsForScopeDescriptor: (scopeDescriptor, keyPath) -> - Grim.deprecate("Use Config::getAll instead") - entries = @getAll(null, scope: scopeDescriptor) - value for {value} in entries when _.valueForKeyPath(value, keyPath)? - # Base schema enforcers. These will coerce raw input into the specified type, # and will throw an error when the value cannot be coerced. Throwing the error # will indicate that the value should not be set. @@ -1232,3 +1145,67 @@ withoutEmptyObjects = (object) -> else resultObject = object resultObject + +if Grim.includeDeprecations + Config::restoreDefault = (scopeSelector, keyPath) -> + Grim.deprecate("Use ::unset instead.") + @unset(scopeSelector, keyPath) + @get(keyPath) + + Config::getDefault = -> + Grim.deprecate("Use `::get(keyPath, {scope, excludeSources: [atom.config.getUserConfigPath()]})` instead") + if arguments.length is 1 + [keyPath] = arguments + else + [scopeSelector, keyPath] = arguments + scope = [scopeSelector] + @get(keyPath, {scope, excludeSources: [@getUserConfigPath()]}) + + Config::isDefault = -> + Grim.deprecate("Use `not ::get(keyPath, {scope, sources: [atom.config.getUserConfigPath()]})?` instead") + if arguments.length is 1 + [keyPath] = arguments + else + [scopeSelector, keyPath] = arguments + scope = [scopeSelector] + not @get(keyPath, {scope, sources: [@getUserConfigPath()]})? + + Config::getSettings = -> + Grim.deprecate "Use ::get(keyPath) instead" + _.deepExtend({}, @settings, @defaultSettings) + + Config::getInt = (keyPath) -> + Grim.deprecate '''Config::getInt is no longer necessary. Use ::get instead. + Make sure the config option you are accessing has specified an `integer` + schema. See the schema section of + https://atom.io/docs/api/latest/Config for more info.''' + parseInt(@get(keyPath)) + + Config::getPositiveInt = (keyPath, defaultValue=0) -> + Grim.deprecate '''Config::getPositiveInt is no longer necessary. Use ::get instead. + Make sure the config option you are accessing has specified an `integer` + schema with `minimum: 1`. See the schema section of + https://atom.io/docs/api/latest/Config for more info.''' + Math.max(@getInt(keyPath), 0) or defaultValue + + Config::toggle = (keyPath) -> + Grim.deprecate 'Config::toggle is no longer supported. Please remove from your code.' + @set(keyPath, !@get(keyPath)) + + Config::unobserve = (keyPath) -> + Grim.deprecate 'Config::unobserve no longer does anything. Call `.dispose()` on the object returned by Config::observe instead.' + + Config::addScopedSettings = (source, selector, value, options) -> + Grim.deprecate("Use ::set instead") + settingsBySelector = {} + settingsBySelector[selector] = value + disposable = @scopedSettingsStore.addProperties(source, settingsBySelector, options) + @emitChangeEvent() + new Disposable => + disposable.dispose() + @emitChangeEvent() + + Config::settingsForScopeDescriptor = (scopeDescriptor, keyPath) -> + Grim.deprecate("Use Config::getAll instead") + entries = @getAll(null, scope: scopeDescriptor) + value for {value} in entries when _.valueForKeyPath(value, keyPath)? From 0c06c69cd91c0bca31c547893b2b4c272fa2fc55 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 17:31:28 -0700 Subject: [PATCH 057/121] Check deprecations flag for space pen shim inclusion --- src/pane-container-element.coffee | 9 ++++++--- src/pane-element.coffee | 8 +++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/pane-container-element.coffee b/src/pane-container-element.coffee index 65ee9ecea..55d527971 100644 --- a/src/pane-container-element.coffee +++ b/src/pane-container-element.coffee @@ -1,4 +1,5 @@ {CompositeDisposable} = require 'event-kit' +Grim = require 'grim' {callAttachHooks} = require './space-pen-extensions' PaneContainerView = null _ = require 'underscore-plus' @@ -8,12 +9,14 @@ class PaneContainerElement extends HTMLElement createdCallback: -> @subscriptions = new CompositeDisposable @classList.add 'panes' - PaneContainerView ?= require './pane-container-view' - @__spacePenView = new PaneContainerView(this) + + if Grim.includeDeprecations + PaneContainerView ?= require './pane-container-view' + @__spacePenView = new PaneContainerView(this) initialize: (@model) -> @subscriptions.add @model.observeRoot(@rootChanged.bind(this)) - @__spacePenView.setModel(@model) + @__spacePenView.setModel(@model) if Grim.includeDeprecations this rootChanged: (root) -> diff --git a/src/pane-element.coffee b/src/pane-element.coffee index f626e9fad..f050567b2 100644 --- a/src/pane-element.coffee +++ b/src/pane-element.coffee @@ -1,6 +1,7 @@ {CompositeDisposable} = require 'event-kit' +Grim = require 'grim' {$, callAttachHooks, callRemoveHooks} = require './space-pen-extensions' -PaneView = require './pane-view' +PaneView = null class PaneElement extends HTMLElement attached: false @@ -12,7 +13,7 @@ class PaneElement extends HTMLElement @initializeContent() @subscribeToDOMEvents() - @createSpacePenShim() + @createSpacePenShim() if Grim.includeDeprecations attachedCallback: -> @attached = true @@ -41,6 +42,7 @@ class PaneElement extends HTMLElement @addEventListener 'blur', handleBlur, true createSpacePenShim: -> + PaneView ?= require './pane-view' @__spacePenView = new PaneView(this) initialize: (@model) -> @@ -49,7 +51,7 @@ class PaneElement extends HTMLElement @subscriptions.add @model.observeActiveItem(@activeItemChanged.bind(this)) @subscriptions.add @model.onDidRemoveItem(@itemRemoved.bind(this)) @subscriptions.add @model.onDidDestroy(@paneDestroyed.bind(this)) - @__spacePenView.setModel(@model) + @__spacePenView.setModel(@model) if Grim.includeDeprecations this getModel: -> @model From bb53548ba02b96cf45cbe7d1caa5766e65ec96de Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 17:35:29 -0700 Subject: [PATCH 058/121] Only check deprecation flag for callNow usage --- src/config.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config.coffee b/src/config.coffee index b48d69ca0..3d0e363ad 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -377,10 +377,10 @@ class Config Pass a `scope` in an options hash as the third argument instead. """ [scopeDescriptor, keyPath, callback] = arguments - else if Grim.includeDeprecations and arguments.length is 3 and (_.isString(arguments[0]) and _.isObject(arguments[1])) + else if arguments.length is 3 and (_.isString(arguments[0]) and _.isObject(arguments[1])) [keyPath, options, callback] = arguments scopeDescriptor = options.scope - if options.callNow? + if Grim.includeDeprecations and options.callNow? Grim.deprecate """ Config::observe no longer takes a `callNow` option. Use ::onDidChange instead. Note that ::onDidChange passes its callback different arguments. From 8ceb2e2028edddb84017479371ee80bd64f85e2f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 18:09:00 -0700 Subject: [PATCH 059/121] Don't extend Model in 1.0 mode --- src/atom.coffee | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index b787764be..463f5a7bf 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -16,11 +16,13 @@ fs = require 'fs-plus' WindowEventHandler = require './window-event-handler' StylesElement = require './styles-element' +SuperClass = if includeDeprecations then Model else Object + # Essential: Atom global for dealing with packages, themes, menus, and the window. # # An instance of this class is always available as the `atom` global. module.exports = -class Atom extends Model +class Atom extends SuperClass @version: 1 # Increment this when the serialization format changes # Load or create the Atom environment in the given mode. @@ -230,7 +232,7 @@ class Atom extends Model @openDevTools() @executeJavaScriptInDevTools('InspectorFrontendAPI.showConsole()') - @emit 'uncaught-error', arguments... + @emit 'uncaught-error', arguments... if includeDeprecations @emitter.emit 'did-throw-error', {message, url, line, column, originalError} @disposables?.dispose() From 488e40e635fc7b86946c518d4b97ea278c196a83 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 18:17:03 -0700 Subject: [PATCH 060/121] Add 1.0 preview mode bridge Model class --- src/atom.coffee | 8 +++++--- src/model.coffee | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/model.coffee diff --git a/src/atom.coffee b/src/atom.coffee index 463f5a7bf..427811162 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -8,7 +8,6 @@ shell = require 'shell' _ = require 'underscore-plus' {deprecate, includeDeprecations} = require 'grim' {CompositeDisposable, Emitter} = require 'event-kit' -{Model} = require 'theorist' fs = require 'fs-plus' {convertStackTrace, convertLine} = require 'coffeestack' @@ -16,13 +15,16 @@ fs = require 'fs-plus' WindowEventHandler = require './window-event-handler' StylesElement = require './styles-element' -SuperClass = if includeDeprecations then Model else Object +if includeDeprecations + {Model} = require 'theorist' +else + Model = require './model' # Essential: Atom global for dealing with packages, themes, menus, and the window. # # An instance of this class is always available as the `atom` global. module.exports = -class Atom extends SuperClass +class Atom extends Model @version: 1 # Increment this when the serialization format changes # Load or create the Atom environment in the given mode. diff --git a/src/model.coffee b/src/model.coffee new file mode 100644 index 000000000..b590082a5 --- /dev/null +++ b/src/model.coffee @@ -0,0 +1,27 @@ +PropertyAccessors = require 'property-accessors' + +nextInstanceId = 1 + +module.exports = +class Model + PropertyAccessors.includeInto(this) + + @resetNextInstanceId: -> nextInstanceId = 1 + + constructor: (params) -> + @assignId(params?.id) + + assignId: (id) -> + @id ?= id ? nextInstanceId++ + + @::advisedAccessor 'id', + set: (id) -> nextInstanceId = id + 1 if id >= nextInstanceId + + destroy: -> + return unless @isAlive() + @alive = false + @destroyed?() + + isAlive: -> @alive + + isDestroyed: -> not @isAlive() From e41a366e081f4db1fac881137207e12aa8d36d2e Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 18:19:41 -0700 Subject: [PATCH 061/121] Using single Model class require --- src/atom.coffee | 7 +------ src/model.coffee | 5 +++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/atom.coffee b/src/atom.coffee index 427811162..55cb7ee59 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -10,16 +10,11 @@ _ = require 'underscore-plus' {CompositeDisposable, Emitter} = require 'event-kit' fs = require 'fs-plus' {convertStackTrace, convertLine} = require 'coffeestack' - +Model = require './model' {$} = require './space-pen-extensions' WindowEventHandler = require './window-event-handler' StylesElement = require './styles-element' -if includeDeprecations - {Model} = require 'theorist' -else - Model = require './model' - # Essential: Atom global for dealing with packages, themes, menus, and the window. # # An instance of this class is always available as the `atom` global. diff --git a/src/model.coffee b/src/model.coffee index b590082a5..20128b0d2 100644 --- a/src/model.coffee +++ b/src/model.coffee @@ -1,3 +1,8 @@ +Grim = require 'grim' +if Grim.includeDeprecations + module.exports = require('theorist').Model + return + PropertyAccessors = require 'property-accessors' nextInstanceId = 1 From 82c39a5af9e0e6371ba3c8c0e499ecb518d540c9 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 18:28:51 -0700 Subject: [PATCH 062/121] Use lighter Model in cursor, selection, and project --- src/cursor.coffee | 2 +- src/project.coffee | 10 +++++----- src/selection.coffee | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/cursor.coffee b/src/cursor.coffee index a930666c3..6bb3f4bae 100644 --- a/src/cursor.coffee +++ b/src/cursor.coffee @@ -1,8 +1,8 @@ {Point, Range} = require 'text-buffer' -{Model} = require 'theorist' {Emitter} = require 'event-kit' _ = require 'underscore-plus' Grim = require 'grim' +Model = require './model' # Extended: The `Cursor` class represents the little blinking line identifying # where text can be inserted. diff --git a/src/project.coffee b/src/project.coffee index 02be678fe..0392bd7ce 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -5,7 +5,6 @@ _ = require 'underscore-plus' fs = require 'fs-plus' Q = require 'q' {includeDeprecations, deprecate} = require 'grim' -{Model} = require 'theorist' {Subscriber} = require 'emissary' {Emitter} = require 'event-kit' DefaultDirectoryProvider = require './default-directory-provider' @@ -13,6 +12,7 @@ Serializable = require 'serializable' TextBuffer = require 'text-buffer' Grim = require 'grim' +Model = require './model' TextEditor = require './text-editor' Task = require './task' GitRepositoryProvider = require './git-repository-provider' @@ -178,7 +178,7 @@ class Project extends Model @addPath(projectPath, emitEvent: false) for projectPath in projectPaths - @emit "path-changed" + @emit "path-changed" if includeDeprecations @emitter.emit 'did-change-paths', projectPaths # Public: Add a path to the project's list of root paths @@ -205,7 +205,7 @@ class Project extends Model @repositories.push(repo ? null) unless options?.emitEvent is false - @emit "path-changed" + @emit "path-changed" if includeDeprecations @emitter.emit 'did-change-paths', @getPaths() # Public: remove a path from the project's list of root paths. @@ -227,7 +227,7 @@ class Project extends Model [removedRepository] = @repositories.splice(indexToRemove, 1) removedDirectory.off() removedRepository?.destroy() unless removedRepository in @repositories - @emit "path-changed" + @emit "path-changed" if includeDeprecations @emitter.emit "did-change-paths", @getPaths() true else @@ -393,7 +393,7 @@ class Project extends Model addBufferAtIndex: (buffer, index, options={}) -> @buffers.splice(index, 0, buffer) @subscribeToBuffer(buffer) - @emit 'buffer-created', buffer + @emit 'buffer-created', buffer if includeDeprecations @emitter.emit 'did-add-buffer', buffer buffer diff --git a/src/selection.coffee b/src/selection.coffee index 2a2d1c98c..af70e234c 100644 --- a/src/selection.coffee +++ b/src/selection.coffee @@ -1,8 +1,8 @@ {Point, Range} = require 'text-buffer' -{Model} = require 'theorist' {pick} = _ = require 'underscore-plus' {Emitter} = require 'event-kit' Grim = require 'grim' +Model = require './model' NonWhitespaceRegExp = /\S/ @@ -27,7 +27,7 @@ class Selection extends Model unless @editor.isDestroyed() @destroyed = true @editor.removeSelection(this) - @emit 'destroyed' + @emit 'destroyed' if Grim.includeDeprecations @emitter.emit 'did-destroy' @emitter.dispose() @@ -732,7 +732,7 @@ class Selection extends Model newScreenRange: @getScreenRange() selection: this - @emit 'screen-range-changed', @getScreenRange() # old event + @emit 'screen-range-changed', @getScreenRange() if Grim.includeDeprecations @emitter.emit 'did-change-range' @editor.selectionRangeChanged(eventObject) From 578bce1aaf8a98ca3121b37c68ecd388c23ce797 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 25 Mar 2015 18:30:36 -0700 Subject: [PATCH 063/121] :art: --- src/project.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/project.coffee b/src/project.coffee index 0392bd7ce..63e5576de 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -7,11 +7,11 @@ Q = require 'q' {includeDeprecations, deprecate} = require 'grim' {Subscriber} = require 'emissary' {Emitter} = require 'event-kit' -DefaultDirectoryProvider = require './default-directory-provider' Serializable = require 'serializable' TextBuffer = require 'text-buffer' Grim = require 'grim' +DefaultDirectoryProvider = require './default-directory-provider' Model = require './model' TextEditor = require './text-editor' Task = require './task' From 83b679dcc2f273fba146ecd6990be1fd5e00aff1 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 26 Mar 2015 15:58:38 -0700 Subject: [PATCH 064/121] ::subscribe -> CompositeDisposable --- src/tokenized-buffer.coffee | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index 303906ada..ff06c66e6 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -1,6 +1,6 @@ _ = require 'underscore-plus' {Model} = require 'theorist' -{Emitter} = require 'event-kit' +{CompositeDisposable, Emitter} = require 'event-kit' {Point, Range} = require 'text-buffer' Serializable = require 'serializable' TokenizedLine = require './tokenized-line' @@ -24,15 +24,19 @@ class TokenizedBuffer extends Model constructor: ({@buffer, @tabLength, @invisibles}) -> @emitter = new Emitter + @disposables = new CompositeDisposable - @subscribe atom.grammars.onDidAddGrammar(@grammarAddedOrUpdated) - @subscribe atom.grammars.onDidUpdateGrammar(@grammarAddedOrUpdated) + @disposables.add atom.grammars.onDidAddGrammar(@grammarAddedOrUpdated) + @disposables.add atom.grammars.onDidUpdateGrammar(@grammarAddedOrUpdated) - @subscribe @buffer.preemptDidChange (e) => @handleBufferChange(e) - @subscribe @buffer.onDidChangePath (@bufferPath) => @reloadGrammar() + @disposables.add @buffer.preemptDidChange (e) => @handleBufferChange(e) + @disposables.add @buffer.onDidChangePath (@bufferPath) => @reloadGrammar() @reloadGrammar() + destroyed: -> + @disposables.dispose() + serializeParams: -> bufferPath: @buffer.getPath() tabLength: @tabLength @@ -64,11 +68,14 @@ class TokenizedBuffer extends Model setGrammar: (grammar, score) -> return if grammar is @grammar - @unsubscribe(@grammar) if @grammar + @grammar = grammar @rootScopeDescriptor = new ScopeDescriptor(scopes: [@grammar.scopeName]) @currentGrammarScore = score ? grammar.getScore(@buffer.getPath(), @buffer.getText()) - @subscribe @grammar.onDidUpdate => @retokenizeLines() + + @grammarUpdateDisposable?.dispose() + @grammarUpdateDisposable = @grammar.onDidUpdate => @retokenizeLines() + @disposables.add(@grammarUpdateDisposable) @configSettings = tabLength: atom.config.get('editor.tabLength', scope: @rootScopeDescriptor) @@ -76,7 +83,7 @@ class TokenizedBuffer extends Model @grammarTabLengthSubscription = atom.config.onDidChange 'editor.tabLength', scope: @rootScopeDescriptor, ({newValue}) => @configSettings.tabLength = newValue @retokenizeLines() - @subscribe @grammarTabLengthSubscription + @disposables.add(@grammarTabLengthSubscription) @retokenizeLines() From 7861e462bece67e4965c996b65d8b879ebd34f70 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 26 Mar 2015 15:59:24 -0700 Subject: [PATCH 065/121] Add alive ivar to light Model --- src/model.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/model.coffee b/src/model.coffee index 20128b0d2..bfb854320 100644 --- a/src/model.coffee +++ b/src/model.coffee @@ -13,6 +13,8 @@ class Model @resetNextInstanceId: -> nextInstanceId = 1 + alive: true + constructor: (params) -> @assignId(params?.id) From 3a94376c46706187b90505d7b065d15e32881611 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 2 Apr 2015 15:00:43 -0700 Subject: [PATCH 066/121] :arrow_up: event-kit@1.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 02b3c9669..b36c35b0a 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "color": "^0.7.3", "delegato": "^1", "emissary": "^1.3.3", - "event-kit": "^1.0.3", + "event-kit": "^1.1", "first-mate": "^3.0.1", "fs-plus": "^2.6", "fstream": "0.1.24", From fe1bb240753cee00acb7fa792f115b2747eb206f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 2 Apr 2015 15:31:31 -0700 Subject: [PATCH 067/121] :arrow_up: pathwatcher@4.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b36c35b0a..b6abacc20 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "nslog": "^2.0.0", "oniguruma": "^4.1", "optimist": "0.4.0", - "pathwatcher": "^4.3.1", + "pathwatcher": "^4.4", "property-accessors": "^1.1.3", "q": "^1.1.2", "random-words": "0.0.1", From ccd57bd66689db897a97353bf1b220f5aa78f1fb Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 2 Apr 2015 15:35:40 -0700 Subject: [PATCH 068/121] :arrow_up: atom-keymap@5.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b6abacc20..2e4b6c9d2 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "atomShellVersion": "0.22.3", "dependencies": { "async": "0.2.6", - "atom-keymap": "^5", + "atom-keymap": "^5.1", "atom-space-pen-views": "^2.0.4", "babel-core": "^4.0.2", "bootstrap": "git+https://github.com/atom/bootstrap.git#6af81906189f1747fd6c93479e3d998ebe041372", From 5e090669f91d4617e08dd55bcb86e7b3777a3e46 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 2 Apr 2015 15:38:49 -0700 Subject: [PATCH 069/121] :arrow_up: scoped-property-store@0.17 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2e4b6c9d2..0e700271c 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "reactionary-atom-fork": "^1.0.0", "runas": "2.0.0", "scandal": "2.0.0", - "scoped-property-store": "^0.16.2", + "scoped-property-store": "^0.17.0", "scrollbar-style": "^2.0.0", "season": "^5.1.4", "semver": "~4.2", From 1f8d7a05af90668d097bd245e05cb11820f4a054 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 2 Apr 2015 15:50:48 -0700 Subject: [PATCH 070/121] :arrow_up: first-mate@3.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e700271c..093afa9a5 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "delegato": "^1", "emissary": "^1.3.3", "event-kit": "^1.1", - "first-mate": "^3.0.1", + "first-mate": "^3.1", "fs-plus": "^2.6", "fstream": "0.1.24", "fuzzaldrin": "^2.1", From 2a2cf17fc1ac81c95d8a44651135c32c87099c8c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 2 Apr 2015 17:04:16 -0700 Subject: [PATCH 071/121] :arrow_up: text-buffer@5.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 093afa9a5..8b575680c 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "space-pen": "3.8.2", "stacktrace-parser": "0.1.1", "temp": "0.8.1", - "text-buffer": "^5.1.1", + "text-buffer": "^5.2", "theorist": "^1.0.2", "typescript-simple": "1.0.0", "underscore-plus": "^1.6.6" From 7d592c8b7851b4e94a79d941b37e893a494d1161 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 2 Apr 2015 17:08:28 -0700 Subject: [PATCH 072/121] includeDeprecations -> includeDeprecatedAPIs --- exports/atom.coffee | 6 +++--- src/atom.coffee | 14 +++++++------- src/config.coffee | 14 +++++++------- src/context-menu-manager.coffee | 2 +- src/cursor.coffee | 10 +++++----- src/decoration.coffee | 8 ++++---- src/deserializer-manager.coffee | 2 +- src/display-buffer.coffee | 16 ++++++++-------- src/git-repository.coffee | 8 ++++---- src/grammar-registry.coffee | 4 ++-- src/marker.coffee | 8 ++++---- src/model.coffee | 2 +- src/package-manager.coffee | 6 +++--- src/package.coffee | 18 +++++++++--------- src/pane-container-element.coffee | 4 ++-- src/pane-element.coffee | 4 ++-- src/pane.coffee | 4 ++-- src/project.coffee | 14 +++++++------- src/selection.coffee | 6 +++--- src/styles-element.coffee | 6 +++--- src/text-editor-component.coffee | 4 ++-- src/text-editor-element.coffee | 4 ++-- src/text-editor.coffee | 6 +++--- src/tokenized-buffer.coffee | 12 ++++++------ src/workspace-element.coffee | 6 +++--- src/workspace.coffee | 14 +++++++------- static/index.js | 2 +- 27 files changed, 102 insertions(+), 102 deletions(-) diff --git a/exports/atom.coffee b/exports/atom.coffee index 6b9243098..0d4583c5d 100644 --- a/exports/atom.coffee +++ b/exports/atom.coffee @@ -1,7 +1,7 @@ TextBuffer = require 'text-buffer' {Point, Range} = TextBuffer {Emitter, Disposable, CompositeDisposable} = require 'event-kit' -{includeDeprecations, deprecate} = require 'grim' +{includeDeprecatedAPIs, deprecate} = require 'grim' module.exports = BufferedNodeProcess: require '../src/buffered-node-process' @@ -21,7 +21,7 @@ unless process.env.ATOM_SHELL_INTERNAL_RUN_AS_NODE module.exports.Task = require '../src/task' module.exports.TextEditor = require '../src/text-editor' - if includeDeprecations + if includeDeprecatedAPIs {$, $$, $$$, View} = require '../src/space-pen-extensions' Object.defineProperty module.exports, 'Workspace', get: -> @@ -125,7 +125,7 @@ unless process.env.ATOM_SHELL_INTERNAL_RUN_AS_NODE 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 includeDeprecations +if includeDeprecatedAPIs Object.defineProperty module.exports, 'Git', get: -> deprecate "Please require `GitRepository` instead of `Git`: `{GitRepository} = require 'atom'`" module.exports.GitRepository diff --git a/src/atom.coffee b/src/atom.coffee index 55cb7ee59..1710edd98 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -6,7 +6,7 @@ remote = require 'remote' shell = require 'shell' _ = require 'underscore-plus' -{deprecate, includeDeprecations} = require 'grim' +{deprecate, includeDeprecatedAPIs} = require 'grim' {CompositeDisposable, Emitter} = require 'event-kit' fs = require 'fs-plus' {convertStackTrace, convertLine} = require 'coffeestack' @@ -33,7 +33,7 @@ class Atom extends Model atom = @deserialize(@loadState(mode)) ? new this({mode, @version}) atom.deserializeTimings.atom = Date.now() - startTime - if includeDeprecations + if includeDeprecatedAPIs workspaceViewDeprecationMessage = """ atom.workspaceView is no longer available. In most cases you will not need the view. See the Workspace docs for @@ -229,7 +229,7 @@ class Atom extends Model @openDevTools() @executeJavaScriptInDevTools('InspectorFrontendAPI.showConsole()') - @emit 'uncaught-error', arguments... if includeDeprecations + @emit 'uncaught-error', arguments... if includeDeprecatedAPIs @emitter.emit 'did-throw-error', {message, url, line, column, originalError} @disposables?.dispose() @@ -267,7 +267,7 @@ class Atom extends Model @config = new Config({configDirPath, resourcePath}) @keymaps = new KeymapManager({configDirPath, resourcePath}) - if includeDeprecations + if includeDeprecatedAPIs @keymap = @keymaps # Deprecated @keymaps.subscribeToFileReadFailure() @@ -285,7 +285,7 @@ class Atom extends Model @grammars = @deserializers.deserialize(@state.grammars ? @state.syntax) ? new GrammarRegistry() - if includeDeprecations + if includeDeprecatedAPIs Object.defineProperty this, 'syntax', get: -> deprecate "The atom.syntax global is deprecated. Use atom.grammars instead." @grammars @@ -721,7 +721,7 @@ class Atom extends Model deserializeWorkspaceView: -> Workspace = require './workspace' - if includeDeprecations + if includeDeprecatedAPIs WorkspaceView = require './workspace-view' startTime = Date.now() @@ -843,7 +843,7 @@ class Atom extends Model ipc.send('call-window-method', 'setAutoHideMenuBar', autoHide) ipc.send('call-window-method', 'setMenuBarVisibility', !autoHide) -if includeDeprecations +if includeDeprecatedAPIs # Deprecated: Callers should be converted to use atom.deserializers Atom::registerRepresentationClass = -> deprecate("Callers should be converted to use atom.deserializers") diff --git a/src/config.coffee b/src/config.coffee index 3d0e363ad..f7db867ed 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -371,7 +371,7 @@ class Config observe: -> if arguments.length is 2 [keyPath, callback] = arguments - else if Grim.includeDeprecations and arguments.length is 3 and (_.isArray(arguments[0]) or arguments[0] instanceof ScopeDescriptor) + else if Grim.includeDeprecatedAPIs and arguments.length is 3 and (_.isArray(arguments[0]) or arguments[0] instanceof ScopeDescriptor) Grim.deprecate """ Passing a scope descriptor as the first argument to Config::observe is deprecated. Pass a `scope` in an options hash as the third argument instead. @@ -380,7 +380,7 @@ class Config else if arguments.length is 3 and (_.isString(arguments[0]) and _.isObject(arguments[1])) [keyPath, options, callback] = arguments scopeDescriptor = options.scope - if Grim.includeDeprecations and options.callNow? + if Grim.includeDeprecatedAPIs and options.callNow? Grim.deprecate """ Config::observe no longer takes a `callNow` option. Use ::onDidChange instead. Note that ::onDidChange passes its callback different arguments. @@ -419,7 +419,7 @@ class Config [callback] = arguments else if arguments.length is 2 [keyPath, callback] = arguments - else if Grim.includeDeprecations and _.isArray(arguments[0]) or arguments[0] instanceof ScopeDescriptor + else if Grim.includeDeprecatedAPIs and _.isArray(arguments[0]) or arguments[0] instanceof ScopeDescriptor Grim.deprecate """ Passing a scope descriptor as the first argument to Config::onDidChange is deprecated. Pass a `scope` in an options hash as the third argument instead. @@ -498,7 +498,7 @@ class Config if typeof arguments[0] is 'string' or not arguments[0]? [keyPath, options] = arguments {scope} = options - else if Grim.includeDeprecations + else if Grim.includeDeprecatedAPIs Grim.deprecate """ Passing a scope descriptor as the first argument to Config::get is deprecated. Pass a `scope` in an options hash as the final argument instead. @@ -578,7 +578,7 @@ class Config # * `true` if the value was set. # * `false` if the value was not able to be coerced to the type specified in the setting's schema. set: -> - if Grim.includeDeprecations and arguments[0]?[0] is '.' + if Grim.includeDeprecatedAPIs and arguments[0]?[0] is '.' Grim.deprecate """ Passing a scope selector as the first argument to Config::set is deprecated. Pass a `scopeSelector` in an options hash as the final argument instead. @@ -617,7 +617,7 @@ class Config # * `scopeSelector` (optional) {String}. See {::set} # * `source` (optional) {String}. See {::set} unset: (keyPath, options) -> - if Grim.includeDeprecations and typeof options is 'string' + if Grim.includeDeprecatedAPIs and typeof options is 'string' Grim.deprecate """ Passing a scope selector as the first argument to Config::unset is deprecated. Pass a `scopeSelector` in an options hash as the second argument instead. @@ -1146,7 +1146,7 @@ withoutEmptyObjects = (object) -> resultObject = object resultObject -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs Config::restoreDefault = (scopeSelector, keyPath) -> Grim.deprecate("Use ::unset instead.") @unset(scopeSelector, keyPath) diff --git a/src/context-menu-manager.coffee b/src/context-menu-manager.coffee index 4565c8b55..00b635251 100644 --- a/src/context-menu-manager.coffee +++ b/src/context-menu-manager.coffee @@ -99,7 +99,7 @@ class ContextMenuManager # with the following argument: # * `event` The click event that deployed the context menu. add: (itemsBySelector) -> - if Grim.includeDeprecations + if Grim.includeDeprecatedAPIs # Detect deprecated file path as first argument if itemsBySelector? and typeof itemsBySelector isnt 'object' Grim.deprecate """ diff --git a/src/cursor.coffee b/src/cursor.coffee index 6bb3f4bae..3ed9939ad 100644 --- a/src/cursor.coffee +++ b/src/cursor.coffee @@ -39,13 +39,13 @@ class Cursor extends Model textChanged: textChanged cursor: this - @emit 'moved', movedEvent if Grim.includeDeprecations + @emit 'moved', movedEvent if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-position', movedEvent @editor.cursorMoved(movedEvent) @marker.onDidDestroy => @destroyed = true @editor.removeCursor(this) - @emit 'destroyed' if Grim.includeDeprecations + @emit 'destroyed' if Grim.includeDeprecatedAPIs @emitter.emit 'did-destroy' @emitter.dispose() @@ -89,7 +89,7 @@ class Cursor extends Model @emitter.on 'did-change-visibility', callback on: (eventName) -> - return unless Grim.includeDeprecations + return unless Grim.includeDeprecatedAPIs switch eventName when 'moved' @@ -588,7 +588,7 @@ class Cursor extends Model setVisible: (visible) -> if @visible != visible @visible = visible - @emit 'visibility-changed', @visible if Grim.includeDeprecations + @emit 'visibility-changed', @visible if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-visibility', @visible # Public: Returns the visibility of the cursor. @@ -682,7 +682,7 @@ class Cursor extends Model stop() position -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs Cursor::getScopes = -> Grim.deprecate 'Use Cursor::getScopeDescriptor() instead' @getScopeDescriptor().getScopesArray() diff --git a/src/decoration.coffee b/src/decoration.coffee index a556a3a3c..8654cf39a 100644 --- a/src/decoration.coffee +++ b/src/decoration.coffee @@ -65,7 +65,7 @@ class Decoration @markerDestroyDisposable.dispose() @markerDestroyDisposable = null @destroyed = true - @emit 'destroyed' if Grim.includeDeprecations + @emit 'destroyed' if Grim.includeDeprecatedAPIs @emitter.emit 'did-destroy' @emitter.dispose() @@ -136,7 +136,7 @@ class Decoration oldProperties = @properties @properties = newProperties @properties.id = @id - @emit 'updated', {oldParams: oldProperties, newParams: newProperties} if Grim.includeDeprecations + @emit 'updated', {oldParams: oldProperties, newParams: newProperties} if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-properties', {oldProperties, newProperties} ### @@ -156,14 +156,14 @@ class Decoration flashObject = {class: klass, duration} @flashQueue ?= [] @flashQueue.push(flashObject) - @emit 'flash' if Grim.includeDeprecations + @emit 'flash' if Grim.includeDeprecatedAPIs @emitter.emit 'did-flash' consumeNextFlash: -> return @flashQueue.shift() if @flashQueue?.length > 0 null -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs EmitterMixin = require('emissary').Emitter EmitterMixin.includeInto(Decoration) diff --git a/src/deserializer-manager.coffee b/src/deserializer-manager.coffee index 4efc71ec5..fab84539c 100644 --- a/src/deserializer-manager.coffee +++ b/src/deserializer-manager.coffee @@ -61,7 +61,7 @@ class DeserializerManager name = state.get?('deserializer') ? state.deserializer @deserializers[name] -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs DeserializerManager::remove = (classes...) -> Grim.deprecate("Call .dispose() on the Disposable return from ::add instead") delete @deserializers[name] for {name} in classes diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 12b839143..a8b24086a 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -155,7 +155,7 @@ class DisplayBuffer extends Model if refreshMarkers @pauseMarkerChangeEvents() @refreshMarkerScreenPositions() - @emit 'changed', eventProperties if Grim.includeDeprecations + @emit 'changed', eventProperties if Grim.includeDeprecatedAPIs @emitter.emit 'did-change', eventProperties @resumeMarkerChangeEvents() @@ -309,7 +309,7 @@ class DisplayBuffer extends Model characterWidthsChanged: -> @computeScrollWidth() - @emit 'character-widths-changed', @scopedCharacterWidthsChangeCount if Grim.includeDeprecations + @emit 'character-widths-changed', @scopedCharacterWidthsChangeCount if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-character-widths', @scopedCharacterWidthsChangeCount clearScopedCharWidths: -> @@ -427,7 +427,7 @@ class DisplayBuffer extends Model @softWrapped = softWrapped @updateWrappedScreenLines() softWrapped = @isSoftWrapped() - @emit 'soft-wrap-changed', softWrapped if Grim.includeDeprecations + @emit 'soft-wrap-changed', softWrapped if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-soft-wrapped', softWrapped softWrapped else @@ -911,7 +911,7 @@ class DisplayBuffer extends Model @decorationsByMarkerId[marker.id] ?= [] @decorationsByMarkerId[marker.id].push(decoration) @decorationsById[decoration.id] = decoration - @emit 'decoration-added', decoration if Grim.includeDeprecations + @emit 'decoration-added', decoration if Grim.includeDeprecatedAPIs @emitter.emit 'did-add-decoration', decoration decoration @@ -923,7 +923,7 @@ class DisplayBuffer extends Model if index > -1 decorations.splice(index, 1) delete @decorationsById[decoration.id] - @emit 'decoration-removed', decoration if Grim.includeDeprecations + @emit 'decoration-removed', decoration if Grim.includeDeprecatedAPIs @emitter.emit 'did-remove-decoration', decoration delete @decorationsByMarkerId[marker.id] if decorations.length is 0 @@ -1075,7 +1075,7 @@ class DisplayBuffer extends Model resumeMarkerChangeEvents: -> marker.resumeChangeEvents() for marker in @getMarkers() - @emit 'markers-updated' if Grim.includeDeprecations + @emit 'markers-updated' if Grim.includeDeprecatedAPIs @emitter.emit 'did-update-markers' refreshMarkerScreenPositions: -> @@ -1217,7 +1217,7 @@ class DisplayBuffer extends Model if marker = @getMarker(textBufferMarker.id) # The marker might have been removed in some other handler called before # this one. Only emit when the marker still exists. - @emit 'marker-created', marker if Grim.includeDeprecations + @emit 'marker-created', marker if Grim.includeDeprecatedAPIs @emitter.emit 'did-create-marker', marker createFoldForMarker: (marker) -> @@ -1227,7 +1227,7 @@ class DisplayBuffer extends Model foldForMarker: (marker) -> @foldsByMarkerId[marker.id] -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs EmitterMixin = require('emissary').Emitter DisplayBuffer::on = (eventName) -> diff --git a/src/git-repository.coffee b/src/git-repository.coffee index 0ae4abf3a..145b2bf96 100644 --- a/src/git-repository.coffee +++ b/src/git-repository.coffee @@ -4,7 +4,7 @@ _ = require 'underscore-plus' {Emitter, Disposable, CompositeDisposable} = require 'event-kit' fs = require 'fs-plus' GitUtils = require 'git-utils' -{includeDeprecations, deprecate} = require 'grim' +{includeDeprecatedAPIs, deprecate} = require 'grim' Task = require './task' @@ -313,7 +313,7 @@ class GitRepository else delete @statuses[relativePath] if currentPathStatus isnt pathStatus - @emit 'status-changed', path, pathStatus if includeDeprecations + @emit 'status-changed', path, pathStatus if includeDeprecatedAPIs @emitter.emit 'did-change-status', {path, pathStatus} pathStatus @@ -474,10 +474,10 @@ class GitRepository submoduleRepo.upstream = submodules[submodulePath]?.upstream ? {ahead: 0, behind: 0} unless statusesUnchanged - @emit 'statuses-changed' if includeDeprecations + @emit 'statuses-changed' if includeDeprecatedAPIs @emitter.emit 'did-change-statuses' -if includeDeprecations +if includeDeprecatedAPIs EmitterMixin = require('emissary').Emitter EmitterMixin.includeInto(GitRepository) diff --git a/src/grammar-registry.coffee b/src/grammar-registry.coffee index b95b561da..b43e095d9 100644 --- a/src/grammar-registry.coffee +++ b/src/grammar-registry.coffee @@ -1,5 +1,5 @@ {Emitter} = require 'event-kit' -{includeDeprecations, deprecate} = require 'grim' +{includeDeprecatedAPIs, deprecate} = require 'grim' FirstMate = require 'first-mate' Token = require './token' @@ -41,7 +41,7 @@ class GrammarRegistry extends FirstMate.GrammarRegistry @off() if includeDeprecations @emitter = new Emitter -if includeDeprecations +if includeDeprecatedAPIs PropertyAccessors = require 'property-accessors' PropertyAccessors.includeInto(GrammarRegistry) diff --git a/src/marker.coffee b/src/marker.coffee index c177b792e..5d1e35570 100644 --- a/src/marker.coffee +++ b/src/marker.coffee @@ -319,7 +319,7 @@ class Marker destroyed: -> delete @displayBuffer.markers[@id] - @emit 'destroyed' if Grim.includeDeprecations + @emit 'destroyed' if Grim.includeDeprecatedAPIs @emitter.emit 'did-destroy' @emitter.dispose() @@ -350,7 +350,7 @@ class Marker if @deferredChangeEvents? @deferredChangeEvents.push(changeEvent) else - @emit 'changed', changeEvent if Grim.includeDeprecations + @emit 'changed', changeEvent if Grim.includeDeprecatedAPIs @emitter.emit 'did-change', changeEvent @oldHeadBufferPosition = newHeadBufferPosition @@ -367,14 +367,14 @@ class Marker @deferredChangeEvents = null for event in deferredChangeEvents - @emit 'changed', event if Grim.includeDeprecations + @emit 'changed', event if Grim.includeDeprecatedAPIs @emitter.emit 'did-change', event return getPixelRange: -> @displayBuffer.pixelRangeForScreenRange(@getScreenRange(), false) -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs EmitterMixin = require('emissary').Emitter EmitterMixin.includeInto(Marker) diff --git a/src/model.coffee b/src/model.coffee index bfb854320..7b38c0eef 100644 --- a/src/model.coffee +++ b/src/model.coffee @@ -1,5 +1,5 @@ Grim = require 'grim' -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs module.exports = require('theorist').Model return diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 7399eaab1..bc4443418 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -308,7 +308,7 @@ class PackageManager packagePaths = packagePaths.filter (packagePath) => not @isPackageDisabled(path.basename(packagePath)) packagePaths = _.uniq packagePaths, (packagePath) -> path.basename(packagePath) @loadPackage(packagePath) for packagePath in packagePaths - @emit 'loaded' if Grim.includeDeprecations + @emit 'loaded' if Grim.includeDeprecatedAPIs @emitter.emit 'did-load-initial-packages' loadPackage: (nameOrPath) -> @@ -357,7 +357,7 @@ class PackageManager packages = @getLoadedPackagesForTypes(types) promises = promises.concat(activator.activatePackages(packages)) Q.all(promises).then => - @emit 'activated' if Grim.includeDeprecations + @emit 'activated' if Grim.includeDeprecatedAPIs @emitter.emit 'did-activate-initial-packages' # another type of package manager can handle other package types. @@ -410,7 +410,7 @@ class PackageManager message = "Failed to load the #{path.basename(packagePath)} package" atom.notifications.addError(message, {stack, detail, dismissable: true}) -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs PackageManager::onDidLoadAll = (callback) -> Grim.deprecate("Use `::onDidLoadInitialPackages` instead.") @onDidLoadInitialPackages(callback) diff --git a/src/package.coffee b/src/package.coffee index f9d3ac576..dd6701527 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -6,7 +6,7 @@ CSON = require 'season' fs = require 'fs-plus' {Emitter, CompositeDisposable} = require 'event-kit' Q = require 'q' -{includeDeprecations, deprecate} = require 'grim' +{includeDeprecatedAPIs, deprecate} = require 'grim' ModuleCache = require './module-cache' ScopedProperties = require './scoped-properties' @@ -40,11 +40,11 @@ class Package metadata ?= {} metadata.name = packageName - if includeDeprecations and metadata.stylesheetMain? + if includeDeprecatedAPIs and metadata.stylesheetMain? deprecate("Use the `mainStyleSheet` key instead of `stylesheetMain` in the `package.json` of `#{packageName}`", {packageName}) metadata.mainStyleSheet = metadata.stylesheetMain - if includeDeprecations and metadata.stylesheets? + if includeDeprecatedAPIs and metadata.stylesheets? deprecate("Use the `styleSheets` key instead of `stylesheets` in the `package.json` of `#{packageName}`", {packageName}) metadata.styleSheets = metadata.stylesheets @@ -163,7 +163,7 @@ class Package if @mainModule? if @mainModule.config? and typeof @mainModule.config is 'object' atom.config.setSchema @name, {type: 'object', properties: @mainModule.config} - else if includeDeprecations and @mainModule.configDefaults? and typeof @mainModule.configDefaults is 'object' + else if includeDeprecatedAPIs and @mainModule.configDefaults? and typeof @mainModule.configDefaults is 'object' deprecate """Use a config schema instead. See the configuration section of https://atom.io/docs/latest/hacking-atom-package-word-count and https://atom.io/docs/api/latest/Config for more details""" @@ -257,7 +257,7 @@ class Package [stylesheetPath, atom.themes.loadStylesheet(stylesheetPath, true)] getStylesheetsPath: -> - if includeDeprecations and fs.isDirectorySync(path.join(@path, 'stylesheets')) + if includeDeprecatedAPIs and fs.isDirectorySync(path.join(@path, 'stylesheets')) deprecate("Store package style sheets in the `styles/` directory instead of `stylesheets/` in the `#{@name}` package", packageName: @name) path.join(@path, 'stylesheets') else @@ -328,7 +328,7 @@ class Package deferred = Q.defer() - if includeDeprecations and fs.isDirectorySync(path.join(@path, 'scoped-properties')) + if includeDeprecatedAPIs and fs.isDirectorySync(path.join(@path, 'scoped-properties')) settingsDirPath = path.join(@path, 'scoped-properties') deprecate("Store package settings files in the `settings/` directory instead of `scoped-properties/`", packageName: @name) else @@ -356,7 +356,7 @@ class Package @mainModule?.deactivate?() catch e console.error "Error deactivating package '#{@name}'", e.stack - @emit 'deactivated' if includeDeprecations + @emit 'deactivated' if includeDeprecatedAPIs @emitter.emit 'did-deactivate' deactivateConfig: -> @@ -456,7 +456,7 @@ class Package else if _.isArray(commands) @activationCommands[selector].push(commands...) - if includeDeprecations and @metadata.activationEvents? + if includeDeprecatedAPIs and @metadata.activationEvents? deprecate """ Use `activationCommands` instead of `activationEvents` in your package.json Commands should be grouped by selector as follows: @@ -575,7 +575,7 @@ class Package atom.notifications.addFatalError(message, {stack, detail, dismissable: true}) -if includeDeprecations +if includeDeprecatedAPIs EmitterMixin = require('emissary').Emitter EmitterMixin.includeInto(Package) diff --git a/src/pane-container-element.coffee b/src/pane-container-element.coffee index 55d527971..94b008255 100644 --- a/src/pane-container-element.coffee +++ b/src/pane-container-element.coffee @@ -10,13 +10,13 @@ class PaneContainerElement extends HTMLElement @subscriptions = new CompositeDisposable @classList.add 'panes' - if Grim.includeDeprecations + if Grim.includeDeprecatedAPIs PaneContainerView ?= require './pane-container-view' @__spacePenView = new PaneContainerView(this) initialize: (@model) -> @subscriptions.add @model.observeRoot(@rootChanged.bind(this)) - @__spacePenView.setModel(@model) if Grim.includeDeprecations + @__spacePenView.setModel(@model) if Grim.includeDeprecatedAPIs this rootChanged: (root) -> diff --git a/src/pane-element.coffee b/src/pane-element.coffee index f050567b2..f5bfc18bd 100644 --- a/src/pane-element.coffee +++ b/src/pane-element.coffee @@ -13,7 +13,7 @@ class PaneElement extends HTMLElement @initializeContent() @subscribeToDOMEvents() - @createSpacePenShim() if Grim.includeDeprecations + @createSpacePenShim() if Grim.includeDeprecatedAPIs attachedCallback: -> @attached = true @@ -51,7 +51,7 @@ class PaneElement extends HTMLElement @subscriptions.add @model.observeActiveItem(@activeItemChanged.bind(this)) @subscriptions.add @model.onDidRemoveItem(@itemRemoved.bind(this)) @subscriptions.add @model.onDidDestroy(@paneDestroyed.bind(this)) - @__spacePenView.setModel(@model) if Grim.includeDeprecations + @__spacePenView.setModel(@model) if Grim.includeDeprecatedAPIs this getModel: -> @model diff --git a/src/pane.coffee b/src/pane.coffee index 07e621e46..6d2aa5154 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -41,7 +41,7 @@ class Pane extends Model # Called by the Serializable mixin during serialization. serializeParams: -> - if Grim.includeDeprecations and typeof @activeItem?.getURI is 'function' + if Grim.includeDeprecatedAPIs and typeof @activeItem?.getURI is 'function' activeItemURI = @activeItem.getURI() else if typeof @activeItem?.getUri is 'function' activeItemURI = @activeItem.getUri() @@ -660,7 +660,7 @@ class Pane extends Model else throw error -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs Pane::on = (eventName) -> switch eventName when 'activated' diff --git a/src/project.coffee b/src/project.coffee index 63e5576de..b34d301b6 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -4,7 +4,7 @@ url = require 'url' _ = require 'underscore-plus' fs = require 'fs-plus' Q = require 'q' -{includeDeprecations, deprecate} = require 'grim' +{includeDeprecatedAPIs, deprecate} = require 'grim' {Subscriber} = require 'emissary' {Emitter} = require 'event-kit' Serializable = require 'serializable' @@ -67,7 +67,7 @@ class Project extends Model @subscribeToBuffer(buffer) for buffer in @buffers - if Grim.includeDeprecations and path? + if Grim.includeDeprecatedAPIs and path? Grim.deprecate("Pass 'paths' array instead of 'path' to project constructor") paths ?= _.compact([path]) @@ -178,7 +178,7 @@ class Project extends Model @addPath(projectPath, emitEvent: false) for projectPath in projectPaths - @emit "path-changed" if includeDeprecations + @emit "path-changed" if includeDeprecatedAPIs @emitter.emit 'did-change-paths', projectPaths # Public: Add a path to the project's list of root paths @@ -205,7 +205,7 @@ class Project extends Model @repositories.push(repo ? null) unless options?.emitEvent is false - @emit "path-changed" if includeDeprecations + @emit "path-changed" if includeDeprecatedAPIs @emitter.emit 'did-change-paths', @getPaths() # Public: remove a path from the project's list of root paths. @@ -227,7 +227,7 @@ class Project extends Model [removedRepository] = @repositories.splice(indexToRemove, 1) removedDirectory.off() removedRepository?.destroy() unless removedRepository in @repositories - @emit "path-changed" if includeDeprecations + @emit "path-changed" if includeDeprecatedAPIs @emitter.emit "did-change-paths", @getPaths() true else @@ -393,7 +393,7 @@ class Project extends Model addBufferAtIndex: (buffer, index, options={}) -> @buffers.splice(index, 0, buffer) @subscribeToBuffer(buffer) - @emit 'buffer-created', buffer if includeDeprecations + @emit 'buffer-created', buffer if includeDeprecatedAPIs @emitter.emit 'did-add-buffer', buffer buffer @@ -433,7 +433,7 @@ class Project extends Model detail: error.message dismissable: true -if includeDeprecations +if includeDeprecatedAPIs Project.pathForRepositoryUrl = (repoUrl) -> deprecate '::pathForRepositoryUrl will be removed. Please remove from your code.' [repoName] = url.parse(repoUrl).path.split('/')[-1..] diff --git a/src/selection.coffee b/src/selection.coffee index af70e234c..91f942524 100644 --- a/src/selection.coffee +++ b/src/selection.coffee @@ -27,7 +27,7 @@ class Selection extends Model unless @editor.isDestroyed() @destroyed = true @editor.removeSelection(this) - @emit 'destroyed' if Grim.includeDeprecations + @emit 'destroyed' if Grim.includeDeprecatedAPIs @emitter.emit 'did-destroy' @emitter.dispose() @@ -732,7 +732,7 @@ class Selection extends Model newScreenRange: @getScreenRange() selection: this - @emit 'screen-range-changed', @getScreenRange() if Grim.includeDeprecations + @emit 'screen-range-changed', @getScreenRange() if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-range' @editor.selectionRangeChanged(eventObject) @@ -768,7 +768,7 @@ class Selection extends Model if goalScreenRange = @marker.getProperties().goalScreenRange Range.fromObject(goalScreenRange) -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs Selection::on = (eventName) -> switch eventName when 'screen-range-changed' diff --git a/src/styles-element.coffee b/src/styles-element.coffee index eaf7c53c8..74ebd23ba 100644 --- a/src/styles-element.coffee +++ b/src/styles-element.coffee @@ -1,5 +1,5 @@ {Emitter, CompositeDisposable} = require 'event-kit' -{includeDeprecations} = require 'grim' +{includeDeprecatedAPIs} = require 'grim' class StylesElement extends HTMLElement subscriptions: null @@ -19,7 +19,7 @@ class StylesElement extends HTMLElement @styleElementClonesByOriginalElement = new WeakMap attachedCallback: -> - if includeDeprecations and @context is 'atom-text-editor' + if includeDeprecatedAPIs and @context is 'atom-text-editor' for styleElement in @children @upgradeDeprecatedSelectors(styleElement) @initialize() @@ -67,7 +67,7 @@ class StylesElement extends HTMLElement @insertBefore(styleElementClone, insertBefore) - if includeDeprecations and @context is 'atom-text-editor' + if includeDeprecatedAPIs and @context is 'atom-text-editor' @upgradeDeprecatedSelectors(styleElementClone) @emitter.emit 'did-add-style-element', styleElementClone diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index b57920952..c001c2252 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -152,7 +152,7 @@ class TextEditorComponent if @editor.isAlive() @updateParentViewFocusedClassIfNeeded() @updateParentViewMiniClass() - if grim.includeDeprecations + if grim.includeDeprecatedAPIs @hostElement.__spacePenView.trigger 'cursor:moved' if cursorMoved @hostElement.__spacePenView.trigger 'selection:changed' if selectionChanged @hostElement.__spacePenView.trigger 'editor:display-updated' @@ -781,7 +781,7 @@ class TextEditorComponent @hostElement.classList.toggle('mini', @editor.isMini()) @rootElement.classList.toggle('mini', @editor.isMini()) -if grim.includeDeprecations +if grim.includeDeprecatedAPIs # Deprecated TextEditorComponent::setInvisibles = (invisibles={}) -> grim.deprecate "Use config.set('editor.invisibles', invisibles) instead" diff --git a/src/text-editor-element.coffee b/src/text-editor-element.coffee index 5822f533c..4a7a11147 100644 --- a/src/text-editor-element.coffee +++ b/src/text-editor-element.coffee @@ -21,7 +21,7 @@ class TextEditorElement extends HTMLElement createdCallback: -> @emitter = new Emitter @initializeContent() - @createSpacePenShim() if Grim.includeDeprecations + @createSpacePenShim() if Grim.includeDeprecatedAPIs @addEventListener 'focus', @focused.bind(this) @addEventListener 'blur', @blurred.bind(this) @@ -87,7 +87,7 @@ class TextEditorElement extends HTMLElement @model.onDidChangeGrammar => @addGrammarScopeAttribute() @model.onDidChangeEncoding => @addEncodingAttribute() @model.onDidDestroy => @unmountComponent() - @__spacePenView.setModel(@model) if Grim.includeDeprecations + @__spacePenView.setModel(@model) if Grim.includeDeprecatedAPIs @model getModel: -> diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 1821a8a52..1f917b6a2 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -2,7 +2,7 @@ _ = require 'underscore-plus' path = require 'path' Serializable = require 'serializable' Delegator = require 'delegato' -{includeDeprecations, deprecate} = require 'grim' +{includeDeprecatedAPIs, deprecate} = require 'grim' {Model} = require 'theorist' EmitterMixin = require('emissary').Emitter {CompositeDisposable, Emitter} = require 'event-kit' @@ -1252,7 +1252,7 @@ class TextEditor extends Model # # Returns a {Decoration} object decorateMarker: (marker, decorationParams) -> - if includeDeprecations and decorationParams.type is 'gutter' + if includeDeprecatedAPIs and decorationParams.type is 'gutter' deprecate("Decorations of `type: 'gutter'` have been renamed to `type: 'line-number'`.") decorationParams.type = 'line-number' @displayBuffer.decorateMarker(marker, decorationParams) @@ -2835,7 +2835,7 @@ class TextEditor extends Model logScreenLines: (start, end) -> @displayBuffer.logLines(start, end) -if includeDeprecations +if includeDeprecatedAPIs TextEditor::getViewClass = -> require './text-editor-view' diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index ff06c66e6..bfc563d93 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -87,7 +87,7 @@ class TokenizedBuffer extends Model @retokenizeLines() - @emit 'grammar-changed', grammar if Grim.includeDeprecations + @emit 'grammar-changed', grammar if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-grammar', grammar reloadGrammar: -> @@ -109,7 +109,7 @@ class TokenizedBuffer extends Model @invalidateRow(0) @fullyTokenized = false event = {start: 0, end: lastRow, delta: 0} - @emit 'changed', event if Grim.includeDeprecations + @emit 'changed', event if Grim.includeDeprecatedAPIs @emitter.emit 'did-change', event setVisible: (@visible) -> @@ -171,7 +171,7 @@ class TokenizedBuffer extends Model [startRow, endRow] = @updateFoldableStatus(startRow, endRow) event = {start: startRow, end: endRow, delta: 0} - @emit 'changed', event if Grim.includeDeprecations + @emit 'changed', event if Grim.includeDeprecatedAPIs @emitter.emit 'did-change', event if @firstInvalidRow()? @@ -181,7 +181,7 @@ class TokenizedBuffer extends Model markTokenizationComplete: -> unless @fullyTokenized - @emit 'tokenized' if Grim.includeDeprecations + @emit 'tokenized' if Grim.includeDeprecatedAPIs @emitter.emit 'did-tokenize' @fullyTokenized = true @@ -228,7 +228,7 @@ class TokenizedBuffer extends Model end -= delta event = { start, end, delta, bufferChange: e } - @emit 'changed', event if Grim.includeDeprecations + @emit 'changed', event if Grim.includeDeprecatedAPIs @emitter.emit 'did-change', event retokenizeWhitespaceRowsIfIndentLevelChanged: (row, increment) -> @@ -464,7 +464,7 @@ class TokenizedBuffer extends Model console.log row, line, line.length return -if Grim.includeDeprecations +if Grim.includeDeprecatedAPIs EmitterMixin = require('emissary').Emitter TokenizedBuffer::on = (eventName) -> diff --git a/src/workspace-element.coffee b/src/workspace-element.coffee index 66ded0084..33ea14093 100644 --- a/src/workspace-element.coffee +++ b/src/workspace-element.coffee @@ -16,10 +16,10 @@ class WorkspaceElement extends HTMLElement @initializeContent() @observeScrollbarStyle() @observeTextEditorFontConfig() - @createSpacePenShim() if Grim.includeDeprecations + @createSpacePenShim() if Grim.includeDeprecatedAPIs attachedCallback: -> - callAttachHooks(this) if Grim.includeDeprecations + callAttachHooks(this) if Grim.includeDeprecatedAPIs @focus() detachedCallback: -> @@ -82,7 +82,7 @@ class WorkspaceElement extends HTMLElement @appendChild(@panelContainers.modal) - @__spacePenView.setModel(@model) if Grim.includeDeprecations + @__spacePenView.setModel(@model) if Grim.includeDeprecatedAPIs this getModel: -> @model diff --git a/src/workspace.coffee b/src/workspace.coffee index 858ae063f..722a45f21 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -1,4 +1,4 @@ -{includeDeprecations, deprecate} = require 'grim' +{includeDeprecatedAPIs, deprecate} = require 'grim' _ = require 'underscore-plus' path = require 'path' {join} = path @@ -112,7 +112,7 @@ class Workspace extends Model _.uniq(packageNames) editorAdded: (editor) -> - @emit 'editor-created', editor if includeDeprecations + @emit 'editor-created', editor if includeDeprecatedAPIs installShellCommands: -> require('./command-installer').installShellCommandsInteractively() @@ -389,7 +389,7 @@ class Workspace extends Model # the containing pane. Defaults to `true`. openSync: (uri='', options={}) -> # TODO: Remove deprecated changeFocus option - if includeDeprecations and options.changeFocus? + if includeDeprecatedAPIs and options.changeFocus? deprecate("The `changeFocus` option has been renamed to `activatePane`") options.activatePane = options.changeFocus delete options.changeFocus @@ -410,7 +410,7 @@ class Workspace extends Model openURIInPane: (uri, pane, options={}) -> # TODO: Remove deprecated changeFocus option - if includeDeprecations and options.changeFocus? + if includeDeprecatedAPIs and options.changeFocus? deprecate("The `changeFocus` option has been renamed to `activatePane`") options.activatePane = options.changeFocus delete options.changeFocus @@ -446,7 +446,7 @@ class Workspace extends Model if options.initialLine? or options.initialColumn? item.setCursorBufferPosition?([options.initialLine, options.initialColumn]) index = pane.getActiveItemIndex() - @emit "uri-opened" if includeDeprecations + @emit "uri-opened" if includeDeprecatedAPIs @emitter.emit 'did-open', {uri, pane, item, index} item @@ -477,7 +477,7 @@ class Workspace extends Model # Returns a {Disposable} on which `.dispose()` can be called to remove the # opener. addOpener: (opener) -> - if includeDeprecations + if includeDeprecatedAPIs packageName = @getCallingPackageName() wrappedOpener = (uri, options) -> @@ -891,7 +891,7 @@ class Workspace extends Model deferred.promise -if includeDeprecations +if includeDeprecatedAPIs Object.defineProperty Workspace::, 'activePaneItem', get: -> Grim.deprecate "Use ::getActivePaneItem() instead of the ::activePaneItem property" diff --git a/static/index.js b/static/index.js index 7c8e92571..aa582f845 100644 --- a/static/index.js +++ b/static/index.js @@ -34,7 +34,7 @@ window.onload = function() { ModuleCache.register(loadSettings); ModuleCache.add(loadSettings.resourcePath); - require('grim').includeDeprecations = !loadSettings.apiPreviewMode; + require('grim').includeDeprecatedAPIs = !loadSettings.apiPreviewMode; // Start the crash reporter before anything else. require('crash-reporter').start({ From 183ac788a1e48e6c50e3f0359e8baae1dee5dbc2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 09:22:36 -0700 Subject: [PATCH 073/121] Check Grim.includeDeprecatedAPIs in keymap-extensions --- src/keymap-extensions.coffee | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/keymap-extensions.coffee b/src/keymap-extensions.coffee index 821abbc0c..551c6580d 100644 --- a/src/keymap-extensions.coffee +++ b/src/keymap-extensions.coffee @@ -3,13 +3,14 @@ path = require 'path' KeymapManager = require 'atom-keymap' CSON = require 'season' {jQuery} = require 'space-pen' +Grim = require 'grim' KeymapManager::onDidLoadBundledKeymaps = (callback) -> @emitter.on 'did-load-bundled-keymaps', callback KeymapManager::loadBundledKeymaps = -> @loadKeymap(path.join(@resourcePath, 'keymaps')) - @emit 'bundled-keymaps-loaded' + @emit 'bundled-keymaps-loaded' if Grim.includeDeprecatedAPIs @emitter.emit 'did-load-bundled-keymaps' KeymapManager::getUserKeymapPath = -> From ec5cd753508a61b2dbaf03425c726492548b19ef Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 09:40:17 -0700 Subject: [PATCH 074/121] includeDeprecations -> includeDeprecatedAPIs --- src/grammar-registry.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grammar-registry.coffee b/src/grammar-registry.coffee index b43e095d9..8272dce47 100644 --- a/src/grammar-registry.coffee +++ b/src/grammar-registry.coffee @@ -38,7 +38,7 @@ class GrammarRegistry extends FirstMate.GrammarRegistry selectGrammar: (filePath, fileContents) -> super clearObservers: -> - @off() if includeDeprecations + @off() if includeDeprecatedAPIs @emitter = new Emitter if includeDeprecatedAPIs From 50d7825200d9fc0eeb2b7f1568363eacc44bfc98 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 09:45:13 -0700 Subject: [PATCH 075/121] Always assign paths --- src/project.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/project.coffee b/src/project.coffee index b34d301b6..f7f1eb498 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -69,7 +69,7 @@ class Project extends Model if Grim.includeDeprecatedAPIs and path? Grim.deprecate("Pass 'paths' array instead of 'path' to project constructor") - paths ?= _.compact([path]) + paths ?= _.compact([path]) @setPaths(paths) From d1289be584bb98358414c597c78f5ec0f4958357 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 09:51:11 -0700 Subject: [PATCH 076/121] :arrow_up: markdown-preview@0.147 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8b575680c..e1f0b075a 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "incompatible-packages": "0.24.0", "keybinding-resolver": "0.30.0", "link": "0.30.0", - "markdown-preview": "0.146.0", + "markdown-preview": "0.147.0", "metrics": "0.45.0", "notifications": "0.35.0", "open-on-github": "0.36.0", From 8be59f7433ecc6b51b3f398742a05673088c51a0 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 09:53:18 -0700 Subject: [PATCH 077/121] :arrow_up: wrap-guide@0.32 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e1f0b075a..531f8f093 100644 --- a/package.json +++ b/package.json @@ -122,7 +122,7 @@ "update-package-dependencies": "0.9.0", "welcome": "0.26.0", "whitespace": "0.29.0", - "wrap-guide": "0.31.0", + "wrap-guide": "0.32.0", "language-c": "0.43.0", "language-clojure": "0.13.0", "language-coffee-script": "0.39.0", From 2cf1a926889cee018ace189253370abdbb2ac116 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 11:11:25 -0700 Subject: [PATCH 078/121] :arrow_up: donna@1.0.9 --- build/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/package.json b/build/package.json index 297ddadfd..18bef4d1e 100644 --- a/build/package.json +++ b/build/package.json @@ -7,7 +7,7 @@ }, "dependencies": { "async": "~0.2.9", - "donna": "1.0.7", + "donna": "1.0.9", "formidable": "~1.0.14", "fs-plus": "2.x", "github-releases": "~0.2.0", From f5aab3547659759a016f43f8306e76036d2e8864 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 11:21:54 -0700 Subject: [PATCH 079/121] Check Grim.includeDeprecatedAPIs before emitting --- src/pane.coffee | 10 +++++----- src/text-editor.coffee | 29 +++++++++++++++-------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/pane.coffee b/src/pane.coffee index 6d2aa5154..c69c74180 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -317,7 +317,7 @@ class Pane extends Model @subscribe item, 'destroyed', => @removeItem(item, true) @items.splice(index, 0, item) - @emit 'item-added', item, index + @emit 'item-added', item, index if Grim.includeDeprecatedAPIs @emitter.emit 'did-add-item', {item, index} @setActiveItem(item) unless @getActiveItem()? item @@ -352,7 +352,7 @@ class Pane extends Model else @activatePreviousItem() @items.splice(index, 1) - @emit 'item-removed', item, index, destroyed + @emit 'item-removed', item, index, destroyed if Grim.includeDeprecatedAPIs @emitter.emit 'did-remove-item', {item, index, destroyed} @container?.didDestroyPaneItem({item, index, pane: this}) if destroyed @destroy() if @items.length is 0 and atom.config.get('core.destroyEmptyPanes') @@ -365,7 +365,7 @@ class Pane extends Model oldIndex = @items.indexOf(item) @items.splice(oldIndex, 1) @items.splice(newIndex, 0, item) - @emit 'item-moved', item, newIndex + @emit 'item-moved', item, newIndex if Grim.includeDeprecatedAPIs @emitter.emit 'did-move-item', {item, oldIndex, newIndex} # Public: Move the given item to the given index on another pane. @@ -393,7 +393,7 @@ class Pane extends Model destroyItem: (item) -> index = @items.indexOf(item) if index isnt -1 - @emit 'before-item-destroyed', item + @emit 'before-item-destroyed', item if Grim.includeDeprecatedAPIs @emitter.emit 'will-destroy-item', {item, index} @container?.willDestroyPaneItem({item, index, pane: this}) if @promptToSaveItem(item) @@ -530,7 +530,7 @@ class Pane extends Model throw new Error("Pane has been destroyed") if @isDestroyed() @container?.setActivePane(this) - @emit 'activated' + @emit 'activated' if Grim.includeDeprecatedAPIs @emitter.emit 'did-activate' # Public: Close the pane and destroy all its items. diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 1f917b6a2..cbf1136a2 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -109,10 +109,10 @@ class TextEditor extends Model @setEncoding(atom.config.get('core.fileEncoding', scope: @getRootScopeDescriptor())) @subscribe @$scrollTop, (scrollTop) => - @emit 'scroll-top-changed', scrollTop + @emit 'scroll-top-changed', scrollTop if includeDeprecatedAPIs @emitter.emit 'did-change-scroll-top', scrollTop @subscribe @$scrollLeft, (scrollLeft) => - @emit 'scroll-left-changed', scrollLeft + @emit 'scroll-left-changed', scrollLeft if includeDeprecatedAPIs @emitter.emit 'did-change-scroll-left', scrollLeft atom.workspace?.editorAdded(this) if registerEditor @@ -134,18 +134,19 @@ class TextEditor extends Model @subscribe @buffer.onDidChangePath => unless atom.project.getPaths().length > 0 atom.project.setPaths([path.dirname(@getPath())]) - @emit "title-changed" + @emit "title-changed" if includeDeprecatedAPIs @emitter.emit 'did-change-title', @getTitle() - @emit "path-changed" + @emit "path-changed" if includeDeprecatedAPIs @emitter.emit 'did-change-path', @getPath() @subscribe @buffer.onDidChangeEncoding => @emitter.emit 'did-change-encoding', @getEncoding() @subscribe @buffer.onDidDestroy => @destroy() # TODO: remove these when we remove the deprecations. They are old events. - @subscribe @buffer.onDidStopChanging => @emit "contents-modified" - @subscribe @buffer.onDidConflict => @emit "contents-conflicted" - @subscribe @buffer.onDidChangeModified => @emit "modified-status-changed" + if includeDeprecatedAPIs + @subscribe @buffer.onDidStopChanging => @emit "contents-modified" + @subscribe @buffer.onDidConflict => @emit "contents-conflicted" + @subscribe @buffer.onDidChangeModified => @emit "modified-status-changed" @preserveCursorPositionOnBufferReload() @@ -1630,14 +1631,14 @@ class TextEditor extends Model @decorateMarker(marker, type: 'line-number', class: 'cursor-line') @decorateMarker(marker, type: 'line-number', class: 'cursor-line-no-selection', onlyHead: true, onlyEmpty: true) @decorateMarker(marker, type: 'line', class: 'cursor-line', onlyEmpty: true) - @emit 'cursor-added', cursor + @emit 'cursor-added', cursor if includeDeprecatedAPIs @emitter.emit 'did-add-cursor', cursor cursor # Remove the given cursor from this editor. removeCursor: (cursor) -> _.remove(@cursors, cursor) - @emit 'cursor-removed', cursor + @emit 'cursor-removed', cursor if includeDeprecatedAPIs @emitter.emit 'did-remove-cursor', cursor moveCursors: (fn) -> @@ -1645,7 +1646,7 @@ class TextEditor extends Model @mergeCursors() cursorMoved: (event) -> - @emit 'cursor-moved', event + @emit 'cursor-moved', event if includeDeprecatedAPIs @emitter.emit 'did-change-cursor-position', event # Merge cursors that have the same screen position @@ -2092,14 +2093,14 @@ class TextEditor extends Model if selection.intersectsBufferRange(selectionBufferRange) return selection else - @emit 'selection-added', selection + @emit 'selection-added', selection if includeDeprecatedAPIs @emitter.emit 'did-add-selection', selection selection # Remove the given selection. removeSelection: (selection) -> _.remove(@selections, selection) - @emit 'selection-removed', selection + @emit 'selection-removed', selection if includeDeprecatedAPIs @emitter.emit 'did-remove-selection', selection # Reduce one or more selections to a single empty selection based on the most @@ -2119,7 +2120,7 @@ class TextEditor extends Model # Called by the selection selectionRangeChanged: (event) -> - @emit 'selection-screen-range-changed', event + @emit 'selection-screen-range-changed', event if includeDeprecatedAPIs @emitter.emit 'did-change-selection-range', event ### @@ -2723,7 +2724,7 @@ class TextEditor extends Model @updateInvisibles() @subscribeToScopedConfigSettings() @unfoldAll() - @emit 'grammar-changed' + @emit 'grammar-changed' if includeDeprecatedAPIs @emitter.emit 'did-change-grammar', @getGrammar() handleMarkerCreated: (marker) => From e39df0e40d44feb0e142e5327af8582dc1de0d92 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 11:26:36 -0700 Subject: [PATCH 080/121] Conditionally include deprecations in ThemeManager --- src/theme-manager.coffee | 157 ++++++++++++++++----------------------- 1 file changed, 64 insertions(+), 93 deletions(-) diff --git a/src/theme-manager.coffee b/src/theme-manager.coffee index 0ff42c4d2..01bb9652a 100644 --- a/src/theme-manager.coffee +++ b/src/theme-manager.coffee @@ -1,22 +1,16 @@ path = require 'path' - _ = require 'underscore-plus' -EmitterMixin = require('emissary').Emitter {Emitter, Disposable, CompositeDisposable} = require 'event-kit' {File} = require 'pathwatcher' fs = require 'fs-plus' Q = require 'q' Grim = require 'grim' -Package = require './package' - # Extended: Handles loading and activating available themes. # # An instance of this class is always available as the `atom.themes` global. module.exports = class ThemeManager - EmitterMixin.includeInto(this) - constructor: ({@packageManager, @resourcePath, @configDirPath, @safeMode}) -> @emitter = new Emitter @styleSheetDisposablesBySourcePath = {} @@ -33,24 +27,24 @@ class ThemeManager styleElementAdded: (styleElement) -> {sheet} = styleElement @sheetsByStyleElement.set(styleElement, sheet) - @emit 'stylesheet-added', sheet + @emit 'stylesheet-added', sheet if Grim.includeDeprecatedAPIs @emitter.emit 'did-add-stylesheet', sheet - @emit 'stylesheets-changed' + @emit 'stylesheets-changed' if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-stylesheets' styleElementRemoved: (styleElement) -> sheet = @sheetsByStyleElement.get(styleElement) - @emit 'stylesheet-removed', sheet + @emit 'stylesheet-removed', sheet if Grim.includeDeprecatedAPIs @emitter.emit 'did-remove-stylesheet', sheet - @emit 'stylesheets-changed' + @emit 'stylesheets-changed' if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-stylesheets' styleElementUpdated: ({sheet}) -> - @emit 'stylesheet-removed', sheet + @emit 'stylesheet-removed', sheet if Grim.includeDeprecatedAPIs @emitter.emit 'did-remove-stylesheet', sheet - @emit 'stylesheet-added', sheet + @emit 'stylesheet-added', sheet if Grim.includeDeprecatedAPIs @emitter.emit 'did-add-stylesheet', sheet - @emit 'stylesheets-changed' + @emit 'stylesheets-changed' if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-stylesheets' ### @@ -65,65 +59,6 @@ class ThemeManager @emitter.on 'did-change-active-themes', callback @emitter.on 'did-reload-all', callback # TODO: Remove once deprecated pre-1.0 APIs are gone - onDidReloadAll: (callback) -> - Grim.deprecate("Use `::onDidChangeActiveThemes` instead.") - @onDidChangeActiveThemes(callback) - - # Deprecated: Invoke `callback` when a stylesheet has been added to the dom. - # - # * `callback` {Function} - # * `stylesheet` {StyleSheet} the style node - # - # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. - onDidAddStylesheet: (callback) -> - Grim.deprecate("Use atom.styles.onDidAddStyleElement instead") - @emitter.on 'did-add-stylesheet', callback - - # Deprecated: Invoke `callback` when a stylesheet has been removed from the dom. - # - # * `callback` {Function} - # * `stylesheet` {StyleSheet} the style node - # - # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. - onDidRemoveStylesheet: (callback) -> - Grim.deprecate("Use atom.styles.onDidRemoveStyleElement instead") - @emitter.on 'did-remove-stylesheet', callback - - # Deprecated: Invoke `callback` when a stylesheet has been updated. - # - # * `callback` {Function} - # * `stylesheet` {StyleSheet} the style node - # - # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. - onDidUpdateStylesheet: (callback) -> - Grim.deprecate("Use atom.styles.onDidUpdateStyleElement instead") - @emitter.on 'did-update-stylesheet', callback - - # Deprecated: Invoke `callback` when any stylesheet has been updated, added, or removed. - # - # * `callback` {Function} - # - # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe. - onDidChangeStylesheets: (callback) -> - Grim.deprecate("Use atom.styles.onDidAdd/RemoveStyleElement instead") - @emitter.on 'did-change-stylesheets', callback - - on: (eventName) -> - switch eventName - when 'reloaded' - Grim.deprecate 'Use ThemeManager::onDidChangeActiveThemes instead' - when 'stylesheet-added' - Grim.deprecate 'Use ThemeManager::onDidAddStylesheet instead' - when 'stylesheet-removed' - Grim.deprecate 'Use ThemeManager::onDidRemoveStylesheet instead' - when 'stylesheet-updated' - Grim.deprecate 'Use ThemeManager::onDidUpdateStylesheet instead' - when 'stylesheets-changed' - Grim.deprecate 'Use ThemeManager::onDidChangeStylesheets instead' - else - Grim.deprecate 'ThemeManager::on is deprecated. Use event subscription methods instead.' - EmitterMixin::on.apply(this, arguments) - ### Section: Accessing Available Themes ### @@ -140,10 +75,6 @@ class ThemeManager getLoadedThemeNames: -> theme.name for theme in @getLoadedThemes() - getLoadedNames: -> - Grim.deprecate("Use `::getLoadedThemeNames` instead.") - @getLoadedThemeNames() - # Public: Get an array of all the loaded themes. getLoadedThemes: -> pack for pack in @packageManager.getLoadedPackages() when pack.isTheme() @@ -156,10 +87,6 @@ class ThemeManager getActiveThemeNames: -> theme.name for theme in @getActiveThemes() - getActiveNames: -> - Grim.deprecate("Use `::getActiveThemeNames` instead.") - @getActiveThemeNames() - # Public: Get an array of all the active themes. getActiveThemes: -> pack for pack in @packageManager.getActivePackages() when pack.isTheme() @@ -208,22 +135,10 @@ class ThemeManager # the first/top theme to override later themes in the stack. themeNames.reverse() - # Set the list of enabled themes. - # - # * `enabledThemeNames` An {Array} of {String} theme names. - setEnabledThemes: (enabledThemeNames) -> - Grim.deprecate("Use `atom.config.set('core.themes', arrayOfThemeNames)` instead") - atom.config.set('core.themes', enabledThemeNames) - ### Section: Private ### - # Returns the {String} path to the user's stylesheet under ~/.atom - getUserStylesheetPath: -> - Grim.deprecate("Call atom.styles.getUserStyleSheetPath() instead") - atom.styles.getUserStyleSheetPath() - # Resolve and apply the stylesheet specified by the path. # # This supports both CSS and Less stylsheets. @@ -366,7 +281,7 @@ class ThemeManager @loadUserStylesheet() @reloadBaseStylesheets() @initialLoadComplete = true - @emit 'reloaded' + @emit 'reloaded' if Grim.includeDeprecatedAPIs @emitter.emit 'did-change-active-themes' deferred.resolve() @@ -410,3 +325,59 @@ class ThemeManager themePaths.push(path.join(themePath, 'styles')) themePaths.filter (themePath) -> fs.isDirectorySync(themePath) + +if Grim.includeDeprecatedAPIs + EmitterMixin = require('emissary').Emitter + EmitterMixin.includeInto(ThemeManager) + + ThemeManager::on = (eventName) -> + switch eventName + when 'reloaded' + Grim.deprecate 'Use ThemeManager::onDidChangeActiveThemes instead' + when 'stylesheet-added' + Grim.deprecate 'Use ThemeManager::onDidAddStylesheet instead' + when 'stylesheet-removed' + Grim.deprecate 'Use ThemeManager::onDidRemoveStylesheet instead' + when 'stylesheet-updated' + Grim.deprecate 'Use ThemeManager::onDidUpdateStylesheet instead' + when 'stylesheets-changed' + Grim.deprecate 'Use ThemeManager::onDidChangeStylesheets instead' + else + Grim.deprecate 'ThemeManager::on is deprecated. Use event subscription methods instead.' + EmitterMixin::on.apply(this, arguments) + + ThemeManager::onDidReloadAll = (callback) -> + Grim.deprecate("Use `::onDidChangeActiveThemes` instead.") + @onDidChangeActiveThemes(callback) + + ThemeManager::onDidAddStylesheet = (callback) -> + Grim.deprecate("Use atom.styles.onDidAddStyleElement instead") + @emitter.on 'did-add-stylesheet', callback + + ThemeManager::onDidRemoveStylesheet = (callback) -> + Grim.deprecate("Use atom.styles.onDidRemoveStyleElement instead") + @emitter.on 'did-remove-stylesheet', callback + + ThemeManager::onDidUpdateStylesheet = (callback) -> + Grim.deprecate("Use atom.styles.onDidUpdateStyleElement instead") + @emitter.on 'did-update-stylesheet', callback + + ThemeManager::onDidChangeStylesheets = (callback) -> + Grim.deprecate("Use atom.styles.onDidAdd/RemoveStyleElement instead") + @emitter.on 'did-change-stylesheets', callback + + ThemeManager::getUserStylesheetPath = -> + Grim.deprecate("Call atom.styles.getUserStyleSheetPath() instead") + atom.styles.getUserStyleSheetPath() + + ThemeManager::getLoadedNames = -> + Grim.deprecate("Use `::getLoadedThemeNames` instead.") + @getLoadedThemeNames() + + ThemeManager::getActiveNames = -> + Grim.deprecate("Use `::getActiveThemeNames` instead.") + @getActiveThemeNames() + + ThemeManager::setEnabledThemes = (enabledThemeNames) -> + Grim.deprecate("Use `atom.config.set('core.themes', arrayOfThemeNames)` instead") + atom.config.set('core.themes', enabledThemeNames) From 73707ce57c8a1349ce6e19295dadb5f28b8c5354 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 11:35:04 -0700 Subject: [PATCH 081/121] :art: --- src/package-manager.coffee | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/package-manager.coffee b/src/package-manager.coffee index bc4443418..16142cda4 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -411,16 +411,9 @@ class PackageManager atom.notifications.addError(message, {stack, detail, dismissable: true}) if Grim.includeDeprecatedAPIs - PackageManager::onDidLoadAll = (callback) -> - Grim.deprecate("Use `::onDidLoadInitialPackages` instead.") - @onDidLoadInitialPackages(callback) - - PackageManager::onDidActivateAll = (callback) -> - Grim.deprecate("Use `::onDidActivateInitialPackages` instead.") - @onDidActivateInitialPackages(callback) - EmitterMixin = require('emissary').Emitter EmitterMixin.includeInto(PackageManager) + PackageManager::on = (eventName) -> switch eventName when 'loaded' @@ -430,3 +423,11 @@ if Grim.includeDeprecatedAPIs else Grim.deprecate 'PackageManager::on is deprecated. Use event subscription methods instead.' EmitterMixin::on.apply(this, arguments) + + PackageManager::onDidLoadAll = (callback) -> + Grim.deprecate("Use `::onDidLoadInitialPackages` instead.") + @onDidLoadInitialPackages(callback) + + PackageManager::onDidActivateAll = (callback) -> + Grim.deprecate("Use `::onDidActivateInitialPackages` instead.") + @onDidActivateInitialPackages(callback) From 5aeffd49ab597a0545de3b5bfe4e508408a4e3e6 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 11:36:10 -0700 Subject: [PATCH 082/121] :art: --- src/project.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/project.coffee b/src/project.coffee index f7f1eb498..b1c939905 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -69,8 +69,8 @@ class Project extends Model if Grim.includeDeprecatedAPIs and path? Grim.deprecate("Pass 'paths' array instead of 'path' to project constructor") - paths ?= _.compact([path]) + paths ?= _.compact([path]) @setPaths(paths) destroyed: -> From 60913cd9bfa9794a0b4a0f5c659eb8d766824f18 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 3 Apr 2015 11:37:34 -0700 Subject: [PATCH 083/121] :memo: Remove empty deprecated comments --- src/text-editor-component.coffee | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index c001c2252..bd0e0ee86 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -782,12 +782,10 @@ class TextEditorComponent @rootElement.classList.toggle('mini', @editor.isMini()) if grim.includeDeprecatedAPIs - # Deprecated TextEditorComponent::setInvisibles = (invisibles={}) -> grim.deprecate "Use config.set('editor.invisibles', invisibles) instead" atom.config.set('editor.invisibles', invisibles) - # Deprecated TextEditorComponent::setShowInvisibles = (showInvisibles) -> grim.deprecate "Use config.set('editor.showInvisibles', showInvisibles) instead" atom.config.set('editor.showInvisibles', showInvisibles) From 4ec5f2b4adc2dac91b942c15b008e0ac8dd4e0ea Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 09:15:08 -0700 Subject: [PATCH 084/121] :arrow_up: language-c@0.44 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 531f8f093..7fe621085 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "welcome": "0.26.0", "whitespace": "0.29.0", "wrap-guide": "0.32.0", - "language-c": "0.43.0", + "language-c": "0.44.0", "language-clojure": "0.13.0", "language-coffee-script": "0.39.0", "language-csharp": "0.5.0", From a470ab9dd39d1552204d4fb3f478ea800d67ec74 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 09:20:11 -0700 Subject: [PATCH 085/121] :arrow_up: language-javascript@0.68 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7fe621085..2567e164d 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "language-html": "0.31.0", "language-hyperlink": "0.12.2", "language-java": "0.14.0", - "language-javascript": "0.67.0", + "language-javascript": "0.68.0", "language-json": "0.14.0", "language-less": "0.25.0", "language-make": "0.14.0", From e0f316e53c38a6bfc70bce5d98dd4482e81f3122 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 09:26:08 -0700 Subject: [PATCH 086/121] :arrow_up: language-clojure@0.14 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2567e164d..5024e41b2 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,7 @@ "whitespace": "0.29.0", "wrap-guide": "0.32.0", "language-c": "0.44.0", - "language-clojure": "0.13.0", + "language-clojure": "0.14.0", "language-coffee-script": "0.39.0", "language-csharp": "0.5.0", "language-css": "0.28.0", From 4b46a5218e2270965e6cd06160ba68d2e7c82d20 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 09:33:21 -0700 Subject: [PATCH 087/121] :arrow_up: language-ruby@0.51 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5024e41b2..8ca00c56c 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,7 @@ "language-php": "0.22.0", "language-property-list": "0.8.0", "language-python": "0.33.0", - "language-ruby": "0.50.0", + "language-ruby": "0.51.0", "language-ruby-on-rails": "0.21.0", "language-sass": "0.36.0", "language-shellscript": "0.13.0", From af80bc54197e616aab2170eee008bf5fb5ed6abe Mon Sep 17 00:00:00 2001 From: Lee Dohm Date: Thu, 2 Apr 2015 13:32:39 -0700 Subject: [PATCH 088/121] :memo: Make TextEditor::getBuffer public --- src/text-editor.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index cbf1136a2..8d54fadb1 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -459,7 +459,7 @@ class TextEditor extends Model onDidChangeIcon: (callback) -> @emitter.on 'did-change-icon', callback - # Retrieves the current {TextBuffer}. + # Public: Retrieves the current {TextBuffer}. getBuffer: -> @buffer # Retrieves the current buffer's URI. From cf0a18e0f1b9b5e12ecfce47a60c3d61c3dd80b1 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 09:45:31 -0700 Subject: [PATCH 089/121] :arrow_up: markdown-preview@0.148 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8ca00c56c..f280f18bc 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "incompatible-packages": "0.24.0", "keybinding-resolver": "0.30.0", "link": "0.30.0", - "markdown-preview": "0.147.0", + "markdown-preview": "0.148.0", "metrics": "0.45.0", "notifications": "0.35.0", "open-on-github": "0.36.0", From 361732ce8119a189a67cca24f8922f85a1a384c2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 09:50:59 -0700 Subject: [PATCH 090/121] :arrow_up: snippets@0.88 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f280f18bc..55762cec0 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "package-generator": "0.38.0", "release-notes": "0.52.0", "settings-view": "0.187.0", - "snippets": "0.87.0", + "snippets": "0.88.0", "spell-check": "0.55.0", "status-bar": "0.66.0", "styleguide": "0.44.0", From 39a1d6b788de9537566dd779f71c465b05c36d6d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 10:59:06 -0700 Subject: [PATCH 091/121] Wrap getUri in deprecated API check --- src/pane.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pane.coffee b/src/pane.coffee index c69c74180..b24d5b7e2 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -41,9 +41,9 @@ class Pane extends Model # Called by the Serializable mixin during serialization. serializeParams: -> - if Grim.includeDeprecatedAPIs and typeof @activeItem?.getURI is 'function' + if typeof @activeItem?.getURI is 'function' activeItemURI = @activeItem.getURI() - else if typeof @activeItem?.getUri is 'function' + else if Grim.includeDeprecatedAPIs and typeof @activeItem?.getUri is 'function' activeItemURI = @activeItem.getUri() id: @id From b98c2a8fbb0a100946afae4fd323ae7da895f1f5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 11:02:14 -0700 Subject: [PATCH 092/121] Only call Directory::off when including deprecated APIs --- src/project.coffee | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/project.coffee b/src/project.coffee index b1c939905..5094ef8ce 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -171,7 +171,9 @@ class Project extends Model # # * `projectPaths` {Array} of {String} paths. setPaths: (projectPaths) -> - rootDirectory.off() for rootDirectory in @rootDirectories + if includeDeprecatedAPIs + rootDirectory.off() for rootDirectory in @rootDirectories + repository?.destroy() for repository in @repositories @rootDirectories = [] @repositories = [] @@ -225,7 +227,7 @@ class Project extends Model if indexToRemove? [removedDirectory] = @rootDirectories.splice(indexToRemove, 1) [removedRepository] = @repositories.splice(indexToRemove, 1) - removedDirectory.off() + removedDirectory.off() if includeDeprecatedAPIs removedRepository?.destroy() unless removedRepository in @repositories @emit "path-changed" if includeDeprecatedAPIs @emitter.emit "did-change-paths", @getPaths() From 661b2124b2b1a10ce40ef96694dbbcfd4e2a2b64 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 09:56:40 -0700 Subject: [PATCH 093/121] Use new Model in PaneAxis --- src/pane-axis.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pane-axis.coffee b/src/pane-axis.coffee index a9eb0757b..ec77b17d2 100644 --- a/src/pane-axis.coffee +++ b/src/pane-axis.coffee @@ -1,7 +1,7 @@ -{Model} = require 'theorist' {Emitter, CompositeDisposable} = require 'event-kit' {flatten} = require 'underscore-plus' Serializable = require 'serializable' +Model = require './model' module.exports = class PaneAxis extends Model From 312c03e6d20f6cf8aaeb0bc38c3864a3f2bb29a7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 10:02:02 -0700 Subject: [PATCH 094/121] Conditionally include activePane/activePaneItem properties --- src/pane-container.coffee | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/pane-container.coffee b/src/pane-container.coffee index 61ff9f207..7bc7c37e0 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -1,7 +1,8 @@ {find, flatten} = require 'underscore-plus' -{Model} = require 'theorist' +Grim = require 'grim' {Emitter, CompositeDisposable} = require 'event-kit' Serializable = require 'serializable' +Model = require './model' Pane = require './pane' PaneElement = require './pane-element' PaneContainerElement = require './pane-container-element' @@ -18,16 +19,8 @@ class PaneContainer extends Model @version: 1 - @properties - activePane: null - root: null - @behavior 'activePaneItem', -> - @$activePane - .switch((activePane) -> activePane?.$activeItem) - .distinctUntilChanged() - constructor: (params) -> super @@ -236,3 +229,15 @@ class PaneContainer extends Model removedPaneItem: (item) -> @itemRegistry.removeItem(item) + +if Grim.includeDeprecatedAPIs + PaneContainer.properties + activePane: null + + PaneContainer.behavior 'activePaneItem', -> + @$activePane + .switch((activePane) -> activePane?.$activeItem) + .distinctUntilChanged() + +else + PaneContainer::activePane = null From 96b95b74e9efae29781276bfd66718d22526c932 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 10:56:33 -0700 Subject: [PATCH 095/121] Conditionally include Pane model properties and behaviors --- src/pane-container.coffee | 4 +++- src/pane.coffee | 38 ++++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/pane-container.coffee b/src/pane-container.coffee index 7bc7c37e0..58da39872 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -24,6 +24,9 @@ class PaneContainer extends Model constructor: (params) -> super + unless Grim.includeDeprecatedAPIs + @activePane = params?.activePane + @emitter = new Emitter @subscriptions = new CompositeDisposable @@ -238,6 +241,5 @@ if Grim.includeDeprecatedAPIs @$activePane .switch((activePane) -> activePane?.$activeItem) .distinctUntilChanged() - else PaneContainer::activePane = null diff --git a/src/pane.coffee b/src/pane.coffee index b24d5b7e2..dec0789c5 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -15,23 +15,13 @@ class Pane extends Model atom.deserializers.add(this) Serializable.includeInto(this) - @properties - container: undefined - activeItem: undefined - focused: false - - # Public: Only one pane is considered *active* at a time. A pane is activated - # when it is focused, and when focus returns to the pane container after - # moving to another element such as a panel, it returns to the active pane. - @behavior 'active', -> - @$container - .switch((container) -> container?.$activePane) - .map((activePane) => activePane is this) - .distinctUntilChanged() - constructor: (params) -> super + unless Grim.includeDeprecatedAPIs + @container = params?.container + @activeItem = params?.activeItem + @emitter = new Emitter @itemSubscriptions = new WeakMap @items = [] @@ -313,7 +303,8 @@ class Pane extends Model if typeof item.onDidDestroy is 'function' @itemSubscriptions.set item, item.onDidDestroy => @removeItem(item, true) - else if typeof item.on is 'function' + else if Grim.includeDeprecations and typeof item.on is 'function' + deprecate 'If you would like your pane item to support removal when destroyed behavior, please implement a ::onDidDestroy() method. ::on methods for items are no longer supported. If not, ignore this message.' @subscribe item, 'destroyed', => @removeItem(item, true) @items.splice(index, 0, item) @@ -340,7 +331,7 @@ class Pane extends Model index = @items.indexOf(item) return if index is -1 - if typeof item.on is 'function' + if Grim.includeDeprecations and typeof item.on is 'function' @unsubscribe item @unsubscribeFromItem(item) @@ -661,6 +652,17 @@ class Pane extends Model throw error if Grim.includeDeprecatedAPIs + Pane.properties + container: undefined + activeItem: undefined + focused: false + + Pane.behavior 'active', -> + @$container + .switch((container) -> container?.$activePane) + .map((activePane) => activePane is this) + .distinctUntilChanged() + Pane::on = (eventName) -> switch eventName when 'activated' @@ -701,3 +703,7 @@ if Grim.includeDeprecatedAPIs Pane::activateItemForUri = (uri) -> Grim.deprecate("Use `::activateItemForURI` instead.") @activateItemForURI(uri) +else + Pane::container = undefined + Pane::activeItem = undefined + Pane::focused = undefined From 383523677e41fec017c12c40924fd44a71f1f92f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 11:07:17 -0700 Subject: [PATCH 096/121] Use new Model superclass in Pane --- src/pane.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pane.coffee b/src/pane.coffee index dec0789c5..892a42a0c 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -1,8 +1,8 @@ {find, compact, extend, last} = require 'underscore-plus' -{Model} = require 'theorist' {Emitter} = require 'event-kit' Serializable = require 'serializable' Grim = require 'grim' +Model = require './model' PaneAxis = require './pane-axis' TextEditor = require './text-editor' From fcefe55e0d634d0953f4209d6973da2c03b1091b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 11:08:01 -0700 Subject: [PATCH 097/121] Add deprecated check for item.getUri --- src/pane.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pane.coffee b/src/pane.coffee index 892a42a0c..04dbab1f3 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -49,7 +49,7 @@ class Pane extends Model params.activeItem = find params.items, (item) -> if typeof item.getURI is 'function' itemURI = item.getURI() - else if typeof item.getUri is 'function' + else if Grim.includeDeprecatedAPIs and typeof item.getUri is 'function' itemURI = item.getUri() itemURI is activeItemURI From e8e1500d119f00f67d25ce0ce7c1e26e021ab3b5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 11:22:51 -0700 Subject: [PATCH 098/121] Use new Model superclass in Workspace --- src/workspace.coffee | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/workspace.coffee b/src/workspace.coffee index 722a45f21..646ab0a98 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -9,6 +9,7 @@ Serializable = require 'serializable' Grim = require 'grim' fs = require 'fs-plus' StackTraceParser = require 'stacktrace-parser' +Model = require './model' TextEditor = require './text-editor' PaneContainer = require './pane-container' Pane = require './pane' @@ -33,14 +34,14 @@ class Workspace extends Model atom.deserializers.add(this) Serializable.includeInto(this) - @properties - paneContainer: null - fullScreen: false - destroyedItemURIs: -> [] - constructor: (params) -> super + unless Grim.includeDeprecatedAPIs + @paneContainer = params?.paneContainer + @fullScreen = params?.fullScreen ? false + @destroyedItemURIs = params?.destroyedItemURIs ? [] + @emitter = new Emitter @openers = [] @@ -892,6 +893,11 @@ class Workspace extends Model deferred.promise if includeDeprecatedAPIs + Workspace.properties + paneContainer: null + fullScreen: false + destroyedItemURIs: -> [] + Object.defineProperty Workspace::, 'activePaneItem', get: -> Grim.deprecate "Use ::getActivePaneItem() instead of the ::activePaneItem property" From 39a7af1f24764feb2b4723c5e6f3f16ab6d38184 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 11:23:09 -0700 Subject: [PATCH 099/121] Remove theorist require --- src/workspace.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/src/workspace.coffee b/src/workspace.coffee index 646ab0a98..6a7a40a0c 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -2,7 +2,6 @@ _ = require 'underscore-plus' path = require 'path' {join} = path -{Model} = require 'theorist' Q = require 'q' Serializable = require 'serializable' {Emitter, Disposable, CompositeDisposable} = require 'event-kit' From 0691b837a1ff36de858176264dfc56c5da8595bd Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 11:25:35 -0700 Subject: [PATCH 100/121] Use new Model superclass in TokenizedBuffer --- src/tokenized-buffer.coffee | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index bfc563d93..b9d1d01f6 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -1,8 +1,8 @@ _ = require 'underscore-plus' -{Model} = require 'theorist' {CompositeDisposable, Emitter} = require 'event-kit' {Point, Range} = require 'text-buffer' Serializable = require 'serializable' +Model = require './model' TokenizedLine = require './tokenized-line' Token = require './token' ScopeDescriptor = require './scope-descriptor' @@ -12,11 +12,10 @@ module.exports = class TokenizedBuffer extends Model Serializable.includeInto(this) - @property 'tabLength' - grammar: null currentGrammarScore: null buffer: null + tabLength: null tokenizedLines: null chunkSize: 50 invalidRows: null From 265bc94eb3addee3be4e51c410644e56aef3fa6d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 13:10:37 -0700 Subject: [PATCH 101/121] Bind TextEditor behaviors to deprecated API flag --- src/text-editor.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 8d54fadb1..82781c8ec 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -74,10 +74,6 @@ class TextEditor extends Model 'autoDecreaseIndentForBufferRow', 'toggleLineCommentForBufferRow', 'toggleLineCommentsForBufferRows', toProperty: 'languageMode' - @delegatesProperties '$lineHeightInPixels', '$defaultCharWidth', '$height', '$width', - '$verticalScrollbarWidth', '$horizontalScrollbarHeight', '$scrollTop', '$scrollLeft', - toProperty: 'displayBuffer' - constructor: ({@softTabs, initialLine, initialColumn, tabLength, softWrapped, @displayBuffer, buffer, registerEditor, suppressCursorCreation, @mini, @placeholderText, @gutterVisible}) -> super @@ -108,10 +104,10 @@ class TextEditor extends Model @setEncoding(atom.config.get('core.fileEncoding', scope: @getRootScopeDescriptor())) - @subscribe @$scrollTop, (scrollTop) => + @subscribe @displayBuffer.$scrollTop, (scrollTop) => @emit 'scroll-top-changed', scrollTop if includeDeprecatedAPIs @emitter.emit 'did-change-scroll-top', scrollTop - @subscribe @$scrollLeft, (scrollLeft) => + @subscribe @displayBuffer.$scrollLeft, (scrollLeft) => @emit 'scroll-left-changed', scrollLeft if includeDeprecatedAPIs @emitter.emit 'did-change-scroll-left', scrollLeft @@ -2837,6 +2833,10 @@ class TextEditor extends Model logScreenLines: (start, end) -> @displayBuffer.logLines(start, end) if includeDeprecatedAPIs + TextEditor.delegatesProperties '$lineHeightInPixels', '$defaultCharWidth', '$height', '$width', + '$verticalScrollbarWidth', '$horizontalScrollbarHeight', '$scrollTop', '$scrollLeft', + toProperty: 'displayBuffer' + TextEditor::getViewClass = -> require './text-editor-view' From 72678df7fc91912409e7c7fc33c5c2d647b6f592 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 13:25:55 -0700 Subject: [PATCH 102/121] Use new Model superclass in DisplayBuffer --- src/display-buffer.coffee | 66 +++++++++++++++++++++++++++++---------- src/text-editor.coffee | 7 +++-- 2 files changed, 55 insertions(+), 18 deletions(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index a8b24086a..e5cba3506 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -1,11 +1,11 @@ _ = require 'underscore-plus' Serializable = require 'serializable' -{Model} = require 'theorist' {CompositeDisposable, Emitter} = require 'event-kit' {Point, Range} = require 'text-buffer' TokenizedBuffer = require './tokenized-buffer' RowMap = require './row-map' Fold = require './fold' +Model = require './model' Token = require './token' Decoration = require './decoration' Marker = require './marker' @@ -20,19 +20,6 @@ module.exports = class DisplayBuffer extends Model Serializable.includeInto(this) - @properties - softWrapped: null - editorWidthInChars: null - lineHeightInPixels: null - defaultCharWidth: null - height: null - width: null - scrollTop: 0 - scrollLeft: 0 - scrollWidth: 0 - verticalScrollbarWidth: 15 - horizontalScrollbarHeight: 15 - verticalScrollMargin: 2 horizontalScrollMargin: 6 scopedCharacterWidthsChangeCount: 0 @@ -135,6 +122,20 @@ class DisplayBuffer extends Model onDidChangeCharacterWidths: (callback) -> @emitter.on 'did-change-character-widths', callback + onDidChangeScrollTop: (callback) -> + @emitter.on 'did-change-scroll-top', callback + + onDidChangeScrollLeft: (callback) -> + @emitter.on 'did-change-scroll-left', callback + + observeScrollTop: (callback) -> + callback(@scrollTop) + @onDidChangeScrollTop(callback) + + observeScrollLeft: (callback) -> + callback(@scrollLeft) + @onDidChangeScrollLeft(callback) + observeDecorations: (callback) -> callback(decoration) for decoration in @getDecorations() @onDidAddDecoration(callback) @@ -250,7 +251,11 @@ class DisplayBuffer extends Model getScrollTop: -> @scrollTop setScrollTop: (scrollTop) -> - @scrollTop = Math.round(Math.max(0, Math.min(@getMaxScrollTop(), scrollTop))) + scrollTop = Math.round(Math.max(0, Math.min(@getMaxScrollTop(), scrollTop))) + return if scrollTop is @scrollTop + + @scrollTop = scrollTop + @emitter.emit 'did-change-scroll-top', @scrollTop getMaxScrollTop: -> @getScrollHeight() - @getClientHeight() @@ -262,7 +267,11 @@ class DisplayBuffer extends Model getScrollLeft: -> @scrollLeft setScrollLeft: (scrollLeft) -> - @scrollLeft = Math.round(Math.max(0, Math.min(@getScrollWidth() - @getClientWidth(), scrollLeft))) + scrollLeft = Math.round(Math.max(0, Math.min(@getScrollWidth() - @getClientWidth(), scrollLeft))) + return if scrollLeft is @scrollLeft + + @scrollLeft = scrollLeft + @emitter.emit 'did-change-scroll-left', @scrollLeft getMaxScrollLeft: -> @getScrollWidth() - @getClientWidth() @@ -1228,6 +1237,19 @@ class DisplayBuffer extends Model @foldsByMarkerId[marker.id] if Grim.includeDeprecatedAPIs + DisplayBuffer.properties + softWrapped: null + editorWidthInChars: null + lineHeightInPixels: null + defaultCharWidth: null + height: null + width: null + scrollTop: 0 + scrollLeft: 0 + scrollWidth: 0 + verticalScrollbarWidth: 15 + horizontalScrollbarHeight: 15 + EmitterMixin = require('emissary').Emitter DisplayBuffer::on = (eventName) -> @@ -1256,3 +1278,15 @@ if Grim.includeDeprecatedAPIs Grim.deprecate("DisplayBuffer::on is deprecated. Use event subscription methods instead.") EmitterMixin::on.apply(this, arguments) +else + DisplayBuffer::softWrapped = null + DisplayBuffer::editorWidthInChars = null + DisplayBuffer::lineHeightInPixels = null + DisplayBuffer::defaultCharWidth = null + DisplayBuffer::height = null + DisplayBuffer::width = null + DisplayBuffer::scrollTop = 0 + DisplayBuffer::scrollLeft = 0 + DisplayBuffer::scrollWidth = 0 + DisplayBuffer::verticalScrollbarWidth = 15 + DisplayBuffer::horizontalScrollbarHeight = 15 diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 82781c8ec..a9bf86b33 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -78,6 +78,7 @@ class TextEditor extends Model super @emitter = new Emitter + @disposables = new CompositeDisposable @cursors = [] @selections = [] @@ -104,10 +105,11 @@ class TextEditor extends Model @setEncoding(atom.config.get('core.fileEncoding', scope: @getRootScopeDescriptor())) - @subscribe @displayBuffer.$scrollTop, (scrollTop) => + @disposables.add @displayBuffer.onDidChangeScrollTop (scrollTop) => @emit 'scroll-top-changed', scrollTop if includeDeprecatedAPIs @emitter.emit 'did-change-scroll-top', scrollTop - @subscribe @displayBuffer.$scrollLeft, (scrollLeft) => + + @disposables.add @displayBuffer.onDidChangeScrollLeft (scrollLeft) => @emit 'scroll-left-changed', scrollLeft if includeDeprecatedAPIs @emitter.emit 'did-change-scroll-left', scrollLeft @@ -173,6 +175,7 @@ class TextEditor extends Model destroyed: -> @unsubscribe() + @disposables.dispose() @scopedConfigSubscriptions.dispose() selection.destroy() for selection in @getSelections() @buffer.release() From f36f8ba5eb2992a748bec6f9d7c0c8b65c9d0e8f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 13:32:22 -0700 Subject: [PATCH 103/121] Use new Model superclass in TextEditor --- src/text-editor.coffee | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index a9bf86b33..2ca7d74bb 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -3,13 +3,13 @@ path = require 'path' Serializable = require 'serializable' Delegator = require 'delegato' {includeDeprecatedAPIs, deprecate} = require 'grim' -{Model} = require 'theorist' EmitterMixin = require('emissary').Emitter {CompositeDisposable, Emitter} = require 'event-kit' {Point, Range} = TextBuffer = require 'text-buffer' LanguageMode = require './language-mode' DisplayBuffer = require './display-buffer' Cursor = require './cursor' +Model = require './model' Selection = require './selection' TextMateScopeSelector = require('first-mate').ScopeSelector {Directory} = require "pathwatcher" @@ -129,16 +129,16 @@ class TextEditor extends Model subscribeToBuffer: -> @buffer.retain() - @subscribe @buffer.onDidChangePath => + @disposables.add @buffer.onDidChangePath => unless atom.project.getPaths().length > 0 atom.project.setPaths([path.dirname(@getPath())]) @emit "title-changed" if includeDeprecatedAPIs @emitter.emit 'did-change-title', @getTitle() @emit "path-changed" if includeDeprecatedAPIs @emitter.emit 'did-change-path', @getPath() - @subscribe @buffer.onDidChangeEncoding => + @disposables.add @buffer.onDidChangeEncoding => @emitter.emit 'did-change-encoding', @getEncoding() - @subscribe @buffer.onDidDestroy => @destroy() + @disposables.add @buffer.onDidDestroy => @destroy() # TODO: remove these when we remove the deprecations. They are old events. if includeDeprecatedAPIs @@ -149,18 +149,19 @@ class TextEditor extends Model @preserveCursorPositionOnBufferReload() subscribeToDisplayBuffer: -> - @subscribe @displayBuffer.onDidCreateMarker @handleMarkerCreated - @subscribe @displayBuffer.onDidUpdateMarkers => @mergeIntersectingSelections() - @subscribe @displayBuffer.onDidChangeGrammar => @handleGrammarChange() - @subscribe @displayBuffer.onDidTokenize => @handleTokenization() - @subscribe @displayBuffer.onDidChange (e) => - @emit 'screen-lines-changed', e + @disposables.add @displayBuffer.onDidCreateMarker @handleMarkerCreated + @disposables.add @displayBuffer.onDidUpdateMarkers => @mergeIntersectingSelections() + @disposables.add @displayBuffer.onDidChangeGrammar => @handleGrammarChange() + @disposables.add @displayBuffer.onDidTokenize => @handleTokenization() + @disposables.add @displayBuffer.onDidChange (e) => + @emit 'screen-lines-changed', e if includeDeprecatedAPIs @emitter.emit 'did-change', e # TODO: remove these when we remove the deprecations. Though, no one is likely using them - @subscribe @displayBuffer.onDidChangeSoftWrapped (softWrapped) => @emit 'soft-wrap-changed', softWrapped - @subscribe @displayBuffer.onDidAddDecoration (decoration) => @emit 'decoration-added', decoration - @subscribe @displayBuffer.onDidRemoveDecoration (decoration) => @emit 'decoration-removed', decoration + if includeDeprecatedAPIs + @subscribe @displayBuffer.onDidChangeSoftWrapped (softWrapped) => @emit 'soft-wrap-changed', softWrapped + @subscribe @displayBuffer.onDidAddDecoration (decoration) => @emit 'decoration-added', decoration + @subscribe @displayBuffer.onDidRemoveDecoration (decoration) => @emit 'decoration-removed', decoration @subscribeToScopedConfigSettings() @@ -174,7 +175,7 @@ class TextEditor extends Model subscriptions.add atom.config.onDidChange 'editor.invisibles', scope: scopeDescriptor, => @updateInvisibles() destroyed: -> - @unsubscribe() + @unsubscribe() if includeDeprecatedAPIs @disposables.dispose() @scopedConfigSubscriptions.dispose() selection.destroy() for selection in @getSelections() @@ -719,7 +720,7 @@ class TextEditor extends Model willInsert = true cancel = -> willInsert = false willInsertEvent = {cancel, text} - @emit('will-insert-text', willInsertEvent) + @emit('will-insert-text', willInsertEvent) if includeDeprecatedAPIs @emitter.emit 'will-insert-text', willInsertEvent if willInsert @@ -728,7 +729,7 @@ class TextEditor extends Model @mutateSelectedText (selection) => range = selection.insertText(text, options) didInsertEvent = {text, range} - @emit('did-insert-text', didInsertEvent) + @emit('did-insert-text', didInsertEvent) if includeDeprecatedAPIs @emitter.emit 'did-insert-text', didInsertEvent range else @@ -1661,9 +1662,9 @@ class TextEditor extends Model preserveCursorPositionOnBufferReload: -> cursorPosition = null - @subscribe @buffer.onWillReload => + @disposables.add @buffer.onWillReload => cursorPosition = @getCursorBufferPosition() - @subscribe @buffer.onDidReload => + @disposables.add @buffer.onDidReload => @setCursorBufferPosition(cursorPosition) if cursorPosition cursorPosition = null From 6e3bdd2daf54b9aab1e23cc7d194289e0ff513c1 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 13:38:34 -0700 Subject: [PATCH 104/121] Return value from scroll top/left setters --- src/display-buffer.coffee | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index e5cba3506..ec95d0619 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -252,10 +252,10 @@ class DisplayBuffer extends Model getScrollTop: -> @scrollTop setScrollTop: (scrollTop) -> scrollTop = Math.round(Math.max(0, Math.min(@getMaxScrollTop(), scrollTop))) - return if scrollTop is @scrollTop - - @scrollTop = scrollTop - @emitter.emit 'did-change-scroll-top', @scrollTop + unless scrollTop is @scrollTop + @scrollTop = scrollTop + @emitter.emit 'did-change-scroll-top', @scrollTop + @scrollTop getMaxScrollTop: -> @getScrollHeight() - @getClientHeight() @@ -268,10 +268,10 @@ class DisplayBuffer extends Model getScrollLeft: -> @scrollLeft setScrollLeft: (scrollLeft) -> scrollLeft = Math.round(Math.max(0, Math.min(@getScrollWidth() - @getClientWidth(), scrollLeft))) - return if scrollLeft is @scrollLeft - - @scrollLeft = scrollLeft - @emitter.emit 'did-change-scroll-left', @scrollLeft + unless scrollLeft is @scrollLeft + @scrollLeft = scrollLeft + @emitter.emit 'did-change-scroll-left', @scrollLeft + @scrollLeft getMaxScrollLeft: -> @getScrollWidth() - @getClientWidth() From b45aa8c51f7763309d3375767e05d973924f5cbc Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 13:44:17 -0700 Subject: [PATCH 105/121] includeDeprecations -> includeDeprecatedAPIs --- src/pane.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pane.coffee b/src/pane.coffee index 04dbab1f3..75daa782c 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -303,8 +303,8 @@ class Pane extends Model if typeof item.onDidDestroy is 'function' @itemSubscriptions.set item, item.onDidDestroy => @removeItem(item, true) - else if Grim.includeDeprecations and typeof item.on is 'function' - deprecate 'If you would like your pane item to support removal when destroyed behavior, please implement a ::onDidDestroy() method. ::on methods for items are no longer supported. If not, ignore this message.' + else if Grim.includeDeprecatedAPIs and typeof item.on is 'function' + Grim.deprecate 'If you would like your pane item to support removal when destroyed behavior, please implement a ::onDidDestroy() method. ::on methods for items are no longer supported. If not, ignore this message.' @subscribe item, 'destroyed', => @removeItem(item, true) @items.splice(index, 0, item) @@ -331,7 +331,7 @@ class Pane extends Model index = @items.indexOf(item) return if index is -1 - if Grim.includeDeprecations and typeof item.on is 'function' + if Grim.includeDeprecatedAPIs and typeof item.on is 'function' @unsubscribe item @unsubscribeFromItem(item) From c4062d8fea0e34341e22acd9b27e4a7d505ecab2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 13:57:52 -0700 Subject: [PATCH 106/121] Remove destroyed event deprecation --- src/pane.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pane.coffee b/src/pane.coffee index 75daa782c..8b12fcf7f 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -304,7 +304,6 @@ class Pane extends Model if typeof item.onDidDestroy is 'function' @itemSubscriptions.set item, item.onDidDestroy => @removeItem(item, true) else if Grim.includeDeprecatedAPIs and typeof item.on is 'function' - Grim.deprecate 'If you would like your pane item to support removal when destroyed behavior, please implement a ::onDidDestroy() method. ::on methods for items are no longer supported. If not, ignore this message.' @subscribe item, 'destroyed', => @removeItem(item, true) @items.splice(index, 0, item) From c7071f15b52123e02d8c082704b9efca53bab3fe Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 14:43:49 -0700 Subject: [PATCH 107/121] :arrow_up: donna@1.0.10 --- build/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/package.json b/build/package.json index 18bef4d1e..212f9c3ed 100644 --- a/build/package.json +++ b/build/package.json @@ -7,7 +7,7 @@ }, "dependencies": { "async": "~0.2.9", - "donna": "1.0.9", + "donna": "1.0.10", "formidable": "~1.0.14", "fs-plus": "2.x", "github-releases": "~0.2.0", From b54177eb5eb4797f48057f3d7a1057cc6dedc7e0 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 15:14:26 -0700 Subject: [PATCH 108/121] Remove property always set in constructor --- src/pane-container.coffee | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pane-container.coffee b/src/pane-container.coffee index 58da39872..e6eb97075 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -241,5 +241,3 @@ if Grim.includeDeprecatedAPIs @$activePane .switch((activePane) -> activePane?.$activeItem) .distinctUntilChanged() -else - PaneContainer::activePane = null From 5df56fc50ae2f5442ad82d1f9bd48ac31762de60 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 6 Apr 2015 12:30:12 -0700 Subject: [PATCH 109/121] Add workspace element command for 'add root folder' --- spec/atom-spec.coffee | 16 ++++++++++++++++ src/atom.coffee | 11 ++++++++--- src/workspace-element.coffee | 1 + 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/spec/atom-spec.coffee b/spec/atom-spec.coffee index 1fca9cf28..f888c433f 100644 --- a/spec/atom-spec.coffee +++ b/spec/atom-spec.coffee @@ -180,3 +180,19 @@ describe "the `atom` global", -> it "does not open an empty buffer", -> atom.openInitialEmptyEditorIfNecessary() expect(atom.workspace.open).not.toHaveBeenCalled() + + describe "adding a root folder", -> + it "adds a second path to the project", -> + initialPaths = atom.project.getPaths() + tempDirectory = temp.mkdirSync("a-new-directory") + spyOn(atom, "pickFolder").andCallFake (callback) -> + callback([tempDirectory]) + atom.addRootFolder() + expect(atom.project.getPaths()).toEqual(initialPaths.concat([tempDirectory])) + + it "does nothing if the user dismisses the file picker", -> + initialPaths = atom.project.getPaths() + tempDirectory = temp.mkdirSync("a-new-directory") + spyOn(atom, "pickFolder").andCallFake (callback) -> callback(null) + atom.addRootFolder() + expect(atom.project.getPaths()).toEqual(initialPaths) diff --git a/src/atom.coffee b/src/atom.coffee index 1710edd98..701f2e91e 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -412,10 +412,11 @@ class Atom extends Model open: (options) -> ipc.send('open', options) - # Extended: Show the native dialog to prompt the user to select a folder. + # Extended: Prompt the user to select one or more folders. # - # * `callback` A {Function} to call once the user has selected a folder. - # * `path` {String} the path to the folder the user selected. + # * `callback` A {Function} to call once the user has confirmed the selection. + # * `paths` An {Array} of {String} paths that the user selected, or `null` + # if the user dismissed the dialog. pickFolder: (callback) -> responseChannel = "atom-pick-folder-response" ipc.on responseChannel, (path) -> @@ -773,6 +774,10 @@ class Atom extends Model setRepresentedFilename: (filename) -> ipc.send('call-window-method', 'setRepresentedFilename', filename) + addRootFolder: -> + @pickFolder (selectedPaths = []) => + @project.addPath(selectedPath) for selectedPath in selectedPaths + showSaveDialog: (callback) -> callback(showSaveDialogSync()) diff --git a/src/workspace-element.coffee b/src/workspace-element.coffee index 33ea14093..ccf165439 100644 --- a/src/workspace-element.coffee +++ b/src/workspace-element.coffee @@ -138,6 +138,7 @@ atom.commands.add 'atom-workspace', 'application:open-safe': -> ipc.send('command', 'application:open-safe') 'application:open-api-preview': -> ipc.send('command', 'application:open-api-preview') 'application:open-dev-api-preview': -> ipc.send('command', 'application:open-dev-api-preview') + 'application:add-root-folder': -> atom.addRootFolder() 'application:minimize': -> ipc.send('command', 'application:minimize') 'application:zoom': -> ipc.send('command', 'application:zoom') 'application:bring-all-windows-to-front': -> ipc.send('command', 'application:bring-all-windows-to-front') From 4560be9eaeddbb2680bef1097a3169e1c574a3ae Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 15:53:25 -0700 Subject: [PATCH 110/121] Don't use deprecated atom.config.toggle --- src/workspace-element.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/workspace-element.coffee b/src/workspace-element.coffee index ccf165439..5f127d970 100644 --- a/src/workspace-element.coffee +++ b/src/workspace-element.coffee @@ -156,9 +156,9 @@ atom.commands.add 'atom-workspace', 'window:focus-pane-on-left': -> @focusPaneViewOnLeft() 'window:focus-pane-on-right': -> @focusPaneViewOnRight() 'window:save-all': -> @getModel().saveAll() - 'window:toggle-invisibles': -> atom.config.toggle("editor.showInvisibles") + 'window:toggle-invisibles': -> atom.config.set("editor.showInvisibles", !atom.config.get("editor.showInvisibles")) 'window:log-deprecation-warnings': -> Grim.logDeprecations() - 'window:toggle-auto-indent': -> atom.config.toggle("editor.autoIndent") + 'window:toggle-auto-indent': -> atom.config.set("editor.autoIndent", !atom.config.get("editor.autoIndent")) 'pane:reopen-closed-item': -> @getModel().reopenItem() 'core:close': -> @getModel().destroyActivePaneItemOrEmptyPane() 'core:save': -> @getModel().saveActivePaneItem() From 188b2e5a74e87ae98c1ce70986848d74d637ce03 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 15:55:51 -0700 Subject: [PATCH 111/121] Report core deprecations in specs --- spec/spec-helper.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/spec-helper.coffee b/spec/spec-helper.coffee index 5406ff33a..70fb4fb58 100644 --- a/spec/spec-helper.coffee +++ b/spec/spec-helper.coffee @@ -72,7 +72,6 @@ if specDirectory isCoreSpec = specDirectory == fs.realpathSync(__dirname) beforeEach -> - Grim.clearDeprecations() if isCoreSpec $.fx.off = true documentTitle = null projectPath = specProjectPath ? path.join(@specDirectory, 'fixtures') From 50d9fee0d3ce00b6a1bbfe8a2f7a4249956d14f7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 16:21:09 -0700 Subject: [PATCH 112/121] Use Project::onDidAddBuffer --- spec/project-spec.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/project-spec.coffee b/spec/project-spec.coffee index a1cdce662..703b3d4f8 100644 --- a/spec/project-spec.coffee +++ b/spec/project-spec.coffee @@ -221,7 +221,7 @@ describe "Project", -> beforeEach -> absolutePath = require.resolve('./fixtures/dir/a') newBufferHandler = jasmine.createSpy('newBufferHandler') - atom.project.on 'buffer-created', newBufferHandler + atom.project.onDidAddBuffer(newBufferHandler) describe "when given an absolute path that isn't currently open", -> it "returns a new edit session for the given path and emits 'buffer-created'", -> From 9b7870d5032607b6bd357c49cdf3feaa5cdb4154 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 16:22:31 -0700 Subject: [PATCH 113/121] Snapshot deprecations around calls to Project::eachBuffer --- spec/project-spec.coffee | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/project-spec.coffee b/spec/project-spec.coffee index 703b3d4f8..d89802243 100644 --- a/spec/project-spec.coffee +++ b/spec/project-spec.coffee @@ -502,8 +502,12 @@ describe "Project", -> describe ".eachBuffer(callback)", -> beforeEach -> + jasmine.snapshotDeprecations() atom.project.bufferForPathSync('a') + afterEach -> + jasmine.restoreDeprecationsSnapshot() + it "invokes the callback for existing buffer", -> count = 0 count = 0 From e02e8c91a6ce97b9a9d348ef297b27256203a700 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 16:29:12 -0700 Subject: [PATCH 114/121] Use TextEditor::onDidChangeCursorPosition in spec --- spec/text-editor-component-spec.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/text-editor-component-spec.coffee b/spec/text-editor-component-spec.coffee index a5ca4c309..b2ef2ec51 100644 --- a/spec/text-editor-component-spec.coffee +++ b/spec/text-editor-component-spec.coffee @@ -728,7 +728,7 @@ describe "TextEditorComponent", -> expect(cursorNodes[0].style['-webkit-transform']).toBe "translate(#{10 * charWidth}px, #{4 * lineHeightInPixels}px)" expect(cursorNodes[1].style['-webkit-transform']).toBe "translate(#{11 * charWidth}px, #{8 * lineHeightInPixels}px)" - wrapperView.on 'cursor:moved', cursorMovedListener = jasmine.createSpy('cursorMovedListener') + editor.onDidChangeCursorPosition cursorMovedListener = jasmine.createSpy('cursorMovedListener') cursor3.setScreenPosition([4, 11], autoscroll: false) nextAnimationFrame() expect(cursorNodes[0].style['-webkit-transform']).toBe "translate(#{11 * charWidth}px, #{4 * lineHeightInPixels}px)" From fdba094aa6b1bd987e6085989367a18c69eae68b Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 6 Apr 2015 17:12:50 -0700 Subject: [PATCH 115/121] :arrow_up: tree-view --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 55762cec0..ce1d886c4 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "symbols-view": "0.93.0", "tabs": "0.67.0", "timecop": "0.31.0", - "tree-view": "0.168.0", + "tree-view": "0.169.0", "update-package-dependencies": "0.9.0", "welcome": "0.26.0", "whitespace": "0.29.0", From a80256155344a7d175d14b80afddf258fbedafb3 Mon Sep 17 00:00:00 2001 From: simurai Date: Tue, 7 Apr 2015 09:20:27 +0900 Subject: [PATCH 116/121] :arrow_up: one-dark-ui@0.6.0 one-light-ui@0.5.0 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ce1d886c4..48f8a591c 100644 --- a/package.json +++ b/package.json @@ -76,10 +76,10 @@ "atom-light-ui": "0.41.0", "base16-tomorrow-dark-theme": "0.25.0", "base16-tomorrow-light-theme": "0.8.0", - "one-dark-ui": "0.5.0", + "one-dark-ui": "0.6.0", "one-dark-syntax": "0.3.0", "one-light-syntax": "0.4.0", - "one-light-ui": "0.4.0", + "one-light-ui": "0.5.0", "solarized-dark-syntax": "0.32.0", "solarized-light-syntax": "0.19.0", "archive-view": "0.55.0", From aed17cda9b43e96c6b31dd1f70199d3742b904ff Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 6 Apr 2015 17:51:18 -0700 Subject: [PATCH 117/121] :arrow_up: language-javascript@0.69 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 48f8a591c..d6abef9c6 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "language-html": "0.31.0", "language-hyperlink": "0.12.2", "language-java": "0.14.0", - "language-javascript": "0.68.0", + "language-javascript": "0.69.0", "language-json": "0.14.0", "language-less": "0.25.0", "language-make": "0.14.0", From a6d47d403fc68ef9e0c29635a5427dff4d5ecfe9 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Tue, 7 Apr 2015 11:01:54 +0800 Subject: [PATCH 118/121] :penguin: Don't use clipboard in renderer process, fixes #6221 --- src/clipboard.coffee | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/clipboard.coffee b/src/clipboard.coffee index 3fba6f4e8..bc0926521 100644 --- a/src/clipboard.coffee +++ b/src/clipboard.coffee @@ -1,6 +1,12 @@ -clipboard = require 'clipboard' crypto = require 'crypto' +# Using clipboard in renderer process is not safe on Linux. +clipboard = + if process.platform is 'linux' + require('remote').require 'clipboard' + else + require 'clipboard' + # Extended: Represents the clipboard used for copying and pasting in Atom. # # An instance of this class is always available as the `atom.clipboard` global. From 099c8eda77763d0c38b0c67ef947c7a228e0a1f7 Mon Sep 17 00:00:00 2001 From: simurai Date: Tue, 7 Apr 2015 12:33:44 +0900 Subject: [PATCH 119/121] :arrow_up: status-bar@v0.67.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d6abef9c6..f8ebc304d 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "settings-view": "0.187.0", "snippets": "0.88.0", "spell-check": "0.55.0", - "status-bar": "0.66.0", + "status-bar": "0.67.0", "styleguide": "0.44.0", "symbols-view": "0.93.0", "tabs": "0.67.0", From ef19b6ab223e7a9488cd8fa194f507d5f4bbc284 Mon Sep 17 00:00:00 2001 From: simurai Date: Tue, 7 Apr 2015 15:20:29 +0900 Subject: [PATCH 120/121] :arrow_up: find-and-replace@v0.160.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f8ebc304d..8f75a4a85 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "encoding-selector": "0.19.0", "exception-reporting": "0.24.0", "feedback": "0.38.0", - "find-and-replace": "0.159.0", + "find-and-replace": "0.160.0", "fuzzy-finder": "0.72.0", "git-diff": "0.54.0", "go-to-line": "0.30.0", From 2e86e22d46fb22ab1a4acd8e011155ccf41b35ff Mon Sep 17 00:00:00 2001 From: simurai Date: Tue, 7 Apr 2015 16:42:50 +0900 Subject: [PATCH 121/121] :arrrow_up: one-dark-ui@v0.6.1 one-light-ui@v0.5.1 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8f75a4a85..9dc9ad061 100644 --- a/package.json +++ b/package.json @@ -76,10 +76,10 @@ "atom-light-ui": "0.41.0", "base16-tomorrow-dark-theme": "0.25.0", "base16-tomorrow-light-theme": "0.8.0", - "one-dark-ui": "0.6.0", + "one-dark-ui": "0.6.1", "one-dark-syntax": "0.3.0", "one-light-syntax": "0.4.0", - "one-light-ui": "0.5.0", + "one-light-ui": "0.5.1", "solarized-dark-syntax": "0.32.0", "solarized-light-syntax": "0.19.0", "archive-view": "0.55.0",