Add Editor::onDidChangeTitle

This commit is contained in:
Nathan Sobo 2014-09-04 08:12:51 -06:00 committed by Ben Ogle
parent 8f6053c53f
commit b731f7cbdc
2 changed files with 11 additions and 4 deletions

View File

@ -138,13 +138,14 @@ describe "Editor", ->
buffer.setPath(undefined)
expect(editor.getLongTitle()).toBe 'untitled'
it "emits 'title-changed' events when the underlying buffer path", ->
titleChangedHandler = jasmine.createSpy("titleChangedHandler")
editor.on 'title-changed', titleChangedHandler
it "notifies ::onDidChangeTitle observers when the underlying buffer path changes", ->
observed = []
editor.onDidChangeTitle (title) -> observed.push(title)
buffer.setPath('/foo/bar/baz.txt')
buffer.setPath(undefined)
expect(titleChangedHandler.callCount).toBe 2
expect(observed).toEqual ['baz.txt', 'untitled']
describe "cursor", ->
describe ".getLastCursor()", ->

View File

@ -4,6 +4,7 @@ Serializable = require 'serializable'
Delegator = require 'delegato'
{deprecate} = require 'grim'
{Model} = require 'theorist'
{Emitter} = require 'event-kit'
{Point, Range} = require 'text-buffer'
LanguageMode = require './language-mode'
DisplayBuffer = require './display-buffer'
@ -206,6 +207,7 @@ class Editor extends Model
constructor: ({@softTabs, initialLine, initialColumn, tabLength, softWrap, @displayBuffer, buffer, registerEditor, suppressCursorCreation, @mini}) ->
super
@emitter = new Emitter
@cursors = []
@selections = []
@ -257,6 +259,7 @@ class Editor extends Model
unless atom.project.getPath()?
atom.project.setPath(path.dirname(@getPath()))
@emit "title-changed"
@emitter.emit 'did-change-title', @getTitle()
@emit "path-changed"
@subscribe @buffer.onDidStopChanging => @emit "contents-modified"
@subscribe @buffer.onDidConflict => @emit "contents-conflicted"
@ -287,6 +290,9 @@ class Editor extends Model
@displayBuffer.destroy()
@languageMode.destroy()
onDidChangeTitle: (callback) ->
@emitter.on 'did-change-title', callback
# Retrieves the current {TextBuffer}.
getBuffer: -> @buffer