From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Samuel Wales" Subject: Key bindings for outlining Date: Wed, 13 Aug 2008 16:52:00 -0700 Message-ID: <20524da70808131652s70d10818v1e5bd60145d6cdec@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KTQ8M-0004Jv-HD for emacs-orgmode@gnu.org; Wed, 13 Aug 2008 19:52:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KTQ8L-0004Jj-2M for emacs-orgmode@gnu.org; Wed, 13 Aug 2008 19:52:06 -0400 Received: from [199.232.76.173] (port=60308 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KTQ8K-0004Jg-P9 for emacs-orgmode@gnu.org; Wed, 13 Aug 2008 19:52:04 -0400 Received: from nf-out-0910.google.com ([64.233.182.186]:50627) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KTQ8J-0005WA-Rx for emacs-orgmode@gnu.org; Wed, 13 Aug 2008 19:52:04 -0400 Received: by nf-out-0910.google.com with SMTP id c7so150343nfi.26 for ; Wed, 13 Aug 2008 16:52:00 -0700 (PDT) Content-Disposition: inline List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi, I saw the Google tech talk and it is excellent. I think org-mode will work for me. I like its design philosophy. Just beginning to try it. Here is an idea for key bindings. I don't know how to program it. I hope that you find it useful or interesting. Common keystroke sequences should be short and intuitive, while uncommon ones can be longer or less intuitive. Context is a great way to achieve this, as is already the case in org-mode. Consider a person who mostly uses headlines and only rarely uses bodies. The most common actions for this type of user are creating a sibling, creating a child, and promoting a newly-created sibling. Here is my recommendation for org-mode outlines, for people who don't use body text much. RET on a headline -- create sibling below TAB on a blank headline -- demote ESC-BS on a blank headline -- promote When you want to create a series of siblings at level 1, you press RET followed by its text for each one. If one of them needs a child, you press RET TAB text. The RET creates a sibling node, and the TAB demotes the new node to be a child. Now you are at level 2. If you want another level 2 node, you type RET text as before. If you want to continue creating level 1 headlines, you press RET BS text. The RET creates a sibling level 2 item and the BS promotes it to level 1. An analogy for this is programming, where you often use RET to create a new sibling, TAB to demote that newly-created blank sibling, and backward deletion to promote it. An equally good analogy is when you make ad-hoc outlines using TAB. Note: If you want the rest of the line to be a new headline, simply do C-k RET C-y. (Some people might prefer that my recommended RET should only work at the end of a headline.) I recommend these actions for body text. ESC RET on a headline -- begin body ESC RET in body text -- end body RET in body text -- newline When you want to write a body, ESC RET both starts it and ends it. Inside the body, RET acts as normal. This allows natural entry and also pasting in xterms, which works differently from pasting in GUI emacs. The following are less common, but I find them useful in text modes, including whitespace-indented outlines. TAB on an active region -- demote the region ESC-BS on an active region -- promote the region C-x C-t -- transpose headlines C-u C-o on a headline -- repeat headline C-o on a headline -- create parent C-o on an active region -- create parent Regions work like blank headlines. Transposing works like transpose-lines, but includes children. Repeating copies children also. C-o is for when you realize that you wanted to insert a parent above a headline. If the headline is at level 2, then C-o creates another level 2 headline with the original headline below it at level 3. Of course, the existing keybindings are good for when you use a lot of body text, such as when you are authoring content (or, to use an old-fashioned term, writing :)). But these would simplify matters for mostly-outline people. I hope that this idea is useful to people on the list, or at least interesting. Anybody have code? Thanks.