@@ -249,7 +249,12 @@ export class TrimTrailingWhitespaceAction extends EditorAction {
249
249
cursors = ( editor . getSelections ( ) || [ ] ) . map ( s => new Position ( s . positionLineNumber , s . positionColumn ) ) ;
250
250
}
251
251
252
- let command = new TrimTrailingWhitespaceCommand ( editor . getSelection ( ) , cursors ) ;
252
+ let selection = editor . getSelection ( ) ;
253
+ if ( selection === null ) {
254
+ return ;
255
+ }
256
+
257
+ let command = new TrimTrailingWhitespaceCommand ( selection , cursors ) ;
253
258
254
259
editor . pushUndoStop ( ) ;
255
260
editor . executeCommands ( this . id , [ command ] ) ;
@@ -297,7 +302,11 @@ class DeleteLinesAction extends EditorAction {
297
302
298
303
private _getLinesToRemove ( editor : ICodeEditor ) : IDeleteLinesOperation [ ] {
299
304
// Construct delete operations
300
- let operations : IDeleteLinesOperation [ ] = editor . getSelections ( ) . map ( ( s ) => {
305
+ let selections = editor . getSelections ( ) ;
306
+ if ( selections === null ) {
307
+ return [ ] ;
308
+ }
309
+ let operations : IDeleteLinesOperation [ ] = selections . map ( ( s ) => {
301
310
302
311
let endLineNumber = s . endLineNumber ;
303
312
if ( s . startLineNumber < s . endLineNumber && s . endColumn === 1 ) {
@@ -378,7 +387,7 @@ class OutdentLinesAction extends EditorAction {
378
387
}
379
388
380
389
public run ( _accessor : ServicesAccessor , editor : ICodeEditor ) : void {
381
- CoreEditingCommands . Outdent . runEditorCommand ( null , editor , null ) ;
390
+ CoreEditingCommands . Outdent . runEditorCommand ( _accessor , editor , null ) ;
382
391
}
383
392
}
384
393
@@ -435,6 +444,10 @@ export class InsertLineAfterAction extends EditorAction {
435
444
export abstract class AbstractDeleteAllToBoundaryAction extends EditorAction {
436
445
public run ( _accessor : ServicesAccessor , editor : ICodeEditor ) : void {
437
446
const primaryCursor = editor . getSelection ( ) ;
447
+ if ( primaryCursor === null ) {
448
+ return ;
449
+ }
450
+
438
451
let rangesToDelete = this . _getRangesToDelete ( editor ) ;
439
452
// merge overlapping selections
440
453
let effectiveRanges : Range [ ] = [ ] ;
@@ -488,7 +501,7 @@ export class DeleteAllLeftAction extends AbstractDeleteAllToBoundaryAction {
488
501
}
489
502
490
503
_getEndCursorState ( primaryCursor : Range , rangesToDelete : Range [ ] ) : Selection [ ] {
491
- let endPrimaryCursor : Selection ;
504
+ let endPrimaryCursor : Selection | null = null ;
492
505
let endCursorState : Selection [ ] = [ ] ;
493
506
let deletedLines = 0 ;
494
507
@@ -518,15 +531,24 @@ export class DeleteAllLeftAction extends AbstractDeleteAllToBoundaryAction {
518
531
}
519
532
520
533
_getRangesToDelete ( editor : ICodeEditor ) : Range [ ] {
521
- let rangesToDelete : Range [ ] = editor . getSelections ( ) ;
534
+ let selections = editor . getSelections ( ) ;
535
+ if ( selections === null ) {
536
+ return [ ] ;
537
+ }
538
+
539
+ let rangesToDelete : Range [ ] = selections ;
522
540
let model = editor . getModel ( ) ;
523
541
542
+ if ( model === null ) {
543
+ return [ ] ;
544
+ }
545
+
524
546
rangesToDelete . sort ( Range . compareRangesUsingStarts ) ;
525
547
rangesToDelete = rangesToDelete . map ( selection => {
526
548
if ( selection . isEmpty ( ) ) {
527
549
if ( selection . startColumn === 1 ) {
528
550
let deleteFromLine = Math . max ( 1 , selection . startLineNumber - 1 ) ;
529
- let deleteFromColumn = selection . startLineNumber === 1 ? 1 : model . getLineContent ( deleteFromLine ) . length + 1 ;
551
+ let deleteFromColumn = selection . startLineNumber === 1 ? 1 : model ! . getLineContent ( deleteFromLine ) . length + 1 ;
530
552
return new Range ( deleteFromLine , deleteFromColumn , selection . startLineNumber , 1 ) ;
531
553
} else {
532
554
return new Range ( selection . startLineNumber , 1 , selection . startLineNumber , selection . startColumn ) ;
@@ -557,7 +579,7 @@ export class DeleteAllRightAction extends AbstractDeleteAllToBoundaryAction {
557
579
}
558
580
559
581
_getEndCursorState ( primaryCursor : Range , rangesToDelete : Range [ ] ) : Selection [ ] {
560
- let endPrimaryCursor : Selection ;
582
+ let endPrimaryCursor : Selection | null = null ;
561
583
let endCursorState : Selection [ ] = [ ] ;
562
584
for ( let i = 0 , len = rangesToDelete . length , offset = 0 ; i < len ; i ++ ) {
563
585
let range = rangesToDelete [ i ] ;
@@ -579,10 +601,19 @@ export class DeleteAllRightAction extends AbstractDeleteAllToBoundaryAction {
579
601
580
602
_getRangesToDelete ( editor : ICodeEditor ) : Range [ ] {
581
603
let model = editor . getModel ( ) ;
604
+ if ( model === null ) {
605
+ return [ ] ;
606
+ }
582
607
583
- let rangesToDelete : Range [ ] = editor . getSelections ( ) . map ( ( sel ) => {
608
+ let selections = editor . getSelections ( ) ;
609
+
610
+ if ( selections === null ) {
611
+ return [ ] ;
612
+ }
613
+
614
+ let rangesToDelete : Range [ ] = selections . map ( ( sel ) => {
584
615
if ( sel . isEmpty ( ) ) {
585
- const maxColumn = model . getLineMaxColumn ( sel . startLineNumber ) ;
616
+ const maxColumn = model ! . getLineMaxColumn ( sel . startLineNumber ) ;
586
617
587
618
if ( sel . startColumn === maxColumn ) {
588
619
return new Range ( sel . startLineNumber , sel . startColumn , sel . startLineNumber + 1 , 1 ) ;
@@ -616,15 +647,22 @@ export class JoinLinesAction extends EditorAction {
616
647
617
648
public run ( _accessor : ServicesAccessor , editor : ICodeEditor ) : void {
618
649
let selections = editor . getSelections ( ) ;
650
+ if ( selections === null ) {
651
+ return ;
652
+ }
653
+
619
654
let primaryCursor = editor . getSelection ( ) ;
655
+ if ( primaryCursor === null ) {
656
+ return ;
657
+ }
620
658
621
659
selections . sort ( Range . compareRangesUsingStarts ) ;
622
660
let reducedSelections : Selection [ ] = [ ] ;
623
661
624
662
let lastSelection = selections . reduce ( ( previousValue , currentValue ) => {
625
663
if ( previousValue . isEmpty ( ) ) {
626
664
if ( previousValue . endLineNumber === currentValue . startLineNumber ) {
627
- if ( primaryCursor . equalsSelection ( previousValue ) ) {
665
+ if ( primaryCursor ! . equalsSelection ( previousValue ) ) {
628
666
primaryCursor = currentValue ;
629
667
}
630
668
return currentValue ;
@@ -649,6 +687,10 @@ export class JoinLinesAction extends EditorAction {
649
687
reducedSelections . push ( lastSelection ) ;
650
688
651
689
let model = editor . getModel ( ) ;
690
+ if ( model === null ) {
691
+ return ;
692
+ }
693
+
652
694
let edits : IIdentifiedSingleEditOperation [ ] = [ ] ;
653
695
let endCursorState : Selection [ ] = [ ] ;
654
696
let endPrimaryCursor = primaryCursor ;
@@ -759,7 +801,15 @@ export class TransposeAction extends EditorAction {
759
801
760
802
public run ( _accessor : ServicesAccessor , editor : ICodeEditor ) : void {
761
803
let selections = editor . getSelections ( ) ;
804
+ if ( selections === null ) {
805
+ return ;
806
+ }
807
+
762
808
let model = editor . getModel ( ) ;
809
+ if ( model === null ) {
810
+ return ;
811
+ }
812
+
763
813
let commands : ICommand [ ] = [ ] ;
764
814
765
815
for ( let i = 0 , len = selections . length ; i < len ; i ++ ) {
@@ -800,7 +850,15 @@ export class TransposeAction extends EditorAction {
800
850
export abstract class AbstractCaseAction extends EditorAction {
801
851
public run ( _accessor : ServicesAccessor , editor : ICodeEditor ) : void {
802
852
let selections = editor . getSelections ( ) ;
853
+ if ( selections === null ) {
854
+ return ;
855
+ }
856
+
803
857
let model = editor . getModel ( ) ;
858
+ if ( model === null ) {
859
+ return ;
860
+ }
861
+
804
862
let commands : ICommand [ ] = [ ] ;
805
863
806
864
for ( let i = 0 , len = selections . length ; i < len ; i ++ ) {
0 commit comments