Skip to content

Commit 7088797

Browse files
committed
Pass settings into jit.* helper functions
This will eliminate additional config resolution calls and let us make these functions synchronous
1 parent 6b58f5e commit 7088797

3 files changed

Lines changed: 11 additions & 13 deletions

File tree

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2285,6 +2285,8 @@ export async function resolveCompletionItem(
22852285
return item
22862286
}
22872287

2288+
let settings = await state.editor.getConfiguration()
2289+
22882290
let className = item.data?.className ?? item.label
22892291
if (item.data?.important) {
22902292
className = `!${className}`
@@ -2369,7 +2371,7 @@ export async function resolveCompletionItem(
23692371
let root = toPostCSSAst([{ kind: 'rule', selector: '', nodes: decls }])
23702372
let rule = root.nodes[0] as postcss.Rule
23712373

2372-
item.detail = await jit.stringifyDecls(state, rule)
2374+
item.detail = jit.stringifyDecls(state, rule, settings)
23732375
} else {
23742376
item.detail = `${rules.length} rules`
23752377
}
@@ -2381,7 +2383,7 @@ export async function resolveCompletionItem(
23812383
value: [
23822384
//
23832385
'```css',
2384-
await jit.stringifyRoot(state, toPostCSSAst(rules)),
2386+
jit.stringifyRoot(state, toPostCSSAst(rules), settings),
23852387
'```',
23862388
].join('\n'),
23872389
}
@@ -2397,15 +2399,15 @@ export async function resolveCompletionItem(
23972399
if (rules.length === 0) return item
23982400
if (!item.detail) {
23992401
if (rules.length === 1) {
2400-
item.detail = await jit.stringifyDecls(state, rules[0])
2402+
item.detail = jit.stringifyDecls(state, rules[0], settings)
24012403
} else {
24022404
item.detail = `${rules.length} rules`
24032405
}
24042406
}
24052407
if (!item.documentation) {
24062408
item.documentation = {
24072409
kind: 'markdown' as typeof MarkupKind.Markdown,
2408-
value: ['```css', await jit.stringifyRoot(state, root), '```'].join('\n'),
2410+
value: ['```css', jit.stringifyRoot(state, root, settings), '```'].join('\n'),
24092411
}
24102412
}
24112413
return item
@@ -2417,7 +2419,6 @@ export async function resolveCompletionItem(
24172419
} else {
24182420
item.detail = await getCssDetail(state, rules)
24192421
if (!item.documentation) {
2420-
const settings = await state.editor.getConfiguration()
24212422
const css = stringifyCss([...variants, className].join(':'), rules, settings)
24222423
if (css) {
24232424
item.documentation = {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ async function provideClassNameHover(
105105
return {
106106
contents: {
107107
language: 'css',
108-
value: await jit.stringifyRoot(state, toPostCSSAst(root), document.uri),
108+
value: jit.stringifyRoot(state, toPostCSSAst(root), settings),
109109
},
110110
range: className.range,
111111
}
@@ -121,7 +121,7 @@ async function provideClassNameHover(
121121
return {
122122
contents: {
123123
language: 'css',
124-
value: await jit.stringifyRoot(state, root, document.uri),
124+
value: jit.stringifyRoot(state, root, settings),
125125
},
126126
range: className.range,
127127
}

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { State } from './state'
1+
import type { Settings, State } from './state'
22
import type { Container, Document, Root, Rule, Node, AtRule } from 'postcss'
33
import { addPixelEquivalentsToValue } from './pixelEquivalents'
44
import { addEquivalents } from './equivalents'
@@ -35,8 +35,7 @@ export function generateRules(
3535
}
3636
}
3737

38-
export async function stringifyRoot(state: State, root: Root, uri?: string): Promise<string> {
39-
let settings = await state.editor.getConfiguration(uri)
38+
export function stringifyRoot(state: State, root: Root, settings: Settings): string {
4039
let clone = root.clone()
4140

4241
clone.walkAtRules('defaults', (node) => {
@@ -65,9 +64,7 @@ export function stringifyRules(state: State, rules: Rule[], tabSize: number = 2)
6564
.replace(/^(?: )+/gm, (indent: string) => ' '.repeat((indent.length / 4) * tabSize))
6665
}
6766

68-
export async function stringifyDecls(state: State, rule: Rule, uri?: string): Promise<string> {
69-
let settings = await state.editor.getConfiguration(uri)
70-
67+
export function stringifyDecls(state: State, rule: Rule, settings: Settings): string {
7168
let result = []
7269

7370
rule.walkDecls(({ prop, value }) => {

0 commit comments

Comments
 (0)