diff --git a/src/main/scala/sbt/FileUtilities.scala b/src/main/scala/sbt/FileUtilities.scala index 69c70bb99..c63106b0a 100644 --- a/src/main/scala/sbt/FileUtilities.scala +++ b/src/main/scala/sbt/FileUtilities.scala @@ -640,7 +640,7 @@ object FileUtilities if(charset.newEncoder.canEncode(content)) write(file, charset, append, log) { w => w.write(content); None } else - Some("String cannot be encoded by default charset.") + Some("String cannot be encoded by charset " + charset.name) } /** Opens a Writer on the given file using the default encoding, diff --git a/src/main/scala/sbt/Logger.scala b/src/main/scala/sbt/Logger.scala index e319a04e9..3ee042897 100644 --- a/src/main/scala/sbt/Logger.scala +++ b/src/main/scala/sbt/Logger.scala @@ -248,9 +248,15 @@ final class BufferedLogger(delegate: Logger) extends Logger object ConsoleLogger { - private[this] def formatExplicitlyDisabled = java.lang.Boolean.getBoolean("sbt.log.noformat") - private[this] def ansiSupported = jline.Terminal.getTerminal.isANSISupported private val formatEnabled = ansiSupported && !formatExplicitlyDisabled + + private[this] def formatExplicitlyDisabled = java.lang.Boolean.getBoolean("sbt.log.noformat") + private[this] def ansiSupported = + try { jline.Terminal.getTerminal.isANSISupported } + catch { case e: Exception => !isWindows } + + private[this] def os = System.getProperty("os.name") + private[this] def isWindows = os.toLowerCase.indexOf("windows") >= 0 } /** A logger that logs to the console. On supported systems, the level labels are