Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
270 lines (198 sloc) 12.011 kb

README for Org Tree Slide

1. What’s this?

The main purpose of this elisp is to handle each tree in an org buffer as a slide by simple narrowing. This emacs lisp is a minor mode for Emacs Org-mode.

Main features:

  • Live editable presentation
  • Fast switching of narrowing/widen
  • TODO pursuit with narrowing
  • Displaying the current number of slides in mode line
  • CONTENT view during a presentation
  • Slide-in effect
  • Slide header from org file’s header
  • Countdown timer

1-1. Related packages

There are various packages to make a presentation with org-mode. See

2. Install

  1. Put this elisp into your load-path
  2. Add (require 'org-tree-slide) in your .emacs


  1. Eval: (auto-install-from-url "") (for auto-install users)
  2. Add (require 'org-tree-slide) in your .emacs

Then open an org file, just type C-< and C->, which means C-M-,= and =C-M-., you can see a presentation will begin with a header, slide-in effect, and slide number in mode line.

2.1 el-get recipe

If you are an el-get user, just do

M-x el-get-install RET org-tree-slide


Now, you can install `org-tree-slide’ via MELPA.

2.2 Requirements

  • Org-mode 6.33x or higher version is required.
  • This elisp doesn’t require any additional packages.

3. Recommended settings

Assigning a single key to org-tree-slide-mode is recommended.

(global-set-key (kbd "<f8>") 'org-tree-slide-mode)
(global-set-key (kbd "S-<f8>") 'org-tree-slide-skip-done-toggle)


(define-key org-mode-map (kbd "<f8>") 'org-tree-slide-mode)
(define-key org-mode-map (kbd "S-<f8>") 'org-tree-slide-skip-done-toggle)

4. Profiles

Three useful profiles are available. Please select a profile that is the most suitable for your using scenario.

If you select simple profile, call the following command while org-tree-slide-mode is ON.

M-x org-tree-slide-simple-profile

If you want to use this setting as the default, put the following configuration including recommended settings into your .emacs.

(when (require 'org-tree-slide nil t)
  (global-set-key (kbd "<f8>") 'org-tree-slide-mode)
  (global-set-key (kbd "S-<f8>") 'org-tree-slide-skip-done-toggle)

org-tree-slide-presentation-profile and org-tree-slide-narrowing-control-profile are also available.

4-1. `Simple’

This profile will display trees in your org buffer by simple narrowing. You can change trees without widen command. Most of the visual effect is disabled.

Type M-x org-tree-slide-simple-profile while org-tree-slide-mode is ON.

  1. No header display
  2. No slide-in effect
  3. The cursor will move to the head of the buffer when exit
  4. No slide number display in mode line
  5. Display every type of tree except org-comment-string (e.g. COMMENT)

4-2. `Presentation’

This profile is the default setting of org-tree-slide. If an org buffer includes #+TITLE:, #+EMAIL:, and #+AUTHOR:, org-tree-slide attempts to use those variables in the slide header. A date in the header will be set with the presentation of the day. You can enjoy a slide-in effect, the current slide number in mode line.

If you want to show the content of your presentation, type C-x s c or M-x org-tree-slide-content. All of the headings will be shown in a buffer like a Table Of Content except some headings configured as skipping by org-tree-slide-slip-outline-level. Find a heading that you want to show, and type C->, the presentation will be resumed.

It is possible to skip slides when a heading level is higher than or equal to a value of org-tree-slide-skip-outline-level. see User variables.

To exit a presentation, set org-tree-slide-mode OFF. The cursor move to the head of the buffer and the trees will be rendered according to the value of #+STARTUP: if possible.

M-x org-tree-slide-presentation-profile

  1. Display header
  2. Enable slide-in effect
  3. The cursor will move to the head of buffer when exit
  4. Display slide number in mode line
  5. Display every type of tree except org-comment-string (e.g. COMMENT)

4-3. `TODO Pursuit with narrowing’

This profile will display trees restricted to TODO status without a header and slide-in effect. It is very useful to concentrate your focus on the current TODO item that is not done, and go to the next task by typing of C->. This is “TODO Pursuit with narrowing”. If you want to track every kind of tree including finished items, toggle M-x org-tree-slide-skip-done-toggle OFF.

When you exit org-tree-slide-mode, the cursor will keep the same position, it is therefore possible to focus again by toggle M-x org-tree-slide-mode.

If you feel the cursor moving is very slow, please change a value of org-tree-slide-modeline-display to =’outside= or nil.

M-x org-tree-slide-narrowing-control-profile

  1. No header display
  2. No slide-in effect
  3. The cursor will keep the same position when exit
  4. Display slide number in mode line
  5. Display TODO trees only except org-comment-string (e.g. COMMENT)

5. User variables

Variable Default value Select
1 org-tree-slide-skip-outline-level 0 Numeric
2 org-tree-slide-header t Boolean
3 org-tree-slide-slide-in-effect t Boolean
4 org-tree-slide-cursor-init t Boolean
5 org-tree-slide-slide-in-brank-lines 10 Numeric
6 org-tree-slide-slide-in-waiting 0.02 Float
7 org-tree-slide-heading-emphasis nil Boolean
8 org-tree-slide-never-touch-face nil Boolean
9 org-tree-slide-skip-done nil Boolean
10 org-tree-slide-skip-comments t Boolean
11 org-tree-slide-activate-message Hello… String
12 org-tree-slide-deactivate-message Quit, Bye! String
13 org-tree-slide-modeline-display ‘outside [*1]

[*1] { nil| ‘lighter | ‘outside } ‘outside: shown in the mode line outside of lighter ‘lighter: shown in lighter (slow) nil: nothing to be shown”

5-1. Useful settings for experts

If you like this elisp, the following setting is more useful. Try it!

In this case, <f8> / <f9> / <f10> / <f11> are assigned in order to control org-tree-slide.

(when (require 'org-tree-slide nil t)
  (global-set-key (kbd "<f8>") 'org-tree-slide-mode)
  (global-set-key (kbd "S-<f8>") 'org-tree-slide-skip-done-toggle)
  (define-key org-tree-slide-mode-map (kbd "<f9>")
  (define-key org-tree-slide-mode-map (kbd "<f10>")
  (define-key org-tree-slide-mode-map (kbd "<f11>")
  (setq org-tree-slide-skip-outline-level 4)
  (setq org-tree-slide-skip-done nil)))

6. Functions

Control functions

  • org-tree-slide-move-next-tree (C->)
  • org-tree-slide-move-previous-tree (C-<)
  • org-tree-slide-content (C-x s c)

Startup options

These functions will toggle org-tree-slide-mode ON, automatically.

  • org-tree-slide-without-init-play
  • org-tree-slide-play-with-timer

Toggle variables

  • org-tree-slide-display-header-toggle
  • org-tree-slide-slide-in-effect-toggle
  • org-tree-slide-skip-done-toggle
  • org-tree-slide-skip-comments-toggle
  • org-tree-slide-heading-emphasis-toggle

Batch setting of user variables

  • org-tree-slide-simple-profile
  • org-tree-slide-presentation-profile
  • org-tree-slide-narrowing-control-profile


  • org-tree-slide-play-hook
  • org-tree-slide-stop-hook
  • org-tree-slide-before-narrow-hook
  • org-tree-slide-after-narrow-hook
  • org-tree-slide-before-move-next-hook
  • org-tree-slide-before-move-previous-hook

NOTE: For senior user, some hook were renamed, please update your configurations

7. History

see also ChangeLog

Version Date Description
v2.8.1 2015-02-27@10:42 Hide org-clock related code
v2.8.0 2015-02-20@21:27 Changed Keymap, and renamed/added hooks
v2.7.5 2015-02-15@16:29 Replace ots- with org-tree-slide–
v2.7.4 2015-02-14@23:30 Refine displaying slide number in modeline
v2.7.2 2015-01-12@19:56 Suppress an error message from org-timer
v2.7.1 2015-01-12@18:28 Hide skipped slides when CONTENT mode
v2.7.0 2013-07-21@05:21 Support buffers without headings
v2.6.8 2013-02-19@12:49 Added a flag to control face setting
v2.6.6 2013-02-19@11:22 Added a new toggle to skip commented trees
v2.6.4 2013-02-12@01:43 Added some features (issue #2, #5, and #7)
v2.6.2 2013-01-27@21:21 Added hooks for start and stop the presentation
v2.6.0 2012-11-21@02:14 Support dark color theme (by @uk-ar)
v2.5.4 2012-01-11@23:02 Add autoload magic comments
v2.5.3 2011-12-18@00:50 Fix a bug for an org buffer without header
v2.5.2 2011-12-17@17:52 Set presentation profile as the default
v2.5.1 2011-12-17@13:34 org-tree-slide-skip-done set nil as default
v2.5.0 2011-12-12@18:16 Remove auto-play function (TBD)
v2.4.1 2011-12-09@11:46 Add an option to control mode line display
v2.4.0 2011-12-08@10:51 Support TODO pursuit in a slideshow
v2.3.2 2011-12-08@09:22 Reduce redundant processing
v2.3.1 2011-12-07@20:30 Add a new profile to control narrowing status
v2.3.0 2011-12-07@16:17 Support displaying a slide number
v2.2.0 2011-12-07@02:15 Support minor mode
v2.1.7 2011-12-06@00:26 Support TITLE/AUTHOR/EMAIL in a header
v2.1.5 2011-12-05@17:08 Fix an issue of title display
v2.1.3 2011-12-05@15:08 Fix the end of slide for skip control
v2.1.1 2011-12-05@11:08 Add skip control by heading level
v2.0.1 2011-12-02@18:29 Change function names, ots- is introduced.
v2.0.0 2011-12-01@17:41 Add profiles and support org 6.33x
v1.2.5 2011-10-31@18:34 Add CONTENT view to see all the subtrees.
v1.2.3 2011-10-30@20:42 Add a variable to control slide-in duration
v1.2.1 2011-10-30@16:10 Add slide-in visual effect
v1.1.1 2011-10-28@16:16 Add functions to start and stop slide view
v1.0.0 2011-09-28@20:59 Release the initial version

8. Contact

The author is Takaaki ISHIKAWA ( Feel free to email me or use a mention of twitter (@takaxp)

Jump to Line
Something went wrong with that request. Please try again.