@@ -16,8 +16,9 @@ import { /*createMinimapCharRenderer,*/ createMinimapCharRenderer2 } from 'vs/ed
16
16
import * as browser from 'vs/base/browser/browser' ;
17
17
import { MinimapColors , MinimapTokensColorTracker , Constants } from 'vs/editor/common/view/minimapCharRenderer' ;
18
18
import * as editorCommon from 'vs/editor/common/editorCommon' ;
19
-
19
+ import { CharCode } from 'vs/base/common/charCode' ;
20
20
import { MinimapLineRenderingData } from 'vs/editor/common/viewModel/viewModel' ;
21
+
21
22
// let charRenderer = createMinimapCharRenderer();
22
23
let charRenderer2 = createMinimapCharRenderer2 ( ) ;
23
24
@@ -262,10 +263,13 @@ export class Minimap extends ViewPart {
262
263
private static _render2xLine ( target : ImageData , colors : MinimapColors , dy : number , maxColumn : number , lineData : MinimapLineRenderingData ) {
263
264
const content = lineData . content ;
264
265
const tokens = lineData . tokens ;
266
+ const tabSize = lineData . tabSize ;
265
267
const charIndexStop = Math . min ( content . length , maxColumn - 1 ) ;
266
268
267
269
let dx = 0 ;
268
270
let charIndex = 0 ;
271
+ let tabsCharDelta = 0 ;
272
+
269
273
for ( let tokenIndex = 0 , tokensLen = tokens . length ; tokenIndex < tokensLen ; tokenIndex ++ ) {
270
274
const token = tokens [ tokenIndex ] ;
271
275
const tokenEndIndex = token . endIndex ;
@@ -279,8 +283,18 @@ export class Minimap extends ViewPart {
279
283
}
280
284
const charCode = content . charCodeAt ( charIndex ) ;
281
285
282
- charRenderer2 . x2RenderChar ( target , dx , dy , charCode , tokenColor ) ;
283
- dx += Constants . x2_CHAR_WIDTH ;
286
+ if ( charCode === CharCode . Tab ) {
287
+ let insertSpacesCount = tabSize - ( charIndex + tabsCharDelta ) % tabSize ;
288
+ tabsCharDelta += insertSpacesCount - 1 ;
289
+ // No need to render anything since tab is invisible
290
+ dx += insertSpacesCount * Constants . x2_CHAR_WIDTH ;
291
+ } else if ( charCode === CharCode . Space ) {
292
+ // No need to render anything since space is invisible
293
+ dx += Constants . x2_CHAR_WIDTH ;
294
+ } else {
295
+ charRenderer2 . x2RenderChar ( target , dx , dy , charCode , tokenColor ) ;
296
+ dx += Constants . x2_CHAR_WIDTH ;
297
+ }
284
298
}
285
299
}
286
300
}
0 commit comments