Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A presentation tool for org-mode based on the visibility of outline trees
Emacs Lisp
branch: master
Failed to load latest commit information.
ChangeLog Hide org-clock related code Hide org-clock related code
org-tree-slide.el Hide org-clock related code

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)

Something went wrong with that request. Please try again.