From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Hendy Subject: Re: Navigating org-mode customization file Date: Sun, 12 Jan 2014 16:48:20 -0600 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:45375) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W2TpQ-00045P-8A for emacs-orgmode@gnu.org; Sun, 12 Jan 2014 17:48:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W2TpO-0001cP-Oc for emacs-orgmode@gnu.org; Sun, 12 Jan 2014 17:48:24 -0500 Received: from mail-oa0-x233.google.com ([2607:f8b0:4003:c02::233]:55205) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W2TpO-0001Wd-GG for emacs-orgmode@gnu.org; Sun, 12 Jan 2014 17:48:22 -0500 Received: by mail-oa0-f51.google.com with SMTP id m1so7320834oag.10 for ; Sun, 12 Jan 2014 14:48:20 -0800 (PST) In-Reply-To: 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: Oleh Cc: org mode On Sun, Jan 12, 2014 at 11:42 AM, Oleh wrote: > Hi all, > > I'd like to share a small hack that might be useful for people that edit their > org config a lot. Mine is more than 500 lines. > A great way to jump about a source file is `helm-semantic'. > But it only allows to jump to function and variable definition within > current file. > My org file is full of `setq' statements which it doesn't see. > > For instance, today I wanted to navigate to `org-capture-templates'. > isearch with "cap" entered gives me 15 positions, 14 of them false. > The new function that I wrote, `lispy-goto', > gives 2 results: (setq org-capture-templates...) and (require 'org-capture). > It uses semantic - a built-in package and helm - a popular completion package. > > Another example, `lispy-goto' with "loca" instead of 11 candidates of isearch > gives (setq org-archive-location...) and (setq system-time-locale...). > > Anyway, maybe it's useful for at least one more person other than me. > The code is at https://github.com/abo-abo/lispy, as well as "lispy" in MELPA. > It's not necessary to enable `lispy-mode' to call `lispy-goto' with M-x. > However, if it's enabled, the shortcut is "g" when point is positioned > before "(" or after ")" in the code. > Thanks for sharing, and sounds quite interesting. Just wanted to mention the concept of storing .emacs inside a .org file in case you aren't aware of it (you very well may be). I had a tough time finding an official org or Worg page documenting this, but here's an example from Sacha Chua: - Blog about it: http://sachachua.com/blog/2012/06/literate-programming-emacs-configuration-file/ - An example of the actual file: http://dl.dropboxusercontent.com/u/3968124/sacha-emacs.org I've been doing this and love it. My actual .emacs only does the following: #+begin_src .emacs ;; set load paths ;; set load dirs and global config options (add-to-list 'load-path "~/.elisp/org.git/lisp/") (add-to-list 'load-path "~/.elisp/org.git/contrib/lisp/") ;; other load paths ;; setup babel languages (org-babel-do-load-languages 'org-babel-load-languages '((latex . t) (emacs-lisp . t) (org . t) (R . t) (sh . t) (python . t ))) ;; load org-based config (org-babel-load-file "~/org/aux/emacs-config.org") ;; stuff created by using M-x customize is at the bottom: custom-set-variables/faces. #+end_src Then, in ~/org/aux/emacs-config.org, I have headlines which break down the customization into grouped chunks. For example, a block for org-mode shotcut options: #+begin_src emacs-config.org * Window options Sets size/position of emacs when it starts... * Org-mode options Org-specific keyboard shorcuts #+begin_src emacs-lisp (global-set-key "\C-cl" 'org-store-link) (global-set-key "\C-ca" 'org-agenda) #+end_src * Keyboard shortcuts * Fill options * Sunrise commander * Misc * Encryption #+end_src Obviously there's a lot more than that, but there's an example of how one can group/arrange options by headlines so that you don't have to search around lines and lines of nebulous code blobs to find the line you're looking for. Anyway, just wanted to share this in case others on the list are unaware and would find it useful. I imagine it could even be used in conjunction with your development as well? Both literate config files *and* a search method that recognizes config-specific text vs. finding every single match? Best regards, John > regards, > Oleh >