1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
* file-name completion in sml-cm-mode.
* Don't always jump to the *sml* buffer when you send a snippet of code.
* Fix inferior-sml-mode's TAB completion of filenames so it doesn't append
a space.
* Improve support for MLton's def-use info (see http://mlton.org/Emacs)
* Add an sml-mlb-mode for ML Basis files (see http://mlton.org/Emacs)
* improve M-C-f and M-C-b (they too often don't do the right thing) and
add M-C-k and other such sexp-chunked operations.
* if indentation is non-obvious, return a list of possible indentations
and choose the first unless the current is one of the possible choices.
* make `M-x sml-compile' more generic.
* allow specifying indentation of dependent keywords (how to indent `in'
relative to `let', for example).
* use symbols instead of strings for `sym'.
* recognize irrefutable patterns (with "Capital"-heuristics, for example:
a regexp like "\\([(),]\\|[_a-z][_a-z0-9]*\\)+").
This can then be used to allow indenting like
(fn x =>
some expressions)
* take advantage of text after-the-line (when available) for indentation.
* obey fixity directives.
* dangling `case e' in stuff like
fun myfunction x = case x
of bla =>
| bli =>
* deal with CPS kind of code ???
function1 (arg1, arg2, fn v1 =>
function2 (arg2, fn v2 =>
function3 (arg5, arg3, arg8, fn v3 =>
function4 (v1, v2, v3))))
or even just
F.LET (v1, foo,
F.LET (v2, bar,
F.LET (v3, baz,
F.RET [v1, v2, v3])))
|