http://emacsredux.com/blog/2014/04/05/which-function-mode/