From b9729a79fc04ed74e88318c7f43ba10dc5171c99 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Thu, 9 Jun 2016 13:55:08 -0700 Subject: [PATCH] switch to use explicit list of open files --- src/server/editorServices.ts | 20 ++++++++++---------- src/server/protocol.d.ts | 13 +++++++++---- src/server/session.ts | 2 +- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 37e5208f86a..1447b621ff3 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -1484,18 +1484,18 @@ namespace ts.server { return files; } - applyChangesInOpenFiles(openFiles: protocol.OpenFile[], closedFiles: string[]): void { + applyChangesInOpenFiles(openFiles: protocol.NewOpenFile[], changedFiles: protocol.ChangedOpenFile[], closedFiles: string[]): void { for (const file of openFiles) { const scriptInfo = this.getScriptInfo(file.fileName); - if (!scriptInfo || !scriptInfo.isOpen) { - Debug.assert(!!file.content); - this.openClientFile(file.fileName, file.content); - } - else { - Debug.assert(!!file.textChanges); - for (const change of file.textChanges) { - scriptInfo.editContent(change.span.start, change.span.start + change.span.length, change.newText); - } + Debug.assert(!scriptInfo || !scriptInfo.isOpen); + this.openClientFile(file.fileName, file.content); + } + + for (const file of changedFiles) { + const scriptInfo = this.getScriptInfo(file.fileName); + Debug.assert(!!scriptInfo); + for (const change of file.changes) { + scriptInfo.editContent(change.span.start, change.span.start + change.span.length, change.newText); } } diff --git a/src/server/protocol.d.ts b/src/server/protocol.d.ts index 0ca5163ac17..c3f40cc5258 100644 --- a/src/server/protocol.d.ts +++ b/src/server/protocol.d.ts @@ -451,10 +451,14 @@ declare namespace ts.server.protocol { * Represents a set of changes for open document with a given file name. * Either content of textChanges should be present. */ - export interface OpenFile { + export interface NewOpenFile { fileName: string; - content?: string; - textChanges?: ts.TextChange[]; + content: string; + } + + export interface ChangedOpenFile { + fileName: string; + changes: ts.TextChange[]; } /** @@ -611,7 +615,8 @@ declare namespace ts.server.protocol { } export interface ApplyChangedToOpenFilesRequestArgs { - openFiles: OpenFile[]; + openFiles: NewOpenFile[]; + changedFiles: ChangedOpenFile[]; closedFiles: string[]; } diff --git a/src/server/session.ts b/src/server/session.ts index 5c148fac25a..936f7a71740 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -1063,7 +1063,7 @@ namespace ts.server { return this.requiredResponse(result); }, [CommandNames.ApplyChangedToOpenFiles]: (request: protocol.ApplyChangedToOpenFilesRequest) => { - this.projectService.applyChangesInOpenFiles(request.arguments.openFiles, request.arguments.closedFiles); + this.projectService.applyChangesInOpenFiles(request.arguments.openFiles, request.arguments.changedFiles, request.arguments.closedFiles); // TODO: report errors return this.requiredResponse(true); },