Display large character for presentation and live coding
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Emacs Presentation Mode

Presentation mode is a global minor mode to zoom characters. This mode applies the effect of text-scale-mode to all buffers. This feature help you to present Emacs edit / operation to the audience in front of the screen.


How to use

  1. Execute M-x presentation-mode to start the presentation.
  2. Adjust scale size by C-x C-+ or C-x C-- See https://www.gnu.org/software/emacs/manual/html_node/emacs/Text-Scale.html
  3. After the presentation, execute M-x presentation-mode again.
  4. And then execute M-x presentation-mode again, the last scale will be reproduced.
  5. If you want to persistize its size as the default size of presentation-mode after restarting Emacs, set presentation-default-text-scale.


Not for “persistent font size change”

It is well known that how to change the font size of Emacs in GUI is difficult. However, this mode is NOT intended for permanent font size change.


You can switch modes for screen decoration by defining hook for on/off.

(defun my-presentation-on ()
  (helm-mode -1)
  ;; (global-display-line-numbers-mode -1)
  (ido-ubiquitous-mode 1)
  (bind-key "M-x" #'smex))

(defun my-presentation-off ()
  (ido-ubiquitous-mode -1)
  ;; (global-display-line-numbers-mode 1)
  (helm-mode 1)
  (bind-key "M-x" #'helm-smex))

(add-hook 'presentation-on-hook #'my-presentation-on)
(add-hook 'presentation-off-hook #'my-presentation-off)

Typically it is on/off of display-line-numbers-mode (or linum-mode) (although I do not use it). I normally use Helm, but I think that IDO is more compact and easy to see during presentation.

Difference from other methods

vs GlobalTextScaleMode (Emacs Wiki)

Although the content of this article is simple, it does not provide a way to recover buffers.

vs moom

moom package has flexible frame control and font size change function. Its font size change function is controlled by a mechanism different from presentation.el.

vs default-text-scale

default-text-scale package is an implementation that replaces text-scale-mode. This package is probably not compatible with presentation.el, but please use this whenever you want to synchronize font size at all times, not only for presentation use.

vs Org Tree Slide and org-present

These packages are simple presentations using org-mode. By using these with org-babel, it may be possible to perform live coding of arbitrary languages.