From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Price Subject: rebind TAB in a minor mode; why does org-cycle workd differently wnhen called iwth M-x?: [WAS:customize behaviour of org-cycle?] Date: Sun, 16 Mar 2014 15:28:28 -0400 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]:51825) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WPGjW-0004U2-Uj for emacs-orgmode@gnu.org; Sun, 16 Mar 2014 15:28:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WPGjV-0004oz-9n for emacs-orgmode@gnu.org; Sun, 16 Mar 2014 15:28:30 -0400 Received: from mail-qg0-x230.google.com ([2607:f8b0:400d:c04::230]:47987) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WPGjV-0004os-5J for emacs-orgmode@gnu.org; Sun, 16 Mar 2014 15:28:29 -0400 Received: by mail-qg0-f48.google.com with SMTP id j107so14106119qga.7 for ; Sun, 16 Mar 2014 12:28:28 -0700 (PDT) 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 On Sat, Mar 15, 2014 at 2:46 PM, Matt Price wrote: > Hi again everyone, > > I would like to be able to customize the behaviour of org-cycle/TAB in > two scenarios, and am wondering if it's possible to do this using > existing tools, or if I have to write my own versions of org-cycle, > etc., in order to get what I want. > > (1) In my normal day-to-day use I often want an extra level of > cycling: instead > FOLDED --> CHILDREN --> SUBTREE-->FOLDED > I'd rather have > FOLDED--> CHILDREN --> ALL DESCENDANTS--> SUBTREE-->FOLDED > > > (2) For my rather pathetic "org-writers-room" mode > (https://github.com/titaniumbones/org-writers-room), I have a minor > mode for the left-hand "guide" buffer (see attached screenshot). > Essentially, it's a table of contents that you can look at while > you're working on a particular section of your document, which is > displayed in the 'main' window in the center of the frame, while > metadata from the properties drawer is displayed in third window on > the right (see attached screenshot if it's not stripped away). In the > guide buffer, I would like to make all non-headline content > permanently invisible. So org-cycle should cycle: > FOLDED-->CHILDREN-->FOLDED > (or FOLDED-->CHILDREN-->ALL DESCENDANTS-->FOLDED if possible) > > and org-cycle-global should cycle: > OVERVIEW-->CONTENTS-->OVERVIEW > > > If there is a way to do this with relatively high-level existing > functions that would be great. Otherwise, it seems I will have to > provide modified versions of org-cycle, org-cycle-internal-local, > org-cycle-global, and org-cyclel-interna-globall, and bind TAB and > S-TAB to them in the minor mode. I hope I don't have to do that since > I find those functions, in org.el, somewhat difficult to follow. > I couldn't figure out a way to do this using hooks or existing variables, so I wrote modified versions of org-cycle-internal-local and org-cycle-internal-global, nad changed org-cycle and org-cycle-global to call my modified versions instead of the originals. Now, though, I would like to bind my new functions to the "tab" key. However, I know TAB is quite complicated, and seems to be bound to multiple functions when, for instance, yasnippet is also active. In my minor mode, I would like my new org-cycle-mod to use the exact same keybindings as the original org-cycle does. what is the best way to achieve this? Thank you for your help!