1 |
SML-MODE (3.3b) -- Major Emacs mode for editing Standard ML. |
SML-MODE is a major Emacs mode for editing Standard ML. |
2 |
|
It provides syntax highlighting and automatic indentation and |
3 |
|
comes with sml-proc which allows interaction with an inferior SML |
4 |
|
interactive loop. |
5 |
|
|
6 |
3.3(beta) because i really am looking at the indentation algorithm, |
This release should work on any recent version of Emacs or XEmacs. |
7 |
but the new features mentioned below are stable -- modulo bugs. |
If it doesn't: complain. |
8 |
|
|
9 |
Files: |
Some more or less out of date documentation can be found in TeXinfo format. |
10 |
|
|
11 |
sml-mode.el (SML mode elisp code) |
Check the INSTALL file for installation instructions. |
12 |
sml-proc.el (ML interaction code, defaults to SML/NJ(0.93)) |
Check the NEWS file for a list of changes in this version. |
13 |
sml-hilite.el (hilit19 functions) |
Check the BUGS and TODO file before sending me bug reports and requests for |
14 |
sml-font.el (font-lock functions) |
enhancements. |
|
sml-menus.el (Simple menus) |
|
15 |
|
|
16 |
sml-poly-ml.el (Additional library code to run Poly/ML) |
Send any complaint/question/praise/ice-cream to me, |
|
sml-mosml.el (Additional library code to run Moscow ML) |
|
17 |
|
|
|
sml-mode.info (Softcopy manual -- Info for (X)Emacs19) |
|
|
sml-site.el (Simple, system-wide installation) |
|
18 |
|
|
19 |
Extras: |
Stefan Monnier <monnier+lists/emacs/sml@tequila.cs.yale.edu> |
|
|
|
|
sml-mode.dvi (Hardcopy manual) |
|
|
|
|
|
Warning: |
|
|
|
|
|
Tried and sort of tested on GNU Emacs 19.3{3,4} and XEmacs 19.14. |
|
|
|
|
|
XEmacs 19.11 is known to hang on sending regions to the interaction |
|
|
buffer -- so leave the variable SML-TEMP-THRESHOLD = 0. |
|
|
|
|
|
System Installation Guide: |
|
|
|
|
|
If you're installing this for others in the Emacs hierarchy, either |
|
|
|
|
|
go to the site-lisp directory and unpack the tar file there, |
|
|
|
|
|
or create a subdirectory, say site-lisp/sml-mode, and copy at |
|
|
least the sml*.el files into it. |
|
|
|
|
|
In either case move or copy the file sml-site.el into the site-lisp |
|
|
directory itself (or some other place that's on the user's default |
|
|
load-path) and read and edit this file. All that's really needed is |
|
|
to ensure that Emacs can find the sml*.el files and the .info file. |
|
|
|
|
|
Tell your eager users to |
|
|
|
|
|
(requite 'sml-site) |
|
|
|
|
|
in their .emacses. Point them to the help file. At your option, byte |
|
|
compile the sml*.el files (and sml-site.el too, if you like). |
|
|
|
|
|
Private Installation Guide: |
|
|
|
|
|
If you are having to install his in your home directory, say, create |
|
|
a directory like "/home/xxx/lib/emacs/sml-mode", if your login name |
|
|
is xxx, and copy the sml-*.el files to there. Then put: |
|
|
|
|
|
(setq load-path (cons "/home/xxx/lib/emacs/sml-mode" load-path)) |
|
|
(autoload 'sml-mode "sml-mode" "Major mode for editing ML programs." t) |
|
|
|
|
|
in your .emacs file. Add: |
|
|
|
|
|
(setq auto-mode-alist |
|
|
(append '(("\\.sml$" . sml-mode) |
|
|
("\\.sig$" . sml-mode) |
|
|
("\\.ML$" . sml-mode)) auto-mode-alist)) |
|
|
|
|
|
to your .emacs so that whenever you visit a file with one of these |
|
|
extensions you will automatically be placed in sml-mode. |
|
|
|
|
|
Put the info file (sml-mode.info) somewhere convenient like |
|
|
"/home/xxx/lib/emacs/sml-mode/sml-mode.info", and add |
|
|
|
|
|
(setq sml-mode-info "/home/xxx/lib/emacs/sml-mode/sml-mode.info") |
|
|
|
|
|
again to your .emacs -- this gives access to on-line help. This help |
|
|
file gives lots of tips about configuring SML mode to suit your |
|
|
preferences: C-c C-i will get you there from SML mode. |
|
|
|
|
|
If you want SML mode to speak to Moscow ML or Poly/ML instead of |
|
|
SML/NJ, just add something like this to your .emacs: |
|
|
|
|
|
(defun my-mosml-setup () "Configure inferior SML mode for Moscow ML" |
|
|
(load-library "sml-mosml")) |
|
|
(add-hook 'inferior-sml-load-hook 'my-mosml-setup) |
|
|
|
|
|
so that when you M-x sml you'll get mosml instead. |
|
|
|
|
|
New in SML mode Version 3.3 (feedback welcomed on this): |
|
|
|
|
|
1 |
|
|
|
|
|
implemented some multi-frame handling capabilities, specifically so |
|
|
sml runs in a dedicated window. this is more complex than it needs to |
|
|
be because of XEmacs... |
|
|
|
|
|
the variable SML-DEDICATED-FRAME defaults to t if running under a |
|
|
window system; set it to nil in SML-LOAD-HOOK if you want the old |
|
|
split window behaviour back. |
|
|
|
|
|
2 |
|
|
|
|
|
debugged SML-NEXT-ERROR a bit, and improved it to echo the error |
|
|
message in the minibuffer (if possible) and highlight the region in |
|
|
which the error was found (if a suitable character range was given). |
|
|
|
|
|
the variable SML-ERROR-OVERLAY controls whether or not to highlight |
|
|
(default is yes); set this to nil in SML-MODE-HOOK to switch this |
|
|
off. |
|
|
|
|
|
SML-NEXT-ERROR won't always raise the inferior ML buffer's frame; it |
|
|
only does so if there's no window already showing the buffer, or if |
|
|
there's an error message it can't understand. i think! |
|
|
|
|
|
3 |
|
|
|
|
|
support for Moscow ML -- see sml-mosml.el. |
|
|
|
|
|
4 |
|
|
|
|
|
forms (aka, templates or macros) insertion semantics have changed |
|
|
because there were bugs. maybe there still are, but anyway: by |
|
|
default C-c C-m inserts the macro at point, C-u C-c C-m will do a |
|
|
newline-and-indent before inserting the macro. |
|
|
|
|
|
abstractions are history, and you can play with extending the |
|
|
collection of builtin macros to your heart's content. lookup the |
|
|
function SML-ADDTO-FORMS-ALIST, and the variable SML-FORMS-ALIST. |
|
|
|
|
|
5 |
|
|
|
|
|
drag-and-droppishness, without the drop: SML-DRAG-MOUSE is bound to |
|
|
M-S-down-mouse-1; if you drag the mouse over a region it will be |
|
|
magically sucked into the ML buffer (like C-c C-r, only you don't |
|
|
have to C-@ first). this might be flakey as it heavily depends on |
|
|
the underlying mouse-drag/track-mouse semantics of the various |
|
|
Emacses out there. can't do much about that, sorry. |
|
|
|
|
|
6 |
|
|
|
|
|
anything else i've forgotten already! |
|
|
|
|
|
To Do: |
|
|
|
|
|
0 |
|
|
|
|
|
indentation is hopeless for sequential code (semicolons). this needs |
|
|
attention; indeed all the indentation code does. Ian Zimmerman's very |
|
|
excellent (looking) indentation code for caml-mode may point the way |
|
|
forward. or we all go over to programming in Lisp instead of ML... |
|
|
|
|
|
Matthew Morley <mjm@scs.leeds.ac.uk> |
|
|
05/97 |
|