method update_source_marks =
      let bookmarks = List.filter
        (fun (bm_name, (f,_,_)) -> Ed_misc.same_files filename f)
        (Ed_bookmarks.list bookmarks)
      in
      buffer#remove_source_marks
        ~start: buffer#start_iter
        ~stop: buffer#end_iter ();
      List.iter
        (fun (bm,(_,l,c)) ->
           try
(*             prerr_endline (Printf.sprintf
              "adding bookmark %s on file %s at line %d and char %d"
                bm filename l c);
                *)

             let sm = buffer#create_source_mark ~name: bm ~category: "bookmark"
               (buffer#get_iter (`LINECHAR (l,c)))
             in
             self#add_source_mark (bm, sm)
           with
             _ -> ()
        )
        bookmarks