]> code.delx.au - gnu-emacs-elpa/blobdiff - TODO
Merge sml-defs.el into sml-mode.el.
[gnu-emacs-elpa] / TODO
diff --git a/TODO b/TODO
index 4cb05b925b2abf58546b7644a02a657b07348411..b9c7d34ef960cf9db44dcbdd6ad2a990ff9ec141 100644 (file)
--- a/TODO
+++ b/TODO
--*- 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])))