Merge pull request #14645 from atom/jr-fix-observe-text-editor-methods

Fix observeTextEditors method in WorkspaceCenter
This commit is contained in:
Jason Rudolph 2017-06-07 09:51:32 -04:00 committed by GitHub
commit 5c37f5a8db
2 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,31 @@
/** @babel */
const TextEditor = require('../src/text-editor')
import {it, fit, ffit, fffit, beforeEach, afterEach} from './async-spec-helpers'
describe('WorkspaceCenter', () => {
describe('.observeTextEditors()', () => {
it('invokes the observer with current and future text editors', () => {
const workspaceCenter = atom.workspace.getCenter()
const pane = workspaceCenter.getActivePane()
const observed = []
const editorAddedBeforeRegisteringObserver = new TextEditor()
const nonEditorItemAddedBeforeRegisteringObserver = document.createElement('div')
pane.activateItem(editorAddedBeforeRegisteringObserver)
pane.activateItem(nonEditorItemAddedBeforeRegisteringObserver)
workspaceCenter.observeTextEditors(editor => observed.push(editor))
const editorAddedAfterRegisteringObserver = new TextEditor()
const nonEditorItemAddedAfterRegisteringObserver = document.createElement('div')
pane.activateItem(editorAddedAfterRegisteringObserver)
pane.activateItem(nonEditorItemAddedAfterRegisteringObserver)
expect(observed).toEqual(
[editorAddedBeforeRegisteringObserver, editorAddedAfterRegisteringObserver]
)
})
})
})

View File

@ -226,6 +226,25 @@ module.exports = class WorkspaceCenter {
return this.paneContainer.onDidDestroyPaneItem(callback)
}
// Extended: Invoke the given callback when a text editor is added to the
// workspace center.
//
// * `callback` {Function} to be called when panes are added.
// * `event` {Object} with the following keys:
// * `textEditor` {TextEditor} that was added.
// * `pane` {Pane} containing the added text editor.
// * `index` {Number} indicating the index of the added text editor in its
// pane.
//
// Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidAddTextEditor (callback) {
return this.onDidAddPaneItem(({item, pane, index}) => {
if (item instanceof TextEditor) {
callback({textEditor: item, pane, index})
}
})
}
/*
Section: Pane Items
*/