Skip to content

Commit b623d85

Browse files
committed
feat: Make autoSaveModels disposable
1 parent 99e0d69 commit b623d85

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/services.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11

22
import * as monaco from 'monaco-editor'
33
import {
4-
Services, MonacoToProtocolConverter, ProtocolToMonacoConverter, MonacoLanguages, TextDocumentSaveReason, MonacoCommands
4+
Services, MonacoToProtocolConverter, ProtocolToMonacoConverter, MonacoLanguages, TextDocumentSaveReason, MonacoCommands, DisposableCollection
55
} from 'monaco-languageclient'
6-
import { RenameFile, CreateFile, WorkspaceEdit } from 'vscode-languageserver-protocol'
6+
import { RenameFile, CreateFile, WorkspaceEdit, Disposable } from 'vscode-languageserver-protocol'
77
import WatchableConsoleWindow from './services/WatchableConsoleWindow'
88
import CodinGameMonacoWorkspace from './services/CodinGameMonacoWorkspace'
99
import { Infrastructure } from './infrastructure'
@@ -29,9 +29,10 @@ function installCommands (services: CgMonacoServices) {
2929
})
3030
}
3131

32-
function autoSaveModels (services: CgMonacoServices) {
32+
function autoSaveModels (services: CgMonacoServices): Disposable {
33+
const disposableCollection = new DisposableCollection()
3334
const timeoutMap = new Map<string, number>()
34-
services.workspace.onDidChangeTextDocument(e => {
35+
disposableCollection.push(services.workspace.onDidChangeTextDocument(e => {
3536
const timeout = timeoutMap.get(e.textDocument.uri)
3637
if (timeout != null) {
3738
window.clearTimeout(timeout)
@@ -43,7 +44,13 @@ function autoSaveModels (services: CgMonacoServices) {
4344
console.error('[LSP]', `Unable to save the document ${e.textDocument.uri.toString()}`, err)
4445
})
4546
}, 500))
46-
})
47+
}))
48+
disposableCollection.push(Disposable.create(() => {
49+
for (const timeout of Array.from(timeoutMap.values())) {
50+
window.clearTimeout(timeout)
51+
}
52+
}))
53+
return disposableCollection
4754
}
4855

4956
let services: CgMonacoServices | null = null

0 commit comments

Comments
 (0)