src/Pure/PIDE/resources.scala
changeset 76886 f405fcc3db33
parent 76885 c2932487360d
child 76889 98993083e4ac
equal deleted inserted replaced
76885:c2932487360d 76886:f405fcc3db33
   119 
   119 
   120   def loaded_files(
   120   def loaded_files(
   121     syntax: Outer_Syntax,
   121     syntax: Outer_Syntax,
   122     name: Document.Node.Name,
   122     name: Document.Node.Name,
   123     spans: List[Command_Span.Span]
   123     spans: List[Command_Span.Span]
   124   ) : List[Path] = {
   124   ) : List[Document.Node.Name] = {
   125     val dir = name.master_dir_path
   125     for (span <- spans; file <- span.loaded_files(syntax).files)
   126     for { span <- spans; file <- span.loaded_files(syntax).files }
   126       yield Document.Node.Name(append_path(name.master_dir, Path.explode(file)))
   127       yield (dir + Path.explode(file)).expand
   127   }
   128   }
   128 
   129 
   129   def pure_files(syntax: Outer_Syntax): List[Document.Node.Name] =
   130   def pure_files(syntax: Outer_Syntax): List[Path] =
       
   131     (for {
   130     (for {
   132       (name, theory) <- Thy_Header.ml_roots.iterator
   131       (file, theory) <- Thy_Header.ml_roots.iterator
   133       node = append_path("~~/src/Pure", Path.explode(name))
   132       node = append_path("~~/src/Pure", Path.explode(file))
   134       node_name = Document.Node.Name(node, theory = theory)
   133       node_name = Document.Node.Name(node, theory = theory)
   135       file <- loaded_files(syntax, node_name, load_commands(syntax, node_name)()).iterator
   134       name <- loaded_files(syntax, node_name, load_commands(syntax, node_name)()).iterator
   136     } yield file).toList
   135     } yield name).toList
   137 
   136 
   138   def global_theory(theory: String): Boolean =
   137   def global_theory(theory: String): Boolean =
   139     sessions_structure.global_theories.isDefinedAt(theory)
   138     sessions_structure.global_theories.isDefinedAt(theory)
   140 
   139 
   141   def literal_theory(theory: String): Boolean =
   140   def literal_theory(theory: String): Boolean =
   412       .filter(p => p._2.nonEmpty)
   411       .filter(p => p._2.nonEmpty)
   413 
   412 
   414     def loaded_files(
   413     def loaded_files(
   415       name: Document.Node.Name,
   414       name: Document.Node.Name,
   416       spans: List[Command_Span.Span]
   415       spans: List[Command_Span.Span]
   417     ) : (String, List[Path]) = {
   416     ) : (String, List[Document.Node.Name]) = {
   418       val theory = name.theory
   417       val theory = name.theory
   419       val syntax = get_syntax(name)
   418       val syntax = get_syntax(name)
   420       val files1 = resources.loaded_files(syntax, name, spans)
   419       val files1 = resources.loaded_files(syntax, name, spans)
   421       val files2 = if (theory == Thy_Header.PURE) pure_files(syntax) else Nil
   420       val files2 = if (theory == Thy_Header.PURE) pure_files(syntax) else Nil
   422       (theory, files1 ::: files2)
   421       (theory, files1 ::: files2)
   423     }
   422     }
   424 
   423 
   425     def loaded_files: List[Path] =
   424     def loaded_files: List[Document.Node.Name] =
   426       for {
   425       for {
   427         (name, spans) <- load_commands
   426         (name, spans) <- load_commands
   428         file <- loaded_files(name, spans)._2
   427         file <- loaded_files(name, spans)._2
   429       } yield file
   428       } yield file
   430 
   429