diff --git a/packages/tailwindcss-language-service/src/completionProvider.ts b/packages/tailwindcss-language-service/src/completionProvider.ts index 10cfc37507cf59c78b8147612ca9e8be7c7f864f..318ba41e6580f41266f897c235c38e59391d7cbb 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 { const settings = await state.editor.getConfiguration(document.uri) - const regexes = dlv(settings, 'tailwindCSS.experimental.classRegex', []) + const regexes = dlv(settings, 'experimental.classRegex', []) if (regexes.length === 0) return null const positionOffset = document.offsetAt(position) @@ -853,7 +853,7 @@ document: TextDocument, position: Position ): Promise { let settings = await state.editor.getConfiguration(document.uri) - if (settings.tailwindCSS.emmetCompletions !== true) return null + if (settings.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, 'editor.tabSize', 2), - showPixelEquivalents: dlv(settings, 'tailwindCSS.showPixelEquivalents', true), - rootFontSize: dlv(settings, 'tailwindCSS.rootFontSize', 16), + tabSize: dlv(settings, 'tabSize', 2), + showPixelEquivalents: dlv(settings, 'showPixelEquivalents', true), + rootFontSize: dlv(settings, '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, 'tailwindCSS.showPixelEquivalents', true), - rootFontSize: dlv(settings, 'tailwindCSS.rootFontSize', 16), + showPixelEquivalents: dlv(settings, 'showPixelEquivalents', true), + rootFontSize: dlv(settings, 'rootFontSize', 16), }) } return null diff --git a/packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts b/packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts index 9b883d649e457e576a45de98f445f027e8cfb33d..55e4365b33fe6e970e36ce5f5a12812173d52336 100644 --- a/packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts +++ b/packages/tailwindcss-language-service/src/diagnostics/diagnosticsProvider.ts @@ -24,7 +24,7 @@ ] ): Promise { const settings = await state.editor.getConfiguration(document.uri) - return settings.tailwindCSS.validate + return settings.validate ? [ ...(only.includes(DiagnosticKind.CssConflict) ? await getCssConflictDiagnostics(state, document, settings) diff --git a/packages/tailwindcss-language-service/src/diagnostics/getCssConflictDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getCssConflictDiagnostics.ts index c061ec4735282c4738456f4ddf331d0961e52435..d9557cdf5483c2d4ef7e7716b1e5b631529ca7af 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 { - let severity = settings.tailwindCSS.lint.cssConflict + let severity = settings.lint.cssConflict if (severity === 'ignore') return [] let diagnostics: CssConflictDiagnostic[] = [] diff --git a/packages/tailwindcss-language-service/src/diagnostics/getIncorrectVariantOrderDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getIncorrectVariantOrderDiagnostics.ts index 1d77656f270334697644c534b0360efbe4b045c3..c08689ac3b3c7bb6db2075199992d1a98add1838 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 { if (!state.jit) return [] - let severity = settings.tailwindCSS.lint.incorrectVariantOrder + let severity = settings.lint.incorrectVariantOrder if (severity === 'ignore') return [] let diagnostics: IncorrectVariantOrderDiagnostic[] = [] diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.ts index 9af198ba45d60a3ec14ea556b280b65b488062cb..cc04d69bc47313283389cfdaae2d92532179e897 100644 --- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.ts +++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidApplyDiagnostics.ts @@ -9,10 +9,16 @@ state: State, document: TextDocument, settings: Settings ): Promise { - let severity = settings.tailwindCSS.lint.invalidApply + let severity = settings.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) diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts index 7f8bb84bc705a4b7834d82abede0ae001c9eee8f..e6a0e62d78f31cb7134045a61c850ce928d121f1 100644 --- a/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts +++ b/packages/tailwindcss-language-service/src/diagnostics/getInvalidConfigPathDiagnostics.ts @@ -24,7 +24,9 @@ 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[] = [] @@ -47,7 +49,9 @@ 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') { @@ -63,7 +67,9 @@ (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 { @@ -93,14 +99,18 @@ 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]}'?` } } @@ -161,7 +171,7 @@ state: State, document: TextDocument, settings: Settings ): InvalidConfigPathDiagnostic[] { - let severity = settings.tailwindCSS.lint.invalidConfigPath + let severity = settings.lint.invalidConfigPath if (severity === 'ignore') return [] let diagnostics: InvalidConfigPathDiagnostic[] = [] diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidScreenDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidScreenDiagnostics.ts index c49c87151398bb55701bfce415e36486a3f64dd2..a1a3aed8bd7bd25ae7e1e918b4898e1f2b3a57d7 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.tailwindCSS.lint.invalidScreen + let severity = settings.lint.invalidScreen if (severity === 'ignore') return [] let diagnostics: InvalidScreenDiagnostic[] = [] @@ -31,7 +31,9 @@ ranges.forEach((range) => { let text = document.getText(range) let matches = findAll(/(?:\s|^)@screen\s+(?[^\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)) { diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidTailwindDirectiveDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidTailwindDirectiveDiagnostics.ts index 638a10eff3df0bbe38975ff2d344f76744865093..4e6a881b1899f9f5c59f01ee0f3b09402458cf12 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.tailwindCSS.lint.invalidTailwindDirective + let severity = settings.lint.invalidTailwindDirective if (severity === 'ignore') return [] let diagnostics: InvalidTailwindDirectiveDiagnostic[] = [] diff --git a/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts b/packages/tailwindcss-language-service/src/diagnostics/getInvalidVariantDiagnostics.ts index b4191975a3730a7ed466964a3b27fcf002f9fc66..4b54037457ab91533ea9e42aad87ecfcbf679dda 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.tailwindCSS.lint.invalidVariant + let severity = settings.lint.invalidVariant if (severity === 'ignore') return [] let diagnostics: InvalidVariantDiagnostic[] = [] @@ -32,7 +32,8 @@ let matches = findAll(/(?:\s|^)@variants\s+(?[^{]+)/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() @@ -49,7 +50,8 @@ 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, diff --git a/packages/tailwindcss-language-service/src/documentColorProvider.ts b/packages/tailwindcss-language-service/src/documentColorProvider.ts index 21faea6b44265540f88502e212179b0d35e21287..6624dfed6fc6437e9330195241ccef4e4b55dfdc 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.tailwindCSS.colorDecorators === false) return colors + if (settings.colorDecorators === false) return colors let classLists = await findClassListsInDocument(state, document) classLists.forEach((classList) => { diff --git a/packages/tailwindcss-language-service/src/hoverProvider.ts b/packages/tailwindcss-language-service/src/hoverProvider.ts index b6c45d446a6d529fe79f766955594ba7194a09c6..41a334d2770ca0b4a81fbf5dfbc99100ee81de39 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, 'editor.tabSize', 2), - showPixelEquivalents: dlv(settings, 'tailwindCSS.showPixelEquivalents', true), - rootFontSize: dlv(settings, 'tailwindCSS.rootFontSize', 16), + tabSize: dlv(settings, 'tabSize', 2), + showPixelEquivalents: dlv(settings, 'showPixelEquivalents', true), + rootFontSize: dlv(settings, 'rootFontSize', 16), } ) diff --git a/packages/tailwindcss-language-service/src/util/find.ts b/packages/tailwindcss-language-service/src/util/find.ts index cc8565908851d3a709220f0e8beef85acb478697..91b0a525ef7c0dff597d266dc51695615903218b 100644 --- a/packages/tailwindcss-language-service/src/util/find.ts +++ b/packages/tailwindcss-language-service/src/util/find.ts @@ -1,12 +1,20 @@ 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') @@ -55,11 +63,13 @@ }, 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, }, }, }) @@ -76,7 +86,13 @@ range?: Range, mode?: 'html' | 'css', includeCustom: boolean = true ): Promise { - const classLists = await findClassListsInRange(state, doc, range, mode, includeCustom) + const classLists = await findClassListsInRange( + state, + doc, + range, + mode, + includeCustom + ) return flatten(classLists.map(getClassNamesInClassList)) } @@ -88,7 +104,10 @@ 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+)(?[^;}]+?)(?\s*!important)?\s*[;}]/g, @@ -98,18 +117,23 @@ 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, }, }, } @@ -122,7 +146,7 @@ doc: TextDocument, range?: Range ): Promise { const settings = await state.editor.getConfiguration(doc.uri) - const regexes = dlv(settings, 'tailwindCSS.experimental.classRegex', []) + const regexes = dlv(settings, 'experimental.classRegex', []) if (!Array.isArray(regexes) || regexes.length === 0) return [] @@ -131,13 +155,17 @@ 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 @@ -145,7 +173,9 @@ 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({ @@ -172,9 +202,15 @@ 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) => { @@ -238,7 +274,12 @@ 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 { @@ -246,11 +287,15 @@ 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, }, }, } @@ -275,7 +320,10 @@ 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( @@ -307,7 +355,9 @@ 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( @@ -337,7 +387,10 @@ 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 @@ -367,7 +420,10 @@ } 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') } @@ -375,7 +431,9 @@ 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 diff --git a/packages/tailwindcss-language-service/src/util/jit.ts b/packages/tailwindcss-language-service/src/util/jit.ts index 311319d0faf6ef7152d73644c767a32ef8c4f225..13fc90def813676f39eb8399c47131e1a2c14ec6 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 { let settings = await state.editor.getConfiguration(uri) - let tabSize = dlv(settings, 'editor.tabSize', 2) - let showPixelEquivalents = dlv(settings, 'tailwindCSS.showPixelEquivalents', true) - let rootFontSize = dlv(settings, 'tailwindCSS.rootFontSize', 16) + let tabSize = dlv(settings, 'tabSize', 2) + let showPixelEquivalents = dlv(settings, 'showPixelEquivalents', true) + let rootFontSize = dlv(settings, 'rootFontSize', 16) let clone = root diff --git a/packages/tailwindcss-language-service/src/util/state.ts b/packages/tailwindcss-language-service/src/util/state.ts index 5756b72f9b8e6e63f23ba8cc16b8592dc38cb542..51be4184ccc5cba5539742f4dbb226f76a32da93 100644 --- a/packages/tailwindcss-language-service/src/util/state.ts +++ b/packages/tailwindcss-language-service/src/util/state.ts @@ -31,28 +31,24 @@ type DiagnosticSeveritySetting = 'ignore' | 'warning' | 'error' export type Settings = { - editor: { - tabSize: number + tabSize: number + emmetCompletions: boolean + includeLanguages: Record + validate: boolean + showPixelEquivalents: boolean + rootFontSize: number + colorDecorators: boolean + lint: { + cssConflict: DiagnosticSeveritySetting + invalidApply: DiagnosticSeveritySetting + invalidScreen: DiagnosticSeveritySetting + invalidVariant: DiagnosticSeveritySetting + invalidConfigPath: DiagnosticSeveritySetting + invalidTailwindDirective: DiagnosticSeveritySetting + incorrectVariantOrder: DiagnosticSeveritySetting } - tailwindCSS: { - emmetCompletions: boolean - includeLanguages: Record - 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[] - } + experimental: { + classRegex: string[] } } diff --git a/src/extension.ts b/src/extension.ts index 17b1a72a954b2303bf928ff9bf65db0b737bef57..58816245045893bd980bcb630886245f11f6c559 100755 --- a/src/extension.ts +++ b/src/extension.ts @@ -17,7 +17,6 @@ Position, Range, TextEditorDecorationType, RelativePattern, - ConfigurationScope, } from 'vscode' import { LanguageClient, LanguageClientOptions, TransportKind } from 'vscode-languageclient/node' import { DEFAULT_LANGUAGES } from './lib/languages' @@ -250,28 +249,31 @@ return editableColors }, workspace: { - 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, - } + 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) } } - } - return Workspace.getConfiguration(section, scope) - }) + throw Error() + }) + } catch (_error) { + return next(params, token) + } }, }, }, initializationOptions: { userLanguages: getUserLanguages(folder), - configuration: { - editor: Workspace.getConfiguration('editor', folder), - tailwindCSS: Workspace.getConfiguration('tailwindCSS', folder), - }, + configuration: Workspace.getConfiguration('tailwindCSS', folder), }, synchronize: { configurationSection: ['editor', 'tailwindCSS'], diff --git a/src/server.ts b/src/server.ts index 86bb2c575bb0e8d0b54b47677e735a4ffba369fe..09b8d0db68dea0a8dc4f03bc8bd427594e8ca105 100644 --- a/src/server.ts +++ b/src/server.ts @@ -158,17 +158,10 @@ getConfiguration: async (uri?: string) => { if (documentSettingsCache.has(uri)) { return documentSettingsCache.get(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 } + let config = await connection.workspace.getConfiguration({ + section: 'tailwindCSS', + scopeUri: uri, + }) documentSettingsCache.set(uri, config) return config },