diff --git a/packages/tailwindcss-language-server/package.json b/packages/tailwindcss-language-server/package.json index eedcd94a..22f328bb 100644 --- a/packages/tailwindcss-language-server/package.json +++ b/packages/tailwindcss-language-server/package.json @@ -96,7 +96,7 @@ "vite": "^6.3.5", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.2.1", - "vscode-css-languageservice": "6.3.6", + "vscode-css-languageservice": "6.3.7", "vscode-jsonrpc": "8.2.0", "vscode-languageclient": "8.1.0", "vscode-languageserver": "8.1.0", diff --git a/packages/tailwindcss-language-server/src/language/rewriting.test.ts b/packages/tailwindcss-language-server/src/language/rewriting.test.ts index 23249932..3ce53ea4 100644 --- a/packages/tailwindcss-language-server/src/language/rewriting.test.ts +++ b/packages/tailwindcss-language-server/src/language/rewriting.test.ts @@ -1,19 +1,24 @@ import { describe, expect, test } from 'vitest' import { rewriteCss } from './rewriting' -import dedent from 'dedent' -// TODO: Remove once the bundled CSS language service is updated -test('@layer statements are removed', () => { +// https://github.com/tailwindlabs/tailwindcss-intellisense/issues/1457 +test('@layer statements inside comments do not break', () => { let input = [ // - '@layer theme, base, components, utilities;', - '@import "tailwindcss";', + '/* @layer', + '*/', + '@import "./path/to/a/file.css";', + '', + '@source "./**/*.{ts,tsx}";', ] let output = [ // - '', // wrong - '@import "tailwindcss" ;', + '/* @layer', + '*/', + '@import "./path/to/a/file.css" ;', // wrong + '', + '@source "./**/*.{ts,tsx}";', ] expect(rewriteCss(input.join('\n'))).toBe(output.join('\n')) @@ -31,7 +36,7 @@ test('@layer blocks', () => { let output = [ // - '@media(℘) {', + '@layer utilities {', ' .foo {', ' color: red;', ' }', diff --git a/packages/tailwindcss-language-server/src/language/rewriting.ts b/packages/tailwindcss-language-server/src/language/rewriting.ts index 1d660709..ab0569b1 100644 --- a/packages/tailwindcss-language-server/src/language/rewriting.ts +++ b/packages/tailwindcss-language-server/src/language/rewriting.ts @@ -29,11 +29,6 @@ function replaceWithStyleRule(delta = 0) { * errors for things that aren't actually errors. */ export function rewriteCss(css: string) { - // Remove inline `@layer` directives - // TODO: This should be unnecessary once we have updated the bundled CSS - // language service - css = css.replace(/@layer\s+[^;{]+(;|$)/g, '') - css = css.replace(/@screen(\s+[^{]+){/g, replaceWithAtRule(-2)) css = css.replace(/@variants(\s+[^{]+){/g, replaceWithAtRule()) css = css.replace(/@responsive(\s*){/g, replaceWithAtRule()) @@ -47,7 +42,6 @@ export function rewriteCss(css: string) { css = css.replace(/@(custom-variant)(\s+[^{]+){/g, replaceWithStyleRule()) css = css.replace(/@(variant)(\s+[^{]+){/g, replaceWithStyleRule()) - css = css.replace(/@layer(\s+[^{]{2,}){/g, replaceWithAtRule(-3)) css = css.replace(/@reference\s*([^;]{2,})/g, '@import $1') css = css.replace( diff --git a/packages/tailwindcss-language-server/tests/css/css-server.test.ts b/packages/tailwindcss-language-server/tests/css/css-server.test.ts index 388e94af..18ba64cf 100644 --- a/packages/tailwindcss-language-server/tests/css/css-server.test.ts +++ b/packages/tailwindcss-language-server/tests/css/css-server.test.ts @@ -618,17 +618,6 @@ defineTest({ // Symbols show up for @custom-variant expect(await doc.symbols()).toMatchObject([ - { - kind: SymbolKind.Module, - name: '@layer base', - location: { - uri: '{workspace:default}/file-1.css', - range: { - start: { line: 0, character: 0 }, - end: { line: 4, character: 1 }, - }, - }, - }, { kind: SymbolKind.Class, name: '.foo', @@ -640,17 +629,6 @@ defineTest({ }, }, }, - { - kind: SymbolKind.Module, - name: '@layer utilities', - location: { - uri: '{workspace:default}/file-1.css', - range: { - start: { line: 5, character: 0 }, - end: { line: 9, character: 1 }, - }, - }, - }, { kind: SymbolKind.Class, name: '.bar', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 626e6181..61a4a780 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -228,8 +228,8 @@ importers: specifier: ^3.2.1 version: 3.2.1(@types/node@18.19.43)(jiti@2.3.3)(yaml@2.5.0) vscode-css-languageservice: - specifier: 6.3.6 - version: 6.3.6 + specifier: 6.3.7 + version: 6.3.7 vscode-jsonrpc: specifier: 8.2.0 version: 8.2.0 @@ -2648,8 +2648,8 @@ packages: jsdom: optional: true - vscode-css-languageservice@6.3.6: - resolution: {integrity: sha512-fU4h8mT3KlvfRcbF74v/M+Gzbligav6QMx4AD/7CbclWPYOpGb9kgIswfpZVJbIcOEJJACI9iYizkNwdiAqlHw==} + vscode-css-languageservice@6.3.7: + resolution: {integrity: sha512-5TmXHKllPzfkPhW4UE9sODV3E0bIOJPOk+EERKllf2SmAczjfTmYeq5txco+N3jpF8KIZ6loj/JptpHBQuVQRA==} vscode-emmet-helper-bundled@0.0.1: resolution: {integrity: sha512-EhZ0Wt8MbdrKF3NUMfaUDhFPTdRnl1tyqYS7KOcNtsSNTV285IV+XPDtNQyw5rwYsULEfb6n+fK1DRufJQlPYw==} @@ -4868,7 +4868,7 @@ snapshots: - tsx - yaml - vscode-css-languageservice@6.3.6: + vscode-css-languageservice@6.3.7: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.12