@theia/search-in-workspace 1.53.0-next.55 → 1.53.0-next.64

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.
@@ -1,83 +1,83 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2017-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 '../../src/browser/styles/index.css';
18
-
19
- import { ContainerModule, interfaces } from '@theia/core/shared/inversify';
20
- import { SearchInWorkspaceService, SearchInWorkspaceClientImpl } from './search-in-workspace-service';
21
- import { SearchInWorkspaceServer, SIW_WS_PATH } from '../common/search-in-workspace-interface';
22
- import {
23
- WebSocketConnectionProvider, WidgetFactory, createTreeContainer, bindViewContribution, FrontendApplicationContribution, LabelProviderContribution,
24
- ApplicationShellLayoutMigration,
25
- StylingParticipant
26
- } from '@theia/core/lib/browser';
27
- import { SearchInWorkspaceWidget } from './search-in-workspace-widget';
28
- import { SearchInWorkspaceResultTreeWidget } from './search-in-workspace-result-tree-widget';
29
- import { SearchInWorkspaceFrontendContribution } from './search-in-workspace-frontend-contribution';
30
- import { SearchInWorkspaceContextKeyService } from './search-in-workspace-context-key-service';
31
- import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
32
- import { bindSearchInWorkspacePreferences } from './search-in-workspace-preferences';
33
- import { SearchInWorkspaceLabelProvider } from './search-in-workspace-label-provider';
34
- import { SearchInWorkspaceFactory } from './search-in-workspace-factory';
35
- import { SearchLayoutVersion3Migration } from './search-layout-migrations';
36
-
37
- export default new ContainerModule(bind => {
38
- bind(SearchInWorkspaceContextKeyService).toSelf().inSingletonScope();
39
-
40
- bind(SearchInWorkspaceWidget).toSelf();
41
- bind<WidgetFactory>(WidgetFactory).toDynamicValue(ctx => ({
42
- id: SearchInWorkspaceWidget.ID,
43
- createWidget: () => ctx.container.get(SearchInWorkspaceWidget)
44
- }));
45
- bind(SearchInWorkspaceResultTreeWidget).toDynamicValue(ctx => createSearchTreeWidget(ctx.container));
46
- bind(SearchInWorkspaceFactory).toSelf().inSingletonScope();
47
- bind(WidgetFactory).toService(SearchInWorkspaceFactory);
48
- bind(ApplicationShellLayoutMigration).to(SearchLayoutVersion3Migration).inSingletonScope();
49
-
50
- bindViewContribution(bind, SearchInWorkspaceFrontendContribution);
51
- bind(FrontendApplicationContribution).toService(SearchInWorkspaceFrontendContribution);
52
- bind(TabBarToolbarContribution).toService(SearchInWorkspaceFrontendContribution);
53
- bind(StylingParticipant).toService(SearchInWorkspaceFrontendContribution);
54
-
55
- // The object that gets notified of search results.
56
- bind(SearchInWorkspaceClientImpl).toSelf().inSingletonScope();
57
-
58
- bind(SearchInWorkspaceService).toSelf().inSingletonScope();
59
-
60
- // The object to call methods on the backend.
61
- bind(SearchInWorkspaceServer).toDynamicValue(ctx => {
62
- const client = ctx.container.get(SearchInWorkspaceClientImpl);
63
- return WebSocketConnectionProvider.createProxy(ctx.container, SIW_WS_PATH, client);
64
- }).inSingletonScope();
65
-
66
- bindSearchInWorkspacePreferences(bind);
67
-
68
- bind(SearchInWorkspaceLabelProvider).toSelf().inSingletonScope();
69
- bind(LabelProviderContribution).toService(SearchInWorkspaceLabelProvider);
70
- });
71
-
72
- export function createSearchTreeWidget(parent: interfaces.Container): SearchInWorkspaceResultTreeWidget {
73
- const child = createTreeContainer(parent, {
74
- widget: SearchInWorkspaceResultTreeWidget,
75
- props: {
76
- contextMenuPath: SearchInWorkspaceResultTreeWidget.Menus.BASE,
77
- multiSelect: true,
78
- globalSelection: true
79
- }
80
- });
81
-
82
- return child.get(SearchInWorkspaceResultTreeWidget);
83
- }
1
+ // *****************************************************************************
2
+ // Copyright (C) 2017-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 '../../src/browser/styles/index.css';
18
+
19
+ import { ContainerModule, interfaces } from '@theia/core/shared/inversify';
20
+ import { SearchInWorkspaceService, SearchInWorkspaceClientImpl } from './search-in-workspace-service';
21
+ import { SearchInWorkspaceServer, SIW_WS_PATH } from '../common/search-in-workspace-interface';
22
+ import {
23
+ WebSocketConnectionProvider, WidgetFactory, createTreeContainer, bindViewContribution, FrontendApplicationContribution, LabelProviderContribution,
24
+ ApplicationShellLayoutMigration,
25
+ StylingParticipant
26
+ } from '@theia/core/lib/browser';
27
+ import { SearchInWorkspaceWidget } from './search-in-workspace-widget';
28
+ import { SearchInWorkspaceResultTreeWidget } from './search-in-workspace-result-tree-widget';
29
+ import { SearchInWorkspaceFrontendContribution } from './search-in-workspace-frontend-contribution';
30
+ import { SearchInWorkspaceContextKeyService } from './search-in-workspace-context-key-service';
31
+ import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
32
+ import { bindSearchInWorkspacePreferences } from './search-in-workspace-preferences';
33
+ import { SearchInWorkspaceLabelProvider } from './search-in-workspace-label-provider';
34
+ import { SearchInWorkspaceFactory } from './search-in-workspace-factory';
35
+ import { SearchLayoutVersion3Migration } from './search-layout-migrations';
36
+
37
+ export default new ContainerModule(bind => {
38
+ bind(SearchInWorkspaceContextKeyService).toSelf().inSingletonScope();
39
+
40
+ bind(SearchInWorkspaceWidget).toSelf();
41
+ bind<WidgetFactory>(WidgetFactory).toDynamicValue(ctx => ({
42
+ id: SearchInWorkspaceWidget.ID,
43
+ createWidget: () => ctx.container.get(SearchInWorkspaceWidget)
44
+ }));
45
+ bind(SearchInWorkspaceResultTreeWidget).toDynamicValue(ctx => createSearchTreeWidget(ctx.container));
46
+ bind(SearchInWorkspaceFactory).toSelf().inSingletonScope();
47
+ bind(WidgetFactory).toService(SearchInWorkspaceFactory);
48
+ bind(ApplicationShellLayoutMigration).to(SearchLayoutVersion3Migration).inSingletonScope();
49
+
50
+ bindViewContribution(bind, SearchInWorkspaceFrontendContribution);
51
+ bind(FrontendApplicationContribution).toService(SearchInWorkspaceFrontendContribution);
52
+ bind(TabBarToolbarContribution).toService(SearchInWorkspaceFrontendContribution);
53
+ bind(StylingParticipant).toService(SearchInWorkspaceFrontendContribution);
54
+
55
+ // The object that gets notified of search results.
56
+ bind(SearchInWorkspaceClientImpl).toSelf().inSingletonScope();
57
+
58
+ bind(SearchInWorkspaceService).toSelf().inSingletonScope();
59
+
60
+ // The object to call methods on the backend.
61
+ bind(SearchInWorkspaceServer).toDynamicValue(ctx => {
62
+ const client = ctx.container.get(SearchInWorkspaceClientImpl);
63
+ return WebSocketConnectionProvider.createProxy(ctx.container, SIW_WS_PATH, client);
64
+ }).inSingletonScope();
65
+
66
+ bindSearchInWorkspacePreferences(bind);
67
+
68
+ bind(SearchInWorkspaceLabelProvider).toSelf().inSingletonScope();
69
+ bind(LabelProviderContribution).toService(SearchInWorkspaceLabelProvider);
70
+ });
71
+
72
+ export function createSearchTreeWidget(parent: interfaces.Container): SearchInWorkspaceResultTreeWidget {
73
+ const child = createTreeContainer(parent, {
74
+ widget: SearchInWorkspaceResultTreeWidget,
75
+ props: {
76
+ contextMenuPath: SearchInWorkspaceResultTreeWidget.Menus.BASE,
77
+ multiSelect: true,
78
+ globalSelection: true
79
+ }
80
+ });
81
+
82
+ return child.get(SearchInWorkspaceResultTreeWidget);
83
+ }
@@ -1,48 +1,48 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2019 TypeFox 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, inject } from '@theia/core/shared/inversify';
18
- import { LabelProviderContribution, LabelProvider, DidChangeLabelEvent } from '@theia/core/lib/browser/label-provider';
19
- import { SearchInWorkspaceRootFolderNode, SearchInWorkspaceFileNode } from './search-in-workspace-result-tree-widget';
20
- import URI from '@theia/core/lib/common/uri';
21
-
22
- @injectable()
23
- export class SearchInWorkspaceLabelProvider implements LabelProviderContribution {
24
-
25
- @inject(LabelProvider)
26
- protected readonly labelProvider: LabelProvider;
27
-
28
- canHandle(element: object): number {
29
- return SearchInWorkspaceRootFolderNode.is(element) || SearchInWorkspaceFileNode.is(element) ? 100 : 0;
30
- }
31
-
32
- getIcon(node: SearchInWorkspaceRootFolderNode | SearchInWorkspaceFileNode): string {
33
- if (SearchInWorkspaceFileNode.is(node)) {
34
- return this.labelProvider.getIcon(new URI(node.fileUri).withScheme('file'));
35
- }
36
- return this.labelProvider.folderIcon;
37
- }
38
-
39
- getName(node: SearchInWorkspaceRootFolderNode | SearchInWorkspaceFileNode): string {
40
- const uri = SearchInWorkspaceFileNode.is(node) ? node.fileUri : node.folderUri;
41
- return new URI(uri).displayName;
42
- }
43
-
44
- affects(node: SearchInWorkspaceRootFolderNode | SearchInWorkspaceFileNode, event: DidChangeLabelEvent): boolean {
45
- return SearchInWorkspaceFileNode.is(node) && event.affects(new URI(node.fileUri).withScheme('file'));
46
- }
47
-
48
- }
1
+ // *****************************************************************************
2
+ // Copyright (C) 2019 TypeFox 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, inject } from '@theia/core/shared/inversify';
18
+ import { LabelProviderContribution, LabelProvider, DidChangeLabelEvent } from '@theia/core/lib/browser/label-provider';
19
+ import { SearchInWorkspaceRootFolderNode, SearchInWorkspaceFileNode } from './search-in-workspace-result-tree-widget';
20
+ import URI from '@theia/core/lib/common/uri';
21
+
22
+ @injectable()
23
+ export class SearchInWorkspaceLabelProvider implements LabelProviderContribution {
24
+
25
+ @inject(LabelProvider)
26
+ protected readonly labelProvider: LabelProvider;
27
+
28
+ canHandle(element: object): number {
29
+ return SearchInWorkspaceRootFolderNode.is(element) || SearchInWorkspaceFileNode.is(element) ? 100 : 0;
30
+ }
31
+
32
+ getIcon(node: SearchInWorkspaceRootFolderNode | SearchInWorkspaceFileNode): string {
33
+ if (SearchInWorkspaceFileNode.is(node)) {
34
+ return this.labelProvider.getIcon(new URI(node.fileUri).withScheme('file'));
35
+ }
36
+ return this.labelProvider.folderIcon;
37
+ }
38
+
39
+ getName(node: SearchInWorkspaceRootFolderNode | SearchInWorkspaceFileNode): string {
40
+ const uri = SearchInWorkspaceFileNode.is(node) ? node.fileUri : node.folderUri;
41
+ return new URI(uri).displayName;
42
+ }
43
+
44
+ affects(node: SearchInWorkspaceRootFolderNode | SearchInWorkspaceFileNode, event: DidChangeLabelEvent): boolean {
45
+ return SearchInWorkspaceFileNode.is(node) && event.affects(new URI(node.fileUri).withScheme('file'));
46
+ }
47
+
48
+ }
@@ -1,96 +1,96 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2019 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 { nls } from '@theia/core/lib/common/nls';
18
- import { PreferenceSchema, PreferenceProxy, PreferenceService, createPreferenceProxy, PreferenceContribution } from '@theia/core/lib/browser/preferences';
19
- import { interfaces } from '@theia/core/shared/inversify';
20
-
21
- export const searchInWorkspacePreferencesSchema: PreferenceSchema = {
22
- type: 'object',
23
- properties: {
24
- 'search.lineNumbers': {
25
- description: nls.localizeByDefault('Controls whether to show line numbers for search results.'),
26
- default: false,
27
- type: 'boolean',
28
- },
29
- 'search.collapseResults': {
30
- description: nls.localizeByDefault('Controls whether the search results will be collapsed or expanded.'),
31
- default: 'auto',
32
- type: 'string',
33
- enum: ['auto', 'alwaysCollapse', 'alwaysExpand'],
34
- },
35
- 'search.quickOpen.includeHistory': {
36
- description: nls.localizeByDefault('Whether to include results from recently opened files in the file results for Quick Open.'),
37
- default: true,
38
- type: 'boolean',
39
- },
40
- 'search.searchOnType': {
41
- description: nls.localizeByDefault('Search all files as you type.'),
42
- default: true,
43
- type: 'boolean',
44
- },
45
- 'search.searchOnTypeDebouncePeriod': {
46
- // eslint-disable-next-line max-len
47
- markdownDescription: nls.localizeByDefault('When {0} is enabled, controls the timeout in milliseconds between a character being typed and the search starting. Has no effect when {0} is disabled.', '`#search.searchOnType#`'),
48
- default: 300,
49
- type: 'number',
50
- },
51
- 'search.searchOnEditorModification': {
52
- description: nls.localize('theia/search-in-workspace/searchOnEditorModification', 'Search the active editor when modified.'),
53
- default: true,
54
- type: 'boolean',
55
- },
56
- 'search.smartCase': {
57
- // eslint-disable-next-line max-len
58
- description: nls.localizeByDefault('Search case-insensitively if the pattern is all lowercase, otherwise, search case-sensitively.'),
59
- default: false,
60
- type: 'boolean',
61
- },
62
- 'search.followSymlinks': {
63
- description: nls.localizeByDefault('Controls whether to follow symlinks while searching.'),
64
- default: true,
65
- type: 'boolean',
66
- }
67
- }
68
- };
69
-
70
- export class SearchInWorkspaceConfiguration {
71
- 'search.lineNumbers': boolean;
72
- 'search.collapseResults': string;
73
- 'search.searchOnType': boolean;
74
- 'search.searchOnTypeDebouncePeriod': number;
75
- 'search.searchOnEditorModification': boolean;
76
- 'search.smartCase': boolean;
77
- 'search.followSymlinks': boolean;
78
- }
79
-
80
- export const SearchInWorkspacePreferenceContribution = Symbol('SearchInWorkspacePreferenceContribution');
81
- export const SearchInWorkspacePreferences = Symbol('SearchInWorkspacePreferences');
82
- export type SearchInWorkspacePreferences = PreferenceProxy<SearchInWorkspaceConfiguration>;
83
-
84
- export function createSearchInWorkspacePreferences(preferences: PreferenceService, schema: PreferenceSchema = searchInWorkspacePreferencesSchema): SearchInWorkspacePreferences {
85
- return createPreferenceProxy(preferences, schema);
86
- }
87
-
88
- export function bindSearchInWorkspacePreferences(bind: interfaces.Bind): void {
89
- bind(SearchInWorkspacePreferences).toDynamicValue(ctx => {
90
- const preferences = ctx.container.get<PreferenceService>(PreferenceService);
91
- const contribution = ctx.container.get<PreferenceContribution>(SearchInWorkspacePreferenceContribution);
92
- return createSearchInWorkspacePreferences(preferences, contribution.schema);
93
- }).inSingletonScope();
94
- bind(SearchInWorkspacePreferenceContribution).toConstantValue({ schema: searchInWorkspacePreferencesSchema });
95
- bind(PreferenceContribution).toService(SearchInWorkspacePreferenceContribution);
96
- }
1
+ // *****************************************************************************
2
+ // Copyright (C) 2019 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 { nls } from '@theia/core/lib/common/nls';
18
+ import { PreferenceSchema, PreferenceProxy, PreferenceService, createPreferenceProxy, PreferenceContribution } from '@theia/core/lib/browser/preferences';
19
+ import { interfaces } from '@theia/core/shared/inversify';
20
+
21
+ export const searchInWorkspacePreferencesSchema: PreferenceSchema = {
22
+ type: 'object',
23
+ properties: {
24
+ 'search.lineNumbers': {
25
+ description: nls.localizeByDefault('Controls whether to show line numbers for search results.'),
26
+ default: false,
27
+ type: 'boolean',
28
+ },
29
+ 'search.collapseResults': {
30
+ description: nls.localizeByDefault('Controls whether the search results will be collapsed or expanded.'),
31
+ default: 'auto',
32
+ type: 'string',
33
+ enum: ['auto', 'alwaysCollapse', 'alwaysExpand'],
34
+ },
35
+ 'search.quickOpen.includeHistory': {
36
+ description: nls.localizeByDefault('Whether to include results from recently opened files in the file results for Quick Open.'),
37
+ default: true,
38
+ type: 'boolean',
39
+ },
40
+ 'search.searchOnType': {
41
+ description: nls.localizeByDefault('Search all files as you type.'),
42
+ default: true,
43
+ type: 'boolean',
44
+ },
45
+ 'search.searchOnTypeDebouncePeriod': {
46
+ // eslint-disable-next-line max-len
47
+ markdownDescription: nls.localizeByDefault('When {0} is enabled, controls the timeout in milliseconds between a character being typed and the search starting. Has no effect when {0} is disabled.', '`#search.searchOnType#`'),
48
+ default: 300,
49
+ type: 'number',
50
+ },
51
+ 'search.searchOnEditorModification': {
52
+ description: nls.localize('theia/search-in-workspace/searchOnEditorModification', 'Search the active editor when modified.'),
53
+ default: true,
54
+ type: 'boolean',
55
+ },
56
+ 'search.smartCase': {
57
+ // eslint-disable-next-line max-len
58
+ description: nls.localizeByDefault('Search case-insensitively if the pattern is all lowercase, otherwise, search case-sensitively.'),
59
+ default: false,
60
+ type: 'boolean',
61
+ },
62
+ 'search.followSymlinks': {
63
+ description: nls.localizeByDefault('Controls whether to follow symlinks while searching.'),
64
+ default: true,
65
+ type: 'boolean',
66
+ }
67
+ }
68
+ };
69
+
70
+ export class SearchInWorkspaceConfiguration {
71
+ 'search.lineNumbers': boolean;
72
+ 'search.collapseResults': string;
73
+ 'search.searchOnType': boolean;
74
+ 'search.searchOnTypeDebouncePeriod': number;
75
+ 'search.searchOnEditorModification': boolean;
76
+ 'search.smartCase': boolean;
77
+ 'search.followSymlinks': boolean;
78
+ }
79
+
80
+ export const SearchInWorkspacePreferenceContribution = Symbol('SearchInWorkspacePreferenceContribution');
81
+ export const SearchInWorkspacePreferences = Symbol('SearchInWorkspacePreferences');
82
+ export type SearchInWorkspacePreferences = PreferenceProxy<SearchInWorkspaceConfiguration>;
83
+
84
+ export function createSearchInWorkspacePreferences(preferences: PreferenceService, schema: PreferenceSchema = searchInWorkspacePreferencesSchema): SearchInWorkspacePreferences {
85
+ return createPreferenceProxy(preferences, schema);
86
+ }
87
+
88
+ export function bindSearchInWorkspacePreferences(bind: interfaces.Bind): void {
89
+ bind(SearchInWorkspacePreferences).toDynamicValue(ctx => {
90
+ const preferences = ctx.container.get<PreferenceService>(PreferenceService);
91
+ const contribution = ctx.container.get<PreferenceContribution>(SearchInWorkspacePreferenceContribution);
92
+ return createSearchInWorkspacePreferences(preferences, contribution.schema);
93
+ }).inSingletonScope();
94
+ bind(SearchInWorkspacePreferenceContribution).toConstantValue({ schema: searchInWorkspacePreferencesSchema });
95
+ bind(PreferenceContribution).toService(SearchInWorkspacePreferenceContribution);
96
+ }