@@ -97,22 +97,27 @@ describe "TextBuffer", ->
9797 expect (buffer .getText ()).toEqual " hey\n you're old\r\n how are you doing?"
9898
9999 describe " after a change" , ->
100- it " notifies, in order, decoration layers, display layers, ::onDidChange observers and display layer ::onDidChangeSync observers with the relevant details" , ->
100+ it " notifies, in order, decoration layers, display layers, and display layer ::onDidChangeSync observers with the relevant details" , ->
101101 events = []
102- textDecorationLayer1 = {bufferDidChange : (e ) -> events .push ({source : textDecorationLayer1, event : e})}
103- textDecorationLayer2 = {bufferDidChange : (e ) -> events .push ({source : textDecorationLayer2, event : e})}
102+ textDecorationLayer1 = {
103+ bufferDidChange : (e ) -> events .push ({source : ' decoration-layer-1' , event : e})
104+ }
105+ textDecorationLayer2 = {
106+ bufferDidChange : (e ) -> events .push ({source : ' decoration-layer-2' , event : e}),
107+ jasmineToString : -> ' <TextDecorationLayer2>'
108+ }
104109 displayLayer1 = buffer .addDisplayLayer ()
105110 displayLayer2 = buffer .addDisplayLayer ()
106111 spyOn (displayLayer1, ' bufferDidChange' ).and .callFake (e) ->
107- events .push ({source : displayLayer1 , event : e})
112+ events .push ({source : ' display-layer-1 ' , event : e})
108113 DisplayLayer .prototype .bufferDidChange .call (displayLayer1, e)
109114 spyOn (displayLayer2, ' bufferDidChange' ).and .callFake (e) ->
110- events .push ({source : displayLayer2 , event : e})
115+ events .push ({source : ' display-layer-2 ' , event : e})
111116 DisplayLayer .prototype .bufferDidChange .call (displayLayer2, e)
112- buffer .onDidChange (e) -> events .push ({source : buffer, event : e})
113117 buffer .registerTextDecorationLayer (textDecorationLayer1)
114118 buffer .registerTextDecorationLayer (textDecorationLayer1) # insert a duplicate decoration layer
115119 buffer .registerTextDecorationLayer (textDecorationLayer2)
120+ buffer .onDidChange (e) -> events .push ({source : ' buffer' , event : JSON .parse (JSON .stringify (e))})
116121
117122 disposable = displayLayer1 .onDidChangeSync ->
118123 disposable .dispose ()
@@ -128,17 +133,31 @@ describe "TextBuffer", ->
128133 oldText : " a" , newText : " abc" ,
129134 }
130135 expect (events).toEqual [
131- {source : textDecorationLayer1, event : changeEvent1},
132- {source : textDecorationLayer2, event : changeEvent1},
133- {source : displayLayer1, event : changeEvent1},
134- {source : displayLayer2, event : changeEvent1},
135- {source : buffer, event : changeEvent1},
136-
137- {source : textDecorationLayer1, event : changeEvent2},
138- {source : textDecorationLayer2, event : changeEvent2},
139- {source : displayLayer1, event : changeEvent2},
140- {source : displayLayer2, event : changeEvent2},
141- {source : buffer, event : changeEvent2}
136+ {source : ' decoration-layer-1' , event : changeEvent1},
137+ {source : ' decoration-layer-2' , event : changeEvent1},
138+ {source : ' display-layer-1' , event : changeEvent1},
139+ {source : ' display-layer-2' , event : changeEvent1},
140+
141+ {source : ' decoration-layer-1' , event : changeEvent2},
142+ {source : ' decoration-layer-2' , event : changeEvent2},
143+ {source : ' display-layer-1' , event : changeEvent2},
144+ {source : ' display-layer-2' , event : changeEvent2},
145+
146+ {
147+ source : ' buffer' ,
148+ event : {
149+ oldRange : Range (Point (0 , 2 ), Point (2 , 3 )),
150+ newRange : Range (Point (0 , 2 ), Point (2 , 4 )),
151+ changes : [
152+ {
153+ oldRange : Range (Point (0 , 2 ), Point (2 , 3 )),
154+ newRange : Range (Point (0 , 2 ), Point (2 , 4 )),
155+ oldText : " llo\n world\r\n how" ,
156+ newText : " y there\r\n cabct\n what"
157+ }
158+ ]
159+ }
160+ }
142161 ]
143162
144163 it " returns the newRange of the change" , ->
@@ -214,8 +233,8 @@ describe "TextBuffer", ->
214233 }])
215234
216235 it " still emits text change events (regression)" , (done ) ->
217- didChangeTextEvents = []
218- buffer .onDidChangeText (event) -> didChangeTextEvents .push (event)
236+ didChangeEvents = []
237+ buffer .onDidChange (event) -> didChangeEvents .push (event)
219238
220239 buffer .onDidStopChanging ({changes}) ->
221240 assertChangesEqual (changes, [{
@@ -227,17 +246,17 @@ describe "TextBuffer", ->
227246 done ()
228247
229248 buffer .setTextInRange ([[0 , 0 ], [0 , 1 ]], ' y' , {undo : ' skip' })
230- expect (didChangeTextEvents .length ).toBe (1 )
231- assertChangesEqual (didChangeTextEvents [0 ].changes , [{
249+ expect (didChangeEvents .length ).toBe (1 )
250+ assertChangesEqual (didChangeEvents [0 ].changes , [{
232251 oldRange : [[0 , 0 ], [0 , 1 ]],
233252 newRange : [[0 , 0 ], [0 , 1 ]],
234253 oldText : ' h' ,
235254 newText : ' y'
236255 }])
237256
238257 buffer .transact -> buffer .setTextInRange ([[0 , 0 ], [0 , 1 ]], ' z' , {undo : ' skip' })
239- expect (didChangeTextEvents .length ).toBe (2 )
240- assertChangesEqual (didChangeTextEvents [1 ].changes , [{
258+ expect (didChangeEvents .length ).toBe (2 )
259+ assertChangesEqual (didChangeEvents [1 ].changes , [{
241260 oldRange : [[0 , 0 ], [0 , 1 ]],
242261 newRange : [[0 , 0 ], [0 , 1 ]],
243262 oldText : ' y' ,
@@ -266,28 +285,28 @@ describe "TextBuffer", ->
266285 expect (changeEvents[1 ].newText ).toBe " ms\r\n do you\r\n like\r\n dirt"
267286
268287 buffer .setTextInRange ([[5 , 1 ], [5 , 3 ]], ' \r ' )
269- expect (changeEvents[2 ]).toEqual ({
288+ expect (changeEvents[2 ]. changes ).toEqual ([ {
270289 oldRange : [[5 , 1 ], [5 , 3 ]],
271290 newRange : [[5 , 1 ], [6 , 0 ]],
272291 oldText : ' ik' ,
273292 newText : ' \r\n '
274- })
293+ }] )
275294
276295 buffer .undo ()
277- expect (changeEvents[3 ]).toEqual ({
296+ expect (changeEvents[3 ]. changes ).toEqual ([ {
278297 oldRange : [[5 , 1 ], [6 , 0 ]],
279298 newRange : [[5 , 1 ], [5 , 3 ]],
280299 oldText : ' \r\n ' ,
281300 newText : ' ik'
282- })
301+ }] )
283302
284303 buffer .redo ()
285- expect (changeEvents[4 ]).toEqual ({
304+ expect (changeEvents[4 ]. changes ).toEqual ([ {
286305 oldRange : [[5 , 1 ], [5 , 3 ]],
287306 newRange : [[5 , 1 ], [6 , 0 ]],
288307 oldText : ' ik' ,
289308 newText : ' \r\n '
290- })
309+ }] )
291310
292311 describe " when the range's start row has no line ending (because it's the last line of the buffer)" , ->
293312 describe " when the buffer contains no newlines" , ->
@@ -2245,7 +2264,7 @@ describe "TextBuffer", ->
22452264 buffer .setText (' \n ' )
22462265 expect (buffer .isEmpty ()).toBeFalsy ()
22472266
2248- describe " ::onWillChange" , ->
2267+ describe " ::onWillChange(callback) " , ->
22492268 it " notifies observers before a transaction, an undo or a redo" , ->
22502269 changeCount = 0
22512270 expectedText = ' '
@@ -2282,14 +2301,14 @@ describe "TextBuffer", ->
22822301 buffer .revertToCheckpoint (checkpoint)
22832302 expect (changeCount).toBe (5 )
22842303
2285- describe " ::onDidChangeText (callback)" , ->
2304+ describe " ::onDidChange (callback)" , ->
22862305 beforeEach ->
22872306 filePath = require .resolve (' ./fixtures/sample.js' )
22882307 buffer = TextBuffer .loadSync (filePath)
22892308
22902309 it " notifies observers after a transaction, an undo or a redo" , ->
22912310 textChanges = []
2292- buffer .onDidChangeText ({changes}) -> textChanges .push (changes... )
2311+ buffer .onDidChange ({changes}) -> textChanges .push (changes... )
22932312
22942313 buffer .insert ([0 , 0 ], " abc" )
22952314 buffer .delete ([[0 , 0 ], [0 , 1 ]])
@@ -2383,12 +2402,12 @@ describe "TextBuffer", ->
23832402
23842403 it " doesn't notify observers after an empty transaction" , ->
23852404 didChangeTextSpy = jasmine .createSpy ()
2386- buffer .onDidChangeText (didChangeTextSpy)
2405+ buffer .onDidChange (didChangeTextSpy)
23872406 buffer .transact (-> )
23882407 expect (didChangeTextSpy).not .toHaveBeenCalled ()
23892408
23902409 it " doesn't throw an error when clearing the undo stack within a transaction" , ->
2391- buffer .onDidChangeText (didChangeTextSpy = jasmine .createSpy ())
2410+ buffer .onDidChange (didChangeTextSpy = jasmine .createSpy ())
23922411 expect (-> buffer .transact (-> buffer .clearUndoStack ())).not .toThrowError ()
23932412 expect (didChangeTextSpy).not .toHaveBeenCalled ()
23942413
@@ -2457,8 +2476,8 @@ describe "TextBuffer", ->
24572476 ])
24582477 done ()
24592478
2460- it " provides the correct changes when the buffer is mutated in the onDidChangeText callback" , (done ) ->
2461- buffer .onDidChangeText ({changes}) ->
2479+ it " provides the correct changes when the buffer is mutated in the onDidChange callback" , (done ) ->
2480+ buffer .onDidChange ({changes}) ->
24622481 switch changes[0 ].newText
24632482 when ' a'
24642483 buffer .insert (changes[0 ].newRange .end , ' b' )
0 commit comments