src/Pure/PIDE/resources.scala
changeset 75885 8342cba8eae8
parent 75884 3d8b37b1d798
child 75914 4da80799352f
equal deleted inserted replaced
75884:3d8b37b1d798 75885:8342cba8eae8
    55        (sessions_structure.dest_session_directories,
    55        (sessions_structure.dest_session_directories,
    56        (sessions_structure.bibtex_entries,
    56        (sessions_structure.bibtex_entries,
    57        (command_timings,
    57        (command_timings,
    58        (Command_Span.load_commands.map(cmd => (cmd.name, cmd.position)),
    58        (Command_Span.load_commands.map(cmd => (cmd.name, cmd.position)),
    59        (Scala.functions,
    59        (Scala.functions,
    60        (session_base.global_theories.toList,
    60        (sessions_structure.global_theories.toList,
    61         session_base.loaded_theories.keys)))))))))
    61         session_base.loaded_theories.keys)))))))))
    62   }
    62   }
    63 
    63 
    64 
    64 
    65   /* file formats */
    65   /* file formats */
   148       node_name = Document.Node.Name(path.implode, path.dir.implode, theory)
   148       node_name = Document.Node.Name(path.implode, path.dir.implode, theory)
   149       file <- loaded_files(syntax, node_name, load_commands(syntax, node_name)())
   149       file <- loaded_files(syntax, node_name, load_commands(syntax, node_name)())
   150     } yield file
   150     } yield file
   151   }
   151   }
   152 
   152 
       
   153   def global_theory(theory: String): Boolean =
       
   154     sessions_structure.global_theories.isDefinedAt(theory)
       
   155 
   153   def theory_name(qualifier: String, theory: String): String =
   156   def theory_name(qualifier: String, theory: String): String =
   154     if (Long_Name.is_qualified(theory) || session_base.global_theories.isDefinedAt(theory))
   157     if (Long_Name.is_qualified(theory) || global_theory(theory)) theory
   155       theory
       
   156     else Long_Name.qualify(qualifier, theory)
   158     else Long_Name.qualify(qualifier, theory)
   157 
   159 
   158   def find_theory_node(theory: String): Option[Document.Node.Name] = {
   160   def find_theory_node(theory: String): Option[Document.Node.Name] = {
   159     val thy_file = Path.basic(Long_Name.base_name(theory)).thy
   161     val thy_file = Path.basic(Long_Name.base_name(theory)).thy
   160     val session = sessions_structure.theory_qualifier(theory)
   162     val session = sessions_structure.theory_qualifier(theory)
   187   def import_name(info: Sessions.Info, s: String): Document.Node.Name =
   189   def import_name(info: Sessions.Info, s: String): Document.Node.Name =
   188     import_name(info.name, info.dir.implode, s)
   190     import_name(info.name, info.dir.implode, s)
   189 
   191 
   190   def find_theory(file: JFile): Option[Document.Node.Name] = {
   192   def find_theory(file: JFile): Option[Document.Node.Name] = {
   191     for {
   193     for {
   192       qualifier <- session_base.session_directories.get(File.canonical(file).getParentFile)
   194       qualifier <- sessions_structure.session_directories.get(File.canonical(file).getParentFile)
   193       theory_base <- proper_string(Thy_Header.theory_name(file.getName))
   195       theory_base <- proper_string(Thy_Header.theory_name(file.getName))
   194       theory = theory_name(qualifier, theory_base)
   196       theory = theory_name(qualifier, theory_base)
   195       theory_node <- find_theory_node(theory)
   197       theory_node <- find_theory_node(theory)
   196       if File.eq(theory_node.path.file, file)
   198       if File.eq(theory_node.path.file, file)
   197     } yield theory_node
   199     } yield theory_node
   206       (session, (info, _))  <- sessions_structure.imports_graph.iterator
   208       (session, (info, _))  <- sessions_structure.imports_graph.iterator
   207       dir <- (if (session == context_session) context_dir.toList else info.dirs).iterator
   209       dir <- (if (session == context_session) context_dir.toList else info.dirs).iterator
   208       theory <- Thy_Header.try_read_dir(dir).iterator
   210       theory <- Thy_Header.try_read_dir(dir).iterator
   209       if Completion.completed(s)(theory)
   211       if Completion.completed(s)(theory)
   210     } yield {
   212     } yield {
   211       if (session == context_session || session_base.global_theories.isDefinedAt(theory)) theory
   213       if (session == context_session || global_theory(theory)) theory
   212       else Long_Name.qualify(session, theory)
   214       else Long_Name.qualify(session, theory)
   213     }).toList.sorted
   215     }).toList.sorted
   214   }
   216   }
   215 
   217 
   216   def with_thy_reader[A](name: Document.Node.Name, f: Reader[Char] => A): A = {
   218   def with_thy_reader[A](name: Document.Node.Name, f: Reader[Char] => A): A = {