An introduction to Emacs Lisp