let goto_error file line start stop error =
match !Ed_sourceview.active_sourceview with
None -> ()
| Some v ->
let com = Printf.sprintf "open_file \"%s\" %d,%d" file (line-1) start in
Cam_commands.eval_command com;
v#set_location ((line-1), start);
let mes = Printf.sprintf "Line %d, chars %d-%d: %s" line start stop error in
Ed_misc.error_message (Ed_misc.to_utf8 mes);
let line_offset =
let it = v#file#buffer#get_iter (`LINE (line-1)) in
it#offset
in
let from_display =
v#file#mode_from_display
(v#file#buffer#get_text ())
in
let (left, right) =
let left =
Cam_misc.utf8_string_length
(v#file#mode_to_display
(String.sub from_display 0 (line_offset + start)))
in
let right =
Cam_misc.utf8_string_length
(v#file#mode_to_display
(String.sub from_display 0 (line_offset + stop)))
in
(left, right)
in
let start = v#file#buffer#get_iter (`OFFSET left) in
let stop = v#file#buffer#get_iter (`OFFSET right) in
v#file#buffer#select_range start stop