Fix bug in semantic highlighting.
This commit is contained in:
parent
3031492e9c
commit
11e9267046
69 changed files with 47994 additions and 82 deletions
|
|
@ -44,11 +44,12 @@ var TextMode = require("./text").Mode;
|
|||
var Tokenizer = require("../tokenizer").Tokenizer;
|
||||
var XQueryHighlightRules = require("./xquery_highlight_rules").XQueryHighlightRules;
|
||||
var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour;
|
||||
//var XQueryBackgroundHighlighter = require("./xquery_background_highlighter").XQueryBackgroundHighlighter;
|
||||
var Range = require("../range").Range;
|
||||
|
||||
var Mode = function(parent) {
|
||||
this.$tokenizer = new Tokenizer(new XQueryHighlightRules().getRules());
|
||||
this.$behaviour = new XQueryBehaviour(parent);
|
||||
this.$tokenizer = new Tokenizer(new XQueryHighlightRules().getRules());
|
||||
this.$behaviour = new XQueryBehaviour(parent);
|
||||
};
|
||||
|
||||
oop.inherits(Mode, TextMode);
|
||||
|
|
@ -117,21 +118,20 @@ oop.inherits(Mode, TextMode);
|
|||
}
|
||||
};
|
||||
|
||||
this.deltas = [];
|
||||
|
||||
this.createWorker = function(session) {
|
||||
this.$deltas = [];
|
||||
var worker = new WorkerClient(["ace"], "worker-xquery.js", "ace/mode/xquery_worker", "XQueryWorker");
|
||||
var that = this;
|
||||
|
||||
session.getDocument().on('change', function(evt){
|
||||
that.deltas.push(evt.data);
|
||||
that.$deltas.push(evt.data);
|
||||
});
|
||||
|
||||
|
||||
worker.attachToDocument(session.getDocument());
|
||||
|
||||
worker.on("start", function(e) {
|
||||
console.log("start");
|
||||
that.deltas = [];
|
||||
that.$deltas = [];
|
||||
});
|
||||
|
||||
worker.on("error", function(e) {
|
||||
|
|
@ -148,13 +148,13 @@ oop.inherits(Mode, TextMode);
|
|||
|
||||
var lines = tokens.data;
|
||||
|
||||
for(var i in that.deltas)
|
||||
for(var i=0; i < that.$deltas.length; i++)
|
||||
{
|
||||
var delta = that.deltas[i];
|
||||
//console.log(delta);
|
||||
var delta = that.$deltas[i];
|
||||
|
||||
if (delta.action === "insertLines")
|
||||
{
|
||||
var newLineCount = delta.range.end.row - delta.range.start.row;
|
||||
var newLineCount = delta.lines.length;
|
||||
for (var i = 0; i < newLineCount; i++) {
|
||||
lines.splice(delta.range.start.row + i, 0, undefined);
|
||||
}
|
||||
|
|
@ -165,23 +165,29 @@ oop.inherits(Mode, TextMode);
|
|||
{
|
||||
lines.splice(delta.range.end.row, 0, undefined);
|
||||
} else {
|
||||
delete lines[delta.range.start.row];
|
||||
lines[delta.range.start.row] = undefined;
|
||||
}
|
||||
} else if (delta.action === "removeLines") {
|
||||
var oldLineCount = delta.range.end.row - delta.range.start.row;
|
||||
for (var i = 0; i < newLineCount; i++) {
|
||||
lines.splice(delta.range.start.row + i, 1);
|
||||
}
|
||||
var oldLineCount = delta.lines.length;
|
||||
lines.splice(delta.range.start.row, oldLineCount);
|
||||
} else if (delta.action === "removeText") {
|
||||
if (session.getDocument().isNewLine(delta.text))
|
||||
{
|
||||
lines[delta.range.start.row] = undefined;
|
||||
lines.splice(delta.range.end.row, 1);
|
||||
} else {
|
||||
lines[delta.range.start.row] = undefined;
|
||||
}
|
||||
delete lines[delta.range.start.row];
|
||||
}
|
||||
}
|
||||
|
||||
session.bgTokenizer.lines = lines;
|
||||
//this.$highlighter = new XQueryBackgroundHighlighter(session);
|
||||
//this.$highlighter.lines = lines;
|
||||
//for(var i=0; i < that.$deltas.length; i++)
|
||||
//{
|
||||
// var delta = that.$deltas[i];
|
||||
// this.$highlighter.processDelta(delta);
|
||||
//}
|
||||
session.bgTokenizer.lines = lines;// this.$highlighter.lines;
|
||||
session.bgTokenizer.fireUpdateEvent(firstRow, lastRow);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ var XQueryHighlightRules = function() {
|
|||
"external|" +
|
||||
"if|then|else|as|and|or|typeswitch|case|ascending|descending|empty|in|count|updating|insert|delete|replace|value|node|attribute|text|element|into|of|with|contains").split("|")
|
||||
);
|
||||
|
||||
|
||||
// regexp must not have capturing parentheses
|
||||
// regexps are ordered -> the first match is used
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue