method goto_char n =
      let m = max 0 (min n (file#buffer#char_count -1)) in
      let where = file#buffer#get_iter (`OFFSET m) in
      self#place_cursor where