From ddcf3adf544b54e3a78fe5e665f19972efdbc7cc Mon Sep 17 00:00:00 2001 From: Brian Surowiec Date: Mon, 17 Jun 2024 13:26:01 -0400 Subject: [PATCH 1/5] Normalize drive letter in file path --- packages/tailwindcss-language-server/src/tw.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/tailwindcss-language-server/src/tw.ts b/packages/tailwindcss-language-server/src/tw.ts index 438d66ad..afe8d1fa 100644 --- a/packages/tailwindcss-language-server/src/tw.ts +++ b/packages/tailwindcss-language-server/src/tw.ts @@ -774,6 +774,9 @@ export class TW { for (let selector of documentSelector) { let fsPath = URI.parse(document.uri).fsPath let pattern = selector.pattern.replace(/[\[\]{}]/g, (m) => `\\${m}`) + + fsPath = normalizeDriveLetter(fsPath) + if (pattern.startsWith('!') && picomatch(pattern.slice(1), { dot: true })(fsPath)) { break } From 5fcda695b9147e1685ccb595d35f6093ae8b516a Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 24 Jun 2024 12:18:58 -0400 Subject: [PATCH 2/5] Move normalization --- .../src/project-locator.ts | 13 +++++++++++++ packages/tailwindcss-language-server/src/tw.ts | 2 -- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/tailwindcss-language-server/src/project-locator.ts b/packages/tailwindcss-language-server/src/project-locator.ts index 93f484cc..2ce0c2f9 100644 --- a/packages/tailwindcss-language-server/src/project-locator.ts +++ b/packages/tailwindcss-language-server/src/project-locator.ts @@ -16,6 +16,7 @@ import resolveFrom from './util/resolveFrom' import { type Feature, supportedFeatures } from '@tailwindcss/language-service/src/features' import { pathToFileURL } from 'node:url' import { resolveCssImports } from './resolve-css-imports' +import { normalizeDriveLetter } from './utils' export interface ProjectConfig { /** The folder that contains the project */ @@ -70,6 +71,18 @@ export class ProjectLocator { }) } + // Normalize drive letters in filepaths on Windows so paths + // are consistent across the filesystem and the language client + for (let project of projects) { + project.folder = normalizeDriveLetter(project.folder) + project.configPath = normalizeDriveLetter(project.configPath) + project.config.path = normalizeDriveLetter(project.config.path) + + for (let entry of project.config.entries) { + entry.path = normalizeDriveLetter(entry.path) + } + } + return projects } diff --git a/packages/tailwindcss-language-server/src/tw.ts b/packages/tailwindcss-language-server/src/tw.ts index ae1d3b57..7c058437 100644 --- a/packages/tailwindcss-language-server/src/tw.ts +++ b/packages/tailwindcss-language-server/src/tw.ts @@ -322,8 +322,6 @@ export class TW { ...project.projectConfig.config.entries.map((entry) => entry.path), ] - reloadableFiles = reloadableFiles.map(normalizeDriveLetter) - if (!changeAffectsFile(normalizedFilename, reloadableFiles)) continue needsSoftRestart = true From 03d86512648ecdfaf15ea738845418efaaef4107 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 24 Jun 2024 12:19:26 -0400 Subject: [PATCH 3/5] Normalize drive letters in document selector patterns --- packages/tailwindcss-language-server/src/project-locator.ts | 4 ++++ packages/tailwindcss-language-server/src/tw.ts | 3 +++ 2 files changed, 7 insertions(+) diff --git a/packages/tailwindcss-language-server/src/project-locator.ts b/packages/tailwindcss-language-server/src/project-locator.ts index 2ce0c2f9..e102b279 100644 --- a/packages/tailwindcss-language-server/src/project-locator.ts +++ b/packages/tailwindcss-language-server/src/project-locator.ts @@ -81,6 +81,10 @@ export class ProjectLocator { for (let entry of project.config.entries) { entry.path = normalizeDriveLetter(entry.path) } + + for (let selector of project.documentSelector) { + selector.pattern = normalizeDriveLetter(selector.pattern) + } } return projects diff --git a/packages/tailwindcss-language-server/src/tw.ts b/packages/tailwindcss-language-server/src/tw.ts index 7c058437..df1f21dd 100644 --- a/packages/tailwindcss-language-server/src/tw.ts +++ b/packages/tailwindcss-language-server/src/tw.ts @@ -782,6 +782,9 @@ export class TW { let fsPath = URI.parse(document.uri).fsPath let pattern = selector.pattern.replace(/[\[\]{}]/g, (m) => `\\${m}`) + // This filename comes from VSCode rather than from the filesystem + // which means the drive letter *might* be lowercased and we need + // to normalize it so that we can compare it properly. fsPath = normalizeDriveLetter(fsPath) if (pattern.startsWith('!') && picomatch(pattern.slice(1), { dot: true })(fsPath)) { From 44fdbc751e852ef1f87a7a40f467dda49b2400b5 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 24 Jun 2024 12:19:31 -0400 Subject: [PATCH 4/5] Add comment --- packages/tailwindcss-language-server/src/tw.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/tailwindcss-language-server/src/tw.ts b/packages/tailwindcss-language-server/src/tw.ts index df1f21dd..0ec39309 100644 --- a/packages/tailwindcss-language-server/src/tw.ts +++ b/packages/tailwindcss-language-server/src/tw.ts @@ -282,6 +282,10 @@ export class TW { changeLoop: for (let change of changes) { let normalizedFilename = normalizePath(change.file) + + // This filename comes from VSCode rather than from the filesystem + // which means the drive letter *might* be lowercased and we need + // to normalize it so that we can compare it properly. normalizedFilename = normalizeDriveLetter(normalizedFilename) for (let ignorePattern of ignore) { From f209dc022f199849f052bbbfd8a515b85d710349 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 24 Jun 2024 12:19:36 -0400 Subject: [PATCH 5/5] Update changelog --- packages/vscode-tailwindcss/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vscode-tailwindcss/CHANGELOG.md b/packages/vscode-tailwindcss/CHANGELOG.md index 221be9fc..b7d43f24 100644 --- a/packages/vscode-tailwindcss/CHANGELOG.md +++ b/packages/vscode-tailwindcss/CHANGELOG.md @@ -29,6 +29,7 @@ - Bump minimum supported Node version to v18 ([#978](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/978)) - Pass URI to configuration call not a file path ([#981](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/981), [#982](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/982)) - Fix handling of added workspaces ([b39c8e0](https://github.com/tailwindlabs/tailwindcss-intellisense/commit/b39c8e0)) +- Normalize Windows drive letters in document URIs ([#980](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/980)) ## 0.10.5