warn when reload discards session settings

This commit is contained in:
Mark Harrah 2011-06-27 22:29:48 -04:00
parent 5b1ca2c6b0
commit 205a67e4a3
2 changed files with 9 additions and 1 deletions

View File

@ -137,6 +137,7 @@ object Project extends Init[Scope] with ProjectExtra
def setProject(session: SessionSettings, structure: BuildStructure, s: State): State =
{
SessionSettings.checkSession(session, s)
val previousOnUnload = orIdentity(s get Keys.onUnload.key)
val unloaded = previousOnUnload(s.runExitHooks())
val (onLoad, onUnload) = getHooks(structure.data)

View File

@ -53,7 +53,14 @@ object SessionSettings
else
f(session)
}
def pluralize(size: Int, of: String) = size.toString + (if(size == 1) of else (of + "s"))
def checkSession(newSession: SessionSettings, oldState: State)
{
val oldSettings = (oldState get Keys.sessionSettings).toList.flatMap(_.append).flatMap(_._2)
if(newSession.append.isEmpty && !oldSettings.isEmpty)
logger(oldState).warn("Discarding " + pluralize(oldSettings.size, " session setting") + ". Use 'session save' to persist session settings.")
}
def removeRanges[T](in: Seq[T], ranges: Seq[(Int,Int)]): Seq[T] =
{
val asSet = (Set.empty[Int] /: ranges) { case (s, (hi,lo)) => s ++ (hi to lo) }