src/Pure/Thy/sessions.scala
changeset 65468 c41791ad75c3
parent 65463 104502de757c
child 65471 05e5bffcf1d8
equal deleted inserted replaced
65467:9535c670b1b4 65468:c41791ad75c3
   593 
   593 
   594   private def is_session_dir(dir: Path): Boolean =
   594   private def is_session_dir(dir: Path): Boolean =
   595     (dir + ROOT).is_file || (dir + ROOTS).is_file
   595     (dir + ROOT).is_file || (dir + ROOTS).is_file
   596 
   596 
   597   private def check_session_dir(dir: Path): Path =
   597   private def check_session_dir(dir: Path): Path =
   598     if (is_session_dir(dir)) dir
   598     if (is_session_dir(dir)) File.pwd() + dir.expand
   599     else error("Bad session root directory: " + dir.toString)
   599     else error("Bad session root directory: " + dir.toString)
   600 
   600 
   601   def load(options: Options, dirs: List[Path] = Nil, select_dirs: List[Path] = Nil): T =
   601   def load(options: Options, dirs: List[Path] = Nil, select_dirs: List[Path] = Nil): T =
   602   {
   602   {
   603     def load_dir(select: Boolean, dir: Path): List[(String, Info)] =
   603     def load_dir(select: Boolean, dir: Path): List[(String, Info)] =
   624       }
   624       }
   625       else Nil
   625       else Nil
   626     }
   626     }
   627 
   627 
   628     val default_dirs = Isabelle_System.components().filter(is_session_dir(_))
   628     val default_dirs = Isabelle_System.components().filter(is_session_dir(_))
   629     dirs.foreach(check_session_dir(_))
       
   630     select_dirs.foreach(check_session_dir(_))
       
   631 
   629 
   632     make(
   630     make(
   633       for {
   631       for {
   634         (select, dir) <- (default_dirs ::: dirs).map((false, _)) ::: select_dirs.map((true, _))
   632         (select, dir) <- (default_dirs ::: dirs).map((false, _)) ::: select_dirs.map((true, _))
   635         info <- load_dir(select, dir)
   633         info <- load_dir(select, check_session_dir(dir))
   636       } yield info)
   634       } yield info)
   637   }
   635   }
   638 
   636 
   639 
   637 
   640 
   638