-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
Copy pathdebug-preferences.ts
67 lines (60 loc) · 2.97 KB
/
debug-preferences.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/********************************************************************************
* Copyright (C) 2018 Ericsson and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
import { PreferenceSchema, PreferenceProxy, PreferenceService, createPreferenceProxy, PreferenceContribution } from '@theia/core/lib/browser/preferences';
import { interfaces } from 'inversify';
export const debugPreferencesSchema: PreferenceSchema = {
type: 'object',
properties: {
'debug.trace': {
type: 'boolean',
default: false,
description: 'Enable/disable tracing communications with debug adapters'
},
'debug.debugViewLocation': {
enum: ['default', 'left', 'right', 'bottom'],
default: 'default',
description: 'Controls the location of the debug view.'
},
'debug.openDebug': {
enum: ['neverOpen', 'openOnSessionStart', 'openOnFirstSessionStart', 'openOnDebugBreak'],
default: 'openOnSessionStart',
description: 'Controls when the debug view should open.'
},
'debug.internalConsoleOptions': {
enum: ['neverOpen', 'openOnSessionStart', 'openOnFirstSessionStart'],
default: 'openOnFirstSessionStart',
description: 'Controls when the internal debug console should open.'
}
}
};
export class DebugConfiguration {
'debug.trace': boolean;
'debug.debugViewLocation': 'default' | 'left' | 'right' | 'bottom';
'debug.openDebug': 'neverOpen' | 'openOnSessionStart' | 'openOnFirstSessionStart' | 'openOnDebugBreak';
'debug.internalConsoleOptions': 'neverOpen' | 'openOnSessionStart' | 'openOnFirstSessionStart';
}
export const DebugPreferences = Symbol('DebugPreferences');
export type DebugPreferences = PreferenceProxy<DebugConfiguration>;
export function createDebugPreferences(preferences: PreferenceService): DebugPreferences {
return createPreferenceProxy(preferences, debugPreferencesSchema);
}
export function bindDebugPreferences(bind: interfaces.Bind): void {
bind(DebugPreferences).toDynamicValue(ctx => {
const preferences = ctx.container.get<PreferenceService>(PreferenceService);
return createDebugPreferences(preferences);
}).inSingletonScope();
bind(PreferenceContribution).toConstantValue({ schema: debugPreferencesSchema });
}