summaryrefslogtreecommitdiff
path: root/ide/wg_Find.ml
diff options
context:
space:
mode:
authorGravatar Enrico Tassi <gareuselesinge@debian.org>2015-07-15 10:36:12 +0200
committerGravatar Enrico Tassi <gareuselesinge@debian.org>2015-07-15 10:36:12 +0200
commit0aa2544d04dbd4b6ee665b551ed165e4fb02d2fa (patch)
tree12e8931a4a56da1a1bdfb89d670f4ba38fe08e1f /ide/wg_Find.ml
parentcec4741afacd2e80894232850eaf9f9c0e45d6d7 (diff)
Imported Upstream version 8.5~beta2+dfsgupstream/8.5_beta2+dfsg
Diffstat (limited to 'ide/wg_Find.ml')
-rw-r--r--ide/wg_Find.ml14
1 files changed, 10 insertions, 4 deletions
diff --git a/ide/wg_Find.ml b/ide/wg_Find.ml
index b6f63a3b..a0949ca0 100644
--- a/ide/wg_Find.ml
+++ b/ide/wg_Find.ml
@@ -8,6 +8,8 @@
type mode = [ `FIND | `REPLACE ]
+let b2c = Ideutils.byte_offset_to_char_offset
+
class finder name (view : GText.view) =
let widget = Wg_Detachable.detachable
@@ -61,8 +63,10 @@ class finder name (view : GText.view) =
method replace () =
if self#may_replace () then
let txt = self#get_selected_word () in
+ let () = view#buffer#begin_user_action () in
let _ = view#buffer#delete_selection () in
let _ = view#buffer#insert_interactive (self#replacement txt) in
+ let () = view#buffer#end_user_action () in
self#find_forward ()
else self#find_forward ()
@@ -85,8 +89,8 @@ class finder name (view : GText.view) =
try
let i = Str.search_backward regexp text (String.length text - 1) in
let j = Str.match_end () in
- Some(view#buffer#start_iter#forward_chars i,
- view#buffer#start_iter#forward_chars j)
+ Some(view#buffer#start_iter#forward_chars (b2c text i),
+ view#buffer#start_iter#forward_chars (b2c text j))
with Not_found -> None
method private forward_search starti =
@@ -95,7 +99,7 @@ class finder name (view : GText.view) =
try
let i = Str.search_forward regexp text 0 in
let j = Str.match_end () in
- Some(starti#forward_chars i, starti#forward_chars j)
+ Some(starti#forward_chars (b2c text i), starti#forward_chars (b2c text j))
with Not_found -> None
method replace_all () =
@@ -115,7 +119,9 @@ class finder name (view : GText.view) =
let () = view#buffer#delete_mark (`MARK stop_mark) in
replace_at next
in
- replace_at view#buffer#start_iter
+ let () = view#buffer#begin_user_action () in
+ let () = replace_at view#buffer#start_iter in
+ view#buffer#end_user_action ()
method private set_not_found () =
find_entry#misc#modify_base [`NORMAL, `NAME "#F7E6E6"];