aboutsummaryrefslogtreecommitdiffhomepage
path: root/ide/ideutils.ml
diff options
context:
space:
mode:
authorGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2015-08-21 18:09:48 +0200
committerGravatar Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr>2015-09-20 15:20:32 +0200
commit8b609e4e6df906dc16e8fa506a71046ab3b8f16c (patch)
tree409ea62c03af80528f99649fe694b1624fa38985 /ide/ideutils.ml
parent05fc256eecfea634d8c726c5b7f81269a87eca18 (diff)
Pluging in tag preferences into buffer printing.
Diffstat (limited to 'ide/ideutils.ml')
-rw-r--r--ide/ideutils.ml18
1 files changed, 18 insertions, 0 deletions
diff --git a/ide/ideutils.ml b/ide/ideutils.ml
index 053bba805..88a8486f4 100644
--- a/ide/ideutils.ml
+++ b/ide/ideutils.ml
@@ -37,7 +37,25 @@ let flash_info =
let flash_context = status#new_context ~name:"Flash" in
(fun ?(delay=5000) s -> flash_context#flash ~delay s)
+module StringMap = Map.Make(String)
+let translate s = s
+
+let insert_xml ?(tags = []) (buf : #GText.buffer_skel) xml =
+ let open Xml_datatype in
+ let tag name =
+ let name = translate name in
+ match GtkText.TagTable.lookup buf#tag_table name with
+ | None -> raise Not_found
+ | Some tag -> new GText.tag tag
+ in
+ let rec insert tags = function
+ | PCData s -> buf#insert ~tags:(List.rev tags) s
+ | Element (t, _, children) ->
+ let tags = try tag t :: tags with Not_found -> tags in
+ List.iter (fun xml -> insert tags xml) children
+ in
+ insert tags xml
let set_location = ref (function s -> failwith "not ready")