From c05b2ffd8de074e2a02998258042b5123b31d05e Mon Sep 17 00:00:00 2001 From: abliger Date: Wed, 24 Jan 2024 08:35:09 +0000 Subject: [PATCH 1/6] Add verification function when saving --- package.json | 8 +++++++- src/extension.ts | 13 +++++++++---- src/settings.ts | 6 ++++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f575ced..cf3a764 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,12 @@ "scope": "resource", "description": "List of local or remote style sheets for suggestions.", "default": [] + }, + "vscode-html-css.vaildOnSave": { + "type": "boolean", + "description": "Verify label class names when saving files.", + "scope": "application", + "default": false } } }, @@ -123,4 +129,4 @@ "tslib": "^2.6.2", "typescript": "^5.3.3" } -} +} \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index a25fe7f..4e4d051 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -10,7 +10,7 @@ import { window, workspace, } from "vscode"; -import { getEnabledLanguages } from "./settings"; +import { getEnabledLanguages, getVaildOnSave } from "./settings"; import { Provider, clear, invalidate } from "./provider"; export function activate(context: ExtensionContext) { @@ -27,8 +27,13 @@ export function activate(context: ExtensionContext) { workspace.onDidCloseTextDocument((document) => validations.delete(document.uri) ), - workspace.onDidChangeTextDocument((event) => - validations.delete(event.document.uri) + workspace.onDidChangeTextDocument(async (event) => { + if (getVaildOnSave()) { + commands.executeCommand("vscode-html-css.validate") + } else { + validations.delete(event.document.uri) + } + } ), commands.registerCommand("vscode-html-css.validate", async () => { const editor = window.activeTextEditor; @@ -43,4 +48,4 @@ export function activate(context: ExtensionContext) { ); } -export function deactivate() {} +export function deactivate() { } diff --git a/src/settings.ts b/src/settings.ts index b85c1aa..16af7f0 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -16,3 +16,9 @@ export function getStyleSheets(uri: Uri): string[] { .getConfiguration("css", uri) .get("styleSheets", []); } + +export function getVaildOnSave(): Boolean { + return workspace + .getConfiguration("vscode-html-css") + .get("vaildOnSave", false); +} \ No newline at end of file From 1d454c0429dfd68f90233ae10f31222829965587 Mon Sep 17 00:00:00 2001 From: abliger Date: Thu, 25 Jan 2024 10:38:48 +0000 Subject: [PATCH 2/6] Add missing code --- src/extension.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 4e4d051..5dda71f 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -21,9 +21,13 @@ export function activate(context: ExtensionContext) { context.subscriptions.push( languages.registerCompletionItemProvider(enabledLanguages, provider), languages.registerDefinitionProvider(enabledLanguages, provider), - workspace.onDidSaveTextDocument((document) => - invalidate(document.uri.toString()) - ), + workspace.onDidSaveTextDocument((document) => { + if (getVaildOnSave()) { + commands.executeCommand("vscode-html-css.validate") + } else { + invalidate(document.uri.toString()) + } + }), workspace.onDidCloseTextDocument((document) => validations.delete(document.uri) ), From 709cbd9b04ce4a757327e97314985551f7b72339 Mon Sep 17 00:00:00 2001 From: abliger Date: Thu, 25 Jan 2024 11:15:09 +0000 Subject: [PATCH 3/6] accept offers --- package.json | 4 ++-- src/settings.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index cf3a764..b0e4868 100644 --- a/package.json +++ b/package.json @@ -60,10 +60,10 @@ "description": "List of local or remote style sheets for suggestions.", "default": [] }, - "vscode-html-css.vaildOnSave": { + "css.vaildOnSave": { "type": "boolean", "description": "Verify label class names when saving files.", - "scope": "application", + "scope": "resource", "default": false } } diff --git a/src/settings.ts b/src/settings.ts index 16af7f0..ff8f237 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -19,6 +19,6 @@ export function getStyleSheets(uri: Uri): string[] { export function getVaildOnSave(): Boolean { return workspace - .getConfiguration("vscode-html-css") + .getConfiguration("css") .get("vaildOnSave", false); } \ No newline at end of file From fd38937d23bf790a0d92a18a6af2005ff815e175 Mon Sep 17 00:00:00 2001 From: abliger Date: Thu, 25 Jan 2024 11:23:04 +0000 Subject: [PATCH 4/6] Delete useless keywords --- src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 5dda71f..67b55c2 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -31,7 +31,7 @@ export function activate(context: ExtensionContext) { workspace.onDidCloseTextDocument((document) => validations.delete(document.uri) ), - workspace.onDidChangeTextDocument(async (event) => { + workspace.onDidChangeTextDocument((event) => { if (getVaildOnSave()) { commands.executeCommand("vscode-html-css.validate") } else { From 89d50152d448280a6f05cd64bdf48070cb06e668 Mon Sep 17 00:00:00 2001 From: abliger Date: Thu, 25 Jan 2024 12:09:50 +0000 Subject: [PATCH 5/6] vaildOnSaveOrChange setting add an enum for future --- README.md | 6 ++++++ package.json | 13 +++++++++---- src/extension.ts | 8 +++++--- src/settings.ts | 11 +++++++++-- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 9703f1f..bbda534 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,12 @@ Configuration depends on your layout of the project but some samples are below: } ``` +```json +{ + "css.vaildOnSaveOrChange": "Always" +} +``` + ### Lit ```json diff --git a/package.json b/package.json index b0e4868..da3c5b0 100644 --- a/package.json +++ b/package.json @@ -60,11 +60,16 @@ "description": "List of local or remote style sheets for suggestions.", "default": [] }, - "css.vaildOnSave": { - "type": "boolean", - "description": "Verify label class names when saving files.", + "css.vaildOnSaveOrChange": { + "enum": [ + "Always", + "OnChange", + "OnSave", + "Never" + ], + "default": "Never", "scope": "resource", - "default": false + "description": "Verify label class names when saving files." } } }, diff --git a/src/extension.ts b/src/extension.ts index 67b55c2..f943a9b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -10,7 +10,7 @@ import { window, workspace, } from "vscode"; -import { getEnabledLanguages, getVaildOnSave } from "./settings"; +import { getEnabledLanguages, getVaildOnSaveOrChange, VaildOnSaveOrChange } from "./settings"; import { Provider, clear, invalidate } from "./provider"; export function activate(context: ExtensionContext) { @@ -22,7 +22,8 @@ export function activate(context: ExtensionContext) { languages.registerCompletionItemProvider(enabledLanguages, provider), languages.registerDefinitionProvider(enabledLanguages, provider), workspace.onDidSaveTextDocument((document) => { - if (getVaildOnSave()) { + const vaildOnSaveOrChange = getVaildOnSaveOrChange(); + if (vaildOnSaveOrChange == VaildOnSaveOrChange.Always || vaildOnSaveOrChange == VaildOnSaveOrChange.OnSave) { commands.executeCommand("vscode-html-css.validate") } else { invalidate(document.uri.toString()) @@ -32,7 +33,8 @@ export function activate(context: ExtensionContext) { validations.delete(document.uri) ), workspace.onDidChangeTextDocument((event) => { - if (getVaildOnSave()) { + const vaildOnSaveOrChange = getVaildOnSaveOrChange(); + if (vaildOnSaveOrChange == VaildOnSaveOrChange.Always || vaildOnSaveOrChange == VaildOnSaveOrChange.OnChange) { commands.executeCommand("vscode-html-css.validate") } else { validations.delete(event.document.uri) diff --git a/src/settings.ts b/src/settings.ts index ff8f237..c12d877 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -17,8 +17,15 @@ export function getStyleSheets(uri: Uri): string[] { .get("styleSheets", []); } -export function getVaildOnSave(): Boolean { +export function getVaildOnSaveOrChange(): VaildOnSaveOrChange { return workspace .getConfiguration("css") - .get("vaildOnSave", false); + .get("vaildOnSaveOrChange", VaildOnSaveOrChange.Never); +} + +export enum VaildOnSaveOrChange { + Always = "Always", + OnChange = "OnChange", + OnSave = "OnSave", + Never = "Never" } \ No newline at end of file From 3d761240a1563b62752aa69144ac62d519ca06d9 Mon Sep 17 00:00:00 2001 From: abliger Date: Fri, 26 Jan 2024 04:15:55 +0000 Subject: [PATCH 6/6] Add prompt source file --- src/provider.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/provider.ts b/src/provider.ts index 3d8ef7a..87ea50d 100644 --- a/src/provider.ts +++ b/src/provider.ts @@ -28,6 +28,7 @@ import { } from "vscode"; import { getStyleSheets } from "./settings"; import { Style, StyleType, parse } from "./parser"; +import path from "path"; const start = new Position(0, 0); const cache = new Map(); @@ -108,11 +109,14 @@ export class Provider implements CompletionItemProvider, DefinitionProvider { const map = new Map(); const styles = await this.getStyles(document); - for (const value of styles.values()) { + for (const [key, value] of styles) { for (const style of value) { if (style.type === type) { const item = new CompletionItem( - style.selector, + { + label: style.selector, + description: path.basename(key) + }, style.type === StyleType.ID ? CompletionItemKind.Value : CompletionItemKind.Enum @@ -153,12 +157,12 @@ export class Provider implements CompletionItemProvider, DefinitionProvider { return new Promise((resolve, reject) => match && !token.isCancellationRequested ? resolve( - this.getCompletionItems( - document, - position, - match[1] === "id" ? StyleType.ID : StyleType.CLASS - ) + this.getCompletionItems( + document, + position, + match[1] === "id" ? StyleType.ID : StyleType.CLASS ) + ) : reject() ); }