From a4d496c4c6b4778e1589044646295b33fa02aa8c Mon Sep 17 00:00:00 2001 From: zhengbli Date: Thu, 20 Aug 2015 14:34:46 -0700 Subject: [PATCH] add command for rebuild all project structure --- src/server/editorServices.ts | 25 ++++++++++++++++++++----- src/server/session.ts | 9 +++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 72f666011a6..1f88a674950 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -621,7 +621,10 @@ namespace ts.server { let fileNames = project.getFileNames(); for (let fileName of fileNames) { - this.getScriptInfo(fileName).defaultProject = undefined; + let info = this.getScriptInfo(fileName); + if (info.defaultProject == project){ + info.defaultProject = undefined; + } } } @@ -766,6 +769,19 @@ namespace ts.server { return referencingProjects; } + rebuildProjectStructure() { + // First check if there is new tsconfig file added for inferred project roots + for (let info of this.openFileRoots) { + this.openOrUpdateConfiguredProjectForFile(info.fileName); + } + this.updateProjectStructure(); + } + + /** + * This function is to update the project structure for every projects. + * It is called on the premise that all the configured projects are + * up to date. + */ updateProjectStructure() { this.log("updating project structure from ...", "Info"); this.printProjects(); @@ -912,10 +928,6 @@ namespace ts.server { let configFileName = this.findConfigFile(searchPath); if (configFileName) { this.log("Config file name: " + configFileName, "Info"); - } else { - this.log("no config file"); - } - if (configFileName) { let project = this.findConfiguredProjectByConfigFile(configFileName); if (!project) { var configResult = this.openConfigFile(configFileName, fileName); @@ -931,6 +943,9 @@ namespace ts.server { this.updateConfiguredProject(project); } } + else { + this.log("No config files found."); + } } /** diff --git a/src/server/session.ts b/src/server/session.ts index 108cf4726dc..60ab090f616 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -100,6 +100,7 @@ namespace ts.server { export const SignatureHelp = "signatureHelp"; export const TypeDefinition = "typeDefinition"; export const ProjectInfo = "projectInfo"; + export const RebuildProjects = "rebuildProjects"; export const Unknown = "unknown"; } @@ -226,6 +227,10 @@ namespace ts.server { this.syntacticCheck(file, project); this.semanticCheck(file, project); } + + private rebuildProjectStructure() { + this.projectService.rebuildProjectStructure(); + } private updateProjectStructure(seq: number, matchSeq: (seq: number) => boolean, ms = 1500) { setTimeout(() => { @@ -1033,6 +1038,10 @@ namespace ts.server { var { file, needFileNameList } = request.arguments; return {response: this.getProjectInfo(file, needFileNameList), responseRequired: true}; }, + [CommandNames.RebuildProjects]: (request: protocol.Request) => { + this.rebuildProjectStructure(); + return {responseRequired: false}; + } }; public addProtocolHandler(command: string, handler: (request: protocol.Request) => {response?: any, responseRequired: boolean}) { if (this.handlers[command]) {