From dc3c0001715a4b7a9e685d14c5b0813a776b6f7a Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Tue, 11 Feb 2025 16:28:48 -0500
Subject: [PATCH 1/4] Move search range to a constant
---
.../tailwindcss-language-service/src/completionProvider.ts | 6 +++---
packages/tailwindcss-language-service/src/util/constants.ts | 4 ++++
packages/tailwindcss-language-service/src/util/find.ts | 5 +++--
3 files changed, 10 insertions(+), 5 deletions(-)
create mode 100644 packages/tailwindcss-language-service/src/util/constants.ts
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..e1a410fe
--- /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 = 2000
diff --git a/packages/tailwindcss-language-service/src/util/find.ts b/packages/tailwindcss-language-service/src/util/find.ts
index 1121cee4..b5c73c5d 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(Math.max(0, positionOffset - SEARCH_RANGE)),
+ end: doc.positionAt(positionOffset + SEARCH_RANGE),
}
if (isVueDoc(doc)) {
From d95c63aa6706d33c848992af010fc71c4d50694f Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Tue, 11 Feb 2025 16:30:02 -0500
Subject: [PATCH 2/4] Start hover search for class hovers at document start
We already do this for completions and this is required for larger documents with custom regexes so we might as well do it here too
---
packages/tailwindcss-language-service/src/util/find.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/tailwindcss-language-service/src/util/find.ts b/packages/tailwindcss-language-service/src/util/find.ts
index b5c73c5d..4866a110 100644
--- a/packages/tailwindcss-language-service/src/util/find.ts
+++ b/packages/tailwindcss-language-service/src/util/find.ts
@@ -438,7 +438,7 @@ export async function findClassNameAtPosition(
let classNames: DocumentClassName[] = []
const positionOffset = doc.offsetAt(position)
const searchRange: Range = {
- start: doc.positionAt(Math.max(0, positionOffset - SEARCH_RANGE)),
+ start: doc.positionAt(0),
end: doc.positionAt(positionOffset + SEARCH_RANGE),
}
From 4775b217dae456c2478859201431c588c3f3fa88 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Tue, 11 Feb 2025 16:31:19 -0500
Subject: [PATCH 3/4] Make search range larger
---
packages/tailwindcss-language-service/src/util/constants.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/tailwindcss-language-service/src/util/constants.ts b/packages/tailwindcss-language-service/src/util/constants.ts
index e1a410fe..00c1ad3b 100644
--- a/packages/tailwindcss-language-service/src/util/constants.ts
+++ b/packages/tailwindcss-language-service/src/util/constants.ts
@@ -1,4 +1,4 @@
/**
* The maximum bounds around the cursor when searching for class names
*/
-export const SEARCH_RANGE = 2000
+export const SEARCH_RANGE = 15_000
From be135e479e8e77eda4256d852f4cfdafbc73b9e5 Mon Sep 17 00:00:00 2001
From: Jordan Pittman
Date: Tue, 11 Feb 2025 16:46:15 -0500
Subject: [PATCH 4/4] Update changelog
---
packages/vscode-tailwindcss/CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/vscode-tailwindcss/CHANGELOG.md b/packages/vscode-tailwindcss/CHANGELOG.md
index d3b45fd5..0d6d27e6 100644
--- a/packages/vscode-tailwindcss/CHANGELOG.md
+++ b/packages/vscode-tailwindcss/CHANGELOG.md
@@ -9,6 +9,7 @@
- Fix parsing of `@custom-variant` shorthand in Tailwind CSS language mode ([#1183](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1183))
- Make sure custom regexes apply in Vue `` blocks ([#1177](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1177))
- Fix suggestion of utilities with slashes in them in v4 ([#1182](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1182))
+- Better handle really long class lists in attributes and custom regexes ([#1192](https://github.com/tailwindlabs/tailwindcss-intellisense/pull/1192))
## 0.14.3