@@ -68,6 +68,7 @@ export class RenderLineInput {
6868 public readonly tabSize : number ;
6969 public readonly startVisibleColumn : number ;
7070 public readonly spaceWidth : number ;
71+ public readonly middotWidth : number ;
7172 public readonly stopRenderingLineAfter : number ;
7273 public readonly renderWhitespace : RenderWhitespace ;
7374 public readonly renderControlCharacters : boolean ;
@@ -92,6 +93,7 @@ export class RenderLineInput {
9293 tabSize : number ,
9394 startVisibleColumn : number ,
9495 spaceWidth : number ,
96+ middotWidth : number ,
9597 stopRenderingLineAfter : number ,
9698 renderWhitespace : 'none' | 'boundary' | 'selection' | 'all' ,
9799 renderControlCharacters : boolean ,
@@ -110,6 +112,7 @@ export class RenderLineInput {
110112 this . tabSize = tabSize ;
111113 this . startVisibleColumn = startVisibleColumn ;
112114 this . spaceWidth = spaceWidth ;
115+ this . middotWidth = middotWidth ;
113116 this . stopRenderingLineAfter = stopRenderingLineAfter ;
114117 this . renderWhitespace = (
115118 renderWhitespace === 'all'
@@ -380,6 +383,7 @@ class ResolvedRenderLineInput {
380383 public readonly startVisibleColumn : number ,
381384 public readonly containsRTL : boolean ,
382385 public readonly spaceWidth : number ,
386+ public readonly middotWidth : number ,
383387 public readonly renderWhitespace : RenderWhitespace ,
384388 public readonly renderControlCharacters : boolean ,
385389 ) {
@@ -439,6 +443,7 @@ function resolveRenderLineInput(input: RenderLineInput): ResolvedRenderLineInput
439443 input . startVisibleColumn ,
440444 input . containsRTL ,
441445 input . spaceWidth ,
446+ input . middotWidth ,
442447 input . renderWhitespace ,
443448 input . renderControlCharacters
444449 ) ;
@@ -734,9 +739,13 @@ function _renderLine(input: ResolvedRenderLineInput, sb: IStringBuilder): Render
734739 const startVisibleColumn = input . startVisibleColumn ;
735740 const containsRTL = input . containsRTL ;
736741 const spaceWidth = input . spaceWidth ;
742+ const middotWidth = input . middotWidth ;
737743 const renderWhitespace = input . renderWhitespace ;
738744 const renderControlCharacters = input . renderControlCharacters ;
739745
746+ // use U+2E31 - WORD SEPARATOR MIDDLE DOT or U+00B7 - MIDDLE DOT
747+ const spaceRenderWhitespaceCharacter = ( middotWidth > spaceWidth ? 0x2E31 : 0xB7 ) ;
748+
740749 const characterMapping = new CharacterMapping ( len + 1 , parts . length ) ;
741750
742751 let charIndex = 0 ;
@@ -808,7 +817,7 @@ function _renderLine(input: ResolvedRenderLineInput, sb: IStringBuilder): Render
808817 } else { // must be CharCode.Space
809818 charWidth = 1 ;
810819
811- sb . write1 ( 0xB7 ) ; // ·
820+ sb . write1 ( spaceRenderWhitespaceCharacter ) ; // · or word separator middle dot
812821 }
813822
814823 charOffsetInPart += charWidth ;
0 commit comments