From 62664fdedac9267111a976994f549e89e0b4b2f2 Mon Sep 17 00:00:00 2001 From: zhengbli Date: Wed, 14 Oct 2015 16:09:41 -0700 Subject: [PATCH] Add timer for batch processing directory changes --- src/server/editorServices.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 3cfdadd7785..535d91aaf98 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -503,6 +503,7 @@ namespace ts.server { // number becomes 0 for a watcher, then we should close it. directoryWatchersRefCount: ts.Map = {}; hostConfiguration: HostConfiguration; + timerForDetectingProjectFilelistChanges: Map = {}; constructor(public host: ServerHost, public psLogger: Logger, public eventHandler?: ProjectServiceEventHandler) { // ts.disableIncrementalParsing = true; @@ -557,6 +558,20 @@ namespace ts.server { } this.log("Detected source file changes: " + fileName); + this.startTimerForDetectingProjectFilelistChanges(project); + } + + startTimerForDetectingProjectFilelistChanges(project: Project) { + if (this.timerForDetectingProjectFilelistChanges[project.projectFilename]) { + clearTimeout(this.timerForDetectingProjectFilelistChanges[project.projectFilename]); + } + this.timerForDetectingProjectFilelistChanges[project.projectFilename] = setTimeout( + () => this.handleProjectFilelistChanges(project), + 250 + ); + } + + handleProjectFilelistChanges(project: Project) { let { succeeded, projectOptions, error } = this.configFileToProjectOptions(project.projectFilename); let newRootFiles = projectOptions.files.map((f => this.getCanonicalFileName(f))); let currentRootFiles = project.getRootFiles().map((f => this.getCanonicalFileName(f)));