@@ -399,14 +399,14 @@ class RenderData {
399399 } ;
400400 }
401401
402- public onLinesChanged ( e : viewEvents . ViewLinesChangedEvent ) : boolean {
403- return this . _renderedLines . onLinesChanged ( e . fromLineNumber , e . toLineNumber ) ;
402+ public onLinesChanged ( changeFromLineNumber : number , changeToLineNumber : number ) : boolean {
403+ return this . _renderedLines . onLinesChanged ( changeFromLineNumber , changeToLineNumber ) ;
404404 }
405- public onLinesDeleted ( e : viewEvents . ViewLinesDeletedEvent ) : void {
406- this . _renderedLines . onLinesDeleted ( e . fromLineNumber , e . toLineNumber ) ;
405+ public onLinesDeleted ( deleteFromLineNumber : number , deleteToLineNumber : number ) : void {
406+ this . _renderedLines . onLinesDeleted ( deleteFromLineNumber , deleteToLineNumber ) ;
407407 }
408- public onLinesInserted ( e : viewEvents . ViewLinesInsertedEvent ) : void {
409- this . _renderedLines . onLinesInserted ( e . fromLineNumber , e . toLineNumber ) ;
408+ public onLinesInserted ( insertFromLineNumber : number , insertToLineNumber : number ) : void {
409+ this . _renderedLines . onLinesInserted ( insertFromLineNumber , insertToLineNumber ) ;
410410 }
411411 public onTokensChanged ( ranges : { fromLineNumber : number ; toLineNumber : number ; } [ ] ) : boolean {
412412 return this . _renderedLines . onTokensChanged ( ranges ) ;
@@ -561,13 +561,61 @@ export class Minimap extends ViewPart implements IMinimapModel {
561561 return this . _actual . onFlushed ( ) ;
562562 }
563563 public onLinesChanged ( e : viewEvents . ViewLinesChangedEvent ) : boolean {
564- return this . _actual . onLinesChanged ( e ) ; // TODO
564+ if ( this . _isSampling ) {
565+ let fromLineIndex = this . _modelLineToMinimapLine ( e . fromLineNumber ) - 1 ;
566+ while ( fromLineIndex > 0 && this . _minimapLines [ fromLineIndex - 1 ] >= e . fromLineNumber ) {
567+ fromLineIndex -- ;
568+ }
569+ let toLineIndex = this . _modelLineToMinimapLine ( e . toLineNumber ) - 1 ;
570+ while ( toLineIndex + 1 < this . _minimapLines . length && this . _minimapLines [ toLineIndex + 1 ] <= e . toLineNumber ) {
571+ toLineIndex ++ ;
572+ }
573+ return this . _actual . onLinesChanged ( fromLineIndex + 1 , toLineIndex + 1 ) ;
574+ } else {
575+ return this . _actual . onLinesChanged ( e . fromLineNumber , e . toLineNumber ) ;
576+ }
565577 }
566578 public onLinesDeleted ( e : viewEvents . ViewLinesDeletedEvent ) : boolean {
567- return this . _actual . onLinesDeleted ( e ) ; // TODO
579+ if ( this . _isSampling ) {
580+ // have the mapping be sticky
581+ const deletedLineCount = e . toLineNumber - e . fromLineNumber + 1 ;
582+ let changeStartIndex = this . _minimapLines . length ;
583+ let changeEndIndex = 0 ;
584+ for ( let i = this . _minimapLines . length - 1 ; i >= 0 ; i -- ) {
585+ if ( this . _minimapLines [ i ] < e . fromLineNumber ) {
586+ break ;
587+ }
588+ if ( this . _minimapLines [ i ] <= e . toLineNumber ) {
589+ // this line got deleted => move to previous available
590+ this . _minimapLines [ i ] = Math . max ( 1 , e . fromLineNumber - 1 ) ;
591+ changeStartIndex = Math . min ( changeStartIndex , i ) ;
592+ changeEndIndex = Math . max ( changeEndIndex , i ) ;
593+ } else {
594+ this . _minimapLines [ i ] -= deletedLineCount ;
595+ }
596+ }
597+ if ( changeStartIndex <= changeEndIndex ) {
598+ this . _actual . onLinesChanged ( changeStartIndex + 1 , changeEndIndex + 1 ) ;
599+ }
600+ return this . _checkMapping ( ) ;
601+ } else {
602+ return this . _actual . onLinesDeleted ( e . fromLineNumber , e . toLineNumber ) ;
603+ }
568604 }
569605 public onLinesInserted ( e : viewEvents . ViewLinesInsertedEvent ) : boolean {
570- return this . _actual . onLinesInserted ( e ) ; // TODO
606+ if ( this . _isSampling ) {
607+ // have the mapping be sticky
608+ const insertedLineCount = e . toLineNumber - e . fromLineNumber + 1 ;
609+ for ( let i = this . _minimapLines . length - 1 ; i >= 0 ; i -- ) {
610+ if ( this . _minimapLines [ i ] < e . fromLineNumber ) {
611+ break ;
612+ }
613+ this . _minimapLines [ i ] += insertedLineCount ;
614+ }
615+ return this . _checkMapping ( ) ;
616+ } else {
617+ return this . _actual . onLinesInserted ( e . fromLineNumber , e . toLineNumber ) ;
618+ }
571619 }
572620 public onScrollChanged ( e : viewEvents . ViewScrollChangedEvent ) : boolean {
573621 return this . _actual . onScrollChanged ( ) ;
@@ -635,6 +683,11 @@ export class Minimap extends ViewPart implements IMinimapModel {
635683
636684 //#region IMinimapModel
637685
686+ private _checkMapping ( ) : boolean {
687+ // console.log(`TODO: I SHOULD ADJUST THE MAPPING!!!`, this._minimapLines);
688+ return false ;
689+ }
690+
638691 private _recreateLineMapping ( ) : void {
639692 const options = this . _context . configuration . options ;
640693 const layoutInfo = options . get ( EditorOption . layoutInfo ) ;
@@ -1010,21 +1063,21 @@ class InnerMinimap extends Disposable {
10101063 this . _lastRenderData = null ;
10111064 return true ;
10121065 }
1013- public onLinesChanged ( e : viewEvents . ViewLinesChangedEvent ) : boolean {
1066+ public onLinesChanged ( changeFromLineNumber : number , changeToLineNumber : number ) : boolean {
10141067 if ( this . _lastRenderData ) {
1015- return this . _lastRenderData . onLinesChanged ( e ) ;
1068+ return this . _lastRenderData . onLinesChanged ( changeFromLineNumber , changeToLineNumber ) ;
10161069 }
10171070 return false ;
10181071 }
1019- public onLinesDeleted ( e : viewEvents . ViewLinesDeletedEvent ) : boolean {
1072+ public onLinesDeleted ( deleteFromLineNumber : number , deleteToLineNumber : number ) : boolean {
10201073 if ( this . _lastRenderData ) {
1021- this . _lastRenderData . onLinesDeleted ( e ) ;
1074+ this . _lastRenderData . onLinesDeleted ( deleteFromLineNumber , deleteToLineNumber ) ;
10221075 }
10231076 return true ;
10241077 }
1025- public onLinesInserted ( e : viewEvents . ViewLinesInsertedEvent ) : boolean {
1078+ public onLinesInserted ( insertFromLineNumber : number , insertToLineNumber : number ) : boolean {
10261079 if ( this . _lastRenderData ) {
1027- this . _lastRenderData . onLinesInserted ( e ) ;
1080+ this . _lastRenderData . onLinesInserted ( insertFromLineNumber , insertToLineNumber ) ;
10281081 }
10291082 return true ;
10301083 }
0 commit comments