From 76a70da04e12d1f783f2a430406497ef94bc754f Mon Sep 17 00:00:00 2001
From: sumneko <sumneko@hotmail.com>
Date: Fri, 1 Oct 2021 17:09:22 +0800
Subject: [PATCH] fix multi configs of prop

---
 .vscode/tasks.json           | 19 ++++++++++++++-----
 client/out/languageserver.js |  9 ++++++---
 client/src/languageserver.ts |  9 ++++++---
 3 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index e22f7de..b2a814c 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -39,10 +39,7 @@
                 "cwd": "${workspaceFolder}/server"
             },
             "problemMatcher": [],
-            "group": {
-                "kind": "build",
-                "isDefault": true
-            }
+            "group": "build"
         },
         {
             "label": "Install",
@@ -73,6 +70,18 @@
                     "${command:extensionPath}"
                 ]
             }
+        },
+        {
+            "type": "typescript",
+            "tsconfig": "client/tsconfig.json",
+            "problemMatcher": [
+                "$tsc"
+            ],
+            "group": {
+                "kind": "build",
+                "isDefault": true
+            },
+            "label": "tsc: 构建 - client/tsconfig.json"
         }
     ]
-}
\ No newline at end of file
+}
diff --git a/client/out/languageserver.js b/client/out/languageserver.js
index 97fb142..b42ba27 100644
--- a/client/out/languageserver.js
+++ b/client/out/languageserver.js
@@ -20,6 +20,7 @@ let defaultClient;
 let clients = new Map();
 function registerCustomCommands(context) {
     context.subscriptions.push(vscode_1.commands.registerCommand('lua.config', (changes) => {
+        let propMap = new Map();
         for (const data of changes) {
             let config = vscode_1.workspace.getConfiguration(undefined, vscode_1.Uri.parse(data.uri));
             if (data.action == 'add') {
@@ -33,9 +34,11 @@ function registerCustomCommands(context) {
                 continue;
             }
             if (data.action == 'prop') {
-                let value = config.get(data.key);
-                value[data.prop] = data.value;
-                config.update(data.key, value, data.global);
+                if (!propMap[data.key]) {
+                    propMap[data.key] = config.get(data.key);
+                }
+                propMap[data.key][data.prop] = data.value;
+                config.update(data.key, propMap[data.key], data.global);
                 continue;
             }
         }
diff --git a/client/src/languageserver.ts b/client/src/languageserver.ts
index a994354..3fbc67b 100644
--- a/client/src/languageserver.ts
+++ b/client/src/languageserver.ts
@@ -32,6 +32,7 @@ type HintResult = {
 
 function registerCustomCommands(context: ExtensionContext) {
     context.subscriptions.push(Commands.registerCommand('lua.config', (changes) => {
+        let propMap: Map<string, Map<string, any>> = new Map();
         for (const data of changes) {
             let config = Workspace.getConfiguration(undefined, Uri.parse(data.uri));
             if (data.action == 'add') {
@@ -45,9 +46,11 @@ function registerCustomCommands(context: ExtensionContext) {
                 continue;
             }
             if (data.action == 'prop') {
-                let value: Map<string, any> = config.get(data.key);
-                value[data.prop] = data.value;
-                config.update(data.key, value, data.global);
+                if (!propMap[data.key]) {
+                    propMap[data.key] = config.get(data.key);
+                }
+                propMap[data.key][data.prop] = data.value;
+                config.update(data.key, propMap[data.key], data.global);
                 continue;
             }
         }
-- 
GitLab