--*- sml -*-
-
-* make `end' align on `in' when possible
-
-* if indentation is non-obvious, return a list of possible indentations
- and choose the first unless the current is one of the possible choices.
-
-* M-| with datatypes gives "| => " instead of "| of "
-
-* tab at end or beginning of buffer infinite-loop
-
-* ignore warnings in C-c `
-
-* improve the run-sml to allow running on another machine and to take args
-
-* C-c ` tends to switch to another window
-
-* sample problematic indentations:
-
-let fun toStringFKind {isrec,cconv,inline,...} =
- (if isSome isrec then "R" else "")^
- (if cconv = F.CC_FCT then "FCT" else "FUN")^
- (foo)
-
- | toStringFKind =
- let fun cfun (fk,f,args,body) = let
- in (fk, f, args, loop body)
- end
- fun foo x = let
- val
- in
-
- let f
- in if 2 then
- ~3
- else
- asdf
- end
-
- (
- if foo then 1 else 2;
- ())
- end
- end
- | toStringFKind =
- let bla
- in foooooooooo;
- faaaaaaaaaaa
- end
-
-
- let bla
- in (fn toto => 1,
- fn tata => 2)
- end
-
- let
- in clet1 (fn [nv] => (Conlv, nv, ndc),
- fn ([nv],nle) => F.CON(dcon, tycs, nv, lv, nle))
- (lv,[v],le)
- end
-
- let
- in a d
- awsdfg
- sadf
- (fn bla =>
- gfsse
- | ss =>
- asdf)
- end
- (* sadgasgf *)
- app (fn (fk,f,args,body as F.APP(F.VAR g,vs)) =>
- if not C.escaping f
- orelse vs = (map (F.VAR o #1) args) andalso
- not (C.escaping g)
- then
- let val g = F.VAR g
- in substitute(f, val2sval g, g)
- end
- handle NotFound =>
- addbind (f, Fun(f, body, args, fk, od))
- else addbind (f, Fun(f, body, args, fk, od))
- | (fk,f,args,body) =>
- addbind (f, Fun(f, body, args, fk, od)))
-
- (if 1 then 1 + 2 else
- if
- 1 then
- 1
- + df
- else
- hell
- de
- der
- +1)
-
- case
- case a
- of 2 =>
- 1
- + 2
- | =>
- of 1 =>
- sd
- | =>
+* 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)
+
+* make `M-x sml-compile' more generic.
+
+* allow specifying indentation of dependent keywords (how to indent `in'
+ relative to `let', for example).
+
+* 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])))