summaryrefslogtreecommitdiff
path: root/build.sbt
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-02-08 19:48:38 +1000
committerJason Zaugg <jzaugg@gmail.com>2016-02-09 13:50:24 +1000
commitdb0577c840425e699197c409b09674d5ce2039ac (patch)
tree98293157ac514fc87818b5daf1dc0e514638b581 /build.sbt
parent504ac0d635d36e94dc6241a43cfba88b36c9a889 (diff)
downloadscala-db0577c840425e699197c409b09674d5ce2039ac.tar.gz
scala-db0577c840425e699197c409b09674d5ce2039ac.tar.bz2
scala-db0577c840425e699197c409b09674d5ce2039ac.zip
Add SBT tab completion for scala{,c,doc}
Also refactor the partest parser to use the improved tab completion for test paths.
Diffstat (limited to 'build.sbt')
-rw-r--r--build.sbt25
1 files changed, 18 insertions, 7 deletions
diff --git a/build.sbt b/build.sbt
index a752a33315..f9538d0b60 100644
--- a/build.sbt
+++ b/build.sbt
@@ -831,13 +831,24 @@ def generateServiceProviderResources(services: (String, String)*): Setting[_] =
buildDirectory in ThisBuild := (baseDirectory in ThisBuild).value / "build-sbt"
-// TODO custom argument parsers for these to autocomplete compiler options and paths
-addCommandAlias("scalac", "compiler/compile:runMain scala.tools.nsc.Main -usejavacp")
-addCommandAlias("scala", "repl-jline-embedded/compile:runMain scala.tools.nsc.MainGenericRunner -usejavacp")
-addCommandAlias("scaladoc", "scaladoc/compile:runMain scala.tools.nsc.ScalaDoc -usejavacp")
-addCommandAlias("scalap", "scalap/compile:runMain scala.tools.scalap.Main -usejavacp")
-
// Add tab completion to partest
commands += Command("partest")(_ => PartestUtil.partestParser((baseDirectory in ThisBuild).value, (baseDirectory in ThisBuild).value / "test")) { (state, parsed) =>
- ("test/it:testOnly -- " + parsed):: state
+ ("test/it:testOnly -- " + parsed) :: state
+}
+
+// Add tab completion to scalac et al.
+commands ++= {
+ val commands =
+ List(("scalac", "compiler", "scala.tools.nsc.Main"),
+ ("scala", "repl-jline-embedded", "scala.tools.nsc.MainGenericRunner"),
+ ("scaladoc", "scaladoc", "scala.tools.nsc.ScalaDoc"))
+
+ commands.map {
+ case (entryPoint, projectRef, mainClassName) =>
+ Command(entryPoint)(_ => ScalaOptionParser.scalaParser(entryPoint, (baseDirectory in ThisBuild).value)) { (state, parsedOptions) =>
+ (projectRef + "/runMain " + mainClassName + " -usejavacp " + parsedOptions) :: state
+ }
+ }
}
+
+addCommandAlias("scalap", "scalap/compile:runMain scala.tools.scalap.Main -usejavacp")