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

Reduce dependencies on IMode

上级 92b91cf3
......@@ -328,7 +328,7 @@ export class CursorCollection {
};
let electricCharSupport = LanguageConfigurationRegistry.getElectricCharacterSupport(this.model.getMode());
let electricCharSupport = LanguageConfigurationRegistry.getElectricCharacterSupport(this.model.getMode().getId());
if (electricCharSupport) {
let electricChars: string[] = null;
try {
......@@ -344,7 +344,7 @@ export class CursorCollection {
}
}
let characterPairSupport = LanguageConfigurationRegistry.getCharacterPairSupport(this.model.getMode());
let characterPairSupport = LanguageConfigurationRegistry.getCharacterPairSupport(this.model.getMode().getId());
if (characterPairSupport) {
let autoClosingPairs: IAutoClosingPair[];
try {
......
......@@ -1269,7 +1269,7 @@ export class OneCursorOp {
return false;
}
let characterPairSupport = LanguageConfigurationRegistry.getCharacterPairSupport(cursor.model.getMode());
let characterPairSupport = LanguageConfigurationRegistry.getCharacterPairSupport(cursor.model.getMode().getId());
if(!characterPairSupport) {
return false;
......@@ -1380,7 +1380,7 @@ export class OneCursorOp {
let lineContext = cursor.model.getLineContext(position.lineNumber);
let electricAction:IElectricAction;
let electricCharSupport = LanguageConfigurationRegistry.getElectricCharacterSupport(cursor.model.getMode());
let electricCharSupport = LanguageConfigurationRegistry.getElectricCharacterSupport(cursor.model.getMode().getId());
if (electricCharSupport) {
try {
electricAction = electricCharSupport.onElectricCharacter(lineContext, position.column - 2);
......
......@@ -12,10 +12,12 @@ export class ModeTransition {
public startIndex:number;
public mode:IMode;
public modeId: string;
constructor(startIndex:number, mode:IMode) {
this.startIndex = startIndex|0;
this.mode = mode;
this.modeId = mode.getId();
}
public static findIndexInSegmentsArray(arr:ModeTransition[], desiredIndex: number): number {
......
......@@ -10,13 +10,14 @@ import {IHTMLContentElement} from 'vs/base/common/htmlContent';
import URI from 'vs/base/common/uri';
import {TPromise} from 'vs/base/common/winjs.base';
import {IInstantiationService, IConstructorSignature1, IConstructorSignature2} from 'vs/platform/instantiation/common/instantiation';
import {ILineContext, IMode, IModeTransition, IToken} from 'vs/editor/common/modes';
import {ILineContext, IMode, IToken} from 'vs/editor/common/modes';
import {ViewLineToken} from 'vs/editor/common/core/viewLineToken';
import {ScrollbarVisibility} from 'vs/base/browser/ui/scrollbar/scrollableElementOptions';
import {IDisposable} from 'vs/base/common/lifecycle';
import {Position} from 'vs/editor/common/core/position';
import {Range} from 'vs/editor/common/core/range';
import {Selection} from 'vs/editor/common/core/selection';
import {ModeTransition} from 'vs/editor/common/core/modeTransition';
/**
* @internal
......@@ -1676,7 +1677,7 @@ export interface ITokenizedModel extends ITextModel {
/**
* @internal
*/
_getLineModeTransitions(lineNumber:number): IModeTransition[];
_getLineModeTransitions(lineNumber:number): ModeTransition[];
/**
* Get the current language mode associated with the model.
......@@ -1701,7 +1702,7 @@ export interface ITokenizedModel extends ITextModel {
* Returns the true (inner-most) language mode at a given position.
* @internal
*/
getModeAtPosition(lineNumber:number, column:number): IMode;
getModeIdAtPosition(lineNumber:number, column:number): string;
/**
* Get the word under or besides `position`.
......
......@@ -255,9 +255,9 @@ export class MirrorModel extends AbstractMirrorModel implements editorCommon.IMi
}
public getEmbeddedAtPosition(position:editorCommon.IPosition):editorCommon.IMirrorModel {
var modeAtPosition = this.getModeAtPosition(position.lineNumber, position.column);
if (this._embeddedModels.hasOwnProperty(modeAtPosition.getId())) {
return this._embeddedModels[modeAtPosition.getId()];
var modeIdAtPosition = this.getModeIdAtPosition(position.lineNumber, position.column);
if (this._embeddedModels.hasOwnProperty(modeIdAtPosition)) {
return this._embeddedModels[modeIdAtPosition];
}
return null;
}
......@@ -299,7 +299,7 @@ export class MirrorModel extends AbstractMirrorModel implements editorCommon.IMi
for (var i = 0; i < modeTransitions.length; i++) {
var modeTransition = modeTransitions[i];
if (modeTransition.mode.getId() !== currentModeId) {
if (modeTransition.modeId !== currentModeId) {
var modeRange = getOrCreateEmbeddedModeRange(currentModeId, currentMode);
modeRange.ranges.push({
......@@ -309,7 +309,7 @@ export class MirrorModel extends AbstractMirrorModel implements editorCommon.IMi
endColumn: modeTransition.startIndex + 1
});
currentModeId = modeTransition.mode.getId();
currentModeId = modeTransition.modeId;
currentMode = modeTransition.mode;
currentStartLineNumber = lineNumber;
currentStartColumn = modeTransition.startIndex + 1;
......
......@@ -441,7 +441,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
}
}
public getModeAtPosition(_lineNumber:number, _column:number): IMode {
public getModeIdAtPosition(_lineNumber:number, _column:number): string {
var validPosition = this.validatePosition({
lineNumber: _lineNumber,
column: _column
......@@ -451,13 +451,13 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
var column = validPosition.column;
if (column === 1) {
return this.getStateBeforeLine(lineNumber).getMode();
return this.getStateBeforeLine(lineNumber).getMode().getId();
} else if (column === this.getLineMaxColumn(lineNumber)) {
return this.getStateAfterLine(lineNumber).getMode();
return this.getStateAfterLine(lineNumber).getMode().getId();
} else {
var modeTransitions = this._getLineModeTransitions(lineNumber);
var modeTransitionIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, column - 1);
return modeTransitions[modeTransitionIndex].mode;
return modeTransitions[modeTransitionIndex].modeId;
}
}
......@@ -762,7 +762,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let modeTransitions = this._lines[position.lineNumber - 1].getModeTransitions(this._mode);
let currentModeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, position.column - 1);
let currentMode = modeTransitions[currentModeIndex];
let currentModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(currentMode.mode);
let currentModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(currentMode.modeId);
if (!currentModeBrackets) {
return null;
......@@ -792,7 +792,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let modeTransitions = this._lines[lineNumber - 1].getModeTransitions(this._mode);
let currentModeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, position.column - 1);
let currentMode = modeTransitions[currentModeIndex];
let currentModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(currentMode.mode);
let currentModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(currentMode.modeId);
// If position is in between two tokens, try first looking in the previous token
if (currentTokenIndex > 0 && currentTokenStart === position.column - 1) {
......@@ -808,7 +808,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
// check if previous token is in a different mode
if (currentModeIndex > 0 && currentMode.startIndex === position.column - 1) {
prevMode = modeTransitions[currentModeIndex - 1];
prevModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(prevMode.mode);
prevModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(prevMode.modeId);
}
if (prevModeBrackets) {
......@@ -898,7 +898,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let modeTransitions = this._lines[lineNumber - 1].getModeTransitions(this._mode);
let currentModeIndex = modeTransitions.length - 1;
let currentModeStart = modeTransitions[currentModeIndex].startIndex;
let currentModeId = modeTransitions[currentModeIndex].mode.getId();
let currentModeId = modeTransitions[currentModeIndex].modeId;
let tokensLength = lineTokens.getTokenCount() - 1;
let currentTokenEnd = lineText.length;
......@@ -908,7 +908,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
currentModeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, position.column - 1);
currentModeStart = modeTransitions[currentModeIndex].startIndex;
currentModeId = modeTransitions[currentModeIndex].mode.getId();
currentModeId = modeTransitions[currentModeIndex].modeId;
}
for (let tokenIndex = tokensLength; tokenIndex >= 0; tokenIndex--) {
......@@ -918,7 +918,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
if (currentTokenStart < currentModeStart) {
currentModeIndex--;
currentModeStart = modeTransitions[currentModeIndex].startIndex;
currentModeId = modeTransitions[currentModeIndex].mode.getId();
currentModeId = modeTransitions[currentModeIndex].modeId;
}
if (currentModeId === modeId && !ignoreBracketsInToken(currentTokenType)) {
......@@ -965,7 +965,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
let modeTransitions = this._lines[lineNumber - 1].getModeTransitions(this._mode);
let currentModeIndex = 0;
let nextModeStart = (currentModeIndex + 1 < modeTransitions.length ? modeTransitions[currentModeIndex + 1].startIndex : lineText.length + 1);
let currentModeId = modeTransitions[currentModeIndex].mode.getId();
let currentModeId = modeTransitions[currentModeIndex].modeId;
let startTokenIndex = 0;
let currentTokenStart = lineTokens.getTokenStartIndex(startTokenIndex);
......@@ -975,7 +975,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
currentModeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, position.column - 1);
nextModeStart = (currentModeIndex + 1 < modeTransitions.length ? modeTransitions[currentModeIndex + 1].startIndex : lineText.length + 1);
currentModeId = modeTransitions[currentModeIndex].mode.getId();
currentModeId = modeTransitions[currentModeIndex].modeId;
}
for (let tokenIndex = startTokenIndex, tokensLength = lineTokens.getTokenCount(); tokenIndex < tokensLength; tokenIndex++) {
......@@ -985,7 +985,7 @@ export class TextModelWithTokens extends TextModel implements editorCommon.IToke
if (currentTokenStart >= nextModeStart) {
currentModeIndex++;
nextModeStart = (currentModeIndex + 1 < modeTransitions.length ? modeTransitions[currentModeIndex + 1].startIndex : lineText.length + 1);
currentModeId = modeTransitions[currentModeIndex].mode.getId();
currentModeId = modeTransitions[currentModeIndex].modeId;
}
if (currentModeId === modeId && !ignoreBracketsInToken(currentTokenType)) {
......
......@@ -28,7 +28,7 @@ export interface INonWordTokenMap {
export class WordHelper {
private static _safeGetWordDefinition(mode:IMode): RegExp {
return LanguageConfigurationRegistry.getWordDefinition(mode);
return LanguageConfigurationRegistry.getWordDefinition(mode.getId());
}
public static ensureValidWordDefinition(wordDefinition?:RegExp): RegExp {
......
......@@ -760,41 +760,6 @@ export interface IRichEditBrackets {
textIsOpenBracket: {[text:string]:boolean;};
}
/**
* @internal
*/
export interface IRichEditSupport {
/**
* Optional adapter for electric characters.
*/
electricCharacter?:IRichEditElectricCharacter;
/**
* Optional adapter for comment insertion.
*/
comments?:ICommentsConfiguration;
/**
* Optional adapter for insertion of character pair.
*/
characterPair?:IRichEditCharacterPair;
/**
* Optional adapter for classification of tokens.
*/
wordDefinition?: RegExp;
/**
* Optional adapter for custom Enter handling.
*/
onEnter?: IRichEditOnEnter;
/**
* Optional adapter for brackets.
*/
brackets?: IRichEditBrackets;
}
// --- feature registries ------
/**
......
......@@ -5,8 +5,8 @@
'use strict';
import {ICommentsConfiguration, IRichEditBrackets, IRichEditCharacterPair, IAutoClosingPair,
IAutoClosingPairConditional, IRichEditOnEnter, IRichEditSupport, CharacterPair,
IMode, IRichEditElectricCharacter, IEnterAction, IndentAction} from 'vs/editor/common/modes';
IAutoClosingPairConditional, IRichEditOnEnter, CharacterPair,
IRichEditElectricCharacter, IEnterAction, IndentAction} from 'vs/editor/common/modes';
import {NullMode} from 'vs/editor/common/modes/nullMode';
import {CharacterPairSupport} from 'vs/editor/common/modes/supports/characterPair';
import {BracketElectricCharacterSupport, IBracketElectricCharacterContribution} from 'vs/editor/common/modes/supports/electricCharacter';
......@@ -35,7 +35,7 @@ export interface IRichLanguageConfiguration {
__electricCharacterSupport?: IBracketElectricCharacterContribution;
}
export class RichEditSupport implements IRichEditSupport {
export class RichEditSupport {
private _conf: IRichLanguageConfiguration;
......@@ -46,10 +46,10 @@ export class RichEditSupport implements IRichEditSupport {
public onEnter: IRichEditOnEnter;
public brackets: IRichEditBrackets;
constructor(modeId:string, previous:IRichEditSupport, rawConf:IRichLanguageConfiguration) {
constructor(modeId:string, previous:RichEditSupport, rawConf:IRichLanguageConfiguration) {
let prev:IRichLanguageConfiguration = null;
if (previous instanceof RichEditSupport) {
if (previous) {
prev = previous._conf;
}
......@@ -150,44 +150,44 @@ export class LanguageConfigurationRegistryImpl {
};
}
private _getRichEditSupport(mode:IMode): IRichEditSupport {
return this._entries[mode.getId()];
private _getRichEditSupport(modeId:string): RichEditSupport {
return this._entries[modeId];
}
public getElectricCharacterSupport(mode:IMode): IRichEditElectricCharacter {
let value = this._getRichEditSupport(mode);
public getElectricCharacterSupport(modeId:string): IRichEditElectricCharacter {
let value = this._getRichEditSupport(modeId);
if (!value) {
return null;
}
return value.electricCharacter || null;
}
public getComments(mode:IMode): ICommentsConfiguration {
let value = this._getRichEditSupport(mode);
public getComments(modeId:string): ICommentsConfiguration {
let value = this._getRichEditSupport(modeId);
if (!value) {
return null;
}
return value.comments || null;
}
public getCharacterPairSupport(mode:IMode): IRichEditCharacterPair {
let value = this._getRichEditSupport(mode);
public getCharacterPairSupport(modeId:string): IRichEditCharacterPair {
let value = this._getRichEditSupport(modeId);
if (!value) {
return null;
}
return value.characterPair || null;
}
public getWordDefinition(mode:IMode): RegExp {
let value = this._getRichEditSupport(mode);
public getWordDefinition(modeId:string): RegExp {
let value = this._getRichEditSupport(modeId);
if (!value) {
return null;
}
return value.wordDefinition || null;
}
public getOnEnterSupport(mode:IMode): IRichEditOnEnter {
let value = this._getRichEditSupport(mode);
public getOnEnterSupport(modeId:string): IRichEditOnEnter {
let value = this._getRichEditSupport(modeId);
if (!value) {
return null;
}
......@@ -197,7 +197,7 @@ export class LanguageConfigurationRegistryImpl {
public getRawEnterActionAtPosition(model:ITokenizedModel, lineNumber:number, column:number): IEnterAction {
let result:IEnterAction;
let onEnterSupport = this.getOnEnterSupport(model.getMode());
let onEnterSupport = this.getOnEnterSupport(model.getMode().getId());
if (onEnterSupport) {
try {
......@@ -246,8 +246,8 @@ export class LanguageConfigurationRegistryImpl {
};
}
public getBracketsSupport(mode:IMode): IRichEditBrackets {
let value = this._getRichEditSupport(mode);
public getBracketsSupport(modeId:string): IRichEditBrackets {
let value = this._getRichEditSupport(modeId);
if (!value) {
return null;
}
......
......@@ -45,10 +45,10 @@ export class LineTokens implements modes.ILineTokens {
}
}
export function handleEvent<T>(context:modes.ILineContext, offset:number, runner:(mode:modes.IMode, newContext:modes.ILineContext, offset:number)=>T):T {
export function handleEvent<T>(context:modes.ILineContext, offset:number, runner:(modeId:string, newContext:modes.ILineContext, offset:number)=>T):T {
var modeTransitions = context.modeTransitions;
if (modeTransitions.length === 1) {
return runner(modeTransitions[0].mode, context, offset);
return runner(modeTransitions[0].modeId, context, offset);
}
var modeIndex = ModeTransition.findIndexInSegmentsArray(modeTransitions, offset);
......@@ -68,7 +68,7 @@ export function handleEvent<T>(context:modes.ILineContext, offset:number, runner
var firstTokenCharacterOffset = context.getTokenStartIndex(firstTokenInModeIndex);
var newCtx = new FilteredLineContext(context, nestedMode, firstTokenInModeIndex, nextTokenAfterMode, firstTokenCharacterOffset, nextCharacterAfterModeIndex);
return runner(nestedMode, newCtx, offset - firstTokenCharacterOffset);
return runner(nestedMode.getId(), newCtx, offset - firstTokenCharacterOffset);
}
export class FilteredLineContext implements modes.ILineContext {
......
......@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import {IAutoClosingPair, IAutoClosingPairConditional, ILineContext, IMode, IRichEditCharacterPair, CharacterPair} from 'vs/editor/common/modes';
import {IAutoClosingPair, IAutoClosingPairConditional, ILineContext, IRichEditCharacterPair, CharacterPair} from 'vs/editor/common/modes';
import {handleEvent} from 'vs/editor/common/modes/supports';
import {LanguageConfigurationRegistryImpl} from 'vs/editor/common/modes/languageConfigurationRegistry';
......@@ -30,8 +30,8 @@ export class CharacterPairSupport implements IRichEditCharacterPair {
}
public shouldAutoClosePair(character:string, context:ILineContext, offset:number): boolean {
return handleEvent(context, offset, (nestedMode:IMode, context:ILineContext, offset:number) => {
if (this._modeId === nestedMode.getId()) {
return handleEvent(context, offset, (nestedModeId:string, context:ILineContext, offset:number) => {
if (this._modeId === nestedModeId) {
// Always complete on empty line
if (context.getTokenCount() === 0) {
......@@ -57,7 +57,7 @@ export class CharacterPairSupport implements IRichEditCharacterPair {
return true;
}
let characterPairSupport = this._registry.getCharacterPairSupport(nestedMode);
let characterPairSupport = this._registry.getCharacterPairSupport(nestedModeId);
if (characterPairSupport) {
return characterPairSupport.shouldAutoClosePair(character, context, offset);
}
......
......@@ -47,11 +47,11 @@ export class BracketElectricCharacterSupport implements modes.IRichEditElectricC
}
public onElectricCharacter(context:modes.ILineContext, offset:number): modes.IElectricAction {
return handleEvent(context, offset, (nestedMode:modes.IMode, context:modes.ILineContext, offset:number) => {
if (this._modeId === nestedMode.getId()) {
return handleEvent(context, offset, (nestedModeId:string, context:modes.ILineContext, offset:number) => {
if (this._modeId === nestedModeId) {
return this.brackets.onElectricCharacter(context, offset);
}
let electricCharacterSupport = this._registry.getElectricCharacterSupport(nestedMode);
let electricCharacterSupport = this._registry.getElectricCharacterSupport(nestedModeId);
if (electricCharacterSupport) {
return electricCharacterSupport.onElectricCharacter(context, offset);
}
......
......@@ -7,7 +7,7 @@
import {onUnexpectedError} from 'vs/base/common/errors';
import * as strings from 'vs/base/common/strings';
import {IPosition, ITextModel, ITokenizedModel} from 'vs/editor/common/editorCommon';
import {IEnterAction, ILineContext, IMode, IRichEditOnEnter, IndentAction, CharacterPair} from 'vs/editor/common/modes';
import {IEnterAction, ILineContext, IRichEditOnEnter, IndentAction, CharacterPair} from 'vs/editor/common/modes';
import {handleEvent} from 'vs/editor/common/modes/supports';
import {LanguageConfigurationRegistryImpl} from 'vs/editor/common/modes/languageConfigurationRegistry';
......@@ -74,12 +74,12 @@ export class OnEnterSupport implements IRichEditOnEnter {
public onEnter(model:ITokenizedModel, position: IPosition): IEnterAction {
var context = model.getLineContext(position.lineNumber);
return handleEvent(context, position.column - 1, (nestedMode:IMode, context:ILineContext, offset:number) => {
if (this._modeId === nestedMode.getId()) {
return handleEvent(context, position.column - 1, (nestedModeId:string, context:ILineContext, offset:number) => {
if (this._modeId === nestedModeId) {
return this._onEnter(model, position);
}
let onEnterSupport = this._registry.getOnEnterSupport(nestedMode);
let onEnterSupport = this._registry.getOnEnterSupport(nestedModeId);
if (onEnterSupport) {
return onEnterSupport.onEnter(model, position);
}
......
......@@ -7,14 +7,14 @@
import * as strings from 'vs/base/common/strings';
import {Range} from 'vs/editor/common/core/range';
import {IRichEditBracket} from 'vs/editor/common/editorCommon';
import * as modes from 'vs/editor/common/modes';
import {IRichEditBrackets, CharacterPair} from 'vs/editor/common/modes';
interface ISimpleInternalBracket {
open: string;
close: string;
}
export class RichEditBrackets implements modes.IRichEditBrackets {
export class RichEditBrackets implements IRichEditBrackets {
public brackets: IRichEditBracket[];
public forwardRegex: RegExp;
......@@ -23,7 +23,7 @@ export class RichEditBrackets implements modes.IRichEditBrackets {
public textIsBracket: {[text:string]:IRichEditBracket;};
public textIsOpenBracket: {[text:string]:boolean;};
constructor(modeId: string, brackets: modes.CharacterPair[]) {
constructor(modeId: string, brackets: CharacterPair[]) {
this.brackets = brackets.map((b) => {
return {
modeId: modeId,
......
......@@ -122,8 +122,8 @@ export class BlockCommentCommand implements editorCommon.ICommand {
var endLineNumber = this._selection.endLineNumber;
var endColumn = this._selection.endColumn;
let mode = model.getModeAtPosition(startLineNumber, startColumn);
let config = LanguageConfigurationRegistry.getComments(mode);
let modeId = model.getModeIdAtPosition(startLineNumber, startColumn);
let config = LanguageConfigurationRegistry.getComments(modeId);
if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {
// Mode does not support block comments
return;
......
......@@ -10,7 +10,7 @@ import {Position} from 'vs/editor/common/core/position';
import {Range} from 'vs/editor/common/core/range';
import {Selection} from 'vs/editor/common/core/selection';
import * as editorCommon from 'vs/editor/common/editorCommon';
import {ICommentsConfiguration, IMode} from 'vs/editor/common/modes';
import {ICommentsConfiguration} from 'vs/editor/common/modes';
import {BlockCommentCommand} from './blockCommentCommand';
import {LanguageConfigurationRegistry} from 'vs/editor/common/modes/languageConfigurationRegistry';
......@@ -70,19 +70,17 @@ export class LineCommentCommand implements editorCommon.ICommand {
i:number,
lineCount:number,
lineNumber:number,
mode: IMode,
modeId: string;
for (i = 0, lineCount = endLineNumber - startLineNumber + 1; i < lineCount; i++) {
lineNumber = startLineNumber + i;
mode = model.getModeAtPosition(lineNumber, 1);
modeId = mode.getId();
modeId = model.getModeIdAtPosition(lineNumber, 1);
// Find the commentStr for this line, if none is found then bail out: we cannot do line comments
if (seenModes[modeId]) {
commentStr = seenModes[modeId];
} else {
config = LanguageConfigurationRegistry.getComments(mode);
config = LanguageConfigurationRegistry.getComments(modeId);
commentStr = (config ? config.lineCommentToken : null);
if (!commentStr) {
// Mode does not support line comments
......@@ -274,8 +272,8 @@ export class LineCommentCommand implements editorCommon.ICommand {
* Given an unsuccessful analysis, delegate to the block comment command
*/
private _executeBlockComment(model:editorCommon.ITokenizedModel, builder:editorCommon.IEditOperationBuilder, s:Selection): void {
let mode = model.getModeAtPosition(s.startLineNumber, s.startColumn);
let config = LanguageConfigurationRegistry.getComments(mode);
let modeId = model.getModeIdAtPosition(s.startLineNumber, s.startColumn);
let config = LanguageConfigurationRegistry.getComments(modeId);
if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {
// Mode does not support block comments
return;
......
......@@ -7,10 +7,11 @@
import {Position} from 'vs/editor/common/core/position';
import {Range} from 'vs/editor/common/core/range';
import {ILineTokens, IModel, IPosition, IRange, IRichEditBracket} from 'vs/editor/common/editorCommon';
import {IModeTransition, IRichEditBrackets} from 'vs/editor/common/modes';
import {IRichEditBrackets} from 'vs/editor/common/modes';
import {ignoreBracketsInToken} from 'vs/editor/common/modes/supports';
import {BracketsUtils} from 'vs/editor/common/modes/supports/richEditBrackets';
import {LanguageConfigurationRegistry} from 'vs/editor/common/modes/languageConfigurationRegistry';
import {ModeTransition} from 'vs/editor/common/core/modeTransition';
export enum TokenTreeBracket {
None = 0,
......@@ -118,7 +119,7 @@ class TokenScanner {
private _currentTokenIndex: number;
private _currentTokenStart: number;
private _currentLineTokens: ILineTokens;
private _currentLineModeTransitions: IModeTransition[];
private _currentLineModeTransitions: ModeTransition[];
private _currentModeIndex: number;
private _nextModeStart: number;
private _currentModeBrackets: IRichEditBrackets;
......@@ -160,7 +161,7 @@ class TokenScanner {
this._currentModeIndex++;
this._nextModeStart = (this._currentModeIndex + 1 < this._currentLineModeTransitions.length ? this._currentLineModeTransitions[this._currentModeIndex + 1].startIndex : this._currentLineText.length + 1);
let mode = (this._currentModeIndex < this._currentLineModeTransitions.length ? this._currentLineModeTransitions[this._currentModeIndex] : null);
this._currentModeBrackets = (mode ? LanguageConfigurationRegistry.getBracketsSupport(mode.mode) : null);
this._currentModeBrackets = (mode ? LanguageConfigurationRegistry.getBracketsSupport(mode.modeId) : null);
}
let tokenType = this._currentLineTokens.getTokenType(this._currentTokenIndex);
......
......@@ -336,8 +336,8 @@ suite('Editor Modes - Tokenization', () => {
{ startIndex: 5, id: 'B' }
]);
handleEvent(createMockLineContext('abc (def', lineTokens), 0, (mode:modes.IMode, context:modes.ILineContext, offset:number) => {
assert.deepEqual(mode.getId(), 'A');
handleEvent(createMockLineContext('abc (def', lineTokens), 0, (modeId:string, context:modes.ILineContext, offset:number) => {
assert.deepEqual(modeId, 'A');
assert.equal(context.getTokenCount(), 3);
assert.equal(context.getTokenStartIndex(0), 0);
assert.equal(context.getTokenType(0), 'A.abc');
......@@ -349,8 +349,8 @@ suite('Editor Modes - Tokenization', () => {
assert.equal(context.getLineContent(), 'abc (');
});
handleEvent(createMockLineContext('abc (def', lineTokens), 6, (mode:modes.IMode, context:modes.ILineContext, offset:number) => {
assert.deepEqual(mode.getId(), 'B');
handleEvent(createMockLineContext('abc (def', lineTokens), 6, (modeId:string, context:modes.ILineContext, offset:number) => {
assert.deepEqual(modeId, 'B');
assert.equal(context.getTokenCount(), 1);
assert.equal(context.getTokenStartIndex(0), 0);
assert.equal(context.getTokenType(0), 'B.def');
......
......@@ -33,7 +33,7 @@ suite('CSS Colorizing', () => {
tokenizationSupport = mode.tokenizationSupport;
assertOnEnter = modesUtil.createOnEnterAsserter(mode.getId(), CSSMode.LANG_CONFIG);
wordDefinition = LanguageConfigurationRegistry.getWordDefinition(mode);
wordDefinition = LanguageConfigurationRegistry.getWordDefinition(mode.getId());
})();
test('Skip whitespace', () => {
......
......@@ -113,7 +113,7 @@ suite('Colorizing - HTML', () => {
tokenizationSupport = _mode.tokenizationSupport;
onEnterSupport = LanguageConfigurationRegistry.getOnEnterSupport(_mode);
onEnterSupport = LanguageConfigurationRegistry.getOnEnterSupport(_mode.getId());
})();
test('Open Start Tag #1', () => {
......
......@@ -76,7 +76,7 @@ suite('Syntax Highlighting - PHP', () => {
tokenizationSupport = mode.tokenizationSupport;
assertOnEnter = modesUtil.createOnEnterAsserter(mode.getId(), PHPMode.LANG_CONFIG);
wordDefinition = LanguageConfigurationRegistry.getWordDefinition(mode);
wordDefinition = LanguageConfigurationRegistry.getWordDefinition(mode.getId());
})();
test('', () => {
......
......@@ -113,8 +113,8 @@ export class EditorAccessor implements emmet.Editor {
public getSyntax(): string {
let position = this.editor.getSelection().getStartPosition();
let mode = this.editor.getModel().getModeAtPosition(position.lineNumber, position.column);
let syntax = mode.getId().split('.').pop();
let modeId = this.editor.getModel().getModeIdAtPosition(position.lineNumber, position.column);
let syntax = modeId.split('.').pop();
if (/\b(razor|handlebars|erb|php|hbs|ejs|twig)\b/.test(syntax)) { // treat like html
return 'html';
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册