提交 deb966b9 编写于 作者: A Alex Dima

Simplify modes around word definition

上级 e9dc6c02
......@@ -39,22 +39,7 @@ export interface INonWordTokenMap {
export class WordHelper {
private static _safeGetWordDefinition(mode:Modes.IMode): RegExp {
let richEditSupport = mode.richEditSupport;
if (!richEditSupport) {
return null;
}
if (!richEditSupport.tokenTypeClassification) {
return null;
}
var result: RegExp = null;
try {
result = richEditSupport.tokenTypeClassification.getWordDefinition();
} catch(e) {
Errors.onUnexpectedError(e);
}
return result;
return (mode.richEditSupport ? mode.richEditSupport.wordDefinition : null);
}
public static ensureValidWordDefinition(wordDefinition?:RegExp): RegExp {
......
......@@ -754,13 +754,6 @@ export interface IRichEditCharacterPair {
getSurroundingPairs():IAutoClosingPair[];
}
/**
* Interface used to support the classification of tokens.
*/
export interface IRichEditTokenTypeClassification {
getWordDefinition():RegExp;
}
export interface IRichEditSupport {
/**
* Optional adapter for electric characters.
......@@ -780,7 +773,7 @@ export interface IRichEditSupport {
/**
* Optional adapter for classification of tokens.
*/
tokenTypeClassification?:IRichEditTokenTypeClassification;
wordDefinition?: RegExp;
/**
* Optional adapter for custom Enter handling.
......
......@@ -84,9 +84,7 @@ export class NullMode implements Modes.IMode {
constructor() {
this.richEditSupport = {
tokenTypeClassification: {
getWordDefinition: () => NullMode.DEFAULT_WORD_REGEXP
}
wordDefinition: NullMode.DEFAULT_WORD_REGEXP
};
}
......
......@@ -8,8 +8,8 @@ import * as Modes from 'vs/editor/common/modes';
import {OnEnterSupport, IOnEnterSupportOptions, IIndentationRules, IOnEnterRegExpRules} from 'vs/editor/common/modes/supports/onEnter';
import {CharacterPairSupport} from 'vs/editor/common/modes/supports/characterPair';
import {BracketElectricCharacterSupport, IBracketElectricCharacterContribution} from 'vs/editor/common/modes/supports/electricCharacter';
import {TokenTypeClassificationSupport} from 'vs/editor/common/modes/supports/tokenTypeClassification';
import {ICharacterPairContribution} from 'vs/editor/common/modes/supports/characterPair';
import {NullMode} from 'vs/editor/common/modes/nullMode';
export type CharacterPair = [string, string];
......@@ -33,7 +33,7 @@ export class RichEditSupport implements Modes.IRichEditSupport {
public electricCharacter: Modes.IRichEditElectricCharacter;
public comments: Modes.ICommentsConfiguration;
public characterPair: Modes.IRichEditCharacterPair;
public tokenTypeClassification: Modes.IRichEditTokenTypeClassification;
public wordDefinition: RegExp;
public onEnter: Modes.IRichEditOnEnter;
constructor(modeId:string, conf:IRichEditConfiguration) {
......@@ -50,9 +50,7 @@ export class RichEditSupport implements Modes.IRichEditSupport {
this.electricCharacter = new BracketElectricCharacterSupport(modeId, conf.__electricCharacterSupport);
}
this.tokenTypeClassification = new TokenTypeClassificationSupport({
wordDefinition: conf.wordPattern
});
this.wordDefinition = conf.wordPattern || NullMode.DEFAULT_WORD_REGEXP;
}
private _handleOnEnter(modeId:string, conf:IRichEditConfiguration): void {
......
/*---------------------------------------------------------------------------------------------
* 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 {IRichEditTokenTypeClassification} from 'vs/editor/common/modes';
import {NullMode} from 'vs/editor/common/modes/nullMode';
export interface ITokenTypeClassificationSupportContribution {
wordDefinition?: RegExp;
}
export class TokenTypeClassificationSupport implements IRichEditTokenTypeClassification {
private _contribution: ITokenTypeClassificationSupportContribution;
constructor(contribution: ITokenTypeClassificationSupportContribution) {
this._contribution = contribution;
}
public getWordDefinition(): RegExp {
if (typeof this._contribution.wordDefinition === 'undefined') {
return NullMode.DEFAULT_WORD_REGEXP;
}
return this._contribution.wordDefinition;
}
}
......@@ -22,7 +22,7 @@ suite('CSS Colorizing', () => {
modesUtil.load('css').then(mode => {
tokenizationSupport = mode.tokenizationSupport;
assertOnEnter = modesUtil.createOnEnterAsserter(mode.getId(), mode.richEditSupport);
wordDefinition = mode.richEditSupport.tokenTypeClassification.getWordDefinition();
wordDefinition = mode.richEditSupport.wordDefinition;
done();
});
});
......
......@@ -21,7 +21,7 @@ suite('JS - Auto Indent', () => {
modesUtil.load('javascript').then(mode => {
assertOnEnter = modesUtil.createOnEnterAsserter(mode.getId(), mode.richEditSupport);
onElectricCharacter = modesUtil.createOnElectricCharacter(mode);
wordDefinition = mode.richEditSupport.tokenTypeClassification.getWordDefinition();
wordDefinition = mode.richEditSupport.wordDefinition;
done();
});
});
......
......@@ -27,7 +27,7 @@ suite('Syntax Highlighting - PHP', () => {
modesUtil.load('php').then(mode => {
tokenizationSupport = mode.tokenizationSupport;
assertOnEnter = modesUtil.createOnEnterAsserter(mode.getId(), mode.richEditSupport);
wordDefinition = mode.richEditSupport.tokenTypeClassification.getWordDefinition();
wordDefinition = mode.richEditSupport.wordDefinition;
done();
});
});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册