Jelajahi Sumber

extension specific config for formatOnSave feature

Lej77 2 tahun lalu
induk
melakukan
bc29cf4d28
2 mengubah file dengan 36 tambahan dan 5 penghapusan
  1. 28 2
      extension/package.json
  2. 8 3
      extension/src/main.ts

+ 28 - 2
extension/package.json

@@ -42,7 +42,33 @@
                 "command": "extension.formatRsxDocument",
                 "title": "Dioxus: Format RSX Document"
             }
-        ]
+        ],
+        "configuration": {
+            "properties": {
+                "dioxus.formatOnSave": {
+                    "type": [
+                        "string"
+                    ],
+                    "default": "followFormatOnSave",
+                    "enum": [
+                        "followFormatOnSave",
+                        "enabled",
+                        "disabled"
+                    ],
+                    "enumItemLabels": [
+                        "Follow the normal formatOnSave config",
+                        "Enabled",
+                        "Disabled"
+                    ],
+                    "enumDescriptions": [
+                        "Only format Rsx when saving files if the editor.formatOnSave config is enabled",
+                        "Always format Rsx when a Rust file is saved",
+                        "Never format Rsx when a file is saved"
+                    ],
+                    "description": "Format RSX when a file is saved."
+                }
+            }
+        }
     },
     "scripts": {
         "vscode:prepublish": "npm run build-base -- --minify",
@@ -73,4 +99,4 @@
     "dependencies": {
         "vsce": "^2.9.2"
     }
-}
+}

+ 8 - 3
extension/src/main.ts

@@ -117,11 +117,16 @@ function fmtSelection() {
 
 function fmtDocumentOnSave(e: vscode.TextDocumentWillSaveEvent) {
 	// check the settings to make sure format on save is configured
-	if (!vscode.workspace.getConfiguration('editor', e.document).get('formatOnSave')) {
-		return;
+	const dioxusConfig = vscode.workspace.getConfiguration('dioxus', e.document).get('formatOnSave');
+	const globalConfig = vscode.workspace.getConfiguration('editor', e.document).get('formatOnSave');
+	if (
+		(dioxusConfig === 'enabled') ||
+		(dioxusConfig !== 'disabled' && globalConfig)
+	) {
+		fmtDocument(e.document);
 	}
-	fmtDocument(e.document);
 }
+
 function fmtDocument(document: vscode.TextDocument) {
 	try {
 		if (document.languageId !== "rust" || document.uri.scheme !== "file") {