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