diff --git a/packages/alpine-language-server/src/node.ts b/packages/alpine-language-server/src/node.ts index 6905a441d..f0544b7f3 100644 --- a/packages/alpine-language-server/src/node.ts +++ b/packages/alpine-language-server/src/node.ts @@ -20,8 +20,8 @@ createLanguageServer(connection, { onDidChangeConfiguration(settings) { }, fileSystemProvide: undefined, }, { - projectExts: ['.html'], - inferProjectExts: [], + definitelyExts: ['.html'], + indeterminateExts: [], getDocumentService: (mods, configHost, _, plugins) => alpine.getDocumentService(mods, configHost, plugins), createLanguageService: (mods, lsHost, _1, _2, configHost, plugins) => alpine.createLanguageService(mods, lsHost, configHost, plugins), }); diff --git a/packages/typescript-vue-plugin/src/index.ts b/packages/typescript-vue-plugin/src/index.ts index c14dcbb6d..1f1c46135 100644 --- a/packages/typescript-vue-plugin/src/index.ts +++ b/packages/typescript-vue-plugin/src/index.ts @@ -193,7 +193,7 @@ function createProxyHost(ts: typeof import('typescript/lib/tsserverlibrary'), in const parseConfigHost: ts.ParseConfigHost = { useCaseSensitiveFileNames: info.project.useCaseSensitiveFileNames(), readDirectory: (path, extensions, exclude, include, depth) => { - return info.project.readDirectory(path, ['.vue', '.md', '.html'], exclude, include, depth); + return info.project.readDirectory(path, ['.vue'], exclude, include, depth); }, fileExists: fileName => info.project.fileExists(fileName), readFile: fileName => info.project.readFile(fileName), diff --git a/packages/vue-language-server/src/common.ts b/packages/vue-language-server/src/common.ts index 6eaf6aff6..0001456bb 100644 --- a/packages/vue-language-server/src/common.ts +++ b/packages/vue-language-server/src/common.ts @@ -17,8 +17,8 @@ export interface RuntimeEnvironment { } export interface LanguageConfigs { - projectExts: string[], - inferProjectExts: string[], + definitelyExts: string[], + indeterminateExts: string[], getDocumentService: typeof vue.getDocumentService, createLanguageService: typeof vue.createLanguageService, } @@ -27,8 +27,8 @@ export function createLanguageServer( connection: vscode.Connection, runtimeEnv: RuntimeEnvironment, languageConfigs: LanguageConfigs = { - projectExts: ['.vue', '.md', '.html'], - inferProjectExts: ['.vue'], + definitelyExts: ['.vue'], + indeterminateExts: ['.md', '.html'], getDocumentService: vue.getDocumentService, createLanguageService: vue.createLanguageService, }, diff --git a/packages/vue-language-server/src/features/languageFeatures.ts b/packages/vue-language-server/src/features/languageFeatures.ts index 8f4f4e399..94ede0c12 100644 --- a/packages/vue-language-server/src/features/languageFeatures.ts +++ b/packages/vue-language-server/src/features/languageFeatures.ts @@ -290,7 +290,7 @@ export function register( connection.workspace.onWillRenameFiles(async handler => { const hasTsFile = handler.files.some(file => - languageConfigs.projectExts.some(ext => file.oldUri.endsWith(ext)) + languageConfigs.definitelyExts.some(ext => file.oldUri.endsWith(ext)) || file.newUri.endsWith('.ts') || file.newUri.endsWith('.tsx') ); diff --git a/packages/vue-language-server/src/project.ts b/packages/vue-language-server/src/project.ts index 985c9d916..8b066e048 100644 --- a/packages/vue-language-server/src/project.ts +++ b/packages/vue-language-server/src/project.ts @@ -241,17 +241,24 @@ export async function createProject( scripts.clear(); } function createParsedCommandLine(): ReturnType { - const extraExts = typeof tsConfig === 'string' ? languageConfigs.projectExts : languageConfigs.inferProjectExts; const parseConfigHost: ts.ParseConfigHost = { useCaseSensitiveFileNames: projectSys.useCaseSensitiveFileNames, readDirectory: (path, extensions, exclude, include, depth) => { - return projectSys.readDirectory(path, [...extensions, ...extraExts], exclude, include, depth); + const exts = [...extensions, ...languageConfigs.definitelyExts]; + for (const passiveExt of languageConfigs.indeterminateExts) { + if (include.some(i => i.endsWith(passiveExt))) { + exts.push(passiveExt); + } + } + return projectSys.readDirectory(path, exts, exclude, include, depth); }, fileExists: projectSys.fileExists, readFile: projectSys.readFile, }; if (typeof tsConfig === 'string') { - return tsShared.createParsedCommandLine(ts, parseConfigHost, tsConfig); + const r = tsShared.createParsedCommandLine(ts, parseConfigHost, tsConfig); + console.log(r.fileNames); + return r; } else { const content = ts.parseJsonConfigFileContent({}, parseConfigHost, rootPath, tsConfig, 'tsconfig.json'); diff --git a/packages/vue-language-server/src/registers/registerlanguageFeatures.ts b/packages/vue-language-server/src/registers/registerlanguageFeatures.ts index e96d31bf2..6e7a42aa5 100644 --- a/packages/vue-language-server/src/registers/registerlanguageFeatures.ts +++ b/packages/vue-language-server/src/registers/registerlanguageFeatures.ts @@ -37,7 +37,7 @@ export function register( fileOperations: { willRename: { filters: [ - ...languageConfigs.inferProjectExts.map(ext => ({ pattern: { glob: `**/*${ext}` } })), + ...[...languageConfigs.definitelyExts, ...languageConfigs.indeterminateExts].map(ext => ({ pattern: { glob: `**/*${ext}` } })), { pattern: { glob: '**/*.js' } }, { pattern: { glob: '**/*.ts' } }, { pattern: { glob: '**/*.jsx' } },