From 8bfab5313e5e90ee1eb90c0407fb6f200311da60 Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Mon, 27 Jan 2014 14:35:53 +0000 Subject: [PATCH 1/2] Fixed SessionSettings replacing existing setting --- main/src/main/scala/sbt/SessionSettings.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/src/main/scala/sbt/SessionSettings.scala b/main/src/main/scala/sbt/SessionSettings.scala index caff96b56..81342477c 100755 --- a/main/src/main/scala/sbt/SessionSettings.scala +++ b/main/src/main/scala/sbt/SessionSettings.scala @@ -110,7 +110,7 @@ object SessionSettings val RangePosition(_, r@LineRange(start, end)) = s.pos settings find (_._1.key == s.key) match { case Some(ss@(ns, newLines)) if !ns.init.dependencies.contains(ns.key) => - val shifted = ns withPos RangePosition(path, LineRange(start - offs, start - offs + 1)) + val shifted = ns withPos RangePosition(path, LineRange(start - offs, start - offs + newLines.size)) (offs + end - start - newLines.size, shifted::olds, ss::repl, lineMap + (start -> (end, newLines))) case _ => val shifted = s withPos RangePosition(path, r shift -offs) From 083eb38bd2a3492395dca10ebae689aac8940d0f Mon Sep 17 00:00:00 2001 From: Dan Sanduleac Date: Sun, 2 Feb 2014 08:50:47 +0000 Subject: [PATCH 2/2] [scripted] Session update without reload --- .../session-update-from-cmd/build.check.1 | 10 ++++++++ .../project/session-update-from-cmd/build.sbt | 7 ++++++ .../project/build.scala | 25 +++++++++++++++++++ .../project/session-update-from-cmd/test | 4 +++ 4 files changed, 46 insertions(+) create mode 100644 sbt/src/sbt-test/project/session-update-from-cmd/build.check.1 create mode 100644 sbt/src/sbt-test/project/session-update-from-cmd/build.sbt create mode 100644 sbt/src/sbt-test/project/session-update-from-cmd/project/build.scala create mode 100644 sbt/src/sbt-test/project/session-update-from-cmd/test diff --git a/sbt/src/sbt-test/project/session-update-from-cmd/build.check.1 b/sbt/src/sbt-test/project/session-update-from-cmd/build.check.1 new file mode 100644 index 000000000..6363b1678 --- /dev/null +++ b/sbt/src/sbt-test/project/session-update-from-cmd/build.check.1 @@ -0,0 +1,10 @@ +name := "projectName" + +k1 := { +// +// +} + +k2 := { + println("This is k2") +} diff --git a/sbt/src/sbt-test/project/session-update-from-cmd/build.sbt b/sbt/src/sbt-test/project/session-update-from-cmd/build.sbt new file mode 100644 index 000000000..8bd18ad5c --- /dev/null +++ b/sbt/src/sbt-test/project/session-update-from-cmd/build.sbt @@ -0,0 +1,7 @@ +name := "projectName" + +k1 := {} + +k2 := { + println("This is k2") +} diff --git a/sbt/src/sbt-test/project/session-update-from-cmd/project/build.scala b/sbt/src/sbt-test/project/session-update-from-cmd/project/build.scala new file mode 100644 index 000000000..c7c6c8238 --- /dev/null +++ b/sbt/src/sbt-test/project/session-update-from-cmd/project/build.scala @@ -0,0 +1,25 @@ +import sbt._ +import Keys._ + +object build extends Build { + lazy val k1 = taskKey[Unit]("") + lazy val k2 = taskKey[Unit]("") + + val UpdateK1 = Command.command("UpdateK1") { st: State => + val ex = Project extract st + import ex._ + val session2 = BuiltinCommands.setThis(st, ex, Seq(k1 := {}), """k1 := { + |// + |// + |}""".stripMargin).session + val st1 = BuiltinCommands.reapply(session2, structure, st) + // SessionSettings.writeSettings(ex.currentRef, session2, ex.session.original, ex.structure) + SessionSettings.saveAllSettings(st1) + } + + lazy val root = Project("root", file(".")) settings( + commands += UpdateK1 + ) +} + +// vim: set ts=4 sw=4 et: diff --git a/sbt/src/sbt-test/project/session-update-from-cmd/test b/sbt/src/sbt-test/project/session-update-from-cmd/test new file mode 100644 index 000000000..d29ba8270 --- /dev/null +++ b/sbt/src/sbt-test/project/session-update-from-cmd/test @@ -0,0 +1,4 @@ +> UpdateK1 +$ must-mirror build.sbt build.check.1 +> UpdateK1 +$ must-mirror build.sbt build.check.1