Skip to content

Commit 7f928f2

Browse files
authored
Make Notebook preferences registration substitutable (#13926)
Implement the commonly employed pattern for preference contribution registration to enable substitution of the Notebook preference schema. Fixes #13913 Signed-off-by: Christian W. Damus <[email protected]>
1 parent 8ad18ea commit 7f928f2

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

packages/notebook/src/browser/contributions/notebook-preferences.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
*--------------------------------------------------------------------------------------------*/
2020

2121
import { nls } from '@theia/core';
22-
import { PreferenceSchema } from '@theia/core/lib/browser';
22+
import { interfaces } from '@theia/core/shared/inversify';
23+
import { PreferenceContribution, PreferenceSchema } from '@theia/core/lib/browser';
2324

2425
export namespace NotebookPreferences {
2526
export const NOTEBOOK_LINE_NUMBERS = 'notebook.lineNumbers';
@@ -81,3 +82,11 @@ export const notebookPreferenceSchema: PreferenceSchema = {
8182

8283
}
8384
};
85+
86+
export const NotebookPreferenceContribution = Symbol('NotebookPreferenceContribution');
87+
88+
export function bindNotebookPreferences(bind: interfaces.Bind): void {
89+
// We don't need a NotebookPreferenceConfiguration class, so there's no preference proxy to bind
90+
bind(NotebookPreferenceContribution).toConstantValue({ schema: notebookPreferenceSchema });
91+
bind(PreferenceContribution).toService(NotebookPreferenceContribution);
92+
}

packages/notebook/src/browser/notebook-frontend-module.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import '../../src/browser/style/index.css';
1717

1818
import { ContainerModule } from '@theia/core/shared/inversify';
19-
import { FrontendApplicationContribution, KeybindingContribution, LabelProviderContribution, OpenHandler, PreferenceContribution, WidgetFactory } from '@theia/core/lib/browser';
19+
import { FrontendApplicationContribution, KeybindingContribution, LabelProviderContribution, OpenHandler, WidgetFactory } from '@theia/core/lib/browser';
2020
import { ColorContribution } from '@theia/core/lib/browser/color-application-contribution';
2121
import { NotebookOpenHandler } from './notebook-open-handler';
2222
import { CommandContribution, MenuContribution, ResourceResolver, } from '@theia/core';
@@ -44,7 +44,7 @@ import { NotebookOutlineContribution } from './contributions/notebook-outline-co
4444
import { NotebookLabelProviderContribution } from './contributions/notebook-label-provider-contribution';
4545
import { NotebookOutputActionContribution } from './contributions/notebook-output-action-contribution';
4646
import { NotebookClipboardService } from './service/notebook-clipboard-service';
47-
import { notebookPreferenceSchema } from './contributions/notebook-preferences';
47+
import { bindNotebookPreferences } from './contributions/notebook-preferences';
4848
import { NotebookOptionsService } from './service/notebook-options';
4949

5050
export default new ContainerModule((bind, unbind, isBound, rebind) => {
@@ -106,6 +106,6 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
106106
bind(NotebookLabelProviderContribution).toSelf().inSingletonScope();
107107
bind(LabelProviderContribution).toService(NotebookLabelProviderContribution);
108108

109-
bind(PreferenceContribution).toConstantValue({ schema: notebookPreferenceSchema });
109+
bindNotebookPreferences(bind);
110110
bind(NotebookOptionsService).toSelf().inSingletonScope();
111111
});

0 commit comments

Comments
 (0)