69 val info = full_sessions(session_name) |
69 val info = full_sessions(session_name) |
70 val session_base = deps(session_name) |
70 val session_base = deps(session_name) |
71 val resources = new Resources(session_base) |
71 val resources = new Resources(session_base) |
72 val local_theories = session_base.known.theories_local.iterator.map(_._2).toSet |
72 val local_theories = session_base.known.theories_local.iterator.map(_._2).toSet |
73 |
73 |
74 def standard_import(qualifier: String, s: String): String = |
74 def standard_import(qualifier: String, dir: String, s: String): String = |
75 { |
75 { |
76 val name = resources.import_name(qualifier, "", s) |
76 val name = resources.import_name(qualifier, dir, s) |
77 if (!local_theories.contains(name)) s |
77 if (!local_theories.contains(name)) s |
78 if (resources.theory_qualifier(name) != qualifier) name.theory |
78 if (resources.theory_qualifier(name) != qualifier) name.theory |
79 else if (Thy_Header.is_base_name(s)) name.theory_base_name |
79 else if (Thy_Header.is_base_name(s)) name.theory_base_name |
80 else s |
80 else s |
81 } |
81 } |
82 |
82 |
83 val updates_root = |
83 val updates_root = |
84 for { |
84 for { |
85 (_, pos) <- info.theories.flatMap(_._2) |
85 (_, pos) <- info.theories.flatMap(_._2) |
86 upd <- update_name(Sessions.root_syntax.keywords, pos, |
86 upd <- update_name(Sessions.root_syntax.keywords, pos, |
87 standard_import(info.theory_qualifier, _)) |
87 standard_import(info.theory_qualifier, info.dir.implode, _)) |
88 } yield upd |
88 } yield upd |
89 |
89 |
90 val updates_theories = |
90 val updates_theories = |
91 for { |
91 for { |
92 (_, name) <- session_base.known.theories_local.toList |
92 (_, name) <- session_base.known.theories_local.toList |
94 // FIXME proper UTF8 positions for check_thy |
94 // FIXME proper UTF8 positions for check_thy |
95 resources.check_thy_reader(name, |
95 resources.check_thy_reader(name, |
96 Scan.char_reader(File.read(Path.explode(name.node))), |
96 Scan.char_reader(File.read(Path.explode(name.node))), |
97 Token.Pos.file(name.node)).imports |
97 Token.Pos.file(name.node)).imports |
98 upd <- update_name(session_base.syntax.keywords, pos, |
98 upd <- update_name(session_base.syntax.keywords, pos, |
99 standard_import(resources.theory_qualifier(name), _)) |
99 standard_import(resources.theory_qualifier(name), name.master_dir, _)) |
100 } yield upd |
100 } yield upd |
101 |
101 |
102 updates_root ::: updates_theories |
102 updates_root ::: updates_theories |
103 }) |
103 }) |
104 } |
104 } |