method cut_to_selection ?(concat : [`APPEND | `PREPEND] option) ~start ~stop () =
      let b = file#buffer in
      let text = b#get_text ~start ~stop () in
      b#begin_user_action ();
      begin
        match concat with
          None ->
            pastable_history#add text;
            GMain.selection#set_text text;
        | Some p ->
            let sel =
              match GMain.selection#text with
                None -> ""
              | Some s -> s
            in
            let text =
              match p with
                `PREPEND -> text^sel
              | `APPEND -> sel^text
            in
            pastable_history#add text;
            GMain.selection#set_text text;
      end;
      b#delete ~start ~stop;
      self#update_my_location;
      b#end_user_action ();