src/Pure/Tools/scala_project.scala
changeset 74429 fedc0b659881
parent 74104 fa92c5f8af86
child 74656 0659536b150b
--- a/src/Pure/Tools/scala_project.scala	Sat Oct 02 20:44:33 2021 +0200
+++ b/src/Pure/Tools/scala_project.scala	Sat Oct 02 22:11:34 2021 +0200
@@ -22,15 +22,21 @@
   }
 
 
-  /* file and directories */
+  /* plugins: modules with dynamic build */
 
-  def plugin_contexts(): List[Scala_Build.Context] =
-    for (plugin <- List("jedit_base", "jedit_main"))
-    yield Scala_Build.context(Path.explode("$ISABELLE_HOME/src/Tools/jEdit") + Path.basic(plugin))
+  class Plugin(dir: Path) extends Isabelle_System.Service
+  {
+    def context(): Scala_Build.Context = Scala_Build.context(dir)
+  }
+
+  lazy val plugins: List[Plugin] = Isabelle_System.make_services(classOf[Plugin])
+
+
+  /* file and directories */
 
   lazy val isabelle_files: (List[Path], List[Path]) =
   {
-    val contexts = Scala_Build.component_contexts() ::: plugin_contexts()
+    val contexts = Scala_Build.component_contexts() ::: plugins.map(_.context())
 
     val jars1 = Path.split(Isabelle_System.getenv("ISABELLE_CLASSPATH"))
     val jars2 = contexts.flatMap(_.requirements)