let create_buffer ?(attributes=[]) filename =
  let mes = Printf.sprintf "creating buffer for %s" filename in
  Ed_misc.display_message mes;

  let b = new my_buffer () in
  b#set_max_undo_levels Ed_sourceview_rc.max_undo_levels#get;
  b#place_cursor b#start_iter;
  b#set_highlight true;
  let name = get_fresh_buffer_name (Filename.basename filename) in
  let file = new buffered_file ~attributes ~name ~filename b in
  buffers := file :: !buffers;
  make_buffer_first_in_history file#name;
  file