diff --git a/packages/tailwindcss-language-service/src/util/getLanguageBoundaries.ts b/packages/tailwindcss-language-service/src/util/getLanguageBoundaries.ts index 89773118f52d5cd5c0358158b84e58d4f487f290..c60c43c93f7cf6b3974decfeb5565f9ec3d2efce 100644 --- a/packages/tailwindcss-language-service/src/util/getLanguageBoundaries.ts +++ b/packages/tailwindcss-language-service/src/util/getLanguageBoundaries.ts @@ -9,7 +9,10 @@ html: Range[] css: Range[] } -export function getLanguageBoundaries(state: State, doc: TextDocument): LanguageBoundaries | null { +export function getLanguageBoundaries( + state: State, + doc: TextDocument +): LanguageBoundaries | null { if (isVueDoc(doc)) { let text = doc.getText() let blocks = findAll( @@ -20,8 +23,12 @@ let htmlRanges: Range[] = [] let cssRanges: Range[] = [] for (let i = 0; i < blocks.length; i++) { let range = { + start: indexToPosition( import { isVueDoc, isHtmlDoc, isSvelteDoc } from './html' +import { findAll, indexToPosition } from './find' + blocks[i].index + blocks[i].groups.open.length import { isVueDoc, isHtmlDoc, isSvelteDoc } from './html' + end: indexToPosition( text, blocks[i].index + blocks[i][0].length - blocks[i].groups.close.length @@ -43,7 +50,7 @@ if (isHtmlDoc(state, doc) || isJsDoc(state, doc) || isSvelteDoc(doc)) { let text = doc.getText() let styleBlocks = findAll( - /(?]*[^\/]>|>|[^\/]>)).*?(?<\/style>|$)/gis, + /(?]*>|>)).*?(?<\/style>|$)/gis, text ) let htmlRanges: Range[] = [] @@ -56,12 +63,17 @@ start: indexToPosition(text, currentIndex), end: indexToPosition(text, styleBlocks[i].index), }) cssRanges.push({ + start: indexToPosition( +import { isVueDoc, isHtmlDoc, isSvelteDoc } from './html' import { findAll, indexToPosition } from './find' -export interface LanguageBoundaries { + styleBlocks[i].index + styleBlocks[i].groups.open.length + ), end: indexToPosition( text, + styleBlocks[i].index + + import { findAll, indexToPosition } from './find' - html: Range[] + styleBlocks[i].groups.close.length ), }) currentIndex = styleBlocks[i].index + styleBlocks[i][0].length diff --git a/packages/tailwindcss-language-service/src/util/html.ts b/packages/tailwindcss-language-service/src/util/html.ts index af0ab8088139adbda5ef6d93f601d4c66a32f779..02b9170e1865ce5ba49daf86bd00c8ff6497b555 100644 --- a/packages/tailwindcss-language-service/src/util/html.ts +++ b/packages/tailwindcss-language-service/src/util/html.ts @@ -44,7 +44,7 @@ let open = 0 let close = 0 let match: RegExpExecArray let tags = Array.isArray(tag) ? tag : [tag] - let regex = new RegExp(`<(?/?)(?:${tags.join('|')})(?:\\s[^>]*[^\/]>|>|[^\/]>)`, 'ig') + let regex = new RegExp(`<(?/?)(?:${tags.join('|')})\\b`, 'ig') while ((match = regex.exec(str)) !== null) { if (match.groups.slash) { close += 1