method set_mode m =
      match mode with
        None -> mode <- m
      | Some m2 ->
          let s = m2#from_display (self#buffer#get_text ()) in
          mode <- m;
          self#buffer#set_text (self#mode_to_display s);
          self#buffer#set_modified false