@theia/core 1.65.0-next.19 → 1.65.0-next.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
- package/lib/browser/catalog.json +13 -4
- package/lib/browser/common-frontend-contribution.d.ts +2 -3
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +3 -4
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/encoding-registry.d.ts +1 -1
- package/lib/browser/encoding-registry.d.ts.map +1 -1
- package/lib/browser/encoding-registry.js +1 -1
- package/lib/browser/encoding-registry.js.map +1 -1
- package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
- package/lib/browser/frontend-application-bindings.js +10 -17
- package/lib/browser/frontend-application-bindings.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +4 -5
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application.d.ts +1 -1
- package/lib/browser/frontend-application.d.ts.map +1 -1
- package/lib/browser/frontend-application.js +1 -1
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/hover-service.d.ts +1 -2
- package/lib/browser/hover-service.d.ts.map +1 -1
- package/lib/browser/hover-service.js +1 -2
- package/lib/browser/hover-service.js.map +1 -1
- package/lib/browser/icon-theme-service.d.ts +3 -2
- package/lib/browser/icon-theme-service.d.ts.map +1 -1
- package/lib/browser/icon-theme-service.js +4 -3
- package/lib/browser/icon-theme-service.js.map +1 -1
- package/lib/browser/index.d.ts +0 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +0 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/keybinding.d.ts +1 -1
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +1 -1
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +1 -1
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.d.ts +2 -2
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +2 -3
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/open-with-service.d.ts +1 -1
- package/lib/browser/open-with-service.d.ts.map +1 -1
- package/lib/browser/open-with-service.js +3 -3
- package/lib/browser/open-with-service.js.map +1 -1
- package/lib/browser/opener-service.d.ts +1 -2
- package/lib/browser/opener-service.d.ts.map +1 -1
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts +6 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts.map +1 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.js +60 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.js.map +1 -0
- package/lib/browser/preferences/index.d.ts +0 -5
- package/lib/browser/preferences/index.d.ts.map +1 -1
- package/lib/browser/preferences/index.js +0 -5
- package/lib/browser/preferences/index.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.d.ts +0 -96
- package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +14 -355
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.spec.js +25 -17
- package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
- package/lib/browser/preferences/preference-schema-provider.spec.js +21 -34
- package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
- package/lib/browser/preferences/preference-service.spec.js +57 -80
- package/lib/browser/preferences/preference-service.spec.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.d.ts +24 -26
- package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
- package/lib/browser/preferences/preference-validation-service.js +40 -20
- package/lib/browser/preferences/preference-validation-service.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.spec.js +10 -6
- package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-provider.d.ts +2 -3
- package/lib/browser/preferences/test/mock-preference-provider.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-provider.js +5 -7
- package/lib/browser/preferences/test/mock-preference-provider.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-proxy.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-proxy.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.d.ts +1 -4
- package/lib/browser/preferences/test/mock-preference-service.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +1 -1
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/request/browser-request-service.d.ts +1 -1
- package/lib/browser/request/browser-request-service.d.ts.map +1 -1
- package/lib/browser/request/browser-request-service.js +2 -2
- package/lib/browser/request/browser-request-service.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +1 -1
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +1 -1
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +1 -1
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/theia-dock-panel.d.ts +1 -1
- package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.d.ts +1 -1
- package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.js +1 -1
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/theming.d.ts +5 -4
- package/lib/browser/theming.d.ts.map +1 -1
- package/lib/browser/theming.js +7 -6
- package/lib/browser/theming.js.map +1 -1
- package/lib/browser/tooltip-service.d.ts +1 -1
- package/lib/browser/tooltip-service.d.ts.map +1 -1
- package/lib/browser/tooltip-service.js +1 -1
- package/lib/browser/tooltip-service.js.map +1 -1
- package/lib/browser/tree/index.d.ts +0 -1
- package/lib/browser/tree/index.d.ts.map +1 -1
- package/lib/browser/tree/index.js +0 -1
- package/lib/browser/tree/index.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +2 -2
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +3 -3
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/window/default-secondary-window-service.d.ts +1 -2
- package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +1 -2
- package/lib/browser/window/default-secondary-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.d.ts +1 -1
- package/lib/browser/window/default-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-window-service.js +1 -1
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.spec.js +1 -1
- package/lib/browser/window/default-window-service.spec.js.map +1 -1
- package/lib/browser/window/window-title-service.d.ts +1 -1
- package/lib/browser/window/window-title-service.d.ts.map +1 -1
- package/lib/browser/window/window-title-service.js +1 -1
- package/lib/browser/window/window-title-service.js.map +1 -1
- package/lib/{browser → common}/core-preferences.d.ts +2 -1
- package/lib/common/core-preferences.d.ts.map +1 -0
- package/lib/{browser → common}/core-preferences.js +17 -18
- package/lib/common/core-preferences.js.map +1 -0
- package/lib/common/index.d.ts +4 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +4 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/inversify-utils.d.ts +31 -0
- package/lib/common/inversify-utils.d.ts.map +1 -0
- package/lib/common/inversify-utils.js +60 -0
- package/lib/common/inversify-utils.js.map +1 -0
- package/lib/common/json-schema.d.ts +1 -0
- package/lib/common/json-schema.d.ts.map +1 -1
- package/lib/common/preferences/defaults-preference-provider.d.ts +21 -0
- package/lib/common/preferences/defaults-preference-provider.d.ts.map +1 -0
- package/lib/common/preferences/defaults-preference-provider.js +99 -0
- package/lib/common/preferences/defaults-preference-provider.js.map +1 -0
- package/lib/common/preferences/index.d.ts +12 -0
- package/lib/common/preferences/index.d.ts.map +1 -0
- package/lib/common/preferences/index.js +30 -0
- package/lib/common/preferences/index.js.map +1 -0
- package/lib/{browser → common}/preferences/injectable-preference-proxy.d.ts +1 -1
- package/lib/common/preferences/injectable-preference-proxy.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/injectable-preference-proxy.js +2 -2
- package/lib/common/preferences/injectable-preference-proxy.js.map +1 -0
- package/lib/common/preferences/preference-configurations.d.ts.map +1 -0
- package/lib/common/preferences/preference-configurations.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-language-override-service.d.ts +4 -13
- package/lib/common/preferences/preference-language-override-service.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-language-override-service.js +14 -30
- package/lib/common/preferences/preference-language-override-service.js.map +1 -0
- package/lib/common/preferences/preference-provider-impl.d.ts +52 -0
- package/lib/common/preferences/preference-provider-impl.d.ts.map +1 -0
- package/lib/{browser/preferences/preference-provider.js → common/preferences/preference-provider-impl.js} +23 -95
- package/lib/common/preferences/preference-provider-impl.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-provider.d.ts +34 -59
- package/lib/common/preferences/preference-provider.d.ts.map +1 -0
- package/lib/common/preferences/preference-provider.js +71 -0
- package/lib/common/preferences/preference-provider.js.map +1 -0
- package/lib/common/preferences/preference-provider.spec.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-provider.spec.js +4 -4
- package/lib/common/preferences/preference-provider.spec.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-proxy.d.ts +2 -2
- package/lib/common/preferences/preference-proxy.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-proxy.js +10 -10
- package/lib/common/preferences/preference-proxy.js.map +1 -0
- package/lib/common/preferences/preference-schema-service.d.ts +55 -0
- package/lib/common/preferences/preference-schema-service.d.ts.map +1 -0
- package/lib/common/preferences/preference-schema-service.js +402 -0
- package/lib/common/preferences/preference-schema-service.js.map +1 -0
- package/lib/common/preferences/preference-schema.d.ts +145 -43
- package/lib/common/preferences/preference-schema.d.ts.map +1 -1
- package/lib/common/preferences/preference-schema.js +3 -41
- package/lib/common/preferences/preference-schema.js.map +1 -1
- package/lib/common/preferences/preference-scope.d.ts +4 -1
- package/lib/common/preferences/preference-scope.d.ts.map +1 -1
- package/lib/common/preferences/preference-scope.js +5 -14
- package/lib/common/preferences/preference-scope.js.map +1 -1
- package/lib/{browser → common}/preferences/preference-service.d.ts +9 -10
- package/lib/common/preferences/preference-service.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-service.js +65 -60
- package/lib/common/preferences/preference-service.js.map +1 -0
- package/lib/common/supported-encodings.d.ts.map +1 -0
- package/lib/common/supported-encodings.js.map +1 -0
- package/lib/{browser/tree → common}/tree-preference.d.ts +1 -1
- package/lib/common/tree-preference.d.ts.map +1 -0
- package/lib/{browser/tree → common}/tree-preference.js +3 -5
- package/lib/common/tree-preference.js.map +1 -0
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +2 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +2 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -2
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -2
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +6 -6
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +1 -1
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +1 -1
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/{electron-browser/window → electron-common}/electron-window-preferences.d.ts +2 -1
- package/lib/electron-common/electron-window-preferences.d.ts.map +1 -0
- package/lib/{electron-browser/window → electron-common}/electron-window-preferences.js +7 -7
- package/lib/electron-common/electron-window-preferences.js.map +1 -0
- package/lib/electron-node/window/electron-window-module.d.ts +4 -0
- package/lib/electron-node/window/electron-window-module.d.ts.map +1 -0
- package/lib/{browser/preferences/preference-scope.js → electron-node/window/electron-window-module.js} +7 -5
- package/lib/electron-node/window/electron-window-module.js.map +1 -0
- package/lib/node/backend-application-module.d.ts.map +1 -1
- package/lib/node/backend-application-module.js +13 -0
- package/lib/node/backend-application-module.js.map +1 -1
- package/package.json +6 -5
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +1 -1
- package/src/browser/common-frontend-contribution.ts +2 -3
- package/src/browser/encoding-registry.ts +1 -1
- package/src/browser/frontend-application-bindings.ts +8 -13
- package/src/browser/frontend-application-module.ts +4 -4
- package/src/browser/frontend-application.ts +1 -1
- package/src/browser/hover-service.ts +1 -2
- package/src/browser/icon-theme-service.ts +3 -2
- package/src/browser/index.ts +0 -1
- package/src/browser/keybinding.spec.ts +1 -1
- package/src/browser/keybinding.ts +1 -1
- package/src/browser/menu/browser-menu-plugin.ts +4 -4
- package/src/browser/open-with-service.ts +1 -1
- package/src/browser/opener-service.ts +1 -2
- package/src/browser/preferences/frontend-config-preference-contributions.ts +52 -0
- package/src/browser/preferences/index.ts +0 -5
- package/src/browser/preferences/preference-contribution.ts +16 -398
- package/src/browser/preferences/preference-proxy.spec.ts +27 -17
- package/src/browser/preferences/preference-schema-provider.spec.ts +25 -37
- package/src/browser/preferences/preference-service.spec.ts +32 -56
- package/src/browser/preferences/preference-validation-service.spec.ts +27 -19
- package/src/browser/preferences/preference-validation-service.ts +60 -41
- package/src/browser/preferences/test/mock-preference-provider.ts +2 -5
- package/src/browser/preferences/test/mock-preference-proxy.ts +1 -2
- package/src/browser/preferences/test/mock-preference-service.ts +1 -4
- package/src/browser/quick-input/quick-command-service.ts +1 -1
- package/src/browser/request/browser-request-service.ts +4 -4
- package/src/browser/shell/application-shell.ts +1 -1
- package/src/browser/shell/tab-bars.ts +1 -1
- package/src/browser/shell/theia-dock-panel.ts +1 -1
- package/src/browser/status-bar/status-bar.tsx +1 -1
- package/src/browser/theming.ts +7 -6
- package/src/browser/tooltip-service.tsx +1 -1
- package/src/browser/tree/index.ts +0 -1
- package/src/browser/tree/tree-widget.tsx +4 -4
- package/src/browser/window/default-secondary-window-service.ts +1 -2
- package/src/browser/window/default-window-service.spec.ts +1 -1
- package/src/browser/window/default-window-service.ts +1 -1
- package/src/browser/window/window-title-service.ts +1 -1
- package/src/{browser → common}/core-preferences.ts +16 -17
- package/src/common/index.ts +4 -0
- package/src/common/inversify-utils.ts +63 -0
- package/src/common/json-schema.ts +1 -0
- package/src/common/preferences/defaults-preference-provider.ts +91 -0
- package/src/common/preferences/index.ts +27 -0
- package/src/{browser → common}/preferences/injectable-preference-proxy.ts +3 -3
- package/src/{browser → common}/preferences/preference-language-override-service.ts +12 -29
- package/src/common/preferences/preference-provider-impl.ts +165 -0
- package/src/{browser → common}/preferences/preference-provider.spec.ts +6 -5
- package/src/common/preferences/preference-provider.ts +164 -0
- package/src/{browser → common}/preferences/preference-proxy.ts +15 -14
- package/src/common/preferences/preference-schema-service.ts +434 -0
- package/src/common/preferences/preference-schema.ts +156 -64
- package/src/common/preferences/preference-scope.ts +5 -13
- package/src/{browser → common}/preferences/preference-service.ts +71 -65
- package/src/{browser/tree → common}/tree-preference.ts +2 -4
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +2 -1
- package/src/electron-browser/menu/electron-main-menu-factory.ts +2 -2
- package/src/electron-browser/menu/electron-menu-contribution.ts +9 -6
- package/src/electron-browser/window/electron-window-module.ts +1 -1
- package/src/electron-browser/window/electron-window-service.ts +1 -1
- package/src/{electron-browser/window → electron-common}/electron-window-preferences.ts +6 -6
- package/src/{browser/preferences/preference-scope.ts → electron-node/window/electron-window-module.ts} +7 -3
- package/src/node/backend-application-module.ts +28 -1
- package/lib/browser/core-preferences.d.ts.map +0 -1
- package/lib/browser/core-preferences.js.map +0 -1
- package/lib/browser/preferences/injectable-preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/injectable-preference-proxy.js.map +0 -1
- package/lib/browser/preferences/preference-configurations.d.ts.map +0 -1
- package/lib/browser/preferences/preference-configurations.js.map +0 -1
- package/lib/browser/preferences/preference-language-override-service.d.ts.map +0 -1
- package/lib/browser/preferences/preference-language-override-service.js.map +0 -1
- package/lib/browser/preferences/preference-provider.d.ts.map +0 -1
- package/lib/browser/preferences/preference-provider.js.map +0 -1
- package/lib/browser/preferences/preference-provider.spec.d.ts.map +0 -1
- package/lib/browser/preferences/preference-provider.spec.js.map +0 -1
- package/lib/browser/preferences/preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/preference-proxy.js.map +0 -1
- package/lib/browser/preferences/preference-scope.d.ts +0 -3
- package/lib/browser/preferences/preference-scope.d.ts.map +0 -1
- package/lib/browser/preferences/preference-scope.js.map +0 -1
- package/lib/browser/preferences/preference-service.d.ts.map +0 -1
- package/lib/browser/preferences/preference-service.js.map +0 -1
- package/lib/browser/supported-encodings.d.ts.map +0 -1
- package/lib/browser/supported-encodings.js.map +0 -1
- package/lib/browser/tree/tree-preference.d.ts.map +0 -1
- package/lib/browser/tree/tree-preference.js.map +0 -1
- package/lib/electron-browser/window/electron-window-preferences.d.ts.map +0 -1
- package/lib/electron-browser/window/electron-window-preferences.js.map +0 -1
- package/src/browser/preferences/preference-provider.ts +0 -277
- /package/lib/{browser → common}/preferences/preference-configurations.d.ts +0 -0
- /package/lib/{browser → common}/preferences/preference-configurations.js +0 -0
- /package/lib/{browser → common}/preferences/preference-provider.spec.d.ts +0 -0
- /package/lib/{browser → common}/supported-encodings.d.ts +0 -0
- /package/lib/{browser → common}/supported-encodings.js +0 -0
- /package/src/{browser → common}/preferences/preference-configurations.ts +0 -0
- /package/src/{browser → common}/supported-encodings.ts +0 -0
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
import { interfaces } from 'inversify';
|
|
18
18
|
import { environment } from '@theia/application-package/lib/environment';
|
|
19
|
-
import { createPreferenceProxy, PreferenceProxy, PreferenceService, PreferenceContribution, PreferenceSchema } from './preferences';
|
|
20
19
|
import { SUPPORTED_ENCODINGS } from './supported-encodings';
|
|
21
|
-
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
22
20
|
import { isOSX } from '../common/os';
|
|
23
21
|
import { nls } from '../common/nls';
|
|
24
|
-
import {
|
|
22
|
+
import { PreferenceContribution, PreferenceSchema } from '../common/preferences/preference-schema';
|
|
23
|
+
import { createPreferenceProxy, PreferenceProxy, PreferenceService } from '../common/preferences';
|
|
24
|
+
import { PreferenceScope } from '../common/preferences/preference-scope';
|
|
25
25
|
|
|
26
26
|
/* eslint-disable max-len */
|
|
27
27
|
const windowTitleDescription = [
|
|
@@ -43,7 +43,6 @@ const windowTitleDescription = [
|
|
|
43
43
|
].join('\n- ');
|
|
44
44
|
|
|
45
45
|
export const corePreferenceSchema: PreferenceSchema = {
|
|
46
|
-
'type': 'object',
|
|
47
46
|
properties: {
|
|
48
47
|
'application.confirmExit': {
|
|
49
48
|
type: 'string',
|
|
@@ -59,7 +58,7 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
59
58
|
'type': 'boolean',
|
|
60
59
|
'default': true,
|
|
61
60
|
'description': nls.localizeByDefault('Enable/disable navigation breadcrumbs.'),
|
|
62
|
-
'scope':
|
|
61
|
+
'scope': PreferenceScope.User
|
|
63
62
|
},
|
|
64
63
|
'files.encoding': {
|
|
65
64
|
'type': 'string',
|
|
@@ -67,7 +66,7 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
67
66
|
'default': 'utf8',
|
|
68
67
|
'description': nls.localizeByDefault(
|
|
69
68
|
'The default character set encoding to use when reading and writing files. This setting can also be configured per language.'),
|
|
70
|
-
'scope':
|
|
69
|
+
'scope': PreferenceScope.Folder,
|
|
71
70
|
'enumDescriptions': Object.keys(SUPPORTED_ENCODINGS).map(key => SUPPORTED_ENCODINGS[key].labelLong),
|
|
72
71
|
'included': Object.keys(SUPPORTED_ENCODINGS).length > 1
|
|
73
72
|
},
|
|
@@ -103,7 +102,7 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
103
102
|
: nls.localizeByDefault('Menu is displayed as a compact button in the side bar.')
|
|
104
103
|
],
|
|
105
104
|
default: 'classic',
|
|
106
|
-
scope:
|
|
105
|
+
scope: PreferenceScope.User,
|
|
107
106
|
markdownDescription: nls.localizeByDefault("Control the visibility of the menu bar. A setting of 'toggle' means that the menu bar is hidden and a single press of the Alt key will show it. A setting of 'compact' will move the menu into the side bar."),
|
|
108
107
|
included: !(isOSX && environment.electron.is())
|
|
109
108
|
},
|
|
@@ -112,13 +111,13 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
112
111
|
default: isOSX
|
|
113
112
|
? '${activeEditorShort}${separator}${rootName}'
|
|
114
113
|
: '${dirty} ${activeEditorShort}${separator}${rootName}${separator}${appName}',
|
|
115
|
-
scope:
|
|
114
|
+
scope: PreferenceScope.User,
|
|
116
115
|
markdownDescription: windowTitleDescription
|
|
117
116
|
},
|
|
118
117
|
'window.titleSeparator': {
|
|
119
118
|
type: 'string',
|
|
120
119
|
default: ' - ',
|
|
121
|
-
scope:
|
|
120
|
+
scope: PreferenceScope.User,
|
|
122
121
|
markdownDescription: nls.localizeByDefault('Separator used by {0}.', '`#window.title#`')
|
|
123
122
|
},
|
|
124
123
|
'window.tabCloseIconPlacement': {
|
|
@@ -129,7 +128,7 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
129
128
|
nls.localize('theia/core/window/tabCloseIconPlacement/start', 'Place the close icon at the start of the label. In left-to-right languages, this is the left side of the tab.'),
|
|
130
129
|
],
|
|
131
130
|
default: 'end',
|
|
132
|
-
scope:
|
|
131
|
+
scope: PreferenceScope.User,
|
|
133
132
|
description: nls.localize('theia/core/window/tabCloseIconPlacement/description', 'Place the close icons on tab titles at the start or end of the tab. The default is end on all platforms.'),
|
|
134
133
|
included: isOSX
|
|
135
134
|
},
|
|
@@ -153,18 +152,18 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
153
152
|
type: 'string',
|
|
154
153
|
pattern: '^https?://([^:]*(:[^@]*)?@)?([^:]+|\\[[:0-9a-fA-F]+\\])(:\\d+)?/?$|^$',
|
|
155
154
|
markdownDescription: nls.localizeByDefault('The proxy setting to use. If not set, will be inherited from the `http_proxy` and `https_proxy` environment variables. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
156
|
-
scope:
|
|
155
|
+
scope: PreferenceScope.User
|
|
157
156
|
},
|
|
158
157
|
'http.proxyStrictSSL': {
|
|
159
158
|
type: 'boolean',
|
|
160
159
|
default: true,
|
|
161
160
|
description: nls.localizeByDefault('Controls whether the proxy server certificate should be verified against the list of supplied CAs. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
162
|
-
scope:
|
|
161
|
+
scope: PreferenceScope.User
|
|
163
162
|
},
|
|
164
163
|
'http.proxyAuthorization': {
|
|
165
164
|
type: 'string',
|
|
166
165
|
markdownDescription: nls.localizeByDefault('The value to send as the `Proxy-Authorization` header for every network request. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
167
|
-
scope:
|
|
166
|
+
scope: PreferenceScope.User
|
|
168
167
|
},
|
|
169
168
|
'http.proxySupport': {
|
|
170
169
|
type: 'string',
|
|
@@ -177,13 +176,13 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
177
176
|
],
|
|
178
177
|
default: 'override',
|
|
179
178
|
description: nls.localizeByDefault('Use the proxy support for extensions. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
180
|
-
scope:
|
|
179
|
+
scope: PreferenceScope.User
|
|
181
180
|
},
|
|
182
181
|
'http.systemCertificates': {
|
|
183
182
|
type: 'boolean',
|
|
184
183
|
default: true,
|
|
185
184
|
description: nls.localizeByDefault('Controls whether CA certificates should be loaded from the OS. On Windows and macOS, a reload of the window is required after turning this off. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
186
|
-
scope:
|
|
185
|
+
scope: PreferenceScope.User
|
|
187
186
|
},
|
|
188
187
|
'workbench.list.openMode': {
|
|
189
188
|
type: 'string',
|
|
@@ -229,14 +228,14 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
229
228
|
type: 'string',
|
|
230
229
|
enum: ['dark', 'light', 'hc-theia'],
|
|
231
230
|
enumItemLabels: ['Dark (Theia)', 'Light (Theia)', 'High Contrast (Theia)'],
|
|
232
|
-
default:
|
|
231
|
+
default: 'light',
|
|
233
232
|
description: nls.localizeByDefault('Specifies the color theme used in the workbench when {0} is not enabled.', '`#window.autoDetectColorScheme#`')
|
|
234
233
|
},
|
|
235
234
|
'workbench.iconTheme': {
|
|
236
235
|
type: ['string'],
|
|
237
236
|
enum: ['none', 'theia-file-icons'],
|
|
238
237
|
enumItemLabels: [nls.localizeByDefault('None'), 'File Icons (Theia)'],
|
|
239
|
-
default:
|
|
238
|
+
default: 'none',
|
|
240
239
|
description: nls.localizeByDefault("Specifies the file icon theme used in the workbench or 'null' to not show any file icons.")
|
|
241
240
|
},
|
|
242
241
|
'workbench.silentNotifications': {
|
package/src/common/index.ts
CHANGED
|
@@ -20,8 +20,10 @@ export * from './cancellation';
|
|
|
20
20
|
export * from './command';
|
|
21
21
|
export * from './contribution-filter';
|
|
22
22
|
export * from './contribution-provider';
|
|
23
|
+
export * from './core-preferences';
|
|
23
24
|
export * from './disposable';
|
|
24
25
|
export * from './event';
|
|
26
|
+
export * from './inversify-utils';
|
|
25
27
|
export * from './listener';
|
|
26
28
|
export * from './logger';
|
|
27
29
|
export * from './lsp-types';
|
|
@@ -36,6 +38,7 @@ export * from './objects';
|
|
|
36
38
|
export * from './os';
|
|
37
39
|
export * from './path';
|
|
38
40
|
export * from './performance';
|
|
41
|
+
export * from './preferences';
|
|
39
42
|
export * from './progress-service';
|
|
40
43
|
export * from './progress-service-protocol';
|
|
41
44
|
export * from './quick-pick-service';
|
|
@@ -45,6 +48,7 @@ export * from './selection';
|
|
|
45
48
|
export * from './selection-service';
|
|
46
49
|
export * from './strings';
|
|
47
50
|
export * from './telemetry';
|
|
51
|
+
export * from './tree-preference';
|
|
48
52
|
export * from './types';
|
|
49
53
|
export { default as URI } from './uri';
|
|
50
54
|
export * from './uuid';
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { interfaces, Container } from 'inversify';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* This utility creates a factory function that accepts runtime arguments which are bound as constant
|
|
21
|
+
* values in a child container, allowing for dependency injection of both static dependencies
|
|
22
|
+
* (resolved as usual from the factory's container) and dynamic parameters (provided at factory invocation time).
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Factory interface
|
|
27
|
+
* interface UserPreferenceProviderFactory {
|
|
28
|
+
* (uri: URI, section: string): UserPreferenceProvider;
|
|
29
|
+
* }
|
|
30
|
+
* // Factory symbol
|
|
31
|
+
* const UserPreferenceProviderFactory = Symbol('UserPreferenceProviderFactory');
|
|
32
|
+
*
|
|
33
|
+
* // Bind the factory
|
|
34
|
+
* bindFactory(
|
|
35
|
+
* bind,
|
|
36
|
+
* UserPreferenceProviderFactory, // Service identifier of the factory
|
|
37
|
+
* UserPreferenceProvider, // Service identifier of the entity to be constructed
|
|
38
|
+
* SectionPreferenceProviderUri, // The first factory argument will be bound to this identifier (uri)
|
|
39
|
+
* SectionPreferenceProviderSection // The second factory argument will be bound to this identifier (section)
|
|
40
|
+
* );
|
|
41
|
+
*
|
|
42
|
+
* // Usage: factory(uri, section) creates UserPreferenceProvider with injected dependencies
|
|
43
|
+
* const factory = container.get(UserPreferenceProviderFactory);
|
|
44
|
+
* const provider = factory(myUri, 'settings');
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
export function bindFactory<F, C>(bind: interfaces.Bind,
|
|
49
|
+
factoryId: interfaces.ServiceIdentifier<F>,
|
|
50
|
+
constructor: interfaces.Newable<C>,
|
|
51
|
+
...parameterBindings: interfaces.ServiceIdentifier<unknown>[]): void {
|
|
52
|
+
bind(factoryId).toFactory(ctx =>
|
|
53
|
+
(...args: unknown[]) => {
|
|
54
|
+
const child = new Container({ defaultScope: 'Singleton' });
|
|
55
|
+
child.parent = ctx.container;
|
|
56
|
+
for (let i = 0; i < parameterBindings.length; i++) {
|
|
57
|
+
child.bind(parameterBindings[i]).toConstantValue(args[i]);
|
|
58
|
+
}
|
|
59
|
+
child.bind(constructor).to(constructor);
|
|
60
|
+
return child.get(constructor);
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
@@ -87,6 +87,7 @@ export interface IJSONSchema {
|
|
|
87
87
|
errorMessage?: string; // VSCode extension
|
|
88
88
|
patternErrorMessage?: string; // VSCode extension
|
|
89
89
|
deprecationMessage?: string; // VSCode extension
|
|
90
|
+
markdownDeprecationMessage?: string; // VS code extension
|
|
90
91
|
enumItemLabels?: string[]; // VSCode extension
|
|
91
92
|
enumDescriptions?: string[]; // VSCode extension
|
|
92
93
|
markdownEnumDescriptions?: string[]; // VSCode extension
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
|
|
16
|
+
import { JSONObject, JSONValue } from '@lumino/coreutils';
|
|
17
|
+
import { PreferenceScope } from './preference-scope';
|
|
18
|
+
import { PreferenceProvider, PreferenceProviderDataChange, PreferenceProviderDataChanges, PreferenceResolveResult } from './preference-provider';
|
|
19
|
+
import { inject, injectable, postConstruct } from 'inversify';
|
|
20
|
+
import { PreferenceSchemaService } from './preference-schema';
|
|
21
|
+
import { Deferred } from '../promise-util';
|
|
22
|
+
import { PreferenceLanguageOverrideService } from './preference-language-override-service';
|
|
23
|
+
import { PreferenceProviderBase } from './preference-provider-impl';
|
|
24
|
+
|
|
25
|
+
// *****************************************************************************
|
|
26
|
+
|
|
27
|
+
@injectable()
|
|
28
|
+
export class DefaultsPreferenceProvider extends PreferenceProviderBase implements PreferenceProvider {
|
|
29
|
+
|
|
30
|
+
@inject(PreferenceSchemaService)
|
|
31
|
+
protected readonly preferenceSchemaService: PreferenceSchemaService;
|
|
32
|
+
|
|
33
|
+
@inject(PreferenceLanguageOverrideService)
|
|
34
|
+
protected readonly preferenceOverrideService: PreferenceLanguageOverrideService;
|
|
35
|
+
|
|
36
|
+
protected readonly _ready = new Deferred<void>();
|
|
37
|
+
ready: Promise<void> = this._ready.promise;
|
|
38
|
+
|
|
39
|
+
@postConstruct()
|
|
40
|
+
init(): void {
|
|
41
|
+
this.toDispose.push(this.preferenceSchemaService.onDidChangeDefaultValue(e => {
|
|
42
|
+
const changes: PreferenceProviderDataChanges = {};
|
|
43
|
+
if (e.overrideIdentifier) {
|
|
44
|
+
changes[e.key] = this.changeFor(e.key, e.overrideIdentifier, e.oldValue, e.newValue);
|
|
45
|
+
} else {
|
|
46
|
+
changes[e.key] = this.changeFor(e.key, undefined, e.oldValue, e.newValue);
|
|
47
|
+
for (const override of e.otherAffectedOverrides) {
|
|
48
|
+
const change = this.changeFor(e.key, override, e.oldValue, e.newValue);
|
|
49
|
+
changes[change.preferenceName] = change;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
this.emitPreferencesChangedEvent(changes);
|
|
53
|
+
}));
|
|
54
|
+
this._ready.resolve();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
protected changeFor(key: string, overrideIdentifier: string | undefined, oldValue: JSONValue | undefined, newValue: JSONValue | undefined): PreferenceProviderDataChange {
|
|
58
|
+
const preferenceName = overrideIdentifier ? this.preferenceOverrideService.overridePreferenceName({ preferenceName: key, overrideIdentifier }) : key;
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
preferenceName: preferenceName,
|
|
62
|
+
newValue: newValue,
|
|
63
|
+
oldValue: oldValue,
|
|
64
|
+
scope: PreferenceScope.Default
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
canHandleScope(scope: PreferenceScope): boolean {
|
|
69
|
+
return scope === PreferenceScope.Default;
|
|
70
|
+
}
|
|
71
|
+
get<T>(preferenceName: string, resourceUri?: string): T | undefined {
|
|
72
|
+
const overrideInfo = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
|
|
73
|
+
return this.preferenceSchemaService.getDefaultValue(overrideInfo?.preferenceName ?? preferenceName, overrideInfo?.overrideIdentifier) as T;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
setPreference(key: string, value: JSONValue, resourceUri?: string): Promise<boolean> {
|
|
77
|
+
return Promise.resolve(false);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
resolve<T>(preferenceName: string, resourceUri?: string): PreferenceResolveResult<T> {
|
|
81
|
+
const overrideInfo = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
|
|
82
|
+
return {
|
|
83
|
+
value: this.preferenceSchemaService.inspectDefaultValue(overrideInfo?.preferenceName ?? preferenceName, overrideInfo?.overrideIdentifier) as T,
|
|
84
|
+
configUri: undefined
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
getPreferences(): JSONObject {
|
|
89
|
+
return this.preferenceSchemaService.getDefaultValues();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
export * from './defaults-preference-provider';
|
|
18
|
+
export * from './preference-language-override-service';
|
|
19
|
+
export * from './preference-provider-impl';
|
|
20
|
+
export * from './preference-provider';
|
|
21
|
+
export * from './preference-schema-service';
|
|
22
|
+
export * from './preference-schema';
|
|
23
|
+
export * from './preference-scope';
|
|
24
|
+
export * from './preference-service';
|
|
25
|
+
export * from './injectable-preference-proxy';
|
|
26
|
+
export * from './preference-proxy';
|
|
27
|
+
export * from './preference-configurations';
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
import { inject, injectable, postConstruct } from 'inversify';
|
|
18
18
|
import { PreferenceSchema } from '../../common/preferences/preference-schema';
|
|
19
|
-
import { Disposable, DisposableCollection, Emitter, Event, isObject, MaybePromise } from '../../common';
|
|
19
|
+
import { Disposable, DisposableCollection, Emitter, Event, isObject, MaybePromise, PreferenceScope } from '../../common';
|
|
20
20
|
import { PreferenceChangeEvent, PreferenceEventEmitter, PreferenceProxy, PreferenceProxyOptions, PreferenceRetrieval } from './preference-proxy';
|
|
21
|
-
import { PreferenceChange, PreferenceChangeImpl, PreferenceChanges,
|
|
21
|
+
import { PreferenceChange, PreferenceChangeImpl, PreferenceChanges, PreferenceService } from './preference-service';
|
|
22
22
|
import { JSONValue } from '@lumino/coreutils';
|
|
23
23
|
import { PreferenceProviderDataChange } from './preference-provider';
|
|
24
|
-
import { OverridePreferenceName } from '
|
|
24
|
+
import { OverridePreferenceName } from '../../common/preferences/preference-language-override-service';
|
|
25
25
|
|
|
26
26
|
export const PreferenceProxySchema = Symbol('PreferenceProxySchema');
|
|
27
27
|
export interface PreferenceProxyFactory {
|
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { injectable } from 'inversify';
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { isObject } from '../types';
|
|
19
|
+
import { IndexedAccess, PreferenceSchemaService } from './preference-schema';
|
|
20
|
+
import { escapeRegExpCharacters } from '../strings';
|
|
21
|
+
import { JSONValue } from '@lumino/coreutils';
|
|
20
22
|
|
|
21
23
|
export interface OverridePreferenceName {
|
|
22
24
|
preferenceName: string
|
|
@@ -34,10 +36,11 @@ export const getOverridePattern = (identifier: string) => `\\[(${identifier})\\]
|
|
|
34
36
|
|
|
35
37
|
@injectable()
|
|
36
38
|
export class PreferenceLanguageOverrideService {
|
|
37
|
-
|
|
39
|
+
@inject(PreferenceSchemaService)
|
|
40
|
+
protected readonly preferenceSchemaService: PreferenceSchemaService;
|
|
38
41
|
|
|
39
|
-
testOverrideValue(name: string, value: unknown): value is
|
|
40
|
-
return
|
|
42
|
+
static testOverrideValue(name: string, value: unknown): value is IndexedAccess<JSONValue> {
|
|
43
|
+
return isObject(value) && OVERRIDE_PROPERTY_PATTERN.test(name);
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
/**
|
|
@@ -65,7 +68,7 @@ export class PreferenceLanguageOverrideService {
|
|
|
65
68
|
}
|
|
66
69
|
const matches = name.substring(0, index).match(OVERRIDE_PROPERTY_PATTERN);
|
|
67
70
|
const overrideIdentifier = matches && matches[1];
|
|
68
|
-
if (!overrideIdentifier || !this.overrideIdentifiers.has(overrideIdentifier)) {
|
|
71
|
+
if (!overrideIdentifier || !this.preferenceSchemaService.overrideIdentifiers.has(overrideIdentifier)) {
|
|
69
72
|
return undefined;
|
|
70
73
|
}
|
|
71
74
|
const preferenceName = name.substring(index + 1);
|
|
@@ -74,7 +77,7 @@ export class PreferenceLanguageOverrideService {
|
|
|
74
77
|
|
|
75
78
|
computeOverridePatternPropertiesKey(): string | undefined {
|
|
76
79
|
let param: string = '';
|
|
77
|
-
for (const overrideIdentifier of this.overrideIdentifiers) {
|
|
80
|
+
for (const overrideIdentifier of this.preferenceSchemaService.overrideIdentifiers) {
|
|
78
81
|
if (param.length) {
|
|
79
82
|
param += '|';
|
|
80
83
|
}
|
|
@@ -84,28 +87,8 @@ export class PreferenceLanguageOverrideService {
|
|
|
84
87
|
}
|
|
85
88
|
|
|
86
89
|
*getOverridePreferenceNames(preferenceName: string): IterableIterator<string> {
|
|
87
|
-
for (const overrideIdentifier of this.overrideIdentifiers) {
|
|
90
|
+
for (const overrideIdentifier of this.preferenceSchemaService.overrideIdentifiers) {
|
|
88
91
|
yield this.overridePreferenceName({ preferenceName, overrideIdentifier });
|
|
89
92
|
}
|
|
90
93
|
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* @param overrideIdentifier
|
|
94
|
-
* @returns true if the addition caused a change, i.e. if the identifier was not already present in the set of identifiers, false otherwise.
|
|
95
|
-
*/
|
|
96
|
-
addOverrideIdentifier(overrideIdentifier: string): boolean {
|
|
97
|
-
const alreadyPresent = this.overrideIdentifiers.has(overrideIdentifier);
|
|
98
|
-
if (!alreadyPresent) {
|
|
99
|
-
this.overrideIdentifiers.add(overrideIdentifier);
|
|
100
|
-
}
|
|
101
|
-
return !alreadyPresent;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* @param overrideIdentifier
|
|
106
|
-
* @returns true if the deletion caused a change, i.e. if the identifier was present in the set, false otherwise.
|
|
107
|
-
*/
|
|
108
|
-
removeOverrideIdentifier(overrideIdentifier: string): boolean {
|
|
109
|
-
return this.overrideIdentifiers.delete(overrideIdentifier);
|
|
110
|
-
}
|
|
111
94
|
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2018 Ericsson and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import debounce = require('p-debounce');
|
|
18
|
+
import { injectable } from 'inversify';
|
|
19
|
+
import { JSONObject } from '@lumino/coreutils';
|
|
20
|
+
import URI from '../../common/uri';
|
|
21
|
+
import { DisposableCollection, Emitter, Event, isObject, PreferenceLanguageOverrideService } from '../../common';
|
|
22
|
+
import { Deferred } from '../../common/promise-util';
|
|
23
|
+
import { PreferenceScope } from './preference-scope';
|
|
24
|
+
import { PreferenceProvider, PreferenceProviderDataChange, PreferenceProviderDataChanges, PreferenceResolveResult } from './preference-provider';
|
|
25
|
+
|
|
26
|
+
export abstract class PreferenceProviderBase {
|
|
27
|
+
|
|
28
|
+
protected readonly onDidPreferencesChangedEmitter = new Emitter<PreferenceProviderDataChanges>();
|
|
29
|
+
readonly onDidPreferencesChanged: Event<PreferenceProviderDataChanges> = this.onDidPreferencesChangedEmitter.event;
|
|
30
|
+
|
|
31
|
+
protected readonly toDispose = new DisposableCollection();
|
|
32
|
+
|
|
33
|
+
protected deferredChanges: PreferenceProviderDataChanges | undefined;
|
|
34
|
+
|
|
35
|
+
constructor() {
|
|
36
|
+
this.toDispose.push(this.onDidPreferencesChangedEmitter);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Informs the listeners that one or more preferences of this provider are changed.
|
|
41
|
+
* The listeners are able to find what was changed from the emitted event.
|
|
42
|
+
*/
|
|
43
|
+
protected emitPreferencesChangedEvent(changes: PreferenceProviderDataChanges | PreferenceProviderDataChange[]): Promise<boolean> {
|
|
44
|
+
if (Array.isArray(changes)) {
|
|
45
|
+
for (const change of changes) {
|
|
46
|
+
this.mergePreferenceProviderDataChange(change);
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
for (const preferenceName of Object.keys(changes)) {
|
|
50
|
+
this.mergePreferenceProviderDataChange(changes[preferenceName]);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return this.fireDidPreferencesChanged();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
protected mergePreferenceProviderDataChange(change: PreferenceProviderDataChange): void {
|
|
57
|
+
if (!this.deferredChanges) {
|
|
58
|
+
this.deferredChanges = {};
|
|
59
|
+
}
|
|
60
|
+
const current = this.deferredChanges[change.preferenceName];
|
|
61
|
+
const { newValue, scope, domain } = change;
|
|
62
|
+
if (!current) {
|
|
63
|
+
// new
|
|
64
|
+
this.deferredChanges[change.preferenceName] = change;
|
|
65
|
+
} else if (current.oldValue === newValue) {
|
|
66
|
+
// delete
|
|
67
|
+
delete this.deferredChanges[change.preferenceName];
|
|
68
|
+
} else {
|
|
69
|
+
// update
|
|
70
|
+
Object.assign(current, { newValue, scope, domain });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
protected fireDidPreferencesChanged = debounce(() => {
|
|
75
|
+
const changes = this.deferredChanges;
|
|
76
|
+
this.deferredChanges = undefined;
|
|
77
|
+
if (changes && Object.keys(changes).length) {
|
|
78
|
+
this.onDidPreferencesChangedEmitter.fire(changes);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}, 0);
|
|
83
|
+
|
|
84
|
+
dispose(): void {
|
|
85
|
+
this.toDispose.dispose();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* The {@link PreferenceProvider} is used to store and retrieve preference values. A {@link PreferenceProvider} does not operate in a global scope but is
|
|
92
|
+
* configured for one or more {@link PreferenceScope}s. The (default implementation for the) {@link PreferenceService} aggregates all {@link PreferenceProvider}s and
|
|
93
|
+
* serves as a common facade for manipulating preference values.
|
|
94
|
+
*/
|
|
95
|
+
@injectable()
|
|
96
|
+
export abstract class PreferenceProviderImpl extends PreferenceProviderBase implements PreferenceProvider {
|
|
97
|
+
|
|
98
|
+
protected readonly _ready = new Deferred<void>();
|
|
99
|
+
|
|
100
|
+
constructor() {
|
|
101
|
+
super();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
get<T>(preferenceName: string, resourceUri?: string): T | undefined {
|
|
105
|
+
return this.resolve<T>(preferenceName, resourceUri).value;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
resolve<T>(preferenceName: string, resourceUri?: string): PreferenceResolveResult<T> {
|
|
109
|
+
const value = this.getPreferences(resourceUri)[preferenceName];
|
|
110
|
+
if (value !== undefined) {
|
|
111
|
+
return {
|
|
112
|
+
value: value as T,
|
|
113
|
+
configUri: this.getConfigUri(resourceUri)
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
return {};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
abstract getPreferences(resourceUri?: string): JSONObject;
|
|
120
|
+
abstract setPreference(key: string, value: unknown, resourceUri?: string): Promise<boolean>;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Resolved when the preference provider is ready to provide preferences
|
|
124
|
+
* It should be resolved by subclasses.
|
|
125
|
+
*/
|
|
126
|
+
get ready(): Promise<void> {
|
|
127
|
+
return this._ready.promise;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Retrieve the domain for this provider.
|
|
132
|
+
*
|
|
133
|
+
* @returns the domain or `undefined` if this provider is suitable for all domains.
|
|
134
|
+
*/
|
|
135
|
+
getDomain(): string[] | undefined {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
getConfigUri(resourceUri?: string, sectionName?: string): URI | undefined {
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
getContainingConfigUri?(resourceUri?: string, sectionName?: string): URI | undefined;
|
|
144
|
+
|
|
145
|
+
protected getParsedContent(jsonData: unknown): { [key: string]: unknown } {
|
|
146
|
+
const preferences: { [key: string]: unknown } = {};
|
|
147
|
+
if (!isObject(jsonData)) {
|
|
148
|
+
return preferences;
|
|
149
|
+
}
|
|
150
|
+
for (const [preferenceName, preferenceValue] of Object.entries(jsonData)) {
|
|
151
|
+
if (PreferenceLanguageOverrideService.testOverrideValue(preferenceName, preferenceValue)) {
|
|
152
|
+
for (const [overriddenPreferenceName, overriddenValue] of Object.entries(preferenceValue)) {
|
|
153
|
+
preferences[`${preferenceName}.${overriddenPreferenceName}`] = overriddenValue;
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
preferences[preferenceName] = preferenceValue;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return preferences;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
canHandleScope(scope: PreferenceScope): boolean {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -14,20 +14,21 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import { PreferenceUtils } from './preference-provider';
|
|
18
|
+
|
|
18
19
|
const { expect } = require('chai');
|
|
19
20
|
|
|
20
|
-
describe('
|
|
21
|
+
describe('PreferenceProviderImpl', () => {
|
|
21
22
|
it('should preserve extra source fields on merge', () => {
|
|
22
|
-
const result =
|
|
23
|
+
const result = PreferenceUtils.merge({ 'configurations': [], 'compounds': [] }, { 'configurations': [] });
|
|
23
24
|
expect(result).deep.equals({ 'configurations': [], 'compounds': [] });
|
|
24
25
|
});
|
|
25
26
|
it('should preserve extra target fields on merge', () => {
|
|
26
|
-
const result =
|
|
27
|
+
const result = PreferenceUtils.merge({ 'configurations': [] }, { 'configurations': [], 'compounds': [] });
|
|
27
28
|
expect(result).deep.equals({ 'configurations': [], 'compounds': [] });
|
|
28
29
|
});
|
|
29
30
|
it('should merge array values', () => {
|
|
30
|
-
const result =
|
|
31
|
+
const result = PreferenceUtils.merge(
|
|
31
32
|
{ 'configurations': [{ 'name': 'test1', 'request': 'launch' }], 'compounds': [] },
|
|
32
33
|
{ 'configurations': [{ 'name': 'test2' }] }
|
|
33
34
|
);
|