From ed4acb02d8d07eb12b36a7e4d4d5be9db322112b Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Tue, 9 Sep 2014 13:58:23 -0700 Subject: [PATCH] Add Project::onDidChangePath() --- src/project.coffee | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/project.coffee b/src/project.coffee index a34a442a5..4cf76cf94 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -6,7 +6,9 @@ fs = require 'fs-plus' Q = require 'q' {deprecate} = require 'grim' {Model} = require 'theorist' -{Emitter, Subscriber} = require 'emissary' +{Subscriber} = require 'emissary' +EmitterMixin = require('emissary').Emitter +{Emitter} = require 'event-kit' Serializable = require 'serializable' TextBuffer = require 'text-buffer' {Directory} = require 'pathwatcher' @@ -46,6 +48,7 @@ class Project extends Model constructor: ({path, @buffers}={}) -> @buffers ?= [] + @emitter = new Emitter for buffer in @buffers do (buffer) => @@ -53,6 +56,25 @@ class Project extends Model @setPath(path) + ### + Section: Events + ### + + # Essential: Invoke the given callback when the project's path has changed. + # + # * `callback` {Function} + # * `path` the new path + onDidChangePath: (callback) -> + @emitter.on 'did-change-path', callback + + on: (eventName) -> + switch eventName + when 'path-changed' + deprecate 'Use Project::onDidChangePath instead' + else + deprecate 'Project::on is deprecated. Use event subscription methods instead.' + EmitterMixin::on.apply(this, arguments) + serializeParams: -> path: @path buffers: _.compact(@buffers.map (buffer) -> buffer.serialize() if buffer.isRetained()) @@ -98,7 +120,8 @@ class Project extends Model else @rootDirectory = null - @emit "path-changed" + @emit 'path-changed' + @emitter.emit 'did-change-path', @getPath() # Public: Returns the root {Directory} object for this project. getRootDirectory: ->