method write_file ?(fail_if_newer=false) () =
      if self#newer_file_exists && fail_if_newer then
        raise (Newer_file_exists filename);
      let utf8 = buffer#get_text () in
      let s = self#of_utf8 (self#mode_from_display utf8) in
      Ed_misc.file_of_string ~file: filename s;
      buffer#set_modified false;
      self#update_date