I think you're on the right track with Idea and SBT. Have you tried
~compile
That will detect changes to your source automatically. For web applications, you can do a
jetty-run
followed by
~prepare-webapp
To continuously compile and redeploy your app to jetty. Makes Scala dev feel a lot like Python web development.
Usually I've found SBT to be very fast when compiling, especially the size file you're talking about. By the time I save my change and go to my SBT prompt, it's done.
Another handy SBT aspect is the REPL which will load your project and its dependencies:
console
You can reload any compiled changes with
:replay
in the scala REPL.
EDIT:
Guess I should mention that you can play around with a simple class with a main method. If you create a file called src/main/scala/Foo.scala that looks like this:
object Foo {
def main(args: Array[String]) {
println("Hello World")
}
}
And a file project/build/Build.scala like this:
import sbt._
class Build(info: ProjectInfo) extends DefaultProject(info) {
override def mainClass = Some("Foo")
}
Then at the sbt prompt, you can do
~run
To continuously compile and run the Foo.main method. You may need to do a 'reload' in sbt first. It seemed to take 2-3 seconds from saving change to seeing output. Then you just edit away, save and see changes. It's a pretty good workflow.
Also, don't forget the REPL - definitely a critical tool for learning Scala. You can learn a ton just playing with it interactively.