+ let searchText =
+ GSourceView.source_view ~auto_indent:false ~editable:false ()
+ in
+ let _ =
+ win#scrolledwinContent#add (searchText :> GObj.widget);
+ let callback () =
+ let text = win#entrySearch#text in
+ let highlight start end_ =
+ searchText#source_buffer#move_mark `INSERT ~where:start;
+ searchText#source_buffer#move_mark `SEL_BOUND ~where:end_;
+ searchText#scroll_mark_onscreen `INSERT
+ in
+ let iter = searchText#source_buffer#get_iter `SEL_BOUND in
+ match iter#forward_search text with
+ | None ->
+ (match searchText#source_buffer#start_iter#forward_search text with
+ | None -> ()
+ | Some (start,end_) -> highlight start end_)
+ | Some (start,end_) -> highlight start end_
+ in
+ ignore(win#entrySearch#connect#activate ~callback);
+ ignore(win#buttonSearch#connect#clicked ~callback);
+ in