modeService.ts 4.2 KB
Newer Older
E
Erich Gamma 已提交
1 2 3 4 5 6 7 8 9 10 11
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
'use strict';

import {createDecorator, ServiceIdentifier} from 'vs/platform/instantiation/common/instantiation';
import {TPromise} from 'vs/base/common/winjs.base';
import Modes = require('vs/editor/common/modes');
import MonarchTypes = require('vs/editor/common/modes/monarch/monarchTypes');
import {IDisposable} from 'vs/base/common/lifecycle';
12
import {IRichEditConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
13
import {IDeclarationContribution} from 'vs/editor/common/modes/supports/declarationSupport';
14
import {IReferenceContribution} from 'vs/editor/common/modes/supports/referenceSupport';
15
import {IParameterHintsContribution} from 'vs/editor/common/modes/supports/parameterHintsSupport';
16
import {ISuggestContribution} from 'vs/editor/common/modes/supports/suggestSupport';
17
import Event from 'vs/base/common/event';
18
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
E
Erich Gamma 已提交
19 20 21 22 23 24 25 26

export var IModeService = createDecorator<IModeService>('modeService');

export interface IModeLookupResult {
	modeId: string;
	isInstantiated: boolean;
}

27 28 29 30 31 32 33 34 35 36 37
export interface ILanguageExtensionPoint {
	id: string;
	extensions?: string[];
	filenames?: string[];
	filenamePatterns?: string[];
	firstLine?: string;
	aliases?: string[];
	mimetypes?: string[];
	configuration?: string;
}

E
Erich Gamma 已提交
38 39 40
export interface IModeService {
	serviceId: ServiceIdentifier<any>;

41
	onDidAddModes: Event<string[]>;
42

E
Erich Gamma 已提交
43 44 45 46 47
	configureMode(modeName: string, options: any): void;
	configureModeById(modeId: string, options: any): void;
	configureAllModes(config:any): void;
	getConfigurationForMode(modeId:string): any;

48
	// --- reading
49
	isRegisteredMode(mimetypeOrModeId: string): boolean;
50
	getRegisteredModes(): string[];
51 52 53 54 55 56
	getRegisteredLanguageNames(): string[];
	getExtensions(alias: string): string[];
	getMimeForMode(modeId: string): string;
	getLanguageName(modeId:string): string;
	getModeIdForLanguageName(alias:string): string;
	getModeId(commaSeparatedMimetypesOrCommaSeparatedIds: string): string;
57
	getConfigurationFiles(modeId: string): string[];
58

E
Erich Gamma 已提交
59 60 61 62 63 64 65 66
	// --- instantiation
	lookup(commaSeparatedMimetypesOrCommaSeparatedIds: string): IModeLookupResult[];
	getMode(commaSeparatedMimetypesOrCommaSeparatedIds: string): Modes.IMode;
	getOrCreateMode(commaSeparatedMimetypesOrCommaSeparatedIds: string): TPromise<Modes.IMode>;
	getOrCreateModeByLanguageName(languageName: string): TPromise<Modes.IMode>;
	getOrCreateModeByFilenameOrFirstLine(filename: string, firstLine?:string): TPromise<Modes.IMode>;

	registerCodeLensSupport(modeId: string, support: Modes.ICodeLensSupport): IDisposable;
67
	registerDeclarativeDeclarationSupport(modeId: string, contribution: IDeclarationContribution): IDisposable;
E
Erich Gamma 已提交
68 69 70 71 72
	registerExtraInfoSupport(modeId: string, support: Modes.IExtraInfoSupport): IDisposable;
	registerFormattingSupport(modeId: string, support: Modes.IFormattingSupport): IDisposable;
	registerInplaceReplaceSupport(modeId: string, support: Modes.IInplaceReplaceSupport): IDisposable;
	registerOccurrencesSupport(modeId: string, support: Modes.IOccurrencesSupport): IDisposable;
	registerOutlineSupport(modeId: string, support: Modes.IOutlineSupport): IDisposable;
73
	registerDeclarativeParameterHintsSupport(modeId: string, support: IParameterHintsContribution): IDisposable;
E
Erich Gamma 已提交
74
	registerQuickFixSupport(modeId: string, support: Modes.IQuickFixSupport): IDisposable;
75
	registerDeclarativeReferenceSupport(modeId: string, contribution: IReferenceContribution): IDisposable;
E
Erich Gamma 已提交
76
	registerRenameSupport(modeId: string, support: Modes.IRenameSupport): IDisposable;
77
	registerDeclarativeSuggestSupport(modeId: string, declaration: ISuggestContribution): IDisposable;
E
Erich Gamma 已提交
78
	registerTokenizationSupport(modeId: string, callback: (mode: Modes.IMode) => Modes.ITokenizationSupport): IDisposable;
79
	registerRichEditSupport(modeId: string, support: IRichEditConfiguration): IDisposable;
E
Erich Gamma 已提交
80

81
	registerMonarchDefinition(editorWorkerService:IEditorWorkerService, modeId:string, language:MonarchTypes.ILanguage): IDisposable;
E
Erich Gamma 已提交
82
}