@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
|
@@ -15,11 +15,10 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { inject, injectable } from 'inversify';
|
|
18
|
-
import { Disposable, DisposableCollection, disposableTimeout, isOSX } from '../common';
|
|
18
|
+
import { Disposable, DisposableCollection, disposableTimeout, isOSX, PreferenceService } from '../common';
|
|
19
19
|
import { MarkdownString } from '../common/markdown-rendering/markdown-string';
|
|
20
20
|
import { animationFrame } from './browser';
|
|
21
21
|
import { MarkdownRenderer, MarkdownRendererFactory } from './markdown-rendering/markdown-renderer';
|
|
22
|
-
import { PreferenceService } from './preferences';
|
|
23
22
|
|
|
24
23
|
import '../../src/browser/style/hover-service.css';
|
|
25
24
|
|
|
@@ -19,8 +19,9 @@ import { Emitter } from '../common/event';
|
|
|
19
19
|
import { Disposable, DisposableCollection } from '../common/disposable';
|
|
20
20
|
import { LabelProviderContribution, DidChangeLabelEvent } from './label-provider';
|
|
21
21
|
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
22
|
-
import { PreferenceService, PreferenceSchemaProvider } from './preferences';
|
|
23
22
|
import debounce = require('lodash.debounce');
|
|
23
|
+
import { PreferenceSchemaService } from '../common/preferences/preference-schema';
|
|
24
|
+
import { PreferenceService } from '../common/preferences';
|
|
24
25
|
|
|
25
26
|
const ICON_THEME_PREFERENCE_KEY = 'workbench.iconTheme';
|
|
26
27
|
|
|
@@ -97,7 +98,7 @@ export class IconThemeService {
|
|
|
97
98
|
|
|
98
99
|
@inject(NoneIconTheme) protected readonly noneIconTheme: NoneIconTheme;
|
|
99
100
|
@inject(PreferenceService) protected readonly preferences: PreferenceService;
|
|
100
|
-
@inject(
|
|
101
|
+
@inject(PreferenceSchemaService) protected readonly schemaProvider: PreferenceSchemaService;
|
|
101
102
|
|
|
102
103
|
protected readonly onDidChangeCurrentEmitter = new Emitter<string>();
|
|
103
104
|
readonly onDidChangeCurrent = this.onDidChangeCurrentEmitter.event;
|
package/src/browser/index.ts
CHANGED
|
@@ -39,7 +39,6 @@ export * from './label-provider';
|
|
|
39
39
|
export * from './widget-open-handler';
|
|
40
40
|
export * from './navigatable';
|
|
41
41
|
export * from './diff-uris';
|
|
42
|
-
export * from './core-preferences';
|
|
43
42
|
export * from './view-container';
|
|
44
43
|
export * from './breadcrumbs';
|
|
45
44
|
export * from './tooltip-service';
|
|
@@ -33,7 +33,7 @@ import { LabelParser } from './label-parser';
|
|
|
33
33
|
import { MockLogger } from '../common/test/mock-logger';
|
|
34
34
|
import { FrontendApplicationStateService } from './frontend-application-state';
|
|
35
35
|
import { ContextKeyService, ContextKeyServiceDummyImpl } from './context-key-service';
|
|
36
|
-
import { CorePreferences } from '
|
|
36
|
+
import { CorePreferences } from '../common/core-preferences';
|
|
37
37
|
import * as os from '../common/os';
|
|
38
38
|
import * as chai from 'chai';
|
|
39
39
|
import * as sinon from 'sinon';
|
|
@@ -25,7 +25,7 @@ import { ContributionProvider } from '../common/contribution-provider';
|
|
|
25
25
|
import { ILogger } from '../common/logger';
|
|
26
26
|
import { StatusBarAlignment, StatusBar } from './status-bar/status-bar';
|
|
27
27
|
import { ContextKeyService } from './context-key-service';
|
|
28
|
-
import { CorePreferences } from '
|
|
28
|
+
import { CorePreferences } from '../common/core-preferences';
|
|
29
29
|
import * as common from '../common/keybinding';
|
|
30
30
|
import { nls } from '../common/nls';
|
|
31
31
|
|
|
@@ -20,7 +20,8 @@ import { CommandRegistry as LuminoCommandRegistry } from '@lumino/commands';
|
|
|
20
20
|
import {
|
|
21
21
|
environment, DisposableCollection,
|
|
22
22
|
AcceleratorSource,
|
|
23
|
-
ArrayUtils
|
|
23
|
+
ArrayUtils,
|
|
24
|
+
PreferenceService
|
|
24
25
|
} from '../../common';
|
|
25
26
|
import { KeybindingRegistry } from '../keybinding';
|
|
26
27
|
import { FrontendApplication } from '../frontend-application';
|
|
@@ -29,8 +30,7 @@ import { ContextKeyService, ContextMatcher } from '../context-key-service';
|
|
|
29
30
|
import { ContextMenuContext } from './context-menu-context';
|
|
30
31
|
import { Message, waitForRevealed } from '../widgets';
|
|
31
32
|
import { ApplicationShell } from '../shell';
|
|
32
|
-
import { CorePreferences } from '
|
|
33
|
-
import { PreferenceService } from '../preferences/preference-service';
|
|
33
|
+
import { CorePreferences } from '../../common/core-preferences';
|
|
34
34
|
import { ElementExt } from '@lumino/domutils';
|
|
35
35
|
import { CommandMenu, CompoundMenuNode, MAIN_MENU_BAR, MenuNode, MenuPath, RenderedMenuNode, Submenu } from '../../common/menu/menu-types';
|
|
36
36
|
import { MenuModelRegistry } from '../../common/menu/menu-model-registry';
|
|
@@ -440,7 +440,7 @@ export class BrowserMenuBarContribution implements FrontendApplicationContributi
|
|
|
440
440
|
});
|
|
441
441
|
this.preferenceService.onPreferenceChanged(change => {
|
|
442
442
|
if (change.preferenceName === 'window.menuBarVisibility') {
|
|
443
|
-
menu.setHidden(['compact', 'hidden'].includes(change.newValue));
|
|
443
|
+
menu.setHidden(['compact', 'hidden'].includes(change.newValue as string));
|
|
444
444
|
}
|
|
445
445
|
});
|
|
446
446
|
}
|
|
@@ -20,8 +20,8 @@ import { nls } from '../common/nls';
|
|
|
20
20
|
import { MaybePromise } from '../common/types';
|
|
21
21
|
import { URI } from '../common/uri';
|
|
22
22
|
import { QuickInputService, QuickPickItem, QuickPickItemOrSeparator } from './quick-input';
|
|
23
|
-
import { PreferenceScope, PreferenceService } from './preferences';
|
|
24
23
|
import { getDefaultHandler } from './opener-service';
|
|
24
|
+
import { PreferenceService, PreferenceScope } from '../common';
|
|
25
25
|
|
|
26
26
|
export interface OpenWithHandler {
|
|
27
27
|
/**
|
|
@@ -16,8 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { named, injectable, inject } from 'inversify';
|
|
18
18
|
import URI from '../common/uri';
|
|
19
|
-
import { ContributionProvider, Prioritizeable, MaybePromise, Emitter, Event, Disposable } from '../common';
|
|
20
|
-
import { PreferenceService } from './preferences';
|
|
19
|
+
import { ContributionProvider, Prioritizeable, MaybePromise, Emitter, Event, Disposable, PreferenceService } from '../common';
|
|
21
20
|
import { match } from '../common/glob';
|
|
22
21
|
|
|
23
22
|
export interface OpenerOptions {
|
|
@@ -0,0 +1,52 @@
|
|
|
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 { injectable } from 'inversify';
|
|
18
|
+
import { PreferenceContribution, PreferenceSchema, PreferenceSchemaService } from '../../common/preferences/preference-schema';
|
|
19
|
+
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
20
|
+
import { FrontendApplicationPreferenceConfig } from './preference-contribution';
|
|
21
|
+
import { PreferenceLanguageOverrideService } from '../../common/preferences/preference-language-override-service';
|
|
22
|
+
import { PreferenceScope } from '../../common/preferences';
|
|
23
|
+
import { DefaultTheme } from '@theia/application-package/lib/application-props';
|
|
24
|
+
|
|
25
|
+
@injectable()
|
|
26
|
+
export class FrontendConfigPreferenceContribution implements PreferenceContribution {
|
|
27
|
+
schema: PreferenceSchema = { scope: PreferenceScope.Folder, properties: {} };
|
|
28
|
+
async initSchema(service: PreferenceSchemaService): Promise<void> {
|
|
29
|
+
const config = FrontendApplicationConfigProvider.get();
|
|
30
|
+
if (FrontendApplicationPreferenceConfig.is(config)) {
|
|
31
|
+
service.registerOverride('workbench.colorTheme', undefined, DefaultTheme.defaultForOSTheme(config.defaultTheme));
|
|
32
|
+
if (config.defaultIconTheme) {
|
|
33
|
+
service.registerOverride('workbench.iconTheme', undefined, config.defaultIconTheme);
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
for (const [key, defaultValue] of Object.entries(config.preferences)) {
|
|
37
|
+
if (PreferenceLanguageOverrideService.testOverrideValue(key, defaultValue)) {
|
|
38
|
+
for (const [propertyName, value] of Object.entries(defaultValue)) {
|
|
39
|
+
service.registerOverride(propertyName, key.substring(1, key.length - 1), value);
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
// regular configuration override
|
|
43
|
+
service.registerOverride(key, undefined, defaultValue);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
} catch (e) {
|
|
47
|
+
console.error('Failed to load preferences from frontend configuration.', e);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
}
|
|
@@ -14,10 +14,5 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
export * from './preference-service';
|
|
18
|
-
export * from './preference-proxy';
|
|
19
17
|
export * from './preference-contribution';
|
|
20
|
-
export * from './preference-provider';
|
|
21
|
-
export * from './preference-scope';
|
|
22
|
-
export * from './preference-language-override-service';
|
|
23
18
|
export * from './preference-validation-service';
|
|
@@ -14,61 +14,27 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { PreferenceScope } from './preference-scope';
|
|
21
|
-
import { PreferenceProvider, PreferenceProviderDataChange } from './preference-provider';
|
|
22
|
-
import {
|
|
23
|
-
PreferenceSchema, PreferenceSchemaProperties, PreferenceDataSchema, PreferenceItem, PreferenceSchemaProperty, PreferenceDataProperty
|
|
24
|
-
} from '../../common/preferences/preference-schema';
|
|
25
|
-
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
17
|
+
import { interfaces } from 'inversify';
|
|
18
|
+
import { bindContributionProvider, PreferenceProvider } from '../../common';
|
|
19
|
+
import { PreferenceScope, ValidPreferenceScopes } from '../../common/preferences/preference-scope';
|
|
26
20
|
import { FrontendApplicationConfig } from '@theia/application-package/lib/application-props';
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export const PreferenceContribution = Symbol('PreferenceContribution');
|
|
36
|
-
|
|
37
|
-
export const DefaultOverridesPreferenceSchemaId = 'defaultOverrides';
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* A {@link PreferenceContribution} allows adding additional custom preferences.
|
|
41
|
-
* For this, the {@link PreferenceContribution} has to provide a valid JSON Schema specifying which preferences
|
|
42
|
-
* are available including their types and description.
|
|
43
|
-
*
|
|
44
|
-
* ### Example usage
|
|
45
|
-
* ```typescript
|
|
46
|
-
* const MyPreferencesSchema: PreferenceSchema = {
|
|
47
|
-
* 'type': 'object',
|
|
48
|
-
* 'properties': {
|
|
49
|
-
* 'myext.decorations.enabled': {
|
|
50
|
-
* 'type': 'boolean',
|
|
51
|
-
* 'description': 'Show file status',
|
|
52
|
-
* 'default': true
|
|
53
|
-
* },
|
|
54
|
-
* // [...]
|
|
55
|
-
* }
|
|
56
|
-
* }
|
|
57
|
-
* @injectable()
|
|
58
|
-
* export class MyPreferenceContribution implements PreferenceContribution{
|
|
59
|
-
* schema= MyPreferencesSchema;
|
|
60
|
-
* }
|
|
61
|
-
* ```
|
|
62
|
-
*/
|
|
63
|
-
export interface PreferenceContribution {
|
|
64
|
-
readonly schema: PreferenceSchema;
|
|
65
|
-
}
|
|
21
|
+
import { isObject } from '../../common/types';
|
|
22
|
+
import { PreferenceSchemaServiceImpl } from '../../common/preferences/preference-schema-service';
|
|
23
|
+
import { PreferenceContribution, PreferenceSchemaService } from '../../common/preferences/preference-schema';
|
|
24
|
+
import { DefaultsPreferenceProvider } from '../../common/preferences/defaults-preference-provider';
|
|
25
|
+
import { PreferenceLanguageOverrideService } from '../../common/preferences/preference-language-override-service';
|
|
26
|
+
import { FrontendConfigPreferenceContribution } from './frontend-config-preference-contributions';
|
|
27
|
+
import { bindPreferenceConfigurations } from '../../common/preferences/preference-configurations';
|
|
66
28
|
|
|
67
29
|
export function bindPreferenceSchemaProvider(bind: interfaces.Bind): void {
|
|
68
30
|
bindPreferenceConfigurations(bind);
|
|
69
|
-
bind(
|
|
31
|
+
bind(ValidPreferenceScopes).toConstantValue([PreferenceScope.Default, PreferenceScope.User, PreferenceScope.Workspace, PreferenceScope.Folder]);
|
|
32
|
+
bind(PreferenceSchemaServiceImpl).toSelf().inSingletonScope();
|
|
33
|
+
bind(PreferenceSchemaService).toService(PreferenceSchemaServiceImpl);
|
|
34
|
+
bind(PreferenceProvider).to(DefaultsPreferenceProvider).inSingletonScope().whenTargetNamed(PreferenceScope.Default);
|
|
70
35
|
bind(PreferenceLanguageOverrideService).toSelf().inSingletonScope();
|
|
71
36
|
bindContributionProvider(bind, PreferenceContribution);
|
|
37
|
+
bind(PreferenceContribution).to(FrontendConfigPreferenceContribution).inSingletonScope();
|
|
72
38
|
}
|
|
73
39
|
|
|
74
40
|
/**
|
|
@@ -77,6 +43,7 @@ export function bindPreferenceSchemaProvider(bind: interfaces.Bind): void {
|
|
|
77
43
|
*/
|
|
78
44
|
export interface FrontendApplicationPreferenceConfig extends FrontendApplicationConfig {
|
|
79
45
|
preferences: {
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
47
|
[preferenceName: string]: any
|
|
81
48
|
}
|
|
82
49
|
}
|
|
@@ -85,352 +52,3 @@ export namespace FrontendApplicationPreferenceConfig {
|
|
|
85
52
|
return isObject(config.preferences);
|
|
86
53
|
}
|
|
87
54
|
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* The {@link PreferenceSchemaProvider} collects all {@link PreferenceContribution}s and combines
|
|
91
|
-
* the preference schema provided by these contributions into one collective schema. The preferences which
|
|
92
|
-
* are provided by this {@link PreferenceProvider} are derived from this combined schema.
|
|
93
|
-
*/
|
|
94
|
-
@injectable()
|
|
95
|
-
export class PreferenceSchemaProvider extends PreferenceProvider {
|
|
96
|
-
|
|
97
|
-
protected readonly preferences: { [name: string]: any } = {};
|
|
98
|
-
protected readonly combinedSchema: PreferenceDataSchema = { properties: {}, patternProperties: {}, allowComments: true, allowTrailingCommas: true, };
|
|
99
|
-
protected readonly workspaceSchema: PreferenceDataSchema = { properties: {}, patternProperties: {}, allowComments: true, allowTrailingCommas: true, };
|
|
100
|
-
protected readonly folderSchema: PreferenceDataSchema = { properties: {}, patternProperties: {}, allowComments: true, allowTrailingCommas: true, };
|
|
101
|
-
|
|
102
|
-
@inject(ContributionProvider) @named(PreferenceContribution)
|
|
103
|
-
protected readonly preferenceContributions: ContributionProvider<PreferenceContribution>;
|
|
104
|
-
|
|
105
|
-
@inject(PreferenceConfigurations)
|
|
106
|
-
protected readonly configurations: PreferenceConfigurations;
|
|
107
|
-
|
|
108
|
-
protected readonly onDidPreferenceSchemaChangedEmitter = new Emitter<void>();
|
|
109
|
-
readonly onDidPreferenceSchemaChanged: Event<void> = this.onDidPreferenceSchemaChangedEmitter.event;
|
|
110
|
-
protected fireDidPreferenceSchemaChanged(): void {
|
|
111
|
-
this.onDidPreferenceSchemaChangedEmitter.fire(undefined);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
@postConstruct()
|
|
115
|
-
protected init(): void {
|
|
116
|
-
this.readConfiguredPreferences();
|
|
117
|
-
this.preferenceContributions.getContributions().forEach(contrib => {
|
|
118
|
-
this.doSetSchema(contrib.schema);
|
|
119
|
-
});
|
|
120
|
-
this.combinedSchema.additionalProperties = false;
|
|
121
|
-
this._ready.resolve();
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Register a new overrideIdentifier. Existing identifiers are not replaced.
|
|
126
|
-
*
|
|
127
|
-
* Allows overriding existing values while keeping both values in store.
|
|
128
|
-
* For example to store different editor settings, e.g. "[markdown].editor.autoIndent",
|
|
129
|
-
* "[json].editor.autoIndent" and "editor.autoIndent"
|
|
130
|
-
* @param overrideIdentifier the new overrideIdentifier
|
|
131
|
-
*/
|
|
132
|
-
registerOverrideIdentifier(overrideIdentifier: string): void {
|
|
133
|
-
if (this.preferenceOverrideService.addOverrideIdentifier(overrideIdentifier)) {
|
|
134
|
-
this.updateOverridePatternPropertiesKey();
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
protected readonly overridePatternProperties: Required<Pick<PreferenceDataProperty, 'properties' | 'additionalProperties'>> & PreferenceDataProperty = {
|
|
139
|
-
type: 'object',
|
|
140
|
-
description: 'Configure editor settings to be overridden for a language.',
|
|
141
|
-
errorMessage: 'Unknown Identifier. Use language identifiers',
|
|
142
|
-
properties: {},
|
|
143
|
-
additionalProperties: false
|
|
144
|
-
};
|
|
145
|
-
protected overridePatternPropertiesKey: string | undefined;
|
|
146
|
-
protected updateOverridePatternPropertiesKey(): void {
|
|
147
|
-
const oldKey = this.overridePatternPropertiesKey;
|
|
148
|
-
const newKey = this.preferenceOverrideService.computeOverridePatternPropertiesKey();
|
|
149
|
-
if (oldKey === newKey) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
if (oldKey) {
|
|
153
|
-
delete this.combinedSchema.patternProperties[oldKey];
|
|
154
|
-
}
|
|
155
|
-
this.overridePatternPropertiesKey = newKey;
|
|
156
|
-
if (newKey) {
|
|
157
|
-
this.combinedSchema.patternProperties[newKey] = this.overridePatternProperties;
|
|
158
|
-
}
|
|
159
|
-
this.fireDidPreferenceSchemaChanged();
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
protected doUnsetSchema(changes: PreferenceProviderDataChange[]): PreferenceProviderDataChange[] {
|
|
163
|
-
const inverseChanges: PreferenceProviderDataChange[] = [];
|
|
164
|
-
for (const change of changes) {
|
|
165
|
-
const preferenceName = change.preferenceName;
|
|
166
|
-
const overridden = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
|
|
167
|
-
if (overridden) {
|
|
168
|
-
delete this.overridePatternProperties.properties[`[${overridden.overrideIdentifier}]`];
|
|
169
|
-
this.removePropFromSchemas(`[${overridden.overrideIdentifier}]`);
|
|
170
|
-
} else {
|
|
171
|
-
this.removePropFromSchemas(preferenceName);
|
|
172
|
-
}
|
|
173
|
-
const newValue = change.oldValue;
|
|
174
|
-
const oldValue = change.newValue;
|
|
175
|
-
const { scope, domain } = change;
|
|
176
|
-
const inverseChange: Mutable<PreferenceProviderDataChange> = { preferenceName, oldValue, scope, domain };
|
|
177
|
-
if (typeof newValue === undefined) {
|
|
178
|
-
delete this.preferences[preferenceName];
|
|
179
|
-
} else {
|
|
180
|
-
inverseChange.newValue = newValue;
|
|
181
|
-
this.preferences[preferenceName] = newValue;
|
|
182
|
-
}
|
|
183
|
-
inverseChanges.push(inverseChange);
|
|
184
|
-
}
|
|
185
|
-
return inverseChanges;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
protected validateSchema(schema: PreferenceSchema): void {
|
|
189
|
-
const ajv = new Ajv();
|
|
190
|
-
const valid = ajv.validateSchema(schema);
|
|
191
|
-
if (!valid) {
|
|
192
|
-
const errors = !!ajv.errors ? ajv.errorsText(ajv.errors) : 'unknown validation error';
|
|
193
|
-
console.warn('A contributed preference schema has validation issues : ' + errors);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
protected doSetSchema(schema: PreferenceSchema): PreferenceProviderDataChange[] {
|
|
198
|
-
if (FrontendApplicationConfigProvider.get().validatePreferencesSchema) {
|
|
199
|
-
this.validateSchema(schema);
|
|
200
|
-
}
|
|
201
|
-
const scope = PreferenceScope.Default;
|
|
202
|
-
const domain = this.getDomain();
|
|
203
|
-
const changes: PreferenceProviderDataChange[] = [];
|
|
204
|
-
const defaultScope = PreferenceSchema.getDefaultScope(schema);
|
|
205
|
-
const overridable = schema.overridable || false;
|
|
206
|
-
for (const [preferenceName, rawSchemaProps] of Object.entries(schema.properties)) {
|
|
207
|
-
if (this.combinedSchema.properties[preferenceName] && DefaultOverridesPreferenceSchemaId !== schema.id) {
|
|
208
|
-
console.error('Preference name collision detected in the schema for property: ' + preferenceName);
|
|
209
|
-
} else {
|
|
210
|
-
let schemaProps;
|
|
211
|
-
if (this.combinedSchema.properties[preferenceName] && DefaultOverridesPreferenceSchemaId === schema.id) {
|
|
212
|
-
// update existing default value in schema
|
|
213
|
-
schemaProps = PreferenceDataProperty.fromPreferenceSchemaProperty(rawSchemaProps, defaultScope);
|
|
214
|
-
this.updateSchemaPropsDefault(preferenceName, schemaProps);
|
|
215
|
-
} else if (!rawSchemaProps.hasOwnProperty('included') || rawSchemaProps.included) {
|
|
216
|
-
// add overrides for languages
|
|
217
|
-
schemaProps = PreferenceDataProperty.fromPreferenceSchemaProperty(rawSchemaProps, defaultScope);
|
|
218
|
-
if (typeof schemaProps.overridable !== 'boolean' && overridable) {
|
|
219
|
-
schemaProps.overridable = true;
|
|
220
|
-
}
|
|
221
|
-
if (schemaProps.overridable) {
|
|
222
|
-
this.overridePatternProperties.properties[preferenceName] = schemaProps;
|
|
223
|
-
}
|
|
224
|
-
this.updateSchemaProps(preferenceName, schemaProps);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
if (schemaProps !== undefined) {
|
|
228
|
-
const schemaDefault = this.getDefaultValue(schemaProps);
|
|
229
|
-
const configuredDefault = this.getConfiguredDefault(preferenceName);
|
|
230
|
-
if (this.preferenceOverrideService.testOverrideValue(preferenceName, schemaDefault)) {
|
|
231
|
-
schemaProps.defaultValue = PreferenceSchemaProperties.is(configuredDefault)
|
|
232
|
-
? PreferenceProvider.merge(schemaDefault, configuredDefault)
|
|
233
|
-
: schemaDefault;
|
|
234
|
-
if (schemaProps.defaultValue && PreferenceSchemaProperties.is(schemaProps.defaultValue)) {
|
|
235
|
-
for (const overriddenPreferenceName in schemaProps.defaultValue) {
|
|
236
|
-
const overrideValue = schemaDefault[overriddenPreferenceName];
|
|
237
|
-
const overridePreferenceName = `${preferenceName}.${overriddenPreferenceName}`;
|
|
238
|
-
changes.push(this.doSetPreferenceValue(overridePreferenceName, overrideValue, { scope, domain }));
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
} else {
|
|
242
|
-
schemaProps.defaultValue = configuredDefault === undefined ? schemaDefault : configuredDefault;
|
|
243
|
-
changes.push(this.doSetPreferenceValue(preferenceName, schemaProps.defaultValue, { scope, domain }));
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return changes;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
protected doSetPreferenceValue(preferenceName: string, newValue: any, { scope, domain }: {
|
|
252
|
-
scope: PreferenceScope,
|
|
253
|
-
domain?: string[]
|
|
254
|
-
}): PreferenceProviderDataChange {
|
|
255
|
-
const oldValue = this.preferences[preferenceName];
|
|
256
|
-
this.preferences[preferenceName] = newValue;
|
|
257
|
-
return { preferenceName, oldValue, newValue, scope, domain };
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
getDefaultValue(property: PreferenceItem): JSONValue {
|
|
261
|
-
if (property.defaultValue !== undefined) {
|
|
262
|
-
return property.defaultValue;
|
|
263
|
-
}
|
|
264
|
-
if (property.default !== undefined) {
|
|
265
|
-
return property.default;
|
|
266
|
-
}
|
|
267
|
-
const type = Array.isArray(property.type) ? property.type[0] : property.type;
|
|
268
|
-
switch (type) {
|
|
269
|
-
case 'boolean':
|
|
270
|
-
return false;
|
|
271
|
-
case 'integer':
|
|
272
|
-
case 'number':
|
|
273
|
-
return 0;
|
|
274
|
-
case 'string':
|
|
275
|
-
return '';
|
|
276
|
-
case 'array':
|
|
277
|
-
return [];
|
|
278
|
-
case 'object':
|
|
279
|
-
return {};
|
|
280
|
-
}
|
|
281
|
-
// eslint-disable-next-line no-null/no-null
|
|
282
|
-
return null;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
protected getConfiguredDefault(preferenceName: string): any {
|
|
286
|
-
const config = FrontendApplicationConfigProvider.get();
|
|
287
|
-
if (preferenceName && FrontendApplicationPreferenceConfig.is(config) && preferenceName in config.preferences) {
|
|
288
|
-
return config.preferences[preferenceName];
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
getCombinedSchema(): PreferenceDataSchema {
|
|
293
|
-
return this.combinedSchema;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
getSchema(scope: PreferenceScope): PreferenceDataSchema {
|
|
297
|
-
switch (scope) {
|
|
298
|
-
case PreferenceScope.Default:
|
|
299
|
-
case PreferenceScope.User:
|
|
300
|
-
return this.combinedSchema;
|
|
301
|
-
case PreferenceScope.Workspace:
|
|
302
|
-
return this.workspaceSchema;
|
|
303
|
-
case PreferenceScope.Folder:
|
|
304
|
-
return this.folderSchema;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
setSchema(schema: PreferenceSchema): Disposable {
|
|
309
|
-
const changes = this.doSetSchema(schema);
|
|
310
|
-
if (!changes.length) {
|
|
311
|
-
return Disposable.NULL;
|
|
312
|
-
}
|
|
313
|
-
this.fireDidPreferenceSchemaChanged();
|
|
314
|
-
this.emitPreferencesChangedEvent(changes);
|
|
315
|
-
return Disposable.create(() => {
|
|
316
|
-
const inverseChanges = this.doUnsetSchema(changes);
|
|
317
|
-
if (!inverseChanges.length) {
|
|
318
|
-
return;
|
|
319
|
-
}
|
|
320
|
-
this.fireDidPreferenceSchemaChanged();
|
|
321
|
-
this.emitPreferencesChangedEvent(inverseChanges);
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
getPreferences(): { [name: string]: any } {
|
|
326
|
-
return this.preferences;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
async setPreference(): Promise<boolean> {
|
|
330
|
-
return false;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
isValidInScope(preferenceName: string, scope: PreferenceScope): boolean {
|
|
334
|
-
let property;
|
|
335
|
-
const overridden = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
|
|
336
|
-
if (overridden) {
|
|
337
|
-
// try from overridden schema
|
|
338
|
-
property = this.overridePatternProperties[`[${overridden.overrideIdentifier}]`];
|
|
339
|
-
property = property && property[overridden.preferenceName];
|
|
340
|
-
if (!property) {
|
|
341
|
-
// try from overridden identifier
|
|
342
|
-
property = this.overridePatternProperties[overridden.preferenceName];
|
|
343
|
-
}
|
|
344
|
-
if (!property) {
|
|
345
|
-
// try from overridden value
|
|
346
|
-
property = this.combinedSchema.properties[overridden.preferenceName];
|
|
347
|
-
}
|
|
348
|
-
} else {
|
|
349
|
-
property = this.combinedSchema.properties[preferenceName];
|
|
350
|
-
}
|
|
351
|
-
return property && property.scope! >= scope;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
*getPreferenceNames(): IterableIterator<string> {
|
|
355
|
-
for (const preferenceName in this.combinedSchema.properties) {
|
|
356
|
-
yield preferenceName;
|
|
357
|
-
for (const overridePreferenceName of this.getOverridePreferenceNames(preferenceName)) {
|
|
358
|
-
yield overridePreferenceName;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
getOverridePreferenceNames(preferenceName: string): IterableIterator<string> {
|
|
364
|
-
const preference = this.combinedSchema.properties[preferenceName];
|
|
365
|
-
if (preference && preference.overridable) {
|
|
366
|
-
return this.preferenceOverrideService.getOverridePreferenceNames(preferenceName);
|
|
367
|
-
}
|
|
368
|
-
return [][Symbol.iterator]();
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
getSchemaProperty(key: string): PreferenceDataProperty | undefined {
|
|
372
|
-
return this.combinedSchema.properties[key];
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* {@link property} will be assigned to field {@link key} in the schema.
|
|
377
|
-
* Pass a new object to invalidate old schema.
|
|
378
|
-
*/
|
|
379
|
-
updateSchemaProperty(key: string, property: PreferenceDataProperty): void {
|
|
380
|
-
this.updateSchemaProps(key, property);
|
|
381
|
-
this.fireDidPreferenceSchemaChanged();
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
protected updateSchemaProps(key: string, property: PreferenceDataProperty): void {
|
|
385
|
-
this.combinedSchema.properties[key] = property;
|
|
386
|
-
|
|
387
|
-
switch (property.scope) {
|
|
388
|
-
case PreferenceScope.Folder:
|
|
389
|
-
this.folderSchema.properties[key] = property;
|
|
390
|
-
// Fall through. isValidInScope implies that User ⊃ Workspace ⊃ Folder,
|
|
391
|
-
// so anything we add to folder should be added to workspace, but not vice versa.
|
|
392
|
-
case PreferenceScope.Workspace:
|
|
393
|
-
this.workspaceSchema.properties[key] = property;
|
|
394
|
-
break;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
protected updateSchemaPropsDefault(key: string, property: PreferenceDataProperty): void {
|
|
399
|
-
this.combinedSchema.properties[key].default = property.default;
|
|
400
|
-
this.combinedSchema.properties[key].defaultValue = property.defaultValue;
|
|
401
|
-
if (this.workspaceSchema.properties[key]) {
|
|
402
|
-
this.workspaceSchema.properties[key].default = property.default;
|
|
403
|
-
this.workspaceSchema.properties[key].defaultValue = property.defaultValue;
|
|
404
|
-
}
|
|
405
|
-
if (this.folderSchema.properties[key]) {
|
|
406
|
-
this.folderSchema.properties[key].default = property.default;
|
|
407
|
-
this.folderSchema.properties[key].defaultValue = property.defaultValue;
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
protected removePropFromSchemas(key: string): void {
|
|
412
|
-
// If we remove a key from combined, it should also be removed from all narrower scopes.
|
|
413
|
-
delete this.combinedSchema.properties[key];
|
|
414
|
-
delete this.workspaceSchema.properties[key];
|
|
415
|
-
delete this.folderSchema.properties[key];
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
protected readConfiguredPreferences(): void {
|
|
419
|
-
const config = FrontendApplicationConfigProvider.get();
|
|
420
|
-
if (FrontendApplicationPreferenceConfig.is(config)) {
|
|
421
|
-
try {
|
|
422
|
-
const configuredDefaults = config.preferences;
|
|
423
|
-
const parsedDefaults = this.getParsedContent(configuredDefaults);
|
|
424
|
-
Object.assign(this.preferences, parsedDefaults);
|
|
425
|
-
const scope = PreferenceScope.Default;
|
|
426
|
-
const domain = this.getDomain();
|
|
427
|
-
const changes: PreferenceProviderDataChange[] = Object.keys(this.preferences)
|
|
428
|
-
.map((key): PreferenceProviderDataChange => ({ preferenceName: key, oldValue: undefined, newValue: this.preferences[key], scope, domain }));
|
|
429
|
-
this.emitPreferencesChangedEvent(changes);
|
|
430
|
-
} catch (e) {
|
|
431
|
-
console.error('Failed to load preferences from frontend configuration.', e);
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
}
|