"# Xcls_MainWindow window" : "null",
"# bool dirty" : false,
"# bool pos" : false,
+ "# int last_error_counter" : 0,
"# int pos_root_x" : "",
"# int pos_root_y" : "",
"# string activeEditor" : "\"\"",
" _this.dirty = false;",
" this.el.grab_focus();",
" _this.save_button.el.sensitive = false;",
+ " _this.last_error_counter = -1;",
"}"
]
}
"}"
],
"| void updateErrorMarks" : [
- "(string category) {",
+ "() {",
"\t",
" ",
"",
"\tGtk.TextIter end; ",
"\tbuf.get_bounds (out start, out end);",
"",
- "\tbuf.remove_source_marks (start, end, category);",
+ "\t",
+ "",
" ",
"\t//GLib.debug(\"highlight errors\");\t\t ",
"",
"\t\treturn;",
"",
"\t}",
- "\tvar ar = this.file.getErrors(category);",
- "\tif (ar == null || ar.get_n_items() < 1) {",
+ "\tvar ar = this.file.getErrors();",
+ "\tif (ar.size < 1) {",
+ "\t\tbuf.remove_source_marks (start, end, null);",
+ "\t\tthis.last_error_counter = file.error_counter ;",
"\t\t//GLib.debug(\"highlight %s : %s has no errors\", this.file.relpath, category);",
"\t\treturn;",
"\t}",
- " ",
+ "\t",
"",
- " ",
+ " // basicaly check if there is no change, then we do not do any update..",
+ " // we can do this by just using an error counter?",
+ " // if that's changed then we will do an update, otherwise dont bother.",
+ "\t ",
"\t",
"\tvar offset = 0;",
- "\t ",
+ "\tvar hoffset = 0;",
"",
"\tvar tlines = buf.get_line_count () +1;",
"\t",
"\tif (_this.prop != null) {",
"\t\t// this still seems flaky...",
- "\t\t",
+ "",
"\t\ttlines = _this.prop.end_line;",
"\t\toffset = _this.prop.start_line;",
+ "\t\thoffset = _this.node.node_pad.length;",
+ "\t\t",
"\t\t ",
- "\t}",
- "\t ",
- "\tfor (var i = 0; i < ar.get_n_items();i++) {",
- "\t\tvar err = (Palete.CompileError) ar.get_item(i);",
+ "\t} else {",
+ "\t\t// no update...",
+ "\t\tif (this.last_error_counter == file.error_counter) {",
"\t\t",
+ "\t\t\treturn;",
+ "\t\t}",
+ "\t",
+ "\t}",
+ "\tbuf.remove_source_marks (start, end, null);",
+ "\tforeach(var diag in ar) { ",
"\t Gtk.TextIter iter;",
"// print(\"get inter\\n\");",
- "\t var eline = err.line - offset;",
+ "\t var eline = (int)diag.range.start.line - offset;",
+ "\t //var eline = diag.range.end_line - offset;",
"\t //GLib.debug(\"GOT ERROR on line %d -- converted to %d (offset = %d)\",",
"\t //\terr.line ,eline, offset);",
"\t ",
"\t ",
"\t if (eline > tlines || eline < 0) {",
- "\t return;",
+ "",
+ "\t continue;",
"\t }",
"\t ",
"\t ",
- "\t buf.get_iter_at_line( out iter, eline);",
+ "\t buf.get_iter_at_line_offset( out iter, eline, (int)diag.range.start.character - hoffset);",
"\t ",
"\t ",
- "\t\tvar msg = \"Line: %d %s : %s\".printf(eline+1, err.category, err.msg);",
- "\t buf.create_source_mark( msg, err.category, iter);",
+ "\t\tvar msg = \"Line: %d %s : %s\".printf(eline+1, diag.category, diag.message);",
+ "\t buf.create_source_mark( msg, diag.category, iter);",
"\t // GLib.debug(\"set line %d to %s\", eline, msg);",
"\t //this.marks.set(eline, msg);",
"\t}",
- "\treturn ;",
+ "\tthis.last_error_counter = file.error_counter ;",
"",
"",
"",