Skip to content

Commit 535429c

Browse files
committed
feat: add support for invalid class code actions and update diagnostic message
1 parent f4d6cdb commit 535429c

File tree

3 files changed

+38
-1
lines changed

3 files changed

+38
-1
lines changed

packages/tailwindcss-language-service/src/codeActions/codeActionProvider.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ import {
1414
isInvalidVariantDiagnostic,
1515
isRecommendedVariantOrderDiagnostic,
1616
isSuggestCanonicalClasses,
17+
isInvalidClassDiagnostic,
1718
} from '../diagnostics/types'
1819
import { flatten, dedupeBy } from '../util/array'
1920
import { provideCssConflictCodeActions } from './provideCssConflictCodeActions'
2021
import { provideInvalidApplyCodeActions } from './provideInvalidApplyCodeActions'
2122
import { provideSuggestionCodeActions } from './provideSuggestionCodeActions'
23+
import { provideInvalidClassCodeActions } from './provideInvalidClassCodeActions'
2224

2325
async function getDiagnosticsFromCodeActionParams(
2426
state: State,
@@ -70,6 +72,10 @@ export async function doCodeActions(
7072
return provideCssConflictCodeActions(state, params, diagnostic)
7173
}
7274

75+
if (isInvalidClassDiagnostic(diagnostic)) {
76+
return provideInvalidClassCodeActions(state, params, diagnostic)
77+
}
78+
7379
if (
7480
isInvalidConfigPathDiagnostic(diagnostic) ||
7581
isInvalidTailwindDirectiveDiagnostic(diagnostic) ||
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import type { CodeAction, CodeActionParams } from 'vscode-languageserver'
2+
import type { State } from '../util/state'
3+
import type { InvalidClassDiagnostic } from '../diagnostics/types'
4+
import { removeRangesFromString } from '../util/removeRangesFromString'
5+
6+
export function provideInvalidClassCodeActions(
7+
_state: State,
8+
params: CodeActionParams,
9+
diagnostic: InvalidClassDiagnostic,
10+
): CodeAction[] {
11+
return [
12+
{
13+
title: `Remove invalid class '${diagnostic.className.className}'`,
14+
kind: 'quickfix',
15+
diagnostics: [diagnostic],
16+
edit: {
17+
changes: {
18+
[params.textDocument.uri]: [
19+
{
20+
range: diagnostic.className.classList.range,
21+
newText: removeRangesFromString(
22+
diagnostic.className.classList.classList,
23+
[diagnostic.className.relativeRange],
24+
),
25+
},
26+
],
27+
},
28+
},
29+
},
30+
]
31+
}

packages/tailwindcss-language-service/src/diagnostics/getInvalidClassDiagnostics.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export async function getInvalidClassDiagnostics(
6161
: severity === 'warning'
6262
? 2 /* DiagnosticSeverity.Warning */
6363
: 3 /* DiagnosticSeverity.Information */,
64-
message: `'${className.className}' is not a recognized Tailwind CSS class.`,
64+
message: `'${className.className}' is not a recognized Tailwind CSS utility class.`,
6565
})
6666
}
6767
})

0 commit comments

Comments
 (0)