@@ -97,22 +97,27 @@ describe "TextBuffer", ->
97
97
expect (buffer .getText ()).toEqual " hey\n you're old\r\n how are you doing?"
98
98
99
99
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" , ->
101
101
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
+ }
104
109
displayLayer1 = buffer .addDisplayLayer ()
105
110
displayLayer2 = buffer .addDisplayLayer ()
106
111
spyOn (displayLayer1, ' bufferDidChange' ).and .callFake (e) ->
107
- events .push ({source : displayLayer1 , event : e})
112
+ events .push ({source : ' display-layer-1 ' , event : e})
108
113
DisplayLayer .prototype .bufferDidChange .call (displayLayer1, e)
109
114
spyOn (displayLayer2, ' bufferDidChange' ).and .callFake (e) ->
110
- events .push ({source : displayLayer2 , event : e})
115
+ events .push ({source : ' display-layer-2 ' , event : e})
111
116
DisplayLayer .prototype .bufferDidChange .call (displayLayer2, e)
112
- buffer .onDidChange (e) -> events .push ({source : buffer, event : e})
113
117
buffer .registerTextDecorationLayer (textDecorationLayer1)
114
118
buffer .registerTextDecorationLayer (textDecorationLayer1) # insert a duplicate decoration layer
115
119
buffer .registerTextDecorationLayer (textDecorationLayer2)
120
+ buffer .onDidChange (e) -> events .push ({source : ' buffer' , event : JSON .parse (JSON .stringify (e))})
116
121
117
122
disposable = displayLayer1 .onDidChangeSync ->
118
123
disposable .dispose ()
@@ -128,17 +133,31 @@ describe "TextBuffer", ->
128
133
oldText : " a" , newText : " abc" ,
129
134
}
130
135
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
+ }
142
161
]
143
162
144
163
it " returns the newRange of the change" , ->
@@ -214,8 +233,8 @@ describe "TextBuffer", ->
214
233
}])
215
234
216
235
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)
219
238
220
239
buffer .onDidStopChanging ({changes}) ->
221
240
assertChangesEqual (changes, [{
@@ -227,17 +246,17 @@ describe "TextBuffer", ->
227
246
done ()
228
247
229
248
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 , [{
232
251
oldRange : [[0 , 0 ], [0 , 1 ]],
233
252
newRange : [[0 , 0 ], [0 , 1 ]],
234
253
oldText : ' h' ,
235
254
newText : ' y'
236
255
}])
237
256
238
257
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 , [{
241
260
oldRange : [[0 , 0 ], [0 , 1 ]],
242
261
newRange : [[0 , 0 ], [0 , 1 ]],
243
262
oldText : ' y' ,
@@ -266,28 +285,28 @@ describe "TextBuffer", ->
266
285
expect (changeEvents[1 ].newText ).toBe " ms\r\n do you\r\n like\r\n dirt"
267
286
268
287
buffer .setTextInRange ([[5 , 1 ], [5 , 3 ]], ' \r ' )
269
- expect (changeEvents[2 ]).toEqual ({
288
+ expect (changeEvents[2 ]. changes ).toEqual ([ {
270
289
oldRange : [[5 , 1 ], [5 , 3 ]],
271
290
newRange : [[5 , 1 ], [6 , 0 ]],
272
291
oldText : ' ik' ,
273
292
newText : ' \r\n '
274
- })
293
+ }] )
275
294
276
295
buffer .undo ()
277
- expect (changeEvents[3 ]).toEqual ({
296
+ expect (changeEvents[3 ]. changes ).toEqual ([ {
278
297
oldRange : [[5 , 1 ], [6 , 0 ]],
279
298
newRange : [[5 , 1 ], [5 , 3 ]],
280
299
oldText : ' \r\n ' ,
281
300
newText : ' ik'
282
- })
301
+ }] )
283
302
284
303
buffer .redo ()
285
- expect (changeEvents[4 ]).toEqual ({
304
+ expect (changeEvents[4 ]. changes ).toEqual ([ {
286
305
oldRange : [[5 , 1 ], [5 , 3 ]],
287
306
newRange : [[5 , 1 ], [6 , 0 ]],
288
307
oldText : ' ik' ,
289
308
newText : ' \r\n '
290
- })
309
+ }] )
291
310
292
311
describe " when the range's start row has no line ending (because it's the last line of the buffer)" , ->
293
312
describe " when the buffer contains no newlines" , ->
@@ -2245,7 +2264,7 @@ describe "TextBuffer", ->
2245
2264
buffer .setText (' \n ' )
2246
2265
expect (buffer .isEmpty ()).toBeFalsy ()
2247
2266
2248
- describe " ::onWillChange" , ->
2267
+ describe " ::onWillChange(callback) " , ->
2249
2268
it " notifies observers before a transaction, an undo or a redo" , ->
2250
2269
changeCount = 0
2251
2270
expectedText = ' '
@@ -2282,14 +2301,14 @@ describe "TextBuffer", ->
2282
2301
buffer .revertToCheckpoint (checkpoint)
2283
2302
expect (changeCount).toBe (5 )
2284
2303
2285
- describe " ::onDidChangeText (callback)" , ->
2304
+ describe " ::onDidChange (callback)" , ->
2286
2305
beforeEach ->
2287
2306
filePath = require .resolve (' ./fixtures/sample.js' )
2288
2307
buffer = TextBuffer .loadSync (filePath)
2289
2308
2290
2309
it " notifies observers after a transaction, an undo or a redo" , ->
2291
2310
textChanges = []
2292
- buffer .onDidChangeText ({changes}) -> textChanges .push (changes... )
2311
+ buffer .onDidChange ({changes}) -> textChanges .push (changes... )
2293
2312
2294
2313
buffer .insert ([0 , 0 ], " abc" )
2295
2314
buffer .delete ([[0 , 0 ], [0 , 1 ]])
@@ -2383,12 +2402,12 @@ describe "TextBuffer", ->
2383
2402
2384
2403
it " doesn't notify observers after an empty transaction" , ->
2385
2404
didChangeTextSpy = jasmine .createSpy ()
2386
- buffer .onDidChangeText (didChangeTextSpy)
2405
+ buffer .onDidChange (didChangeTextSpy)
2387
2406
buffer .transact (-> )
2388
2407
expect (didChangeTextSpy).not .toHaveBeenCalled ()
2389
2408
2390
2409
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 ())
2392
2411
expect (-> buffer .transact (-> buffer .clearUndoStack ())).not .toThrowError ()
2393
2412
expect (didChangeTextSpy).not .toHaveBeenCalled ()
2394
2413
@@ -2457,8 +2476,8 @@ describe "TextBuffer", ->
2457
2476
])
2458
2477
done ()
2459
2478
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}) ->
2462
2481
switch changes[0 ].newText
2463
2482
when ' a'
2464
2483
buffer .insert (changes[0 ].newRange .end , ' b' )
0 commit comments