diff --git a/packages/tailwindcss-language-server/src/server.ts b/packages/tailwindcss-language-server/src/server.ts index 34372980b5cad811be63d94806235d1e4ad7f506..980b5d99e423c790ae1edf14628afa45e55a45b5 100644 --- a/packages/tailwindcss-language-server/src/server.ts +++ b/packages/tailwindcss-language-server/src/server.ts @@ -991,9 +991,6 @@ state.classList = state.jitContext .getClassList() .filter((className) => className !== '*') .map((className) => { - if (Array.isArray(className)) { - return [className[0], { color: getColor(state, className[0]), ...className[1] }] - } return [className, { color: getColor(state, className) }] }) } diff --git a/packages/tailwindcss-language-service/src/completionProvider.ts b/packages/tailwindcss-language-service/src/completionProvider.ts index d8bee18835f75d8e646c3d7742b7c0e79c6f047f..2ee4871784f9b4eecb646ed1ea86a5cc4d0ec8ee 100644 --- a/packages/tailwindcss-language-service/src/completionProvider.ts +++ b/packages/tailwindcss-language-service/src/completionProvider.ts @@ -64,43 +64,25 @@ }, } if (state.jit) { - let { variants: existingVariants, offset } = getVariantsFromClassName(state, partialClassName) - if ( context && (context.triggerKind === 1 || (context.triggerKind === 2 && context.triggerCharacter === '/')) && partialClassName.includes('/') ) { - // modifiers - let modifiers: string[] + // opacity modifiers let beforeSlash = partialClassName.split('/').slice(0, -1).join('/') - let classListContainsModifiers = state.classList.some( - (cls) => Array.isArray(cls) && cls[1].modifiers - ) - - if (classListContainsModifiers) { - let baseClassName = beforeSlash.slice(offset) - modifiers = state.classList.find( - (cls) => Array.isArray(cls) && cls[0] === baseClassName - )?.[1].modifiers - } else { - let testClass = beforeSlash + '/[0]' - let { rules } = jit.generateRules(state, [testClass]) - if (rules.length > 0) { - let opacities = dlv(state.config, 'theme.opacity', {}) - if (!isObject(opacities)) { - opacities = {} - } - modifiers = Object.keys(opacities) + let testClass = beforeSlash + '/[0]' + let { rules } = jit.generateRules(state, [testClass]) + if (rules.length > 0) { + let opacities = dlv(state.config, 'theme.opacity', {}) + if (!isObject(opacities)) { + opacities = {} } - } - - if (modifiers) { return { isIncomplete: false, - items: modifiers.map((modifier, index) => { - let className = `${beforeSlash}/${modifier}` + items: Object.keys(opacities).map((opacity, index) => { + let className = `${beforeSlash}/${opacity}` let kind: CompletionItemKind = 21 let documentation: string = null @@ -127,6 +109,8 @@ }), } } } + + let { variants: existingVariants, offset } = getVariantsFromClassName(state, partialClassName) replacementRange.start.character += offset diff --git a/packages/tailwindcss-language-service/src/util/state.ts b/packages/tailwindcss-language-service/src/util/state.ts index 3787bdcfa6213f187e9fdd458f83791ab7a34e9b..5d5c8321727efd11d0426c3d3eca1678def9318f 100644 --- a/packages/tailwindcss-language-service/src/util/state.ts +++ b/packages/tailwindcss-language-service/src/util/state.ts @@ -116,7 +116,7 @@ classNames?: ClassNames editor?: EditorState jit?: boolean jitContext?: any - classList?: Array<[string, { color: culori.Color | KeywordColor | null; modifiers?: string[] }]> + classList?: Array<[string, { color: culori.Color | KeywordColor | null }]> pluginVersions?: string // postcssPlugins?: { before: any[]; after: any[] } }