SCM Repository
View of /sml/trunk/sml-mode/README
Parent Directory
|
Revision Log
Revision 32 -
(download)
(annotate)
Thu Mar 12 16:54:39 1998 UTC (22 years, 10 months ago) by monnier
File size: 5320 byte(s)
Thu Mar 12 16:54:39 1998 UTC (22 years, 10 months ago) by monnier
File size: 5320 byte(s)
Initial revision
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 <mjm@scs.leeds.ac.uk> 05/97
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |