From 430067672edeadfd203799416b238fc09eacb617 Mon Sep 17 00:00:00 2001 From: Marco Mark Date: Sun, 5 Nov 2017 16:37:29 +0000 Subject: [PATCH 1/5] Refactor extensions to reduce code duplication --- src/extension.ts | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 022c734..b3e5c26 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -125,31 +125,26 @@ export async function activate(context: vscode.ExtensionContext): Promise const htmlRegex = /class=["|']([\w- ]*$)/; const jsxRegex = /className=["|']([\w- ]*$)/; - const html = provideCompletionItemsGenerator('html', htmlRegex); - const razor = provideCompletionItemsGenerator('razor', htmlRegex); - const php = provideCompletionItemsGenerator('php', htmlRegex); - const vue = provideCompletionItemsGenerator('vue', htmlRegex); - const twig = provideCompletionItemsGenerator('twig', htmlRegex); - const md = provideCompletionItemsGenerator('markdown', htmlRegex); - const tsReact = provideCompletionItemsGenerator('typescriptreact', jsxRegex); - const js = provideCompletionItemsGenerator('javascript', jsxRegex) - const jsReact = provideCompletionItemsGenerator('javascriptreact', jsxRegex); - const erb = provideCompletionItemsGenerator('erb', htmlRegex); - const hbs = provideCompletionItemsGenerator('handlebars', htmlRegex); - const ejs = provideCompletionItemsGenerator('ejs', htmlRegex); - - context.subscriptions.push(html); - context.subscriptions.push(razor); - context.subscriptions.push(php); - context.subscriptions.push(vue); - context.subscriptions.push(twig); - context.subscriptions.push(md); - context.subscriptions.push(tsReact); - context.subscriptions.push(js); - context.subscriptions.push(jsReact); - context.subscriptions.push(erb); - context.subscriptions.push(hbs); - context.subscriptions.push(ejs); + const extensions = [ + 'html', + 'razor', + 'php', + 'vue', + 'twig', + 'markdown', + 'typescriptreact', + 'javascript', + 'javascriptreact', + 'erb', + 'handlebars', + 'ejs' + ]; + + extensions.forEach((extension) => { + context.subscriptions.push( + provideCompletionItemsGenerator(extension, htmlRegex) + ); + }); caching = true; try { From 34cf025101c2361dea4f7bddbf9ac33f1217cb56 Mon Sep 17 00:00:00 2001 From: Marco Mark Date: Sun, 5 Nov 2017 16:37:47 +0000 Subject: [PATCH 2/5] Include support for Laravel Blade templates --- src/extension.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/extension.ts b/src/extension.ts index b3e5c26..b92e101 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -129,6 +129,7 @@ export async function activate(context: vscode.ExtensionContext): Promise 'html', 'razor', 'php', + 'blade', 'vue', 'twig', 'markdown', From b0f2884e84ce8bd0fbae632feb483a6ecf324a4b Mon Sep 17 00:00:00 2001 From: Marco Mark Date: Sun, 5 Nov 2017 16:38:35 +0000 Subject: [PATCH 3/5] Update readme to reflect new Blade support --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3576a73..da0aa65 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ A Visual Studio Code extension that provides CSS class name completion for the H * HTML * Razor * PHP +* Laravel (Blade) * JavaScript * JavaScript React (.jsx) * TypeScript React (.tsx) From d873276cac07faff786ad7bf818f77e581a14837 Mon Sep 17 00:00:00 2001 From: Marco Mark Date: Mon, 6 Nov 2017 08:33:37 +0000 Subject: [PATCH 4/5] Apply JSX and HTML regex to relevant extensions --- src/extension.ts | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index b92e101..c25a9da 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -122,31 +122,17 @@ export async function activate(context: vscode.ExtensionContext): Promise } })); - const htmlRegex = /class=["|']([\w- ]*$)/; - const jsxRegex = /className=["|']([\w- ]*$)/; - - const extensions = [ - 'html', - 'razor', - 'php', - 'blade', - 'vue', - 'twig', - 'markdown', - 'typescriptreact', - 'javascript', - 'javascriptreact', - 'erb', - 'handlebars', - 'ejs' - ]; - - extensions.forEach((extension) => { - context.subscriptions.push( - provideCompletionItemsGenerator(extension, htmlRegex) - ); + // Javascript based extensions + ['typescriptreact', 'javascript', 'javascriptreact'].forEach((extension) => { + context.subscriptions.push(provideCompletionItemsGenerator(extension, /className=["|']([\w- ]*$)/)); }); + // HTML based extensions + ['html', 'razor', 'php', 'blade', 'vue', 'twig', 'markdown', 'erb', 'handlebars', 'ejs'].forEach((extension) => { + context.subscriptions.push(provideCompletionItemsGenerator(extension, /class=["|']([\w- ]*$)/)); + }); + + caching = true; try { await cache(); From f28e8d7b37575c82599163b3bd70167c92242ce8 Mon Sep 17 00:00:00 2001 From: Marco Mark Date: Mon, 6 Nov 2017 08:38:40 +0000 Subject: [PATCH 5/5] Remove double empty line --- src/extension.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index c25a9da..99ce09c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -132,7 +132,6 @@ export async function activate(context: vscode.ExtensionContext): Promise context.subscriptions.push(provideCompletionItemsGenerator(extension, /class=["|']([\w- ]*$)/)); }); - caching = true; try { await cache();