Is pretty boring.
Is pretty darned useful for programmers.
You get to see a whole lot more of your program at once.
But first, we have to do something about the interface.
The default prefix key sequence is C-c @, and all of the command keys are control sequences. So you wind up typing things like C-c @ C-n
And all of the vi users in the office will laugh at you.
So let's change that:
; Outline-minor-mode key map (define-prefix-command 'cm-map nil "Outline-") ; HIDE (define-key cm-map "q" 'hide-sublevels) ; Hide everything but the top-level headings (define-key cm-map "t" 'hide-body) ; Hide everything but headings (all body lines) (define-key cm-map "o" 'hide-other) ; Hide other branches (define-key cm-map "c" 'hide-entry) ; Hide this entry's body (define-key cm-map "l" 'hide-leaves) ; Hide body lines in this entry and sub-entries (define-key cm-map "d" 'hide-subtree) ; Hide everything in this entry and sub-entries ; SHOW (define-key cm-map "a" 'show-all) ; Show (expand) everything (define-key cm-map "e" 'show-entry) ; Show this heading's body (define-key cm-map "i" 'show-children) ; Show this heading's immediate child sub-headings (define-key cm-map "k" 'show-branches) ; Show all sub-headings under this heading (define-key cm-map "s" 'show-subtree) ; Show (expand) everything in this heading & below ; MOVE (define-key cm-map "u" 'outline-up-heading) ; Up (define-key cm-map "n" 'outline-next-visible-heading) ; Next (define-key cm-map "p" 'outline-previous-visible-heading) ; Previous (define-key cm-map "f" 'outline-forward-same-level) ; Forward - same level (define-key cm-map "b" 'outline-backward-same-level) ; Backward - same level (global-set-key "\M-o" cm-map)