let rec re_search_buffer ?(wrapped=false) forward (buffer: my_buffer) ?start s_utf8 =
let (start, stop) =
if forward then
match start with
None -> (buffer#get_iter `INSERT, buffer#end_iter)
| Some i -> (i, buffer#end_iter)
else
match start with
None -> (buffer#start_iter, buffer#get_iter `INSERT)
| Some i -> (buffer#start_iter, i)
in
let gsearch = buffer#re_search forward in
match gsearch ~start ~stop (Pcre.regexp s_utf8) with
None ->
if wrapped then
(wrapped, None)
else
let start = if forward then buffer#start_iter else buffer#end_iter in
re_search_buffer ~wrapped: true forward buffer ~start s_utf8
| Some (start,stop) ->
(wrapped, Some (start, stop))