From 7a4aea1218c6fb01a67b398e568d41a8ac27e16c Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Fri, 25 Apr 2025 16:17:54 -0400 Subject: [PATCH 1/7] Refactor --- .../tailwindcss-language-service/src/util/state.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/tailwindcss-language-service/src/util/state.ts b/packages/tailwindcss-language-service/src/util/state.ts index 26cc2ed0..fa135374 100644 --- a/packages/tailwindcss-language-service/src/util/state.ts +++ b/packages/tailwindcss-language-service/src/util/state.ts @@ -208,7 +208,17 @@ export function getDefaultTailwindSettings(): Settings { }, showPixelEquivalents: true, includeLanguages: {}, - files: { exclude: ['**/.git/**', '**/node_modules/**', '**/.hg/**', '**/.svn/**'] }, + files: { + exclude: [ + // Version Control + '**/.git/**', + '**/.hg/**', + '**/.svn/**', + + // NPM + '**/node_modules/**', + ], + }, experimental: { classRegex: [], configFile: null, From 45b940d2920eb28291e08a47451c85943b19a27a Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Fri, 25 Apr 2025 16:19:44 -0400 Subject: [PATCH 2/7] Ignore python virtual environment folders during project search --- packages/tailwindcss-language-service/src/util/state.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/tailwindcss-language-service/src/util/state.ts b/packages/tailwindcss-language-service/src/util/state.ts index fa135374..ec82097d 100644 --- a/packages/tailwindcss-language-service/src/util/state.ts +++ b/packages/tailwindcss-language-service/src/util/state.ts @@ -217,6 +217,10 @@ export function getDefaultTailwindSettings(): Settings { // NPM '**/node_modules/**', + + // Python Virtual Environments + '**/.venv/**', + '**/venv/**', ], }, experimental: { From 9eecddc68da0585e08ca34f57dd0b268488bc3e7 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Fri, 25 Apr 2025 16:46:50 -0400 Subject: [PATCH 3/7] Ignore Yarn v2+ metadata & caches during search --- packages/tailwindcss-language-service/src/util/state.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/tailwindcss-language-service/src/util/state.ts b/packages/tailwindcss-language-service/src/util/state.ts index ec82097d..36a929a2 100644 --- a/packages/tailwindcss-language-service/src/util/state.ts +++ b/packages/tailwindcss-language-service/src/util/state.ts @@ -218,6 +218,9 @@ export function getDefaultTailwindSettings(): Settings { // NPM '**/node_modules/**', + // Yarn v2+ metadata & caches + '**/.yarn/**', + // Python Virtual Environments '**/.venv/**', '**/venv/**', From c509494e83a6a4445f99e4471aea28828225240b Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Fri, 25 Apr 2025 17:09:59 -0400 Subject: [PATCH 4/7] Also ignore various build cache folders MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These need to be unambiguously ignorable so paths like `target`, `build`, `cache`, etc… should not go here --- packages/tailwindcss-language-service/src/util/state.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/tailwindcss-language-service/src/util/state.ts b/packages/tailwindcss-language-service/src/util/state.ts index 36a929a2..2fc14bd0 100644 --- a/packages/tailwindcss-language-service/src/util/state.ts +++ b/packages/tailwindcss-language-service/src/util/state.ts @@ -224,6 +224,13 @@ export function getDefaultTailwindSettings(): Settings { // Python Virtual Environments '**/.venv/**', '**/venv/**', + + // Build caches + '**/.next/**', + '**/.parcel-cache/**', + '**/.svelte-kit/**', + '**/.turbo/**', + '**/__pycache__/**', ], }, experimental: { From b768b1b0182ce7c6e89196331daa8dcac30686be Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Fri, 25 Apr 2025 17:14:37 -0400 Subject: [PATCH 5/7] Add details --- packages/tailwindcss-language-service/src/util/state.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/tailwindcss-language-service/src/util/state.ts b/packages/tailwindcss-language-service/src/util/state.ts index 2fc14bd0..ecd9d0d8 100644 --- a/packages/tailwindcss-language-service/src/util/state.ts +++ b/packages/tailwindcss-language-service/src/util/state.ts @@ -210,6 +210,15 @@ export function getDefaultTailwindSettings(): Settings { includeLanguages: {}, files: { exclude: [ + // These paths need to be universally ignorable. This means that we + // should only consider hidden folders with a commonly understood + // meaning unless there is a very good reason to do otherwise. + // + // This means that things like `build`, `target`, `cache`, etc… are + // not appropriate to include even though _in many cases_ they might + // be ignorable. The names are too general and ignoring them could + // cause us to ignore actual project files. + // Version Control '**/.git/**', '**/.hg/**', From fb9d40e41eb9b279f963c98c92554f2f8c981d90 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Thu, 8 May 2025 10:43:07 -0400 Subject: [PATCH 6/7] Add tests --- .../tests/env/ignored.test.ts | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 packages/tailwindcss-language-server/tests/env/ignored.test.ts diff --git a/packages/tailwindcss-language-server/tests/env/ignored.test.ts b/packages/tailwindcss-language-server/tests/env/ignored.test.ts new file mode 100644 index 00000000..f5f7d01f --- /dev/null +++ b/packages/tailwindcss-language-server/tests/env/ignored.test.ts @@ -0,0 +1,111 @@ +import { expect } from 'vitest' +import { css, defineTest } from '../../src/testing' +import { createClient } from '../utils/client' +import dedent from 'dedent' + +let ignored = css` + @import 'tailwindcss'; + @theme { + --color-primary: #c0ffee; + } +` + +let found = css` + @import 'tailwindcss'; + @theme { + --color-primary: rebeccapurple; + } +` + +defineTest({ + name: 'various build folders and caches are ignored by default', + fs: { + // All of these should be ignored + 'aaa/.git/app.css': ignored, + 'aaa/.hg/app.css': ignored, + 'aaa/.svn/app.css': ignored, + 'aaa/node_modules/app.css': ignored, + 'aaa/.yarn/app.css': ignored, + 'aaa/.venv/app.css': ignored, + 'aaa/venv/app.css': ignored, + 'aaa/.next/app.css': ignored, + 'aaa/.parcel-cache/app.css': ignored, + 'aaa/.svelte-kit/app.css': ignored, + 'aaa/.turbo/app.css': ignored, + 'aaa/__pycache__/app.css': ignored, + + // But this one should not be + 'zzz/app.css': found, + }, + + prepare: async ({ root }) => ({ client: await createClient({ root }) }), + handle: async ({ client }) => { + let doc = await client.open({ + lang: 'html', + text: '
', + }) + + //
+ // ^ + let hover = await doc.hover({ line: 0, character: 13 }) + expect(hover).toEqual({ + contents: { + language: 'css', + value: dedent` + .bg-primary { + background-color: var(--color-primary) /* rebeccapurple = #663399 */; + } + `, + }, + range: { + start: { line: 0, character: 12 }, + end: { line: 0, character: 22 }, + }, + }) + }, +}) + +defineTest({ + name: 'ignores can be overridden', + fs: { + 'aaa/app.css': ignored, + 'bbb/.git/app.css': found, + }, + + prepare: async ({ root }) => ({ + client: await createClient({ + root, + settings: { + tailwindCSS: { + files: { + exclude: ['**/aaa/**'], + }, + }, + }, + }), + }), + handle: async ({ client }) => { + let doc = await client.open({ + lang: 'html', + text: '
', + }) + + //
+ // ^ + let hover = await doc.hover({ line: 0, character: 13 }) + expect(hover).toEqual({ + contents: { + language: 'css', + value: dedent` + .bg-primary { + background-color: var(--color-primary) /* rebeccapurple = #663399 */; + } + `, + }, + range: { + start: { line: 0, character: 12 }, + end: { line: 0, character: 22 }, + }, + }) + }, +}) From 0933d827d36a674ce05f01482716162761bf9309 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Fri, 25 Apr 2025 17:34:42 -0400 Subject: [PATCH 7/7] Update changelog --- packages/vscode-tailwindcss/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/vscode-tailwindcss/CHANGELOG.md b/packages/vscode-tailwindcss/CHANGELOG.md index 53c9592a..e57ef565 100644 --- a/packages/vscode-tailwindcss/CHANGELOG.md +++ b/packages/vscode-tailwindcss/CHANGELOG.md @@ -3,6 +3,9 @@ ## Prerelease - Improve dynamic capability registration in the language server ([#1327](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1327)) +- Ignore Python virtual env directories by default ([#1336](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1336)) +- Ignore Yarn v2+ metadata & cache directories by default ([#1336](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1336)) +- Ignore some build caches by default ([#1336](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1336)) # 0.14.16