summaryrefslogtreecommitdiff
path: root/src/repl/scala/tools/nsc/interpreter/ReplProps.scala
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2015-06-22 20:56:40 -0700
committerSom Snytt <som.snytt@gmail.com>2015-06-23 15:52:01 -0700
commit934a31488b43b75a5b437e0cb293b6b5b4f076d7 (patch)
tree0e5e85a6125fb56eff158b633495f643a4abc200 /src/repl/scala/tools/nsc/interpreter/ReplProps.scala
parent1b9cb466430b6300355185917257493ca2e6a240 (diff)
downloadscala-934a31488b43b75a5b437e0cb293b6b5b4f076d7.tar.gz
scala-934a31488b43b75a5b437e0cb293b6b5b4f076d7.tar.bz2
scala-934a31488b43b75a5b437e0cb293b6b5b4f076d7.zip
SI-9206: REPL custom welcome message
Can be specified by `-Dscala.repl.welcome=Greeting` or in properties file. It takes the same format arguments as the prompt, viz, version, Java version and JVM name. It can be disabled by `-Dscala.repl.welcome` with no text.
Diffstat (limited to 'src/repl/scala/tools/nsc/interpreter/ReplProps.scala')
-rw-r--r--src/repl/scala/tools/nsc/interpreter/ReplProps.scala33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/repl/scala/tools/nsc/interpreter/ReplProps.scala b/src/repl/scala/tools/nsc/interpreter/ReplProps.scala
index df65e9974d..8fac040a5e 100644
--- a/src/repl/scala/tools/nsc/interpreter/ReplProps.scala
+++ b/src/repl/scala/tools/nsc/interpreter/ReplProps.scala
@@ -6,9 +6,11 @@
package scala.tools.nsc
package interpreter
-import Properties.shellPromptString
+import Properties.{ javaVersion, javaVmName, shellPromptString, shellWelcomeString,
+ versionString, versionNumberString }
import scala.sys._
import Prop._
+import java.util.{ Formattable, FormattableFlags, Formatter }
class ReplProps {
private def bool(name: String) = BooleanProp.keyExists(name)
@@ -22,12 +24,37 @@ class ReplProps {
val trace = bool("scala.repl.trace")
val power = bool("scala.repl.power")
+ def enversion(s: String) = {
+ import FormattableFlags._
+ val v = new Formattable {
+ override def formatTo(formatter: Formatter, flags: Int, width: Int, precision: Int) = {
+ val version = if ((flags & ALTERNATE) != 0) versionNumberString else versionString
+ val left = if ((flags & LEFT_JUSTIFY) != 0) "-" else ""
+ val w = if (width >= 0) s"$width" else ""
+ val p = if (precision >= 0) s".$precision" else ""
+ val fmt = s"%${left}${w}${p}s"
+ formatter.format(fmt, version)
+ }
+ }
+ s.format(v, javaVersion, javaVmName)
+ }
+ def encolor(s: String) = {
+ import scala.io.AnsiColor.{ MAGENTA, RESET }
+ if (colorOk) s"$MAGENTA$s$RESET" else s
+ }
+
// Handy system prop for shell prompt, or else pick it up from compiler.properties
val promptString = Prop[String]("scala.repl.prompt").option getOrElse (if (info) "%nscala %s> " else shellPromptString)
+ def promptText = enversion(promptString)
val prompt = {
import scala.io.AnsiColor.{ MAGENTA, RESET }
- val p = promptString format Properties.versionNumberString
- if (colorOk) s"$MAGENTA$p$RESET" else p
+ if (colorOk) s"$MAGENTA$promptText$RESET" else promptText
+ }
+
+ //def welcome = enversion(Prop[String]("scala.repl.welcome") or shellWelcomeString)
+ def welcome = enversion {
+ val p = Prop[String]("scala.repl.welcome")
+ if (p.isSet) p.value else shellWelcomeString
}
/** CSV of paged,across to enable pagination or `-x` style