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()
);
}