diff --git a/.vscode/tasks.json b/.vscode/tasks.json index e22f7decdb44f1690522ad75d5115d9f589af3d3..b2a814c7794f547ffab1450f3276f0ec7255a968 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 97fb14297843bb525ef6806f90b19e663e2aa584..b42ba27963141dd2c02ab8b02a81d986c9886d6e 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 a994354378279ba99d83374f6300608e1e1186db..3fbc67b67d841d812efb1b3ac3acf1ef25eb5d2c 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; } }