diff --git a/packages/tailwindcss-language-server/src/projects.ts b/packages/tailwindcss-language-server/src/projects.ts index 5904ee91..6704c871 100644 --- a/packages/tailwindcss-language-server/src/projects.ts +++ b/packages/tailwindcss-language-server/src/projects.ts @@ -72,6 +72,7 @@ import { pathToFileURL, changeAffectsFile, normalizePath, + normalizeDriveLetter, } from './utils' import type { DocumentService } from './documents' import type { ProjectConfig } from './project-locator' @@ -266,7 +267,7 @@ export async function createProjectService( let isPackageMatcher = picomatch(`**/${PACKAGE_LOCK_GLOB}`, { dot: true }) for (let change of changes) { - let file = normalizePath(change.file) + let file = normalizeDriveLetter(normalizePath(change.file)) let isConfigFile = changeAffectsFile(file, [projectConfig.configPath]) let isDependency = changeAffectsFile(file, state.dependencies ?? []) @@ -1552,7 +1553,7 @@ function getContentDocumentSelectorFromConfigFile( : path.resolve(contentBase, item), ) .map((item) => ({ - pattern: normalizePath(item), + pattern: normalizeDriveLetter(normalizePath(item)), priority: DocumentSelectorPriority.CONTENT_FILE, })) } diff --git a/packages/tailwindcss-language-server/src/tw.ts b/packages/tailwindcss-language-server/src/tw.ts index 6c660c2c..b073327b 100644 --- a/packages/tailwindcss-language-server/src/tw.ts +++ b/packages/tailwindcss-language-server/src/tw.ts @@ -77,7 +77,9 @@ async function getConfigFileFromCssFile(cssFile: string): Promise if (!match) { return null } - return normalizePath(path.resolve(path.dirname(cssFile), match.groups.config.slice(1, -1))) + return normalizeDriveLetter( + normalizePath(path.resolve(path.dirname(cssFile), match.groups.config.slice(1, -1))), + ) } export class TW { @@ -191,7 +193,7 @@ export class TW { function getExplicitConfigFiles(settings: TailwindCssSettings) { function resolvePathForConfig(filepath: string) { - return normalizePath(path.resolve(userDefinedConfigBase, filepath)) + return normalizeDriveLetter(normalizePath(path.resolve(userDefinedConfigBase, filepath))) } let configFileOrFiles = settings.experimental.configFile @@ -334,7 +336,11 @@ export class TW { let isCssFile = isCssMatcher(`**/${CSS_GLOB}`) if (isCssFile && change.type !== FileChangeType.Deleted) { - let configPath = await getConfigFileFromCssFile(change.file) + // TODO: Determine if we can only use `normalizedFilename` + let configPath = + (await getConfigFileFromCssFile(normalizedFilename)) || + (await getConfigFileFromCssFile(change.file)) + if ( cssFileConfigMap.has(normalizedFilename) && cssFileConfigMap.get(normalizedFilename) !== configPath diff --git a/packages/tailwindcss-language-server/src/util/getModuleDependencies.ts b/packages/tailwindcss-language-server/src/util/getModuleDependencies.ts index 8b700ee9..aee0119a 100644 --- a/packages/tailwindcss-language-server/src/util/getModuleDependencies.ts +++ b/packages/tailwindcss-language-server/src/util/getModuleDependencies.ts @@ -1,7 +1,7 @@ // https://github.com/tailwindlabs/tailwindcss/blob/bac5ecf0040aa9a788d1b22d706506146ee831ff/src/lib/getModuleDependencies.js import fs from 'fs' import path from 'path' -import { normalizePath } from '../utils' +import { normalizeDriveLetter, normalizePath } from '../utils' let jsExtensions = ['.js', '.cjs', '.mjs'] @@ -83,5 +83,5 @@ export function getModuleDependencies(absoluteFilePath: string): string[] { _getModuleDependencies(absoluteFilePath, path.dirname(absoluteFilePath), new Set()), ) .filter((file) => file !== absoluteFilePath) - .map((file) => normalizePath(file)) + .map((file) => normalizeDriveLetter(normalizePath(file))) }