Skip to content

Commit 0fab387

Browse files
authored
Update context.getClassList usage (#707)
* Update `context.getClassList` usage * fix default metadata
1 parent 637f838 commit 0fab387

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

packages/tailwindcss-language-server/src/server.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,15 +1003,19 @@ async function createProjectService(
10031003
state.jitContext = state.modules.jit.createContext.module(state)
10041004
state.jitContext.tailwindConfig.separator = state.config.separator
10051005
if (state.jitContext.getClassList) {
1006-
state.classList = state.jitContext
1007-
.getClassList()
1006+
let classList = state.jitContext
1007+
.getClassList({ includeMetadata: true })
10081008
.filter((className) => className !== '*')
1009-
.map((className) => {
1010-
if (Array.isArray(className)) {
1011-
return [className[0], { color: getColor(state, className[0]), ...className[1] }]
1012-
}
1013-
return [className, { color: getColor(state, className) }]
1014-
})
1009+
state.classListContainsMetadata = classList.some((cls) => Array.isArray(cls))
1010+
state.classList = classList.map((className) => {
1011+
if (Array.isArray(className)) {
1012+
return [
1013+
className[0],
1014+
{ color: getColor(state, className[0]), ...(className[1] ?? {}) },
1015+
]
1016+
}
1017+
return [className, { color: getColor(state, className) }]
1018+
})
10151019
}
10161020
} else {
10171021
delete state.jitContext

packages/tailwindcss-language-service/src/completionProvider.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,12 @@ export function completionsFromClassList(
7575
// modifiers
7676
let modifiers: string[]
7777
let beforeSlash = partialClassName.split('/').slice(0, -1).join('/')
78-
let classListContainsModifiers = state.classList.some(
79-
(cls) => Array.isArray(cls) && cls[1].modifiers
80-
)
8178

82-
if (classListContainsModifiers) {
79+
if (state.classListContainsMetadata) {
8380
let baseClassName = beforeSlash.slice(offset)
8481
modifiers = state.classList.find(
8582
(cls) => Array.isArray(cls) && cls[0] === baseClassName
86-
)?.[1].modifiers
83+
)?.[1]?.modifiers
8784
} else {
8885
let testClass = beforeSlash + '/[0]'
8986
let { rules } = jit.generateRules(state, [testClass])

packages/tailwindcss-language-service/src/util/state.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ export interface State {
118118
jit?: boolean
119119
jitContext?: any
120120
classList?: Array<[string, { color: culori.Color | KeywordColor | null; modifiers?: string[] }]>
121+
classListContainsMetadata?: boolean
121122
pluginVersions?: string
122123
completionItemData?: Record<string, any>
123124
// postcssPlugins?: { before: any[]; after: any[] }

0 commit comments

Comments
 (0)