vim + sml for https://class.coursera.org/proglang-002/class/index
- Vim 7.0+
- SML http://www.smlnj.org/dist/working/110.76/
-
Vundle way (recommended), add the following to your $HOME/.vimrc file:
Bundle 'chilicuil/vim-sml-coursera'
And run inside of vim:
:BundleInstall
-
Pathogen way:
$ git clone https://github.com/chilicuil/vim-sml-coursera.git ~/.vim/bundle/vim-sml-coursera
-
Manual (simplest if you've never heard of vundle or pathogen), download the zip file generated from github and extract it to $HOME/.vim
mv vim-sml-coursera*.zip $HOME/.vim cd $HOME/.vim && unzip vim-sml-coursera*.zip
Update the help tags from vim:
:helpt ~/.vim/doc/
On .sml files you can execute :make to run your current buffer on SML, it also indent and shows
SML sintaxis. See :help sml-coursera.txt
for detailed information
There are some differences (features) from standard Vim 7.4 files.
-
No line wrapping (
textwidth = 0
). -
Indent
case
as follows:case x of NONE => "none" | SOME of str => str
-
Indent
handle
as follows:call_smth_dangerous handle Err1 => 41 | Err2 => 42
-
Indent functional pattern matching:
fun length [] = 0 | length _::xs = 1 + length xs
-
Indent
let
afterfun
:fun double_sum (x, y) = let val sum = x + y in 2*sum end
-
Fix indentation of
if/then/else
when using=
. -
Fix highlighting of
=>
,:=
. -
Highlight record fields in type declaration, record creation and record patterns.
These features are also available as independent plugin.