"\t if (eline > tlines || eline < 0) {",
"\t continue;",
"\t }",
- "\t ",
"\t ",
"\t buf.get_iter_at_line( out iter, eline);",
"\t \tvar msg = \"Line: %d %s : %s\".printf(eline+1, diag.category, diag.message);",
"\t buf.create_source_mark( msg, diag.category, iter);",
+ "\t ",
+ " \t var spos = (int)diag.range.start.character - hoffset;",
+ " \t if (spos < 0) { spos =0 ; }",
+ " \t if (spos > iter.get_chars_in_line()) {",
+ " \t \tspos = iter.get_chars_in_line();",
+ " \t}",
+ "\t\tbuf.get_iter_at_line( out iter, eline_to);",
+ "\t\tvar epos = (int)diag.range.end.character - hoffset;",
+ " \t if (epos < 0) { epos =0 ; }",
+ " \t if (epos > iter.get_chars_in_line()) {",
+ " \t \tepos = iter.get_chars_in_line();",
+ " \t}",
+ " \t ",
" \t ",
- " \t buf.get_iter_at_line_offset( out start, ",
- " \t \teline, (int)diag.range.start.character - hoffset); ",
- " \t buf.get_iter_at_line_offset( out end, ",
- " \t \teline_to, (int)diag.range.end.character - hoffset); ",
+ " \t buf.get_iter_at_line_offset( out start, eline, spos); ",
+ " \t ",
+ " \t buf.get_iter_at_line_offset( out end, eline_to,epos); ",
" \t \t",
"\t buf.apply_tag_by_name(diag.category, start, end);",
"\t ",