Merge branch 'alex/brackets'

Conflicts:
	src/vs/languages/handlebars/common/handlebars.ts
This commit is contained in:
Alex Dima
2016-02-16 17:00:07 +01:00
93 changed files with 3210 additions and 2840 deletions

View File

@@ -5,7 +5,6 @@
'use strict';
import {Emitter} from 'vs/base/common/event';
import {IBracketElectricCharacterContribution} from 'vs/editor/common/modes/supports';
import {score} from 'vs/editor/common/modes/languageSelector';
import {Remotable, IThreadService} from 'vs/platform/thread/common/thread';
import * as errors from 'vs/base/common/errors';
@@ -26,8 +25,6 @@ import {registerApiCommands} from 'vs/workbench/api/node/extHostApiCommands';
import * as extHostTypes from 'vs/workbench/api/node/extHostTypes';
import Modes = require('vs/editor/common/modes');
import {IModeService} from 'vs/editor/common/services/modeService';
import {ICommentsSupportContribution, ITokenTypeClassificationSupportContribution} from 'vs/editor/common/modes/supports';
import {IOnEnterSupportOptions} from 'vs/editor/common/modes/supports/onEnter';
import URI from 'vs/base/common/uri';
import Severity from 'vs/base/common/severity';
import {IDisposable} from 'vs/base/common/lifecycle';
@@ -395,104 +392,21 @@ export class ExtHostAPIImplementation {
private _setLanguageConfiguration(modeId: string, configuration: vscode.LanguageConfiguration): vscode.Disposable {
let disposables: IDisposable[] = [];
let {comments, wordPattern} = configuration;
// comment configuration
if (comments) {
let contrib: ICommentsSupportContribution = { commentsConfiguration: {} };
if (comments.lineComment) {
contrib.commentsConfiguration.lineCommentTokens = [comments.lineComment];
}
if (comments.blockComment) {
let [blockStart, blockEnd] = comments.blockComment;
contrib.commentsConfiguration.blockCommentStartToken = blockStart;
contrib.commentsConfiguration.blockCommentEndToken = blockEnd;
}
let d = this.Modes_CommentsSupport_register(modeId, contrib);
disposables.push(d);
}
let {wordPattern} = configuration;
// word definition
if (wordPattern) {
setWordDefinitionFor(modeId, wordPattern);
let d = this.Modes_TokenTypeClassificationSupport_register(modeId, {
wordDefinition: wordPattern
});
disposables.push(d);
} else {
setWordDefinitionFor(modeId, null);
}
// on enter
let onEnter: IOnEnterSupportOptions = {};
let empty = true;
let {brackets, indentationRules, onEnterRules} = configuration;
if (brackets) {
empty = false;
onEnter.brackets = brackets.map(pair => {
let [open, close] = pair;
return { open, close };
});
}
if (indentationRules) {
empty = false;
onEnter.indentationRules = indentationRules;
}
if (onEnterRules) {
empty = false;
onEnter.regExpRules = <any>onEnterRules;
}
if (!empty) {
let d = this.Modes_OnEnterSupport_register(modeId, onEnter);
disposables.push(d);
}
if (configuration.__electricCharacterSupport) {
disposables.push(
this.Modes_ElectricCharacterSupport_register(modeId, configuration.__electricCharacterSupport)
);
}
if (configuration.__characterPairSupport) {
disposables.push(
this.Modes_CharacterPairSupport_register(modeId, configuration.__characterPairSupport)
);
}
return extHostTypes.Disposable.from(...disposables);
return this.Modes_RichEditSupport_register(modeId, configuration);
}
private Modes_CommentsSupport_register(modeId: string, commentsSupport: ICommentsSupportContribution): IDisposable {
private Modes_RichEditSupport_register(modeId: string, configuration:vscode.LanguageConfiguration): IDisposable {
let disposeToken = ExtHostAPIImplementation.generateDisposeToken();
this._proxy.Modes_CommentsSupport_register(disposeToken, modeId, commentsSupport);
return this._disposableFromToken(disposeToken);
}
private Modes_TokenTypeClassificationSupport_register(modeId: string, tokenTypeClassificationSupport:ITokenTypeClassificationSupportContribution): IDisposable {
let disposeToken = ExtHostAPIImplementation.generateDisposeToken();
this._proxy.Modes_TokenTypeClassificationSupport_register(disposeToken, modeId, tokenTypeClassificationSupport);
return this._disposableFromToken(disposeToken);
}
private Modes_ElectricCharacterSupport_register(modeId: string, electricCharacterSupport:IBracketElectricCharacterContribution): IDisposable {
let disposeToken = ExtHostAPIImplementation.generateDisposeToken();
this._proxy.Modes_ElectricCharacterSupport_register(disposeToken, modeId, electricCharacterSupport);
return this._disposableFromToken(disposeToken);
}
private Modes_CharacterPairSupport_register(modeId: string, characterPairSupport:Modes.ICharacterPairContribution): IDisposable {
let disposeToken = ExtHostAPIImplementation.generateDisposeToken();
this._proxy.Modes_CharacterPairSupport_register(disposeToken, modeId, characterPairSupport);
return this._disposableFromToken(disposeToken);
}
private Modes_OnEnterSupport_register(modeId: string, opts: IOnEnterSupportOptions): IDisposable {
let disposeToken = ExtHostAPIImplementation.generateDisposeToken();
this._proxy.Modes_OnEnterSupport_register(disposeToken, modeId, opts);
this._proxy.Modes_RichEditSupport_register(disposeToken, modeId, configuration);
return this._disposableFromToken(disposeToken);
}
}
@@ -562,23 +476,7 @@ export class MainProcessVSCodeAPIHelper {
}
}
public Modes_CommentsSupport_register(disposeToken:string, modeId: string, commentsSupport: ICommentsSupportContribution): void {
this._token2Dispose[disposeToken] = this._modeService.registerDeclarativeCommentsSupport(modeId, commentsSupport);
}
public Modes_TokenTypeClassificationSupport_register(disposeToken:string, modeId: string, tokenTypeClassificationSupport:ITokenTypeClassificationSupportContribution): void {
this._token2Dispose[disposeToken] = this._modeService.registerDeclarativeTokenTypeClassificationSupport(modeId, tokenTypeClassificationSupport);
}
public Modes_ElectricCharacterSupport_register(disposeToken:string, modeId: string, electricCharacterSupport:IBracketElectricCharacterContribution): void {
this._token2Dispose[disposeToken] = this._modeService.registerDeclarativeElectricCharacterSupport(modeId, electricCharacterSupport);
}
public Modes_CharacterPairSupport_register(disposeToken:string, modeId: string, characterPairSupport:Modes.ICharacterPairContribution): void {
this._token2Dispose[disposeToken] = this._modeService.registerDeclarativeCharacterPairSupport(modeId, characterPairSupport);
}
public Modes_OnEnterSupport_register(disposeToken:string, modeId: string, opts:IOnEnterSupportOptions): void {
this._token2Dispose[disposeToken] = this._modeService.registerDeclarativeOnEnterSupport(modeId, <any>opts);
public Modes_RichEditSupport_register(disposeToken:string, modeId: string, configuration:vscode.LanguageConfiguration): void {
this._token2Dispose[disposeToken] = this._modeService.registerRichEditSupport(modeId, <any>configuration);
}
}