let highlighter (buffer:GSourceView2.source_buffer) localizable ~start ~stop =
  try
    let _kf, start_s, _txt = DpdsState.get () in
    let put_tag tag = match tag with ("",[]) -> ()
      | _ -> add_tag buffer tag start stop
    in
    match localizable with
    | PStmt (_,stmt) ->
      if start_s.sid = stmt.sid then put_tag scope_start_tag;
      put_tag (Pscope.tag_stmt stmt);
      put_tag (DataScope.tag_stmt stmt);
      put_tag (Zones.tag_stmt stmt );
      put_tag (ShowDef.tag_stmt stmt)
    | PIP (Property.IPCodeAnnot (_, _, annot)) ->
      put_tag (Pscope.tag_annot annot)
    | PVDecl _ | PTermLval _ | PLval _ | PGlobal _ | PIP _ -> ()
  with Not_found -> ()