preferences.ts 2.7 KB
Newer Older
1 2 3 4 5
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

S
Sandeep Somavarapu 已提交
6
import URI from 'vs/base/common/uri';
7
import { TPromise } from 'vs/base/common/winjs.base';
S
Sandeep Somavarapu 已提交
8
import { LinkedMap as Map } from 'vs/base/common/map';
S
Sandeep Somavarapu 已提交
9
import { IRange } from 'vs/editor/common/editorCommon';
S
Sandeep Somavarapu 已提交
10 11
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { RawContextKey } from 'vs/platform/contextkey/common/contextkey';
12
import { IEditor } from 'vs/platform/editor/common/editor';
S
Sandeep Somavarapu 已提交
13 14

export interface ISettingsGroup {
S
Sandeep Somavarapu 已提交
15
	id: string;
16
	range: IRange;
S
Sandeep Somavarapu 已提交
17
	title: string;
18
	titleRange: IRange;
S
Sandeep Somavarapu 已提交
19 20 21 22
	sections: ISettingsSection[];
}

export interface ISettingsSection {
23 24
	titleRange?: IRange;
	title?: string;
S
Sandeep Somavarapu 已提交
25 26 27 28
	settings: ISetting[];
}

export interface ISetting {
29
	range: IRange;
S
Sandeep Somavarapu 已提交
30
	key: string;
S
Sandeep Somavarapu 已提交
31
	keyRange: IRange;
S
Sandeep Somavarapu 已提交
32
	value: any;
33
	valueRange: IRange;
34 35
	description: string[];
	descriptionRanges: IRange[];
36 37
	overrides?: ISetting[];
	overrideOf?: ISetting;
S
Sandeep Somavarapu 已提交
38 39
}

S
Sandeep Somavarapu 已提交
40 41 42 43 44 45
export interface IFilterResult {
	filteredGroups: ISettingsGroup[];
	allGroups: ISettingsGroup[];
	matches: Map<string, IRange[]>;
}

46
export interface IPreferencesEditorModel<T> {
S
Sandeep Somavarapu 已提交
47 48
	uri: URI;
	content: string;
49
	getPreference(key: string): T;
50 51
}

52
export interface ISettingsEditorModel extends IPreferencesEditorModel<ISetting> {
53
	settingsGroups: ISettingsGroup[];
S
Sandeep Somavarapu 已提交
54 55
	groupsTerms: string[];
	filterSettings(filter: string): IFilterResult;
S
Sandeep Somavarapu 已提交
56 57
}

58
export interface IKeybindingsEditorModel<T> extends IPreferencesEditorModel<T> {
S
Sandeep Somavarapu 已提交
59
}
60

61
export const IPreferencesService = createDecorator<IPreferencesService>('preferencesService');
62

63
export interface IPreferencesService {
64 65
	_serviceBrand: any;

66
	defaultSettingsResource: URI;
67 68
	userSettingsResource: URI;
	workspaceSettingsResource: URI;
69 70
	defaultKeybindingsResource: URI;

71 72
	createDefaultPreferencesEditorModel<T>(uri: URI): TPromise<IPreferencesEditorModel<T>>;
	resolvePreferencesEditorModel<T>(uri: URI): TPromise<IPreferencesEditorModel<T>>;
S
Sandeep Somavarapu 已提交
73

74
	openSettings(): TPromise<IEditor>;
75
	switchSettings(): TPromise<void>;
76 77
	openGlobalSettings(): TPromise<IEditor>;
	openWorkspaceSettings(): TPromise<IEditor>;
78
	openGlobalKeybindingSettings(): TPromise<void>;
79 80

	configureSettingsForLanguage(language: string): void;
S
Sandeep Somavarapu 已提交
81 82 83
}

export const CONTEXT_DEFAULT_SETTINGS_EDITOR = new RawContextKey<boolean>('defaultSettingsEditor', false);
84 85
export const DEFAULT_EDITOR_COMMAND_COLLAPSE_ALL = 'defaultSettingsEditor.action.collapseAllGroups';
export const DEFAULT_EDITOR_COMMAND_FOCUS_SEARCH = 'defaultSettings.action.focusSearch';