diff --git a/main/Load.scala b/main/Load.scala index 7c5c92b94..164690eeb 100755 --- a/main/Load.scala +++ b/main/Load.scala @@ -534,8 +534,10 @@ object Load } def initialSession(structure: BuildStructure, rootEval: () => Eval, s: State): SessionSettings = { - val current = s get Keys.sessionSettings map (_.currentProject) getOrElse Map.empty - new SessionSettings(structure.root, projectMap(structure, current), structure.settings, Map.empty, Nil, rootEval) + val session = s get Keys.sessionSettings + val currentProject = session map (_.currentProject) getOrElse Map.empty + val currentBuild = session map (_.currentBuild) filter (uri => structure.units.keys exists (uri ==)) getOrElse structure.root + new SessionSettings(currentBuild, projectMap(structure, currentProject), structure.settings, Map.empty, Nil, rootEval) } def initialSession(structure: BuildStructure, rootEval: () => Eval): SessionSettings = @@ -546,8 +548,8 @@ object Load val units = structure.units val getRoot = getRootProject(units) def project(uri: URI) = { - current get uri map { - p => if (structure allProjects uri map (_.id) contains p) p else getRoot(uri) + current get uri filter { + p => structure allProjects uri map (_.id) contains p } getOrElse getRoot(uri) } units.keys.map(uri => (uri, project(uri))).toMap diff --git a/sbt/src/sbt-test/actions/reload/changes/Build1.scala b/sbt/src/sbt-test/actions/reload/changes/Build1.scala new file mode 100755 index 000000000..3c64e0b09 --- /dev/null +++ b/sbt/src/sbt-test/actions/reload/changes/Build1.scala @@ -0,0 +1,8 @@ +import sbt._ + +object Build1 extends Build +{ + lazy val root1 = Project("root1", file("root1")) settings( + TaskKey[Unit]("g") := {} + ) +} diff --git a/sbt/src/sbt-test/actions/reload/changes/Build2.scala b/sbt/src/sbt-test/actions/reload/changes/Build2.scala new file mode 100755 index 000000000..ed474650c --- /dev/null +++ b/sbt/src/sbt-test/actions/reload/changes/Build2.scala @@ -0,0 +1,6 @@ +import sbt._ + +object Build2 extends Build +{ + lazy val root2 = Project("root2", file("root2")) +} diff --git a/sbt/src/sbt-test/actions/reload/test b/sbt/src/sbt-test/actions/reload/test index ff2855d59..2b3c2008a 100755 --- a/sbt/src/sbt-test/actions/reload/test +++ b/sbt/src/sbt-test/actions/reload/test @@ -2,4 +2,12 @@ > project sub > f > reload -> f \ No newline at end of file +> f +$ copy-file changes/Build1.scala project/TestProject.scala +> reload +-> f +> g +# The current URI should be kept +$ copy-file changes/Build2.scala project/First.scala +> reload +> g \ No newline at end of file