summaryrefslogtreecommitdiff
path: root/project/ScalaOptionParser.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-02-10 12:26:41 +1000
committerJason Zaugg <jzaugg@gmail.com>2016-02-11 22:20:38 +1000
commit39a858de7a65b70ae35ce460e7746cae5e4d3fc4 (patch)
tree54aff920f4b150f0fe8bdd2d8eea7612ef7ffac3 /project/ScalaOptionParser.scala
parent8f8f81b72ef07140952aeb76120bd032e35cc918 (diff)
downloadscala-39a858de7a65b70ae35ce460e7746cae5e4d3fc4.tar.gz
scala-39a858de7a65b70ae35ce460e7746cae5e4d3fc4.tar.bz2
scala-39a858de7a65b70ae35ce460e7746cae5e4d3fc4.zip
Fix SBT tab completion of scala command
`scala -deprecation` (without a trailing script argument) wasn't allowed. Now it is. I also supported trailing whitespace on all commands. Also fixed: a bug with completion of `scalac ./san<TAB>`. It was completing as though the `./` had not been typed, which threw the suggestion off by a few characters.
Diffstat (limited to 'project/ScalaOptionParser.scala')
-rw-r--r--project/ScalaOptionParser.scala9
1 files changed, 5 insertions, 4 deletions
diff --git a/project/ScalaOptionParser.scala b/project/ScalaOptionParser.scala
index a11bd93d82..da8a3bf460 100644
--- a/project/ScalaOptionParser.scala
+++ b/project/ScalaOptionParser.scala
@@ -63,19 +63,20 @@ object ScalaOptionParser {
++ scaladocPathSettingNames.map(PathSetting)
++ scaladocMultiStringSettingNames.map(MultiStringSetting)
)
- val ScalaDocOpt = sourceFile | ScalaOpt | ScalaDocExtraSettings
+ val ScalaDocOpt = ScalacOpt | ScalaDocExtraSettings
- entryPoint match {
+ val P = entryPoint match {
case "scala" =>
val runnable = token(StringBasicNotStartingWithDash, TokenCompletions.displayOnly("<script|class|object|jar>")).filter(!_.startsWith("-"), x => x)
val runnableAndArgs = concat(runnable ~ Opt(concat(Space.string ~ repsep(token(StringBasic, TokenCompletions.displayOnly("<arg>")), Space).map(_.mkString(" ")))))
- val options = repsep(ScalaOpt, Space).map(_.mkString(" "))
- Opt(Space ~> EitherOr(options, runnableAndArgs))
+ val options = rep1sep(ScalaOpt, Space).map(_.mkString(" "))
+ Opt(Space ~> (options | concat(concat(options ~ Space.string) ~ runnableAndArgs) | runnableAndArgs))
case "scaladoc" =>
Opt(Space ~> Opt(repsep(ScalaDocOpt, Space).map(_.mkString(" "))))
case "scalac" =>
Opt(Space ~> repsep(ScalacOpt, Space).map(_.mkString(" ")))
}
+ P <~ token(OptSpace)
}
// TODO retrieve this data programatically, ala https://github.com/scala/scala-tool-support/blob/master/bash-completion/src/main/scala/BashCompletion.scala