diff --git a/src/extension.ts b/src/extension.ts index 5028ee5..91cd723 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -141,29 +141,29 @@ const registerHTMLProviders = (disposables: Disposable[]) => workspace.getConfiguration() ?.get(Configuration.HTMLLanguages) ?.forEach((extension) => { - disposables.push(registerCompletionProvider(extension, /class=["|']([\w- ]*$)/)); + disposables.push(registerCompletionProvider(extension, /class=["|']([\w-@:\/ ]*$)/)); }); -const registerCSSProviders = (disposables: Disposable[]) => +const registerCSSProviders = (disposables: Disposable[]) => workspace.getConfiguration() .get(Configuration.CSSLanguages) ?.forEach((extension) => { // The @apply rule was a CSS proposal which has since been abandoned, // check the proposal for more info: http://tabatkins.github.io/specs/css-apply-rule/ // Its support should probably be removed - disposables.push(registerCompletionProvider(extension, /@apply ([.\w- ]*$)/, ".")); + disposables.push(registerCompletionProvider(extension, /@apply ([.\w-@:\/ ]*$)/, ".")); }); const registerJavaScriptProviders = (disposables: Disposable[]) => workspace.getConfiguration() .get(Configuration.JavaScriptLanguages) ?.forEach((extension) => { - disposables.push(registerCompletionProvider(extension, /className=["|']([\w- ]*$)/)); - disposables.push(registerCompletionProvider(extension, /class=["|']([\w- ]*$)/)); + disposables.push(registerCompletionProvider(extension, /className=["|']([\w-@:\/ ]*$)/)); + disposables.push(registerCompletionProvider(extension, /class=["|']([\w-@:\/ ]*$)/)); }); function registerEmmetProviders(disposables: Disposable[]) { - const emmetRegex = /(?=\.)([\w-. ]*$)/; + const emmetRegex = /(?=\.)([\w-@:\/. ]*$)/; const registerProviders = (modes: string[]) => { modes.forEach((language) => { diff --git a/src/parse-engines/common/css-class-extractor.ts b/src/parse-engines/common/css-class-extractor.ts index 4b56a63..85cdd8c 100644 --- a/src/parse-engines/common/css-class-extractor.ts +++ b/src/parse-engines/common/css-class-extractor.ts @@ -6,7 +6,7 @@ export default class CssClassExtractor { * @description Extracts class names from CSS AST */ public static extract(ast: css.Stylesheet): CssClassDefinition[] { - const classNameRegex = /[.]([\w-]+)/g; + const classNameRegex = /[.](([\w-]|\\[@:/])+)/g; const definitions: CssClassDefinition[] = []; @@ -15,7 +15,7 @@ export default class CssClassExtractor { rule.selectors?.forEach((selector: string) => { let item: RegExpExecArray | null = classNameRegex.exec(selector); while (item) { - definitions.push(new CssClassDefinition(item[1])); + definitions.push(new CssClassDefinition(item[1].replace("\\", ""))); item = classNameRegex.exec(selector); } }); @@ -35,4 +35,4 @@ export default class CssClassExtractor { }); return definitions; } -} \ No newline at end of file +}