Emacs: fix issue #56 by looping over all parameter groups
removed a TODO that has already been done
added a few comments to help understand the code
emacs: fixed indenting of 'with' in new Foo\nwith Bar
emacs: fixes indentation of multi-line expressions, such as

val x = if (test)
	  y // fixed
	else
	  z

val x = for (i <- 1 to 10)
	yield
	  i // fixed

xs map (x =>
  x.toInt) // fixed
added by self to contributors
emacs: fix 'else if' in multi-line expressions

val x = if (foo)
          kissa
        else if (bar)
          kala // fixed
	else
	  koira

Known issues: a comment in between the "else" and "if" of "else if" breaks the indenting

val x = if (foo)
          kissa
        else/*a comment here*/if (bar)
                                kala // indented wrong
	else
	  koira
Emacs:

1. fix indentation for lines after self reference

class Foo { self: Bar =>
  val x = 1 // fixed
}

class Foo {
  self: Bar =>

  val x = 1 // fixed
}

KNOWN ISSUE:

class Foo {
  self: Bar =>
    val x = 1 // indented up to here
}

2. fix indentation for line after 'yield' or 'else' when there are parenthesis

var x = for(i <- 1 to 10)
        yield (i)
x.head // fixed

var x = if (bar)
	  kala
	else (kissa)
x // fixed

3. removed indentation for line after 'while', since we don't know if
the while is a part of do..while (i.e. if the next line is while body or not)

while (foo)
bar() // not indented

NOTE: this ofcourse works and is much cleaner anyway

while (foo) {
  bar()
}
Emacs: more robust indentation of lists, including for comprehension

In align params mode:

bar.f( kala,
       kissa ) // if first line contains space before parameter, so will second

bar.f(kala,
      kissa) // if no space on first line, then no space on second

val x = for { i <- 1 to 10
              j <- 1 to 2 }
        yield i * j

Regardless of align params mode:

val x = for {
  i <- 1 to 10
  j <- 1 to 2
} yield i * j

KNOWN ISSUES: the following is broken for both modes

val x = for {
  i <- 1 to 10
  j <- 1 to 2
}
        yield i * j // erronously indented to align with for
Emacs: fixed indentation for blocks after indented 'with' or 'extends' keyword

private class Foo extends Bar
                  with FooBar {
  // fixed
}

Also:

- made the (inter expression) whitespace and comment skip functions more
robusts so they don't skip over empty lines.

- made regular expressions more robust

- general clean-up

- added word on non-functioning corner-cases to FUTURE
emacs: added configuration parameter dot-indent

When turned on (default), lines with a '.' prefix will be indented

For example

foo
  .bar()
  .zot()
Emacs: changed indenting of lines preceded by a dot in some cases.

Don't indent a line beginning with a dot ('.') if the previous line
consisted of just closing brackets.

Makes the following kind of convention possible

{
  perOrderSkus.flatMap (skus => {
    skus.map { sku => (sku,1) }
  })
  .reduceByKey (_ + _) // fix: don't indent
  .filter {
    case (sku, count) => count >= Config.support
  }
}

The change also fixes indenting of else and yield in the following
esoteric cases.

val x = if (foo) {
  bar
}
else zot // fixed

val x = for {
  i <- 1 to 10
}
yield i // fixed
emacs: minor fix to align-params
emacs: A test file that also has notes on known issues about indenting and font-lock
Emacs: Proper indentation of case blocks

Imported case-block handling from RayRacine's scamacs scala-mode

var zz = xx map {
  /* this is a comment */
  case x: String =>
    println(x)
    x.toString // fixed
  // and so is this a comment
  case y: Int =>
    println(y)
    (y+1).toString // fixed
}

Other changes:

- fixed parenthesis indentation in the following case:

val zz = xx map (x =>
  x.toString
) // fixed

- changed how params are align and removed the scala-align-parameters-indentation as redundant.
Emacs: fix to case block detection

The previous version detected also blocks which began with a case class as case blocks.

class Foo {

 case class Bar

 val foo = "foo" // fixed
}
Merge pull request #57 from hvesalai/master

Emacs: fixes to indentation and font-lock