@@ -15,7 +15,7 @@ import { IFileService, FileOperationError, FileOperationResult, FileChangesEvent
1515import { IModeService } from 'vs/editor/common/services/modeService' ;
1616import { IModelService } from 'vs/editor/common/services/modelService' ;
1717import { timeout } from 'vs/base/common/async' ;
18- import { ITextBufferFactory } from 'vs/editor/common/model' ;
18+ import { ITextBufferFactory , ITextModel } from 'vs/editor/common/model' ;
1919import { INotificationService } from 'vs/platform/notification/common/notification' ;
2020import { ILogService } from 'vs/platform/log/common/log' ;
2121import { basename } from 'vs/base/common/path' ;
@@ -393,7 +393,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
393393 }
394394
395395 // Update Existing Model
396- if ( this . isResolved ( ) ) {
396+ if ( this . textEditorModel ) {
397397 this . doUpdateTextModel ( content . value ) ;
398398 }
399399
@@ -412,7 +412,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
412412 this . logService . trace ( '[text file model] load() - created text editor model' , this . resource . toString ( ) ) ;
413413
414414 // Create model
415- this . createTextEditorModel ( value , resource , this . preferredMode ) ;
415+ const textModel = this . createTextEditorModel ( value , resource , this . preferredMode ) ;
416416
417417 // We restored a backup so we have to set the model as being dirty
418418 if ( fromBackup ) {
@@ -425,7 +425,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
425425 }
426426
427427 // Model Listeners
428- this . installModelListeners ( ) ;
428+ this . installModelListeners ( textModel ) ;
429429 }
430430
431431 private doUpdateTextModel ( value : ITextBufferFactory ) : void {
@@ -446,19 +446,17 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
446446 this . updateSavedVersionId ( ) ;
447447 }
448448
449- private installModelListeners ( ) : void {
449+ private installModelListeners ( model : ITextModel ) : void {
450450
451451 // See https://github.com/Microsoft/vscode/issues/30189
452452 // This code has been extracted to a different method because it caused a memory leak
453453 // where `value` was captured in the content change listener closure scope.
454454
455455 // Content Change
456- if ( this . isResolved ( ) ) {
457- this . _register ( this . textEditorModel . onDidChangeContent ( ( ) => this . onModelContentChanged ( ) ) ) ;
458- }
456+ this . _register ( model . onDidChangeContent ( ( ) => this . onModelContentChanged ( model ) ) ) ;
459457 }
460458
461- private onModelContentChanged ( ) : void {
459+ private onModelContentChanged ( model : ITextModel ) : void {
462460 this . logService . trace ( `[text file model] onModelContentChanged() - enter` , this . resource . toString ( ) ) ;
463461
464462 // In any case increment the version id because it tracks the textual content state of the model at all times
@@ -472,7 +470,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
472470
473471 // The contents changed as a matter of Undo and the version reached matches the saved one
474472 // In this case we clear the dirty flag and emit a SAVED event to indicate this state.
475- if ( this . isResolved ( ) && this . textEditorModel . getAlternativeVersionId ( ) === this . bufferSavedVersionId ) {
473+ if ( model . getAlternativeVersionId ( ) === this . bufferSavedVersionId ) {
476474 this . logService . trace ( '[text file model] onModelContentChanged() - model content changed back to last saved version' , this . resource . toString ( ) ) ;
477475
478476 // Clear flags
@@ -739,11 +737,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
739737 this . _onDidSaveError . fire ( ) ;
740738 }
741739
742- private doTouch ( versionId : number , reason : SaveReason ) : Promise < void > {
743- if ( ! this . isResolved ( ) ) {
744- return Promise . resolve ( ) ;
745- }
746-
740+ private doTouch ( this : TextFileEditorModel & IResolvedTextFileEditorModel , versionId : number , reason : SaveReason ) : Promise < void > {
747741 const lastResolvedFileStat = assertIsDefined ( this . lastResolvedFileStat ) ;
748742 return this . saveSequentializer . setPending ( versionId , this . textFileService . write ( lastResolvedFileStat . resource , this . createSnapshot ( ) , {
749743 mtime : lastResolvedFileStat . mtime ,
0 commit comments