Some of my Scala code opens as Shell script major mode in Emacs, a problem caused by several factors:
exec scala "$0" "$@"
!#
object Hello {
def main(args: Array[String]) {
println("Hello World!")
}
}
This is an awkward shebang line; due to the nature of shebangs, it must be split across three lines of code, starting with #!/bin/sh.
This creates problems for Emacs, as Emacs uses `file` to detect which major mode should be used, and `file` returns 'text/x-shellscript' when a file begins #!/bin/sh, regardless of the file extension or programming language content the file actually contains.
This could be solved a variety of ways, but I think the simplest is to prioritize file extension over mimetype when a file extension is available. We can't trust mimetypes for code that contains these awkward shebangs.
--
Cheers,
Andrew Pennebaker