Hi all, I'm developing an Emacs minor mode called lispy (available at https://github.com/abo-abo/lispy and as "lispy" in MELPA).
It combines vi-style Paredit and IDE-like features for Elisp, Clojure, Scheme and Common Lisp (leveraging CEDET, CIDER, Geiser, and SLIME respectively). To show-off the package a bit, here's a screencast where I navigate org-mode code: https://vimeo.com/86894158 . Some cool features (I'll list a shortcut and what it does, starting position should be anywhere in org source tree with point at "(" or behind ")" or at "^;"): 1. With "g" I know that there are currently 7276 tags in org-mode's code base. 2. With "G" I know that there are 1761 tags in org.el. 3. With "g" "obs" I know that there are 24 tags declared obsolete in org-mode's code base. 4. With "g" "cloj" I know that there are 18 tags related to Clojure, all of them in ob-clojure.el. 5. With "g" "heading ext" here are the candidates that match: declare-function outline-next-heading org-list.el declare-function outline-next-heading org-footnote.el org-extract-archive-heading org-archive.el org-mouse-next-heading org-mouse.el 6. With "g" "defk" I know that org-defkey is called 306 times. 7. With "g" "shifttab" here's the info I get (last one is the definition): org-defkey org-mode-map [(shift tab)] 'org-shifttab org.el define-key org-mode-map [backtab] 'org-shifttab org.el org-shifttab org.el 8. And of course RET will jump to any candidate selected, e.g. "g" "python exe" "RET" will jump to file ob-python.el to the definition of `org-babel-execute:python'. I'm using CEDET to parse the files, so the first time you call `lispy-goto` there will be a few second parse. The parse happens only once, it saves tags to the database and no parsing is done further unless some files have changed. I also demonstrate near the end of the video how to customize the info you get for the top-level tags. So initially `eval-after-load` tags were plain and didn't show what they were doing. But then I added `(eval-after-load . 1)` to `lispy-tag-arity` and after a call to `lispy-build-semanticdb` the `eval-after-load` tags include one more sexp, which is the file argument of the form. I hope you like the package and feedback is welcome. regards, Oleh