do not allow time window with no mode set on session while loading mode

This commit is contained in:
nightwing 2012-05-03 18:02:15 +04:00
commit e664a3b738

View file

@ -772,6 +772,10 @@ var EditSession = function(text, mode) {
if (module)
return done(module);
// set mode to text until loading is finished
if (!this.$mode)
this.$setModePlaceholder();
fetch(function() {
require([mode], done);
});
@ -799,6 +803,27 @@ var EditSession = function(text, mode) {
}
};
this.$setModePlaceholder = function() {
var textModeId = "ace/mode/text"
if (!this.$modes[textModeId])
this.$modes[textModeId] = new TextMode();
var tokenizer = this.$modes[textModeId].getTokenizer();
if (!this.bgTokenizer) {
this.bgTokenizer = new BackgroundTokenizer(tokenizer);
var _self = this;
this.bgTokenizer.addEventListener("update", function(e) {
_self._emit("tokenizerUpdate", e);
});
} else {
this.bgTokenizer.setTokenizer(tokenizer);
}
this.tokenRe = this.$modes[textModeId].tokenRe;
this.nonTokenRe = this.$modes[textModeId].nonTokenRe;
};
/**
* EditSession.setMode(mode)
* - mode (TextMode): Set a new text mode
@ -809,6 +834,7 @@ var EditSession = function(text, mode) {
this.$mode = null;
this.$modeId = null;
this.setMode = function(mode) {
mode = mode || "ace/mode/text";
// load on demand
if (typeof mode === "string") {
if (this.$modeId == mode)
@ -823,12 +849,6 @@ var EditSession = function(text, mode) {
_self.setMode(module);
});
return;
} else if (mode == null) {
mode = "ace/mode/text"
this.$modeId = mode;
this.$modes[mode] = this.$modes[mode] || (new TextMode());
this.setMode(this.$modes[mode]);
return;
}
if (this.$mode === mode) return;