Skip to content

Commit 774572b

Browse files
committed
feat: merge object and array settings from different scopes e.g. global and workspace setting values
1 parent 99024e1 commit 774572b

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/extension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { defaultJsSupersetLangs } from '@zardoy/vscode-utils/build/langs'
44
import { extensionCtx, getExtensionSetting, getExtensionSettingId } from 'vscode-framework'
55
import { pickObj } from '@zardoy/utils'
66
import { watchExtensionSettings } from '@zardoy/vscode-utils/build/settings'
7-
import { Configuration } from './configurationType'
87
import webImports from './webImports'
98
import { sendCommand } from './sendCommand'
109
import { registerEmmet } from './emmet'
@@ -28,7 +27,8 @@ export const activateTsPlugin = (tsApi: { configurePlugin; onCompletionAccepted
2827
const syncConfig = () => {
2928
if (!tsApi) return
3029
console.log('sending configure request for typescript-essential-plugins')
31-
const config: any = vscode.workspace.getConfiguration().get(process.env.IDS_PREFIX!)
30+
const config: any = { ...vscode.workspace.getConfiguration().get(process.env.IDS_PREFIX!) }
31+
// todo implement language-specific settings
3232
mergeSettingsFromScopes(config, 'typescript', extensionCtx.extension.packageJSON)
3333

3434
tsApi.configurePlugin('typescript-essential-plugins', config)

src/mergeSettings.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as vscode from 'vscode'
22
import lodash from 'lodash'
3+
import { getExtensionContributionsPrefix } from 'vscode-framework'
34
import { Configuration } from './configurationType'
45

56
const settingsToIgnore = [] as Array<keyof Configuration>
@@ -14,9 +15,10 @@ export const mergeSettingsFromScopes = (
1415
configuration: { properties },
1516
},
1617
} = packageJson
17-
for (const [key, item] of Object.entries(properties)) {
18-
const isObject = item.type !== 'object'
19-
if ((isObject && item.type !== 'array') || settingsToIgnore.includes(key as keyof Configuration)) {
18+
for (const [fullKey, item] of Object.entries(properties)) {
19+
const key = fullKey.slice(getExtensionContributionsPrefix().length)
20+
const isObject = item.type === 'object'
21+
if ((!isObject && item.type !== 'array') || settingsToIgnore.includes(key as keyof Configuration)) {
2022
continue
2123
}
2224

@@ -28,7 +30,6 @@ export const mergeSettingsFromScopes = (
2830
const getConfigValueFromAllScopes = <T extends keyof Configuration>(configKey: T, language: string, type: 'array' | 'object'): Configuration[T] => {
2931
const values = { ...vscode.workspace.getConfiguration(process.env.IDS_PREFIX, { languageId: language }).inspect<any[]>(configKey)! }
3032
const userValueKeys = Object.keys(values).filter(key => key.endsWith('Value') && !key.startsWith('default'))
31-
console.log(userValueKeys)
3233
for (const key of userValueKeys) {
3334
if (values[key] !== undefined) {
3435
continue

0 commit comments

Comments
 (0)