Skip to content

Commit df6c1cc

Browse files
committed
Move create/update override to a separate hook.
1 parent e362b00 commit df6c1cc

File tree

3 files changed

+21
-34
lines changed

3 files changed

+21
-34
lines changed

src/harness/harnessLanguageService.ts

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -789,52 +789,43 @@ namespace Harness.LanguageService {
789789
return {
790790
module: () => ({
791791
create(info: ts.server.PluginCreateInfo) {
792-
return info;
793-
},
794-
changeSourceFiles() {
795792
const clssf = ts.createLanguageServiceSourceFile;
796793
const ulssf = ts.updateLanguageServiceSourceFile;
797-
return {
798-
createLanguageServiceSourceFile(fileName: string, scriptSnapshot: ts.IScriptSnapshot, scriptTarget: ts.ScriptTarget, version: string, setNodeParents: boolean, scriptKind?: ts.ScriptKind): ts.SourceFile {
794+
ts.overrideCreateupdateLanguageServiceSourceFile(
795+
796+
(fileName: string, scriptSnapshot: ts.IScriptSnapshot, scriptTarget: ts.ScriptTarget, version: string, setNodeParents: boolean, scriptKind?: ts.ScriptKind): ts.SourceFile => {
799797
if (interested(fileName)) {
800798
const wrapped = scriptSnapshot;
801799
scriptSnapshot = {
802800
getChangeRange: old => wrapped.getChangeRange(old),
803801
getLength: () => wrapped.getLength(),
804-
getText: (start, end) => parse(fileName, wrapped.getText(0, wrapped.getLength())).slice(start, end),
802+
getText: (start, end) => parse(wrapped.getText(0, wrapped.getLength())).slice(start, end),
805803
};
806804
}
807805
var sourceFile = clssf(fileName, scriptSnapshot, scriptTarget, version, setNodeParents, scriptKind);
808-
if (interested(fileName)) {
809-
modifyVueSource(sourceFile);
810-
}
811806
return sourceFile;
812807
},
813-
updateLanguageServiceSourceFile(sourceFile: ts.SourceFile, scriptSnapshot: ts.IScriptSnapshot, version: string, textChangeRange: ts.TextChangeRange, aggressiveChecks?: boolean): ts.SourceFile {
808+
(sourceFile: ts.SourceFile, scriptSnapshot: ts.IScriptSnapshot, version: string, textChangeRange: ts.TextChangeRange, aggressiveChecks?: boolean): ts.SourceFile => {
814809
if (interested(sourceFile.fileName)) {
815810
const wrapped = scriptSnapshot;
816811
scriptSnapshot = {
817812
getChangeRange: old => wrapped.getChangeRange(old),
818813
getLength: () => wrapped.getLength(),
819-
getText: (start, end) => parse(sourceFile.fileName, wrapped.getText(0, wrapped.getLength())).slice(start, end),
814+
getText: (start, end) => parse(wrapped.getText(0, wrapped.getLength())).slice(start, end),
820815
};
821816
}
822817
var sourceFile = ulssf(sourceFile, scriptSnapshot, version, textChangeRange, aggressiveChecks);
823-
if (interested(sourceFile.fileName)) {
824-
modifyVueSource(sourceFile);
825-
}
826818
return sourceFile;
827-
}
828-
}
819+
});
820+
return makeDefaultProxy(info);
829821

830822
function interested(filename: string) {
831823
return filename.length;
832824
}
833-
function modifyVueSource(sourcefile: ts.SourceFile) {
834-
return sourcefile;
835-
}
836-
function parse(filename: string, text: string) {
837-
return interested(filename) ? text : text;
825+
function parse(text: string) {
826+
const start = text.indexOf("<script>") + "<script>".length;
827+
const end = text.indexOf("</script>");
828+
return text.slice(0, start).replace(/./g, ' ') + text.slice(start, end) + text.slice(end).replace(/./g, ' ');
838829
}
839830
},
840831
resolveModules() {
@@ -846,7 +837,7 @@ namespace Harness.LanguageService {
846837
extension: ts.Extension.Ts,
847838
isExternalLibraryImport: true,
848839
// TODO: Fake this
849-
resolvedFileName: path.join(path.dirname(containingFile), path.basename(moduleName)),
840+
resolvedFileName: containingFile.slice(0, containingFile.lastIndexOf("/")) + "/" + moduleName,
850841
}
851842
}
852843
}
@@ -855,7 +846,7 @@ namespace Harness.LanguageService {
855846
}
856847
};
857848
function importInterested(filename: string) {
858-
return filename.length;
849+
return filename.charAt(0) === "." && filename.slice(-4) === ".vue";
859850
}
860851
}
861852
}),

src/server/project.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,8 @@ namespace ts.server {
103103
create(createInfo: PluginCreateInfo): LanguageService;
104104
getExternalFiles?(proj: Project): string[];
105105
resolveModules?(createInfo: PluginCreateInfo): PluginResolveModules;
106-
changeSourceFiles?(createInfo: PluginCreateInfo): PluginSourceFileChange;
107106
}
108107

109-
export type PluginSourceFileChange = {
110-
createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean, scriptKind?: ScriptKind, cheat?: string): SourceFile,
111-
updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean, cheat?: string): SourceFile,
112-
};
113-
114108
export type ModuleResolver = (moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache) => ResolvedModuleWithFailedLookupLocations;
115109

116110
export type PluginResolveModules = {
@@ -917,11 +911,6 @@ namespace ts.server {
917911

918912
const pluginModule = pluginModuleFactory({ typescript: ts });
919913
this.languageService = pluginModule.create(info);
920-
if (pluginModule.changeSourceFiles) {
921-
const chg = pluginModule.changeSourceFiles(info);
922-
ts.createLanguageServiceSourceFile = chg.createLanguageServiceSourceFile;
923-
ts.updateLanguageServiceSourceFile = chg.updateLanguageServiceSourceFile;
924-
}
925914
if (pluginModule.resolveModules) {
926915
this.lsHost.overrideResolveModuleName(pluginModule.resolveModules(info));
927916
}

src/services/services.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,13 @@ namespace ts {
891891
sourceFile.scriptSnapshot = scriptSnapshot;
892892
}
893893

894+
export function overrideCreateupdateLanguageServiceSourceFile(
895+
create: (fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean, scriptKind?: ScriptKind, cheat?: string) => SourceFile,
896+
update: (sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean, cheat?: string) => SourceFile) {
897+
ts.createLanguageServiceSourceFile = create;
898+
ts.updateLanguageServiceSourceFile = update;
899+
}
900+
894901
export function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean, scriptKind?: ScriptKind): SourceFile {
895902
const text = scriptSnapshot.getText(0, scriptSnapshot.getLength());
896903
const sourceFile = createSourceFile(fileName, text, scriptTarget, setNodeParents, scriptKind);

0 commit comments

Comments
 (0)