src/Pure/PIDE/document.ML
changeset 46739 6024353549ca
parent 45674 eb65c9d17e2f
child 46876 8f3bb485f628
equal deleted inserted replaced
46738:1d2cbcc50fb2 46739:6024353549ca
   210         nodes
   210         nodes
   211         |> update_node name (edit_node edits)
   211         |> update_node name (edit_node edits)
   212         |> touch_node name
   212         |> touch_node name
   213     | Header header =>
   213     | Header header =>
   214         let
   214         let
   215           val parents = (case header of Exn.Res (_, parents, _) => parents | _ => []);
   215           val imports = (case header of Exn.Res (_, imports, _) => imports | _ => []);
   216           val nodes1 = nodes
   216           val nodes1 = nodes
   217             |> default_node name
   217             |> default_node name
   218             |> fold default_node parents;
   218             |> fold default_node imports;
   219           val nodes2 = nodes1
   219           val nodes2 = nodes1
   220             |> Graph.Keys.fold
   220             |> Graph.Keys.fold
   221                 (fn dep => Graph.del_edge (dep, name)) (Graph.imm_preds nodes1 name);
   221                 (fn dep => Graph.del_edge (dep, name)) (Graph.imm_preds nodes1 name);
   222           val (header', nodes3) =
   222           val (header', nodes3) =
   223             (header, Graph.add_deps_acyclic (name, parents) nodes2)
   223             (header, Graph.add_deps_acyclic (name, imports) nodes2)
   224               handle Graph.CYCLES cs => (Exn.Exn (ERROR (cat_lines (map cycle_msg cs))), nodes2);
   224               handle Graph.CYCLES cs => (Exn.Exn (ERROR (cat_lines (map cycle_msg cs))), nodes2);
   225         in Graph.map_node name (set_header header') nodes3 end
   225         in Graph.map_node name (set_header header') nodes3 end
   226         |> touch_node name
   226         |> touch_node name
   227     | Perspective perspective =>
   227     | Perspective perspective =>
   228         update_node name (set_perspective perspective) nodes);
   228         update_node name (set_perspective perspective) nodes);