summaryrefslogtreecommitdiff
path: root/TODO
blob: 15d2f373e503f008171b3c4e71394f89d564e959 (plain)
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])))