SML modes

There are a few Emacs modes for SML.

MLB modes

There is a mode for editing ML Basis files.

Definitions and uses

There is a mode that supports the precise def-use information that MLton can output. It highlights definitions and uses and provides commands for navigation (e.g., jump-to-def, jump-to-next, list-all-refs). It can be handy, for example, for navigating in the MLton compiler source code. See EmacsDefUseMode for further information.

Building on the background

Tired of manually starting/stopping/restarting builds after editing files? Now you don’t have to. See EmacsBgBuildMode for further information.

Error messages

MLton’s error messages are not in the format that the Emacs next-error parser natively understands. There are a couple of ways to fix this. The easiest way is to add the following to your .emacs to cause Emacs to recognize MLton’s error messages.

(require 'compile)
(add-to-list
 'compilation-error-regexp-alist
 '("^\\(Warning\\|Error\\): \\(.+\\) \\([0-9]+\\)\\.\\([0-9]+\\)\\.$"
   2 3 4))

Alternatively, you could use a sed script to rewrite MLton’s errors. Here is one such script:

sed -e 's/^\([W|E].*\): \([^ ]*\) \([0-9][0-9]*\)\.\([0-9][0-9]*\)\./\2:\3:\1:\4/'