/vim-sml-coursera

vim + sml for https://class.coursera.org/proglang-002/class/index

Primary LanguageVim ScriptOtherNOASSERTION

vim-sml-coursera

vim + sml for https://class.coursera.org/proglang-002/class/index

Requirements

Installation

  • 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/
    

Usage

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

Indentation & highlighting features

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 after fun:

      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.

Bitdeli Badge