From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleh Subject: Screencast of lispy.el with org-mode code base Date: Mon, 17 Feb 2014 15:11:27 +0100 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36796) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WFOv0-0001KZ-6E for emacs-orgmode@gnu.org; Mon, 17 Feb 2014 09:11:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WFOuv-0002T6-H4 for emacs-orgmode@gnu.org; Mon, 17 Feb 2014 09:11:34 -0500 Received: from mail-wg0-x22d.google.com ([2a00:1450:400c:c00::22d]:41563) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WFOuv-0002Sq-9W for emacs-orgmode@gnu.org; Mon, 17 Feb 2014 09:11:29 -0500 Received: by mail-wg0-f45.google.com with SMTP id l18so2321745wgh.12 for ; Mon, 17 Feb 2014 06:11:27 -0800 (PST) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: org mode 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