diff --git a/packages/tailwindcss-language-service/src/completionProvider.ts b/packages/tailwindcss-language-service/src/completionProvider.ts index 62c0c436..732b6900 100644 --- a/packages/tailwindcss-language-service/src/completionProvider.ts +++ b/packages/tailwindcss-language-service/src/completionProvider.ts @@ -42,9 +42,9 @@ import { IS_SCRIPT_SOURCE, IS_TEMPLATE_SOURCE } from './metadata/extensions' import * as postcss from 'postcss' import { findFileDirective } from './completions/file-paths' import type { ThemeEntry } from './util/v4' -import { posix } from 'node:path/win32' import { segment } from './util/segment' import { resolveKnownThemeKeys, resolveKnownThemeNamespaces } from './util/v4/theme-keys' +import { SEARCH_RANGE } from './util/constants' let isUtil = (className) => Array.isArray(className.__info) @@ -729,7 +729,7 @@ async function provideClassAttributeCompletions( context?: CompletionContext, ): Promise { let str = document.getText({ - start: document.positionAt(Math.max(0, document.offsetAt(position) - 2000)), + start: document.positionAt(Math.max(0, document.offsetAt(position) - SEARCH_RANGE)), end: position, }) @@ -796,7 +796,7 @@ async function provideCustomClassNameCompletions( let text = document.getText({ start: document.positionAt(0), - end: document.positionAt(cursor + 2000), + end: document.positionAt(cursor + SEARCH_RANGE), }) // Get completions from the first matching regex or regex pair diff --git a/packages/tailwindcss-language-service/src/util/constants.ts b/packages/tailwindcss-language-service/src/util/constants.ts new file mode 100644 index 00000000..00c1ad3b --- /dev/null +++ b/packages/tailwindcss-language-service/src/util/constants.ts @@ -0,0 +1,4 @@ +/** + * The maximum bounds around the cursor when searching for class names + */ +export const SEARCH_RANGE = 15_000 diff --git a/packages/tailwindcss-language-service/src/util/find.ts b/packages/tailwindcss-language-service/src/util/find.ts index 1121cee4..4866a110 100644 --- a/packages/tailwindcss-language-service/src/util/find.ts +++ b/packages/tailwindcss-language-service/src/util/find.ts @@ -13,6 +13,7 @@ import { resolveRange } from './resolveRange' import { getTextWithoutComments } from './doc' import { isSemicolonlessCssLanguage } from './languages' import { customClassesIn } from './classes' +import { SEARCH_RANGE } from './constants' export function findAll(re: RegExp, str: string): RegExpMatchArray[] { let match: RegExpMatchArray @@ -437,8 +438,8 @@ export async function findClassNameAtPosition( let classNames: DocumentClassName[] = [] const positionOffset = doc.offsetAt(position) const searchRange: Range = { - start: doc.positionAt(Math.max(0, positionOffset - 2000)), - end: doc.positionAt(positionOffset + 2000), + start: doc.positionAt(0), + end: doc.positionAt(positionOffset + SEARCH_RANGE), } if (isVueDoc(doc)) { diff --git a/packages/vscode-tailwindcss/CHANGELOG.md b/packages/vscode-tailwindcss/CHANGELOG.md index 23c8a373..fdbb35f0 100644 --- a/packages/vscode-tailwindcss/CHANGELOG.md +++ b/packages/vscode-tailwindcss/CHANGELOG.md @@ -11,6 +11,7 @@ - Fix suggestion of utilities with slashes in them in v4 ([#1182](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1182)) - Assume 16px font size for `1rem` in media queries ([#1190](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1190)) - Show warning when loading a config in v3 fails ([#1191](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1191)) +- Better handle really long class lists in attributes and custom regexes ([#1192](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1192)) ## 0.14.3