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>
3 years ago
16 changed files, 103 additions(+), 172 deletions(-)
M packages/tailwindcss-language-service/src/completionProvider.tspackages/tailwindcss-language-service/src/completionProvider.ts
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
       },