Address Joh's feedback for the standalone editor API

This commit is contained in:
Alex Dima
2016-05-26 16:19:08 +02:00
parent e5ff72f890
commit e7352f726f
15 changed files with 57 additions and 93 deletions
+13 -57
View File
@@ -14,9 +14,9 @@ declare module monaco.worker {
declare module monaco.languages {
export function registerLanguageConfiguration(languageId: string, configuration: IRichEditConfiguration): IDisposable;
export function setLanguageConfiguration(languageId: string, configuration: IRichLanguageConfiguration): IDisposable;
export function registerTokensProvider(languageId: string, support: ITokenizationSupport2): IDisposable;
export function setTokensProvider(languageId: string, support: TokensProvider): IDisposable;
export function registerReferenceProvider(languageId: string, support: ReferenceProvider): IDisposable;
@@ -55,7 +55,7 @@ declare module monaco.languages {
blockComment?: CharacterPair;
}
export interface IRichEditConfiguration {
export interface IRichLanguageConfiguration {
comments?: CommentRule;
brackets?: CharacterPair[];
wordPattern?: RegExp;
@@ -103,25 +103,25 @@ declare module monaco.languages {
getId(): string;
}
export interface IToken2 {
export interface IToken {
startIndex: number;
scopes: string | string[];
}
export interface ILineTokens2 {
tokens: IToken2[];
endState: IState2;
export interface ILineTokens {
tokens: IToken[];
endState: IState;
retokenize?: Promise<void>;
}
export interface IState2 {
clone(): IState2;
equals(other: IState2): boolean;
export interface IState {
clone(): IState;
equals(other: IState): boolean;
}
export interface ITokenizationSupport2 {
getInitialState(): IState2;
tokenize(line: string, state: IState2): ILineTokens2;
export interface TokensProvider {
getInitialState(): IState;
tokenize(line: string, state: IState): ILineTokens;
}
/**
@@ -354,8 +354,6 @@ declare module monaco.languages {
declare module monaco.editor {
export function setupServices(services: IEditorOverrideServices): IEditorOverrideServices;
export function create(domElement: HTMLElement, options: IEditorConstructionOptions, services: IEditorOverrideServices): ICodeEditor;
export function createDiffEditor(domElement: HTMLElement, options: IDiffEditorConstructionOptions, services: IEditorOverrideServices): IDiffEditor;
@@ -2341,7 +2339,6 @@ declare module monaco.editor {
onDidChangeOptions(listener: (e: IModelOptionsChangedEvent) => void): IDisposable;
onDidChangeMode(listener: (e: IModelModeChangedEvent) => void): IDisposable;
onWillDispose(listener: () => void): IDisposable;
addBulkListener(listener: BulkListenerCallback): IDisposable;
/**
* A unique identifier associated with this model.
*/
@@ -3372,47 +3369,6 @@ declare module monaco.editor {
IDiffEditor: string;
};
export var EventType: {
Disposed: string;
ConfigurationChanged: string;
ModelDispose: string;
ModelChanged: string;
ModelTokensChanged: string;
ModelModeChanged: string;
ModelModeSupportChanged: string;
ModelOptionsChanged: string;
ModelRawContentChanged: string;
ModelContentChanged2: string;
ModelRawContentChangedFlush: string;
ModelRawContentChangedLinesDeleted: string;
ModelRawContentChangedLinesInserted: string;
ModelRawContentChangedLineChanged: string;
EditorTextBlur: string;
EditorTextFocus: string;
EditorFocus: string;
EditorBlur: string;
ModelDecorationsChanged: string;
CursorPositionChanged: string;
CursorSelectionChanged: string;
CursorRevealRange: string;
CursorScrollRequest: string;
ViewFocusGained: string;
ViewFocusLost: string;
ViewFocusChanged: string;
ViewScrollChanged: string;
ViewZonesChanged: string;
ViewLayoutChanged: string;
ContextMenu: string;
MouseDown: string;
MouseUp: string;
MouseMove: string;
MouseLeave: string;
KeyDown: string;
KeyUp: string;
EditorLayout: string;
DiffUpdated: string;
};
export var Handler: {
ExecuteCommand: string;
ExecuteCommands: string;
+2 -2
View File
@@ -14,11 +14,11 @@ declare module monaco.worker {
declare module monaco.languages {
#includeAll(vs/editor/browser/standalone/standaloneLanguages;modes.=>):
#include(vs/editor/common/modes/supports/richEditSupport): CommentRule, IRichEditConfiguration
#include(vs/editor/common/modes/supports/richEditSupport): CommentRule, IRichLanguageConfiguration
#include(vs/editor/common/modes/supports/onEnter): IIndentationRules, IOnEnterRegExpRules
#include(vs/editor/common/modes/supports/electricCharacter): IBracketElectricCharacterContribution, IDocComment
#include(vs/editor/common/modes/supports/characterPair): ICharacterPairContribution
#includeAll(vs/editor/common/modes;editorCommon.IRange=>IRange;editorCommon.IPosition=>IPosition;editorCommon.=>editor.):
#includeAll(vs/editor/common/modes;editorCommon.IRange=>IRange;editorCommon.IPosition=>IPosition;editorCommon.=>editor.;IToken2=>IToken;ILineTokens2=>ILineTokens;IState2=>IState):
#include(vs/editor/common/services/modeService): ILanguageExtensionPoint
}
@@ -46,6 +46,9 @@ function shallowClone<T>(obj:T): T {
return r;
}
/**
* @internal
*/
export function setupServices(services: IEditorOverrideServices): IEditorOverrideServices {
return startup.setupServices(services);
}
@@ -327,7 +330,6 @@ export function colorizeModelLine(model:IModel, lineNumber:number, tabSize:numbe
export function createMonacoEditorAPI()/*: typeof monaco.editor*/ {
return {
// methods
setupServices: setupServices,
create: create,
createDiffEditor: createDiffEditor,
@@ -16,15 +16,15 @@ import {ILanguageExtensionPoint} from 'vs/editor/common/services/modeService';
import {ensureStaticPlatformServices} from 'vs/editor/browser/standalone/standaloneServices';
import * as modes from 'vs/editor/common/modes';
import {startup} from './standaloneCodeEditor';
import {IRichEditConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {IRichLanguageConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
export function registerLanguageConfiguration(languageId:string, configuration:IRichEditConfiguration): IDisposable {
export function setLanguageConfiguration(languageId:string, configuration:IRichLanguageConfiguration): IDisposable {
startup.initStaticServicesIfNecessary();
let staticPlatformServices = ensureStaticPlatformServices(null);
return staticPlatformServices.modeService.registerRichEditSupport(languageId, configuration);
}
export function registerTokensProvider(languageId:string, support:modes.ITokenizationSupport2): IDisposable {
export function setTokensProvider(languageId:string, support:modes.TokensProvider): IDisposable {
startup.initStaticServicesIfNecessary();
let staticPlatformServices = ensureStaticPlatformServices(null);
return staticPlatformServices.modeService.registerTokenizationSupport2(languageId, support);
@@ -161,8 +161,8 @@ export function registerStandaloneSchema(uri:string, schema:IJSONSchema) {
export function createMonacoLanguagesAPI()/*: typeof monaco.languages*/ {
return {
// provider methods
registerLanguageConfiguration: registerLanguageConfiguration,
registerTokensProvider: registerTokensProvider,
setLanguageConfiguration: setLanguageConfiguration,
setTokensProvider: setTokensProvider,
registerReferenceProvider: registerReferenceProvider,
registerRenameProvider: registerRenameProvider,
// SuggestRegistry: SuggestRegistry,
+6
View File
@@ -1953,6 +1953,9 @@ export interface IModel extends IReadOnlyModel, IEditableTextModel, ITextModelWi
onDidChangeMode(listener: (e:IModelModeChangedEvent)=>void): IDisposable;
onWillDispose(listener: ()=>void): IDisposable;
/**
* @internal
*/
addBulkListener(listener:BulkListenerCallback):IDisposable;
/**
@@ -3621,6 +3624,9 @@ export var ClassName = {
EditorErrorDecoration: 'redsquiggly'
};
/**
* @internal
*/
export var EventType = {
Disposed: 'disposed',
+1 -1
View File
@@ -309,7 +309,7 @@ export interface IState2 {
clone():IState2;
equals(other:IState2):boolean;
}
export interface ITokenizationSupport2 {
export interface TokensProvider {
getInitialState(): IState2;
tokenize(line:string, state:IState2): ILineTokens2;
}
@@ -10,9 +10,9 @@
*/
import {ILexer} from 'vs/editor/common/modes/monarch/monarchCommon';
import {IRichEditConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {IRichLanguageConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
export function createRichEditSupport(lexer: ILexer): IRichEditConfiguration {
export function createRichEditSupport(lexer: ILexer): IRichLanguageConfiguration {
return {
@@ -17,7 +17,7 @@ export interface CommentRule {
blockComment?: CharacterPair;
}
export interface IRichEditConfiguration {
export interface IRichLanguageConfiguration {
comments?: CommentRule;
brackets?: CharacterPair[];
wordPattern?: RegExp;
@@ -29,7 +29,7 @@ export interface IRichEditConfiguration {
export class RichEditSupport implements IRichEditSupport {
private _conf: IRichEditConfiguration;
private _conf: IRichLanguageConfiguration;
public electricCharacter: BracketElectricCharacterSupport;
public comments: ICommentsConfiguration;
@@ -38,9 +38,9 @@ export class RichEditSupport implements IRichEditSupport {
public onEnter: IRichEditOnEnter;
public brackets: IRichEditBrackets;
constructor(modeId:string, previous:IRichEditSupport, rawConf:IRichEditConfiguration) {
constructor(modeId:string, previous:IRichEditSupport, rawConf:IRichLanguageConfiguration) {
let prev:IRichEditConfiguration = null;
let prev:IRichLanguageConfiguration = null;
if (previous instanceof RichEditSupport) {
prev = previous._conf;
}
@@ -66,7 +66,7 @@ export class RichEditSupport implements IRichEditSupport {
this.wordDefinition = this._conf.wordPattern || NullMode.DEFAULT_WORD_REGEXP;
}
private static _mergeConf(prev:IRichEditConfiguration, current:IRichEditConfiguration): IRichEditConfiguration {
private static _mergeConf(prev:IRichLanguageConfiguration, current:IRichLanguageConfiguration): IRichLanguageConfiguration {
return {
comments: (prev ? current.comments || prev.comments : current.comments),
brackets: (prev ? current.brackets || prev.brackets : current.brackets),
@@ -78,7 +78,7 @@ export class RichEditSupport implements IRichEditSupport {
};
}
private _handleOnEnter(modeId:string, conf:IRichEditConfiguration): void {
private _handleOnEnter(modeId:string, conf:IRichLanguageConfiguration): void {
// on enter
let onEnter: IOnEnterSupportOptions = {};
let empty = true;
@@ -101,7 +101,7 @@ export class RichEditSupport implements IRichEditSupport {
}
}
private _handleComments(modeId:string, conf:IRichEditConfiguration): void {
private _handleComments(modeId:string, conf:IRichLanguageConfiguration): void {
let commentRule = conf.comments;
// comment configuration
+3 -3
View File
@@ -10,7 +10,7 @@ import {TPromise} from 'vs/base/common/winjs.base';
import {ServiceIdentifier, createDecorator} from 'vs/platform/instantiation/common/instantiation';
import * as modes from 'vs/editor/common/modes';
import {ILanguage} from 'vs/editor/common/modes/monarch/monarchTypes';
import {IRichEditConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {IRichLanguageConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
import {IModelService} from 'vs/editor/common/services/modelService';
@@ -73,8 +73,8 @@ export interface IModeService {
getOrCreateModeByLanguageName(languageName: string): TPromise<modes.IMode>;
getOrCreateModeByFilenameOrFirstLine(filename: string, firstLine?:string): TPromise<modes.IMode>;
registerRichEditSupport(modeId: string, support: IRichEditConfiguration): IDisposable;
registerRichEditSupport(modeId: string, support: IRichLanguageConfiguration): IDisposable;
registerTokenizationSupport(modeId: string, callback: (mode: modes.IMode) => modes.ITokenizationSupport): IDisposable;
registerTokenizationSupport2(modeId: string, support: modes.ITokenizationSupport2): IDisposable;
registerTokenizationSupport2(modeId: string, support: modes.TokensProvider): IDisposable;
registerMonarchDefinition(modelService: IModelService, editorWorkerService: IEditorWorkerService, modeId:string, language:ILanguage): IDisposable;
}
@@ -25,7 +25,7 @@ import {compile} from 'vs/editor/common/modes/monarch/monarchCompile';
import {createRichEditSupport} from 'vs/editor/common/modes/monarch/monarchDefinition';
import {createTokenizationSupport} from 'vs/editor/common/modes/monarch/monarchLexer';
import {ILanguage} from 'vs/editor/common/modes/monarch/monarchTypes';
import {IRichEditConfiguration, RichEditSupport} from 'vs/editor/common/modes/supports/richEditSupport';
import {IRichLanguageConfiguration, RichEditSupport} from 'vs/editor/common/modes/supports/richEditSupport';
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
import {LanguagesRegistry} from 'vs/editor/common/services/languagesRegistry';
import {ILanguageExtensionPoint, IValidLanguageExtensionPoint, IModeLookupResult, IModeService} from 'vs/editor/common/services/modeService';
@@ -443,7 +443,7 @@ export class ModeServiceImpl implements IModeService {
return this.doRegisterMonarchDefinition(modeId, lexer);
}
public registerRichEditSupport(modeId: string, support: IRichEditConfiguration): IDisposable {
public registerRichEditSupport(modeId: string, support: IRichLanguageConfiguration): IDisposable {
return this.registerModeSupport(modeId, modes.MutableSupport.RichEditSupport, (mode) => new RichEditSupport(modeId, mode.richEditSupport, support));
}
@@ -451,7 +451,7 @@ export class ModeServiceImpl implements IModeService {
return this.registerModeSupport(modeId, modes.MutableSupport.TokenizationSupport, callback);
}
public registerTokenizationSupport2(modeId: string, support: modes.ITokenizationSupport2): IDisposable {
public registerTokenizationSupport2(modeId: string, support: modes.TokensProvider): IDisposable {
return this.registerModeSupport(modeId, modes.MutableSupport.TokenizationSupport, (mode) => {
return new TokenizationSupport2Adapter(mode, support);
});
@@ -508,9 +508,9 @@ export class TokenizationSupport2Adapter implements modes.ITokenizationSupport {
public shouldGenerateEmbeddedModels = false;
private _mode: modes.IMode;
private _actual: modes.ITokenizationSupport2;
private _actual: modes.TokensProvider;
constructor(mode: modes.IMode, actual: modes.ITokenizationSupport2) {
constructor(mode: modes.IMode, actual: modes.TokensProvider) {
this._mode = mode;
this._actual = actual;
}
+2 -2
View File
@@ -7,7 +7,7 @@
import * as nls from 'vs/nls';
import {parse} from 'vs/base/common/json';
import {readFile} from 'vs/base/node/pfs';
import {IRichEditConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {IRichLanguageConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {IModeService} from 'vs/editor/common/services/modeService';
import {IAutoClosingPair} from 'vs/editor/common/modes';
@@ -70,7 +70,7 @@ export class LanguageConfigurationFileHandler {
private _handleConfig(modeId:string, configuration:ILanguageConfiguration): void {
let richEditConfig:IRichEditConfiguration = {};
let richEditConfig:IRichLanguageConfiguration = {};
if (configuration.comments) {
richEditConfig.comments = configuration.comments;
@@ -10,7 +10,7 @@ import {TPromise} from 'vs/base/common/winjs.base';
import {ServiceIdentifier} from 'vs/platform/instantiation/common/instantiation';
import * as modes from 'vs/editor/common/modes';
import {ILanguage} from 'vs/editor/common/modes/monarch/monarchTypes';
import {IRichEditConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {IRichLanguageConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
import {IModelService} from 'vs/editor/common/services/modelService';
import {IModeService, IModeLookupResult} from 'vs/editor/common/services/modeService';
@@ -83,13 +83,13 @@ export class MockModeService implements IModeService {
throw new Error('Not implemented');
}
registerRichEditSupport(modeId: string, support: IRichEditConfiguration): IDisposable {
registerRichEditSupport(modeId: string, support: IRichLanguageConfiguration): IDisposable {
throw new Error('Not implemented');
}
registerTokenizationSupport(modeId: string, callback: (mode: modes.IMode) => modes.ITokenizationSupport): IDisposable {
throw new Error('Not implemented');
}
registerTokenizationSupport2(modeId: string, support: modes.ITokenizationSupport2): IDisposable {
registerTokenizationSupport2(modeId: string, support: modes.TokensProvider): IDisposable {
throw new Error('Not implemented');
}
registerMonarchDefinition(modelService: IModelService, editorWorkerService: IEditorWorkerService, modeId:string, language:ILanguage): IDisposable {
+2 -2
View File
@@ -85,7 +85,7 @@ export function executeTests(tokenizationSupport: modes.ITokenizationSupport, te
}
}
export function executeTests2(tokenizationSupport: modes.ITokenizationSupport2, tests:ITestItem2[][]): void {
export function executeTests2(tokenizationSupport: modes.TokensProvider, tests:ITestItem2[][]): void {
for (var i = 0, len = tests.length; i < len; i++) {
assert.ok(true, 'TEST #' + i);
executeTest2(tokenizationSupport, tests[i]);
@@ -118,7 +118,7 @@ function executeTest(tokenizationSupport: modes.ITokenizationSupport, tests:ITes
}
}
function executeTest2(tokenizationSupport: modes.ITokenizationSupport2, tests:ITestItem2[]): void {
function executeTest2(tokenizationSupport: modes.TokensProvider, tests:ITestItem2[]): void {
var state = tokenizationSupport.getInitialState();
for (var i = 0, len = tests.length; i < len; i++) {
assert.ok(true, tests[i].line);
+2 -2
View File
@@ -8,7 +8,7 @@ import * as modes from 'vs/editor/common/modes';
import * as lifecycle from 'vs/base/common/lifecycle';
import {createTokenizationSupport2, Language} from 'vs/languages/typescript/common/tokenization';
import {createWordRegExp} from 'vs/editor/common/modes/abstractMode';
import {RichEditSupport, IRichEditConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {RichEditSupport, IRichLanguageConfiguration} from 'vs/editor/common/modes/supports/richEditSupport';
import {IModelService} from 'vs/editor/common/services/modelService';
import {IModeService} from 'vs/editor/common/services/modeService';
import {IMarkerService} from 'vs/platform/markers/common/markers';
@@ -38,7 +38,7 @@ function setupMode(modelService:IModelService, markerService:IMarkerService, mod
disposables.push(modeService.registerTokenizationSupport2(modeId, createTokenizationSupport2(language)));
}
const richEditConfiguration:IRichEditConfiguration = {
const richEditConfiguration:IRichLanguageConfiguration = {
wordPattern: createWordRegExp('$'),
comments: {
@@ -12,7 +12,7 @@ export enum Language {
EcmaScript5
}
export function createTokenizationSupport2(language:Language):Modes.ITokenizationSupport2 {
export function createTokenizationSupport2(language:Language):Modes.TokensProvider {
var classifier = ts.createClassifier(),
bracketTypeTable = language === Language.TypeScript ? tsBracketTypeTable : jsBracketTypeTable,