Home

tailwind-ctp-intellisense @master - refs - log -
-
https://git.jolheiser.com/tailwind-ctp-intellisense.git
Tailwind intellisense + Catppuccin
tree log patch
update settings schema
Brad Cornes <bradlc41@gmail.com>
4 years ago
16 changed files, 103 additions(+), 172 deletions(-)
packages/tailwindcss-language-service/src/completionProvider.tspackages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.tspackages/tailwindcss-language-service/src/diagnostics/getCssConflictDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getIncorrectVariantOrderDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidScreenDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidTailwindDirectiveDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.tspackages/tailwindcss-language-service/src/documentColorProvider.tspackages/tailwindcss-language-service/src/hoverProvider.tspackages/tailwindcss-language-service/src/util/find.tspackages/tailwindcss-language-service/src/util/jit.tspackages/tailwindcss-language-service/src/util/state.tssrc/extension.tssrc/server.ts
M packages/tailwindcss-language-service/src/completionProvider.tspackages/tailwindcss-language-service/src/completionProvider.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
diff --git a/packages/tailwindcss-language-service/src/completionProvider.ts b/packages/tailwindcss-language-service/src/completionProvider.ts
index 318ba41e6580f41266f897c235c38e59391d7cbb..10cfc37507cf59c78b8147612ca9e8be7c7f864f 100644
--- a/packages/tailwindcss-language-service/src/completionProvider.ts
+++ b/packages/tailwindcss-language-service/src/completionProvider.ts
@@ -313,7 +313,7 @@   document: TextDocument,
   position: Position
 ): Promise<CompletionList> {
   const settings = await state.editor.getConfiguration(document.uri)
-  const regexes = dlv(settings, 'experimental.classRegex', [])
+  const regexes = dlv(settings, 'tailwindCSS.experimental.classRegex', [])
   if (regexes.length === 0) return null
 
   const positionOffset = document.offsetAt(position)
@@ -853,7 +853,7 @@   document: TextDocument,
   position: Position
 ): Promise<CompletionList> {
   let settings = await state.editor.getConfiguration(document.uri)
-  if (settings.emmetCompletions !== true) return null
+  if (settings.tailwindCSS.emmetCompletions !== true) return null
 
   const isHtml = isHtmlContext(state, document, position)
   const isJs = !isHtml && isJsContext(state, document, position)
@@ -980,9 +980,9 @@     item.detail = await getCssDetail(state, className)
     if (!item.documentation) {
       const settings = await state.editor.getConfiguration()
       const css = stringifyCss(item.data.join(':'), className, {
-        tabSize: dlv(settings, 'tabSize', 2),
-        showPixelEquivalents: dlv(settings, 'showPixelEquivalents', true),
-        rootFontSize: dlv(settings, 'rootFontSize', 16),
+        tabSize: dlv(settings, 'editor.tabSize', 2),
+        showPixelEquivalents: dlv(settings, 'tailwindCSS.showPixelEquivalents', true),
+        rootFontSize: dlv(settings, 'tailwindCSS.rootFontSize', 16),
       })
       if (css) {
         item.documentation = {
@@ -1044,8 +1044,8 @@   }
   if (className.__rule === true) {
     const settings = await state.editor.getConfiguration()
     return stringifyDecls(removeMeta(className), {
-      showPixelEquivalents: dlv(settings, 'showPixelEquivalents', true),
-      rootFontSize: dlv(settings, 'rootFontSize', 16),
+      showPixelEquivalents: dlv(settings, 'tailwindCSS.showPixelEquivalents', true),
+      rootFontSize: dlv(settings, 'tailwindCSS.rootFontSize', 16),
     })
   }
   return null
M packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.tspackages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
diff --git a/packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts b/packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts
index 55e4365b33fe6e970e36ce5f5a12812173d52336..9b883d649e457e576a45de98f445f027e8cfb33d 100644
--- a/packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts
+++ b/packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts
@@ -24,7 +24,7 @@   ]
 ): Promise<AugmentedDiagnostic[]> {
   const settings = await state.editor.getConfiguration(document.uri)
 
-  return settings.validate
+  return settings.tailwindCSS.validate
     ? [
         ...(only.includes(DiagnosticKind.CssConflict)
           ? await getCssConflictDiagnostics(state, document, settings)
M packages/tailwindcss-language-service/src/diagnostics/getCssConflictDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getCssConflictDiagnostics.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
diff --git a/packages/tailwindcss-language-service/src/diagnostics/getCssConflictDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getCssConflictDiagnostics.ts
index d9557cdf5483c2d4ef7e7716b1e5b631529ca7af..c061ec4735282c4738456f4ddf331d0961e52435 100644
--- a/packages/tailwindcss-language-service/src/diagnostics/getCssConflictDiagnostics.ts
+++ b/packages/tailwindcss-language-service/src/diagnostics/getCssConflictDiagnostics.ts
@@ -13,7 +13,7 @@   state: State,
   document: TextDocument,
   settings: Settings
 ): Promise<CssConflictDiagnostic[]> {
-  let severity = settings.lint.cssConflict
+  let severity = settings.tailwindCSS.lint.cssConflict
   if (severity === 'ignore') return []
 
   let diagnostics: CssConflictDiagnostic[] = []
M packages/tailwindcss-language-service/src/diagnostics/getIncorrectVariantOrderDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getIncorrectVariantOrderDiagnostics.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
diff --git a/packages/tailwindcss-language-service/src/diagnostics/getIncorrectVariantOrderDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getIncorrectVariantOrderDiagnostics.ts
index c08689ac3b3c7bb6db2075199992d1a98add1838..1d77656f270334697644c534b0360efbe4b045c3 100644
--- a/packages/tailwindcss-language-service/src/diagnostics/getIncorrectVariantOrderDiagnostics.ts
+++ b/packages/tailwindcss-language-service/src/diagnostics/getIncorrectVariantOrderDiagnostics.ts
@@ -13,7 +13,7 @@   settings: Settings
 ): Promise<IncorrectVariantOrderDiagnostic[]> {
   if (!state.jit) return []
 
-  let severity = settings.lint.incorrectVariantOrder
+  let severity = settings.tailwindCSS.lint.incorrectVariantOrder
   if (severity === 'ignore') return []
 
   let diagnostics: IncorrectVariantOrderDiagnostic[] = []
M packages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.ts
index cc04d69bc47313283389cfdaae2d92532179e897..9af198ba45d60a3ec14ea556b280b65b488062cb 100644
--- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.ts
+++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.ts
@@ -9,16 +9,10 @@   state: State,
   document: TextDocument,
   settings: Settings
 ): Promise<InvalidApplyDiagnostic[]> {
-  let severity = settings.lint.invalidApply
+  let severity = settings.tailwindCSS.lint.invalidApply
   if (severity === 'ignore') return []
 
-  const classNames = await findClassNamesInRange(
-    state,
-    document,
-    undefined,
-    'css',
-    false
-  )
+  const classNames = await findClassNamesInRange(state, document, undefined, 'css', false)
 
   let diagnostics: InvalidApplyDiagnostic[] = classNames.map((className) => {
     let result = validateApply(state, className.className)
M packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts
index e6a0e62d78f31cb7134045a61c850ce928d121f1..7f8bb84bc705a4b7834d82abede0ae001c9eee8f 100644
--- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts
+++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts
@@ -24,9 +24,7 @@ function validateConfigPath(
   state: State,
   path: string | string[],
   base: string[] = []
-):
-  | { isValid: true; value: any }
-  | { isValid: false; reason: string; suggestions: string[] } {
+): { isValid: true; value: any } | { isValid: false; reason: string; suggestions: string[] } {
   let keys = Array.isArray(path) ? path : stringToPath(path)
   let value = dlv(state.config, [...base, ...keys])
   let suggestions: string[] = []
@@ -49,9 +47,7 @@         return result
       })
       .slice(1) // skip original path
 
-    return possibilities.find(
-      (possibility) => validateConfigPath(state, possibility, base).isValid
-    )
+    return possibilities.find((possibility) => validateConfigPath(state, possibility, base).isValid)
   }
 
   if (typeof value === 'undefined') {
@@ -67,9 +63,7 @@           (key) => validateConfigPath(state, [...parentPath, key]).isValid
         )
       )
       if (closestValidKey) {
-        suggestions.push(
-          pathToString([...keys.slice(0, keys.length - 1), closestValidKey])
-        )
+        suggestions.push(pathToString([...keys.slice(0, keys.length - 1), closestValidKey]))
         reason += ` Did you mean '${suggestions[0]}'?`
       }
     } else {
@@ -99,18 +93,14 @@       value instanceof Number ||
       Array.isArray(value)
     )
   ) {
-    let reason = `'${pathToString(
-      path
-    )}' was found but does not resolve to a string.`
+    let reason = `'${pathToString(path)}' was found but does not resolve to a string.`
 
     if (isObject(value)) {
       let validKeys = Object.keys(value).filter(
         (key) => validateConfigPath(state, [...keys, key], base).isValid
       )
       if (validKeys.length) {
-        suggestions.push(
-          ...validKeys.map((validKey) => pathToString([...keys, validKey]))
-        )
+        suggestions.push(...validKeys.map((validKey) => pathToString([...keys, validKey])))
         reason += ` Did you mean something like '${suggestions[0]}'?`
       }
     }
@@ -171,7 +161,7 @@   state: State,
   document: TextDocument,
   settings: Settings
 ): InvalidConfigPathDiagnostic[] {
-  let severity = settings.lint.invalidConfigPath
+  let severity = settings.tailwindCSS.lint.invalidConfigPath
   if (severity === 'ignore') return []
 
   let diagnostics: InvalidConfigPathDiagnostic[] = []
M packages/tailwindcss-language-service/src/diagnostics/getInvalidScreenDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidScreenDiagnostics.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidScreenDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidScreenDiagnostics.ts
index a1a3aed8bd7bd25ae7e1e918b4898e1f2b3a57d7..c49c87151398bb55701bfce415e36486a3f64dd2 100644
--- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidScreenDiagnostics.ts
+++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidScreenDiagnostics.ts
@@ -13,7 +13,7 @@   state: State,
   document: TextDocument,
   settings: Settings
 ): InvalidScreenDiagnostic[] {
-  let severity = settings.lint.invalidScreen
+  let severity = settings.tailwindCSS.lint.invalidScreen
   if (severity === 'ignore') return []
 
   let diagnostics: InvalidScreenDiagnostic[] = []
@@ -31,9 +31,7 @@   ranges.forEach((range) => {
     let text = document.getText(range)
     let matches = findAll(/(?:\s|^)@screen\s+(?<screen>[^\s{]+)/g, text)
 
-    let screens = Object.keys(
-      dlv(state.config, 'theme.screens', dlv(state.config, 'screens', {}))
-    )
+    let screens = Object.keys(dlv(state.config, 'theme.screens', dlv(state.config, 'screens', {})))
 
     matches.forEach((match) => {
       if (screens.includes(match.groups.screen)) {
M packages/tailwindcss-language-service/src/diagnostics/getInvalidTailwindDirectiveDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidTailwindDirectiveDiagnostics.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidTailwindDirectiveDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidTailwindDirectiveDiagnostics.ts
index 4e6a881b1899f9f5c59f01ee0f3b09402458cf12..638a10eff3df0bbe38975ff2d344f76744865093 100644
--- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidTailwindDirectiveDiagnostics.ts
+++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidTailwindDirectiveDiagnostics.ts
@@ -13,7 +13,7 @@   state: State,
   document: TextDocument,
   settings: Settings
 ): InvalidTailwindDirectiveDiagnostic[] {
-  let severity = settings.lint.invalidTailwindDirective
+  let severity = settings.tailwindCSS.lint.invalidTailwindDirective
   if (severity === 'ignore') return []
 
   let diagnostics: InvalidTailwindDirectiveDiagnostic[] = []
M packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.tspackages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts
index 4b54037457ab91533ea9e42aad87ecfcbf679dda..b4191975a3730a7ed466964a3b27fcf002f9fc66 100644
--- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts
+++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts
@@ -12,7 +12,7 @@   state: State,
   document: TextDocument,
   settings: Settings
 ): InvalidVariantDiagnostic[] {
-  let severity = settings.lint.invalidVariant
+  let severity = settings.tailwindCSS.lint.invalidVariant
   if (severity === 'ignore') return []
 
   let diagnostics: InvalidVariantDiagnostic[] = []
@@ -32,8 +32,7 @@     let matches = findAll(/(?:\s|^)@variants\s+(?<variants>[^{]+)/g, text)
 
     matches.forEach((match) => {
       let variants = match.groups.variants.split(/(\s*,\s*)/)
-      let listStartIndex =
-        match.index + match[0].length - match.groups.variants.length
+      let listStartIndex = match.index + match[0].length - match.groups.variants.length
 
       for (let i = 0; i < variants.length; i += 2) {
         let variant = variants[i].trim()
@@ -50,8 +49,7 @@           suggestions.push(suggestion)
           message += ` Did you mean '${suggestion}'?`
         }
 
-        let variantStartIndex =
-          listStartIndex + variants.slice(0, i).join('').length
+        let variantStartIndex = listStartIndex + variants.slice(0, i).join('').length
 
         diagnostics.push({
           code: DiagnosticKind.InvalidVariant,
M packages/tailwindcss-language-service/src/documentColorProvider.tspackages/tailwindcss-language-service/src/documentColorProvider.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
diff --git a/packages/tailwindcss-language-service/src/documentColorProvider.ts b/packages/tailwindcss-language-service/src/documentColorProvider.ts
index 6624dfed6fc6437e9330195241ccef4e4b55dfdc..21faea6b44265540f88502e212179b0d35e21287 100644
--- a/packages/tailwindcss-language-service/src/documentColorProvider.ts
+++ b/packages/tailwindcss-language-service/src/documentColorProvider.ts
@@ -18,7 +18,7 @@   let colors: ColorInformation[] = []
   if (!state.enabled) return colors
 
   let settings = await state.editor.getConfiguration(document.uri)
-  if (settings.colorDecorators === false) return colors
+  if (settings.tailwindCSS.colorDecorators === false) return colors
 
   let classLists = await findClassListsInDocument(state, document)
   classLists.forEach((classList) => {
M packages/tailwindcss-language-service/src/hoverProvider.tspackages/tailwindcss-language-service/src/hoverProvider.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
diff --git a/packages/tailwindcss-language-service/src/hoverProvider.ts b/packages/tailwindcss-language-service/src/hoverProvider.ts
index 41a334d2770ca0b4a81fbf5dfbc99100ee81de39..b6c45d446a6d529fe79f766955594ba7194a09c6 100644
--- a/packages/tailwindcss-language-service/src/hoverProvider.ts
+++ b/packages/tailwindcss-language-service/src/hoverProvider.ts
@@ -106,9 +106,9 @@   const css = stringifyCss(
     className.className,
     dlv(state.classNames.classNames, [...parts, '__info']),
     {
-      tabSize: dlv(settings, 'tabSize', 2),
-      showPixelEquivalents: dlv(settings, 'showPixelEquivalents', true),
-      rootFontSize: dlv(settings, 'rootFontSize', 16),
+      tabSize: dlv(settings, 'editor.tabSize', 2),
+      showPixelEquivalents: dlv(settings, 'tailwindCSS.showPixelEquivalents', true),
+      rootFontSize: dlv(settings, 'tailwindCSS.rootFontSize', 16),
     }
   )
 
M packages/tailwindcss-language-service/src/util/find.tspackages/tailwindcss-language-service/src/util/find.ts
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
diff --git a/packages/tailwindcss-language-service/src/util/find.ts b/packages/tailwindcss-language-service/src/util/find.ts
index 91b0a525ef7c0dff597d266dc51695615903218b..cc8565908851d3a709220f0e8beef85acb478697 100644
--- a/packages/tailwindcss-language-service/src/util/find.ts
+++ b/packages/tailwindcss-language-service/src/util/find.ts
@@ -1,20 +1,12 @@
 import type { TextDocument, Range, Position } from 'vscode-languageserver'
-import {
-  DocumentClassName,
-  DocumentClassList,
-  State,
-  DocumentHelperFunction,
-} from './state'
+import { DocumentClassName, DocumentClassList, State, DocumentHelperFunction } from './state'
 import lineColumn from 'line-column'
 import { isCssContext, isCssDoc } from './css'
 import { isHtmlContext, isHtmlDoc, isSvelteDoc, isVueDoc } from './html'
 import { isWithinRange } from './isWithinRange'
 import { isJsContext, isJsDoc } from './js'
 import { flatten } from './array'
-import {
-  getClassAttributeLexer,
-  getComputedClassAttributeLexer,
-} from './lexers'
+import { getClassAttributeLexer, getComputedClassAttributeLexer } from './lexers'
 import { getLanguageBoundaries } from './getLanguageBoundaries'
 import { resolveRange } from './resolveRange'
 const dlv = require('dlv')
@@ -63,13 +55,11 @@         },
         range: {
           start: {
             line: range.start.line + start.line,
-            character:
-              (end.line === 0 ? range.start.character : 0) + start.character,
+            character: (end.line === 0 ? range.start.character : 0) + start.character,
           },
           end: {
             line: range.start.line + end.line,
-            character:
-              (end.line === 0 ? range.start.character : 0) + end.character,
+            character: (end.line === 0 ? range.start.character : 0) + end.character,
           },
         },
       })
@@ -86,13 +76,7 @@   range?: Range,
   mode?: 'html' | 'css',
   includeCustom: boolean = true
 ): Promise<DocumentClassName[]> {
-  const classLists = await findClassListsInRange(
-    state,
-    doc,
-    range,
-    mode,
-    includeCustom
-  )
+  const classLists = await findClassListsInRange(state, doc, range, mode, includeCustom)
   return flatten(classLists.map(getClassNamesInClassList))
 }
 
@@ -104,10 +88,7 @@   const classLists = await findClassListsInDocument(state, doc)
   return flatten(classLists.map(getClassNamesInClassList))
 }
 
-export function findClassListsInCssRange(
-  doc: TextDocument,
-  range?: Range
-): DocumentClassList[] {
+export function findClassListsInCssRange(doc: TextDocument, range?: Range): DocumentClassList[] {
   const text = doc.getText(range)
   const matches = findAll(
     /(@apply\s+)(?<classList>[^;}]+?)(?<important>\s*!important)?\s*[;}]/g,
@@ -117,23 +98,18 @@   const globalStart: Position = range ? range.start : { line: 0, character: 0 }
 
   return matches.map((match) => {
     const start = indexToPosition(text, match.index + match[1].length)
-    const end = indexToPosition(
-      text,
-      match.index + match[1].length + match.groups.classList.length
-    )
+    const end = indexToPosition(text, match.index + match[1].length + match.groups.classList.length)
     return {
       classList: match.groups.classList,
       important: Boolean(match.groups.important),
       range: {
         start: {
           line: globalStart.line + start.line,
-          character:
-            (end.line === 0 ? globalStart.character : 0) + start.character,
+          character: (end.line === 0 ? globalStart.character : 0) + start.character,
         },
         end: {
           line: globalStart.line + end.line,
-          character:
-            (end.line === 0 ? globalStart.character : 0) + end.character,
+          character: (end.line === 0 ? globalStart.character : 0) + end.character,
         },
       },
     }
@@ -146,7 +122,7 @@   doc: TextDocument,
   range?: Range
 ): Promise<DocumentClassList[]> {
   const settings = await state.editor.getConfiguration(doc.uri)
-  const regexes = dlv(settings, 'experimental.classRegex', [])
+  const regexes = dlv(settings, 'tailwindCSS.experimental.classRegex', [])
 
   if (!Array.isArray(regexes) || regexes.length === 0) return []
 
@@ -155,17 +131,13 @@   const result: DocumentClassList[] = []
 
   for (let i = 0; i < regexes.length; i++) {
     try {
-      let [containerRegex, classRegex] = Array.isArray(regexes[i])
-        ? regexes[i]
-        : [regexes[i]]
+      let [containerRegex, classRegex] = Array.isArray(regexes[i]) ? regexes[i] : [regexes[i]]
 
       containerRegex = createMultiRegexp(containerRegex)
       let containerMatch
 
       while ((containerMatch = containerRegex.exec(text)) !== null) {
-        const searchStart = doc.offsetAt(
-          range?.start || { line: 0, character: 0 }
-        )
+        const searchStart = doc.offsetAt(range?.start || { line: 0, character: 0 })
         const matchStart = searchStart + containerMatch.start
         const matchEnd = searchStart + containerMatch.end
 
@@ -173,9 +145,7 @@         if (classRegex) {
           classRegex = createMultiRegexp(classRegex)
           let classMatch
 
-          while (
-            (classMatch = classRegex.exec(containerMatch.match)) !== null
-          ) {
+          while ((classMatch = classRegex.exec(containerMatch.match)) !== null) {
             const classMatchStart = matchStart + classMatch.start
             const classMatchEnd = matchStart + classMatch.end
             result.push({
@@ -202,15 +172,9 @@
   return result
 }
 
-export function findClassListsInHtmlRange(
-  doc: TextDocument,
-  range?: Range
-): DocumentClassList[] {
+export function findClassListsInHtmlRange(doc: TextDocument, range?: Range): DocumentClassList[] {
   const text = doc.getText(range)
-  const matches = findAll(
-    /(?:\s|:|\()(?:class(?:Name)?|\[ngClass\])=['"`{]/g,
-    text
-  )
+  const matches = findAll(/(?:\s|:|\()(?:class(?:Name)?|\[ngClass\])=['"`{]/g, text)
   const result: DocumentClassList[] = []
 
   matches.forEach((match) => {
@@ -274,12 +238,7 @@             match.index + match[0].length - 1 + offset + beforeOffset
           )
           const end = indexToPosition(
             text,
-            match.index +
-              match[0].length -
-              1 +
-              offset +
-              value.length +
-              afterOffset
+            match.index + match[0].length - 1 + offset + value.length + afterOffset
           )
 
           return {
@@ -287,15 +246,11 @@             classList: value.substr(beforeOffset, value.length + afterOffset),
             range: {
               start: {
                 line: (range?.start.line || 0) + start.line,
-                character:
-                  (end.line === 0 ? range?.start.character || 0 : 0) +
-                  start.character,
+                character: (end.line === 0 ? range?.start.character || 0 : 0) + start.character,
               },
               end: {
                 line: (range?.start.line || 0) + end.line,
-                character:
-                  (end.line === 0 ? range?.start.character || 0 : 0) +
-                  end.character,
+                character: (end.line === 0 ? range?.start.character || 0 : 0) + end.character,
               },
             },
           }
@@ -320,10 +275,7 @@     classLists = findClassListsInCssRange(doc, range)
   } else {
     classLists = findClassListsInHtmlRange(doc, range)
   }
-  return [
-    ...classLists,
-    ...(includeCustom ? await findCustomClassLists(state, doc, range) : []),
-  ]
+  return [...classLists, ...(includeCustom ? await findCustomClassLists(state, doc, range) : [])]
 }
 
 export async function findClassListsInDocument(
@@ -355,9 +307,7 @@
   let boundaries = getLanguageBoundaries(state, doc)
   if (!boundaries) return []
 
-  return flatten(
-    boundaries.css.map((range) => findHelperFunctionsInRange(doc, range))
-  )
+  return flatten(boundaries.css.map((range) => findHelperFunctionsInRange(doc, range)))
 }
 
 export function findHelperFunctionsInRange(
@@ -387,10 +337,7 @@         range
       ),
       valueRange: resolveRange(
         {
-          start: indexToPosition(
-            text,
-            startIndex + match.groups.helper.length + 1
-          ),
+          start: indexToPosition(text, startIndex + match.groups.helper.length + 1),
           end: indexToPosition(
             text,
             startIndex + match.groups.helper.length + 1 + 1 + value.length + 1
@@ -420,10 +367,7 @@   }
 
   if (isCssContext(state, doc, position)) {
     classNames = await findClassNamesInRange(state, doc, searchRange, 'css')
-  } else if (
-    isHtmlContext(state, doc, position) ||
-    isJsContext(state, doc, position)
-  ) {
+  } else if (isHtmlContext(state, doc, position) || isJsContext(state, doc, position)) {
     classNames = await findClassNamesInRange(state, doc, searchRange, 'html')
   }
 
@@ -431,9 +375,7 @@   if (classNames.length === 0) {
     return null
   }
 
-  const className = classNames.find(({ range }) =>
-    isWithinRange(position, range)
-  )
+  const className = classNames.find(({ range }) => isWithinRange(position, range))
 
   if (!className) return null
 
M packages/tailwindcss-language-service/src/util/jit.tspackages/tailwindcss-language-service/src/util/jit.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
diff --git a/packages/tailwindcss-language-service/src/util/jit.ts b/packages/tailwindcss-language-service/src/util/jit.ts
index 13fc90def813676f39eb8399c47131e1a2c14ec6..311319d0faf6ef7152d73644c767a32ef8c4f225 100644
--- a/packages/tailwindcss-language-service/src/util/jit.ts
+++ b/packages/tailwindcss-language-service/src/util/jit.ts
@@ -33,9 +33,9 @@ }
 
 export async function stringifyRoot(state: State, root: Root, uri?: string): Promise<string> {
   let settings = await state.editor.getConfiguration(uri)
-  let tabSize = dlv(settings, 'tabSize', 2)
-  let showPixelEquivalents = dlv(settings, 'showPixelEquivalents', true)
-  let rootFontSize = dlv(settings, 'rootFontSize', 16)
+  let tabSize = dlv(settings, 'editor.tabSize', 2)
+  let showPixelEquivalents = dlv(settings, 'tailwindCSS.showPixelEquivalents', true)
+  let rootFontSize = dlv(settings, 'tailwindCSS.rootFontSize', 16)
 
   let clone = root
 
M packages/tailwindcss-language-service/src/util/state.tspackages/tailwindcss-language-service/src/util/state.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
diff --git a/packages/tailwindcss-language-service/src/util/state.ts b/packages/tailwindcss-language-service/src/util/state.ts
index 51be4184ccc5cba5539742f4dbb226f76a32da93..5756b72f9b8e6e63f23ba8cc16b8592dc38cb542 100644
--- a/packages/tailwindcss-language-service/src/util/state.ts
+++ b/packages/tailwindcss-language-service/src/util/state.ts
@@ -31,24 +31,28 @@
 type DiagnosticSeveritySetting = 'ignore' | 'warning' | 'error'
 
 export type Settings = {
-  tabSize: number
-  emmetCompletions: boolean
-  includeLanguages: Record<string, string>
-  validate: boolean
-  showPixelEquivalents: boolean
-  rootFontSize: number
-  colorDecorators: boolean
-  lint: {
-    cssConflict: DiagnosticSeveritySetting
-    invalidApply: DiagnosticSeveritySetting
-    invalidScreen: DiagnosticSeveritySetting
-    invalidVariant: DiagnosticSeveritySetting
-    invalidConfigPath: DiagnosticSeveritySetting
-    invalidTailwindDirective: DiagnosticSeveritySetting
-    incorrectVariantOrder: DiagnosticSeveritySetting
+  editor: {
+    tabSize: number
   }
-  experimental: {
-    classRegex: string[]
+  tailwindCSS: {
+    emmetCompletions: boolean
+    includeLanguages: Record<string, string>
+    validate: boolean
+    showPixelEquivalents: boolean
+    rootFontSize: number
+    colorDecorators: boolean
+    lint: {
+      cssConflict: DiagnosticSeveritySetting
+      invalidApply: DiagnosticSeveritySetting
+      invalidScreen: DiagnosticSeveritySetting
+      invalidVariant: DiagnosticSeveritySetting
+      invalidConfigPath: DiagnosticSeveritySetting
+      invalidTailwindDirective: DiagnosticSeveritySetting
+      incorrectVariantOrder: DiagnosticSeveritySetting
+    }
+    experimental: {
+      classRegex: string[]
+    }
   }
 }
 
M src/extension.tssrc/extension.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
diff --git a/src/extension.ts b/src/extension.ts
index 58816245045893bd980bcb630886245f11f6c559..17b1a72a954b2303bf928ff9bf65db0b737bef57 100755
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -17,6 +17,7 @@   Position,
   Range,
   TextEditorDecorationType,
   RelativePattern,
+  ConfigurationScope,
 } from 'vscode'
 import { LanguageClient, LanguageClientOptions, TransportKind } from 'vscode-languageclient/node'
 import { DEFAULT_LANGUAGES } from './lib/languages'
@@ -249,31 +250,28 @@ 
           return editableColors
         },
         workspace: {
-          configuration: (params, token, next) => {
-            try {
-              return params.items.map(({ section, scopeUri }) => {
-                if (section === 'tailwindCSS') {
-                  let scope = scopeUri
-                    ? {
-                        languageId: Workspace.textDocuments.find(
-                          (doc) => doc.uri.toString() === scopeUri
-                        ).languageId,
-                      }
-                    : folder
-                  let tabSize = Workspace.getConfiguration('editor', scope).get('tabSize') || 2
-                  return { tabSize, ...Workspace.getConfiguration(section, scope) }
+          configuration: (params) => {
+            return params.items.map(({ section, scopeUri }) => {
+              let scope: ConfigurationScope = folder
+              if (scopeUri) {
+                let doc = Workspace.textDocuments.find((doc) => doc.uri.toString() === scopeUri)
+                if (doc) {
+                  scope = {
+                    languageId: doc.languageId,
+                  }
                 }
-                throw Error()
-              })
-            } catch (_error) {
-              return next(params, token)
-            }
+              }
+              return Workspace.getConfiguration(section, scope)
+            })
           },
         },
       },
       initializationOptions: {
         userLanguages: getUserLanguages(folder),
-        configuration: Workspace.getConfiguration('tailwindCSS', folder),
+        configuration: {
+          editor: Workspace.getConfiguration('editor', folder),
+          tailwindCSS: Workspace.getConfiguration('tailwindCSS', folder),
+        },
       },
       synchronize: {
         configurationSection: ['editor', 'tailwindCSS'],
M src/server.tssrc/server.ts
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/src/server.ts b/src/server.ts
index 09b8d0db68dea0a8dc4f03bc8bd427594e8ca105..86bb2c575bb0e8d0b54b47677e735a4ffba369fe 100644
--- a/src/server.ts
+++ b/src/server.ts
@@ -158,10 +158,17 @@       getConfiguration: async (uri?: string) => {
         if (documentSettingsCache.has(uri)) {
           return documentSettingsCache.get(uri)
         }
-        let config = await connection.workspace.getConfiguration({
-          section: 'tailwindCSS',
-          scopeUri: uri,
-        })
+        let [editor, tailwindCSS] = await Promise.all([
+          connection.workspace.getConfiguration({
+            section: 'editor',
+            scopeUri: uri,
+          }),
+          connection.workspace.getConfiguration({
+            section: 'tailwindCSS',
+            scopeUri: uri,
+          }),
+        ])
+        let config: Settings = { editor, tailwindCSS }
         documentSettingsCache.set(uri, config)
         return config
       },