@@ -65,11 +65,6 @@ function formatDiffLineNumbers(fromLine, toLine, maxNumberChars) {
65
65
return ret ;
66
66
}
67
67
68
- function adjustCodeBlockLeftMargin ( diffElt ) {
69
- let left = $ ( diffElt ) . find ( '.hljs-ln-numbers-container' ) . width ( ) ;
70
- $ ( diffElt ) . find ( '.hljs-ln-code-container' ) . css ( 'margin-left' , left + 'px' ) ;
71
- }
72
-
73
68
// to compute diff and process it for display
74
69
export function computeDiff ( diffUrl , diffId ) {
75
70
@@ -144,10 +139,8 @@ export function computeDiff(diffUrl, diffId) {
144
139
let diffToStr = '' ;
145
140
let linesOffset = 0 ;
146
141
147
- let codeLineElts = $ ( `#${ diffId } .hljs-ln-code-container` ) . children ( ) ;
148
-
149
142
$ ( `#${ diffId } .hljs-ln-numbers` ) . each ( ( i , lnElt ) => {
150
- let lnText = $ ( codeLineElts [ i ] ) . text ( ) ;
143
+ let lnText = lnElt . nextSibling . innerText ;
151
144
let linesInfo = linesInfoRegExp . exec ( lnText ) ;
152
145
let fromLine = '' ;
153
146
let toLine = '' ;
@@ -218,55 +211,45 @@ export function computeDiff(diffUrl, diffId) {
218
211
hljs . lineNumbersBlock ( block ) ;
219
212
} ) ;
220
213
221
- function highlightDiffLines ( diffId ) {
222
- let codeLineElts = $ ( `#${ diffId } .hljs-ln-code-container` ) . children ( ) ;
223
- $ ( `#${ diffId } .hljs-ln-numbers` ) . each ( ( i , lnElt ) => {
224
- let lnTextElt = codeLineElts [ i ] ;
225
- let lnText = $ ( lnTextElt ) . text ( ) ;
214
+ // hljs.lineNumbersBlock is asynchronous so we have to postpone our
215
+ // next treatments by adding it at the end of the current js events queue
216
+ setTimeout ( ( ) => {
217
+ // diff highlighting for added/removed lines on top of code highlighting
218
+ $ ( `.${ diffId } .hljs-ln-numbers` ) . each ( ( i , lnElt ) => {
219
+ let lnText = lnElt . nextSibling . innerText ;
226
220
let linesInfo = linesInfoRegExp . exec ( lnText ) ;
227
221
if ( linesInfo ) {
228
- $ ( lnElt ) . addClass ( 'swh-diff-lines-info' ) ;
229
- $ ( lnTextElt ) . addClass ( 'swh-diff-lines-info' ) ;
230
- $ ( lnTextElt ) . text ( '' ) ;
231
- $ ( lnTextElt ) . append ( `<span class="hljs-meta">${ lnText } </span>` ) ;
222
+ $ ( lnElt ) . parent ( ) . addClass ( 'swh-diff-lines-info' ) ;
223
+ let linesInfoText = $ ( lnElt ) . parent ( ) . find ( '.hljs-ln-code .hljs-ln-line' ) . text ( ) ;
224
+ $ ( lnElt ) . parent ( ) . find ( '.hljs-ln-code .hljs-ln-line' ) . children ( ) . remove ( ) ;
225
+ $ ( lnElt ) . parent ( ) . find ( '.hljs-ln-code .hljs-ln-line' ) . text ( '' ) ;
226
+ $ ( lnElt ) . parent ( ) . find ( '.hljs-ln-code .hljs-ln-line' ) . append ( `<span class="hljs-meta">${ linesInfoText } </span>` ) ;
232
227
} else if ( lnText . length > 0 && lnText [ 0 ] === '-' ) {
233
- $ ( lnElt ) . addClass ( 'swh-diff-removed-line' ) ;
234
- $ ( lnTextElt ) . addClass ( 'swh-diff-removed-line' ) ;
228
+ $ ( lnElt ) . parent ( ) . addClass ( 'swh-diff-removed-line' ) ;
235
229
} else if ( lnText . length > 0 && lnText [ 0 ] === '+' ) {
236
- $ ( lnElt ) . addClass ( 'swh-diff-added-line' ) ;
237
- $ ( lnTextElt ) . addClass ( 'swh-diff-added-line' ) ;
230
+ $ ( lnElt ) . parent ( ) . addClass ( 'swh-diff-added-line' ) ;
238
231
}
239
232
} ) ;
240
- }
241
-
242
- // hljs.lineNumbersBlock is asynchronous so we have to postpone our
243
- // next treatments by adding it at the end of the current js events queue
244
- setTimeout ( ( ) => {
245
-
246
- // diff highlighting for added/removed lines on top of code highlighting
247
- highlightDiffLines ( diffId ) ;
248
- highlightDiffLines ( `${ diffId } -from` ) ;
249
- highlightDiffLines ( `${ diffId } -to` ) ;
250
233
251
234
// set line numbers for unified diff
252
- $ ( `#${ diffId } .hljs-ln-numbers .hljs-ln-n ` ) . each ( ( i , lnElt ) => {
253
- $ ( lnElt ) . attr (
235
+ $ ( `#${ diffId } .hljs-ln-numbers` ) . each ( ( i , lnElt ) => {
236
+ $ ( lnElt ) . children ( ) . attr (
254
237
'data-line-number' ,
255
238
formatDiffLineNumbers ( fromToLines [ i ] [ 0 ] , fromToLines [ i ] [ 1 ] ,
256
239
maxNumberChars ) ) ;
257
240
} ) ;
258
241
259
242
// set line numbers for the from side-by-side diff
260
- $ ( `#${ diffId } -from .hljs-ln-numbers .hljs-ln-n ` ) . each ( ( i , lnElt ) => {
261
- $ ( lnElt ) . attr (
243
+ $ ( `#${ diffId } -from .hljs-ln-numbers` ) . each ( ( i , lnElt ) => {
244
+ $ ( lnElt ) . children ( ) . attr (
262
245
'data-line-number' ,
263
246
formatDiffLineNumbers ( fromLines [ i ] , null ,
264
247
maxNumberChars ) ) ;
265
248
} ) ;
266
249
267
250
// set line numbers for the to side-by-side diff
268
- $ ( `#${ diffId } -to .hljs-ln-numbers .hljs-ln-n ` ) . each ( ( i , lnElt ) => {
269
- $ ( lnElt ) . attr (
251
+ $ ( `#${ diffId } -to .hljs-ln-numbers` ) . each ( ( i , lnElt ) => {
252
+ $ ( lnElt ) . children ( ) . attr (
270
253
'data-line-number' ,
271
254
formatDiffLineNumbers ( null , toLines [ i ] ,
272
255
maxNumberChars ) ) ;
@@ -305,8 +288,6 @@ export function computeDiff(diffUrl, diffId) {
305
288
306
289
setDiffVisible ( diffId ) ;
307
290
308
- adjustCodeBlockLeftMargin ( `#${ diffId } ` ) ;
309
-
310
291
} ) ;
311
292
} ) ;
312
293
}
@@ -429,8 +410,6 @@ export function showUnifiedDiff(event, diffId) {
429
410
export function showSplittedDiff ( event , diffId ) {
430
411
$ ( `#${ diffId } -unified-diff` ) . css ( 'display' , 'none' ) ;
431
412
$ ( `#${ diffId } -splitted-diff` ) . css ( 'display' , 'block' ) ;
432
- adjustCodeBlockLeftMargin ( `#${ diffId } -from` ) ;
433
- adjustCodeBlockLeftMargin ( `#${ diffId } -to` ) ;
434
413
}
435
414
436
415
// callback when the user clicks on the 'Compute all diffs' button
0 commit comments