branch: elpa-admin commit ce02925d98925251972e3c48406376addd817f11 Author: monnier <> Commit: monnier <>
Initial revision --- README | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/README b/README new file mode 100644 index 0000000..89a4700 --- /dev/null +++ b/README @@ -0,0 +1,153 @@ +SML-MODE (3.3b) -- Major Emacs mode for editing Standard ML. + + 3.3(beta) because i really am looking at the indentation algorithm, + but the new features mentioned below are stable -- modulo bugs. + +Files: + + sml-mode.el (SML mode elisp code) + sml-proc.el (ML interaction code, defaults to SML/NJ(0.93)) + sml-hilite.el (hilit19 functions) + sml-font.el (font-lock functions) + sml-menus.el (Simple menus) + + sml-poly-ml.el (Additional library code to run Poly/ML) + sml-mosml.el (Additional library code to run Moscow ML) + + sml-mode.info (Softcopy manual -- Info for (X)Emacs19) + sml-site.el (Simple, system-wide installation) + +Extras: + + 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 <m...@scs.leeds.ac.uk> +05/97