GNU ELPA - sml-mode


Major mode for editing (Standard) ML
sml-mode-6.12.tar (.sig), 2024-Mar-31, 140 KiB
Stefan Monnier <>
Atom feed
Browse repository
CGit or Gitweb

To install this package from Emacs, use package-install or list-packages.

Full description

SML-MODE is a major Emacs mode for editing Standard ML.
It provides syntax highlighting and automatic indentation and
comes with sml-proc which allows interaction with an inferior SML
interactive loop.

This release should work on any recent version of Emacs or XEmacs.
If it doesn't: complain.

Some more or less out of date documentation can be found in TeXinfo format.

Check the INSTALL file for installation instructions.
Check the NEWS file for a list of changes in this version.
Check the BUGS and TODO file before sending me bug reports and requests for

Send any complaint/question/praise/ice-cream to me,

	Stefan Monnier <>

Old versions

sml-mode-6.11.tar.lz2023-Jan-2835.3 KiB
sml-mode-6.10.el.lz2020-Feb-1020.1 KiB
sml-mode-6.9.el.lz2018-Oct-0819.9 KiB
sml-mode-6.8.el.lz2017-Dec-1319.8 KiB
sml-mode-6.7.el.lz2015-Feb-1319.6 KiB
sml-mode-6.6.el.lz2015-Feb-1019.5 KiB
sml-mode-6.5.el.lz2014-Jun-1819.0 KiB
sml-mode-6.4.el.lz2013-Mar-0420.1 KiB
sml-mode-6.3.el.lz2013-Jan-2519.1 KiB
sml-mode-6.2.el.lz2012-Dec-0519.4 KiB
sml-mode-6.1.el.lz2012-Nov-2919.4 KiB
sml-mode-6.0.el.lz2012-Oct-3017.6 KiB


Changes since 6.11:

- Fix indentation of continued strings.
- Use `syntax-propertize' rather than `font-lock-syntactic-keywords'.

Changes since 6.8:

- new var sml-abbrev-skeletons to control whether to include skeletons
  in the main abbrev table.
- change parsing rule of "local"
- Improve handling of comments in `sml-cm-mode'.

Changes since 5.0:

- sml-electric-pipe-mode to make the | key electric.
- Removal of a lot of compatibility code.  Requires Emacs-24.
- Integrate in GNU ELPA.

Changes since 4.1:

- New indentation code using SMIE when available.
- `sml-back-to-outer-indent' is now on S-tab (aka `backtab') rather
  than M-tab.
- Support for electric-layout-mode and electric-indent-mode.
- `sml-mark-defun' tries to be more clever.
- A single file (sml-mode.el) is needed unless you want to use an
  interactive process like SML/NJ, or if your Emacs does not provide SMIE.

Changes since 4.0:

- Switch to GPLv3+.
- When possible (i.e. running under Emacs>=23), be case-sensitive when
  expanding abbreviations, and don't expand them in comments and strings.
- When you `next-error' to a type error, highlight the actual parts of the
  types that differ.
- Flush the recorded errors not only upon sml-compile and friends, but also
  when typing commands directly at the prompt.
- New command sml-mlton-typecheck.
- Simple support to parse errors and warnings in MLton's output.
- Simple support for MLton's def-use files.

Changes since 3.9.5:

- No need to add the dir to your load-path any more.
  The sml-mode-startup.el file does it for you.
- Symbols like -> can be displayed as real arrows.
  See sml-font-lock-symbols.
- Fix some incompatibilities with the upcoming Emacs-21.4.
- Indentation rules improved.  New customizable variable
  `sml-rightalign-and'.  Also `sml-symbol-indent' is now customizable.

Changes since 3.9.3:

- New add-log support (try C-x 4 a from within an SML function).
- Imenu support
- sml-bindings has disappeared.
- The code skeletons are now abbrevs as well.
- A new *sml* process is sent the content of sml-config-file
  (~/.sml-proc.sml) if it exists.
- `sml-compile' works yet a bit differently.  The command can begin
  with `cd "path";' and it will be replaced by OS.FileSys.chDir.
- run-sml now pops up the new buffer.  It can also run the command on
  another machine.  And it always prompts for the command name.
  Use a prefix argument if you want to give args or to specify a host on
  which to run the command.
- mouse-2 to yank in *sml* should work again (but won't work for next-error
  any more).
- New major-modes sml-cm-mode, sml-lex-mode and sml-yacc-mode.
- sml-load-hook has disappeared as has inferior-sml-load-hook.
- sml-mode-startup.el is now automatically generated and you're supposed to
  `load' it from .emacs or site-start.el.
- Minor bug fixes.