Skip to content

Commit 1b0aeba

Browse files
author
Loïc Mangeonjean
committed
fix: register file instead of writting to the memory layer
So we're able to clean afterward
1 parent 45e5f0a commit 1b0aeba

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/MonacoEditor.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import React, { ForwardedRef, forwardRef, ReactElement, useEffect, useMemo, useRef, useState } from 'react'
22
import debounce from 'lodash.debounce'
33
import * as monaco from 'monaco-editor'
4-
import { createEditor, getMonacoLanguage, updateEditorKeybindingsMode, registerEditorOpenHandler, createModelReference } from '@codingame/monaco-editor-wrapper'
4+
import { createEditor, getMonacoLanguage, updateEditorKeybindingsMode, registerEditorOpenHandler, createModelReference, registerFile } from '@codingame/monaco-editor-wrapper'
55
import { IEditorOptions, IResolvedTextEditorModel } from '@codingame/monaco-vscode-editor-service-override'
66
import { DisposableStore, IReference, ITextFileEditorModel } from 'vscode/monaco'
77
import type { ITextFileEditorModelSaveEvent } from 'vscode/vscode/vs/workbench/services/textfile/common/textfiles'
8+
import { RegisteredMemoryFile } from '@codingame/monaco-vscode-files-service-override'
89
import { useDeepMemo, useLastValueRef, useLastVersion, useThemeColor } from './hooks.js'
910
import './style.js'
1011

@@ -212,9 +213,14 @@ function MonacoEditor ({
212213
let model: monaco.editor.ITextModel
213214
const disposableStore = new DisposableStore()
214215
if (fileUri != null) {
215-
const modelIRefPromise = createModelReference(monaco.Uri.parse(fileUri), value!)
216+
const uri = monaco.Uri.parse(fileUri)
217+
218+
const fileDisposable = registerFile(new RegisteredMemoryFile(uri, value!))
219+
220+
const modelIRefPromise = createModelReference(uri)
216221
disposableStore.add({
217222
dispose () {
223+
fileDisposable.dispose()
218224
void modelIRefPromise.then(modelIRef => modelIRef.dispose(), console.error)
219225
}
220226
})

0 commit comments

Comments
 (0)