emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Key bindings for outlining
@ 2008-08-13 23:52 Samuel Wales
  0 siblings, 0 replies; only message in thread
From: Samuel Wales @ 2008-08-13 23:52 UTC (permalink / raw)
  To: emacs-orgmode

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.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-08-13 23:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-08-13 23:52 Key bindings for outlining Samuel Wales

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).