]> git.bundesbrandschatzamt.de Git - emacsconfig.git/commitdiff
update demo-it
authorAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Thu, 23 Nov 2023 18:50:43 +0000 (19:50 +0100)
committerAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Thu, 23 Nov 2023 19:07:56 +0000 (20:07 +0100)
Signed-off-by: Andreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
16 files changed:
elpa/demo-it-20190828.26/demo-it-autoloads.el [deleted file]
elpa/demo-it-20190828.26/demo-it-custom.el [deleted file]
elpa/demo-it-20190828.26/demo-it-extras.el [deleted file]
elpa/demo-it-20190828.26/demo-it-pkg.el [deleted file]
elpa/demo-it-20190828.26/demo-it-present.el [deleted file]
elpa/demo-it-20190828.26/demo-it.el [deleted file]
elpa/demo-it-20190828.26/demo-it.info [deleted file]
elpa/demo-it-20190828.26/dir [deleted file]
elpa/demo-it-20211221.2152/demo-it-autoloads.el [new file with mode: 0644]
elpa/demo-it-20211221.2152/demo-it-custom.el [new file with mode: 0644]
elpa/demo-it-20211221.2152/demo-it-extras.el [new file with mode: 0644]
elpa/demo-it-20211221.2152/demo-it-pkg.el [new file with mode: 0644]
elpa/demo-it-20211221.2152/demo-it-present.el [new file with mode: 0644]
elpa/demo-it-20211221.2152/demo-it.el [new file with mode: 0644]
elpa/demo-it-20211221.2152/demo-it.info [new file with mode: 0644]
elpa/demo-it-20211221.2152/dir [new file with mode: 0644]

diff --git a/elpa/demo-it-20190828.26/demo-it-autoloads.el b/elpa/demo-it-20190828.26/demo-it-autoloads.el
deleted file mode 100644 (file)
index 3ace9e7..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-;;; demo-it-autoloads.el --- automatically extracted autoloads
-;;
-;;; Code:
-(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
-\f
-;;;### (autoloads nil "demo-it" "demo-it.el" (23994 46778 418279
-;;;;;;  743000))
-;;; Generated autoloads from demo-it.el
-
-(autoload 'demo-it-start "demo-it" "\
-Start the current demonstration and kick off the first step.
-STEPS is a list of functions or keystrokes to execute.
-If nil, the STEPS must be specified by a call to `demo-it-create'.
-
-The optional ADVANCED-MODE turns on keybindings where <F12>
-advances the steps instead of Space.  This mode is better for
-more interactive demonstrations.
-
-\(fn &optional STEPS ADVANCED-MODE)" t nil)
-
-(autoload 'demo-it-create "demo-it" "\
-Create and store an ordered list of steps and configuration
-values. The FORMS can be either function names, expressions or
-keywords, like `:advanced-mode' and `:variable-width'.
-
-\(fn &rest FORMS)" nil t)
-
-;;;***
-\f
-;;;### (autoloads nil "demo-it-present" "demo-it-present.el" (23994
-;;;;;;  46778 422898 680000))
-;;; Generated autoloads from demo-it-present.el
-
-(autoload 'demo-it-single-presentation "demo-it-present" "\
-Demonstration that presents an `org-mode' FILE as a
-full-screen presentation. SIZE is the text scaling size, and STYLE is the presentation 
-
-\(fn FILE &optional SIZE STYLE SECTION)" t nil)
-
-;;;***
-\f
-;;;### (autoloads nil nil ("demo-it-custom.el" "demo-it-extras.el"
-;;;;;;  "demo-it-pkg.el") (23994 46778 425002 862000))
-
-;;;***
-\f
-;; Local Variables:
-;; version-control: never
-;; no-byte-compile: t
-;; no-update-autoloads: t
-;; End:
-;;; demo-it-autoloads.el ends here
diff --git a/elpa/demo-it-20190828.26/demo-it-custom.el b/elpa/demo-it-20190828.26/demo-it-custom.el
deleted file mode 100644 (file)
index ef2938a..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-;;; DEMO-IT-CUSTOM --- The project's custom variables
-;;
-;; Author: Howard Abrams <howard.abramsNOSPAMgmail.com>
-;; Copyright © 2016, Howard Abrams, all rights reserved.
-;; Created: 19 September 2016
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Commentary:
-;;
-;; Two ways to set default properties and demonstration settings.
-;; First, by setting the value on customized values, and
-;; Second, by passing in a mnemonic value with `demo-it-create',
-;;    See the `demo-it--set-property' for the mapping.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 3, or
-;; (at your option) any later version.
-;;
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with this program; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
-;; Floor, Boston, MA 02110-1301, USA.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Code:
-
-(defgroup demo-it nil
-  "Customizations and behaviors for demonstrations."
-  :prefix "demo-it-"
-  :group 'applications
-  :link '(url-link :tag "Github" "https://github.com/howardabrams/demo-it"))
-
-(defcustom demo-it--keymap-mode-style :simple-mode
-  "The keymap-specific minor mode to use when a demonstration
-starts. Should either be :simple-mode for using the space to
-advance to next step and `q' to exit the demonstration,
-or :advanced-mode, where <F12> advances."
-  :type '(choice (const :tag "simple"   :simple-mode)
-                 (const :tag "advanced" :advanced-mode))
-  :group 'demo-it)
-
-(defcustom demo-it--shell-or-eshell :eshell
-  "When opening up a shell, should this run the `shell' or `eshell' command."
-  :type '(choice (const :tag "shell"  :shell)
-                 (const :tag "eshell" :eshell))
-  :group 'demo-it)
-
-(defcustom demo-it--open-windows :right
-  "When opening side windows, split the frame on a particular
-side, like `:below' or on the `:right'."
-  :type '(choice (const :tag "above" :above)
-                 (const :tag "below" :below)
-                 (const :tag "left"  :left)
-                 (const :tag "right" :right))
-  :group 'demo-it)
-
-(defcustom demo-it--open-windows-size 80
-  "The size of the window to open. This is the width if the
-  window is opened on one of the sides (:left or :right), or the
-  height if the window is opened :above or :below."
-  :type '(integer))
-
-(defcustom demo-it--text-scale 2
-  "Sets the default text scale when opening files."
-  :type '(choice integer
-                 (const :tag "small" -1)
-                 (const :tag "normal" 0)
-                 (const :tag "medium" 1)
-                 (const :tag "large" 2)
-                 (const :tag "x-large" 3)
-                 (const :tag "xx-large" 4)
-                 (const :tag "huge" 5))
-  :group 'demo-it)
-
-(defcustom demo-it--start-fullscreen nil
-  "If non-nil, start the demonstration with the frame in fullscreen mode."
-  :type '(boolean)
-  :group 'demo-it)
-
-(defcustom demo-it--start-single-window t
-  "If non-nil, delete other windows to start the demonstration with a single buffer window."
-  :type '(boolean)
-  :group 'demo-it)
-
-(defcustom demo-it--presentation-hide-mode-line t
-  "If non-nil, shows the mode-line during a presentation,
-otherwise the mode-line is hidden from view."
-  :type '(boolean))
-
-(defcustom demo-it--presentation-hide-org-markers t
-  "If non-nil, shows the surrounding asterisks, underlines and
-slashes that define an `org-mode' textual formats, otherwise
-these characters hidden, even though the effects of bolding and
-italics are shown."
-  :type '(boolean))
-
-(defcustom demo-it--presentation-variable-width nil
-  "If non-nil, uses a variable-width font for `org-mode' presentation files,
-otherwise the continues to use the standard fixed-width font."
-  :type '(boolean))
-
-(defcustom demo-it--presentation-hide-org-blocks t
-  "If non-nil, shows the `#+BEGIN_SRC' and `#+END_SRC' code
-blocks in an `org-mode' presentation file, otherwise these lines
-are hidden, but the contents within the blocks are still shown."
-  :type '(boolean))
-
-(defun demo-it--presentation-variable-width-p (&optional style)
-  "Predicate return `t' if STYLE is either `:variable' or `:both'
-or the customization setting,
-`demo-it--presentation-variable-width' is true. Otherwise, STYLE
-can be `:fixed'."
-  (if (eq style :fixed)
-      nil
-    (when (or (eq style :variable)
-              (eq style :both)
-              demo-it--presentation-variable-width)
-      t)))
-
-(defun demo-it--presentation-hide-blocks-p (&optional style)
-  "Predicate return `t' if STYLE is either `:block' or `:both'
-or the customization setting, `demo-it--presentation-hide-org-blocks'
-is non-nil."
-  (when (or (eq style :block) (eq style :blocks)
-            (eq style :both)
-            demo-it--presentation-hide-org-blocks)
-    t))
-
-(defcustom demo-it--insert-text-speed :medium
-  "The speed at which some functions insert text into the shell
-and other place. This can be :instant for instantaneous,
-or :slow, :medium or :fast.
-
-This can also be a tuple of two integer values for the random
-number of milliseconds between inserting each character."
-  :type '(choice (const :tag "fast"    :fast)
-                 (const :tag "faster"  :faster)
-                 (const :tag "medium"  :medium)
-                 (const :tag "slow"    :slow)
-                 (const :tag "instant" :instant))
-  :group 'demo-it)
-
-(defun demo-it--get-insert-text-speed (&optional speed)
-  "The tuple of the lower and upper limits for the insert speed
-based on the symbol stored in `demo-it--insert-text-speed'.
-The optional value for SPEED override the default value."
-  (let ((requested-speed (or speed demo-it--insert-text-speed)))
-    (pcase requested-speed
-      ((or :faster :insert-faster)        '(1 . 10))
-      ((or :fast   :insert-fast)          '(10 . 100))
-      ((or :medium :insert-medium)        '(30 . 500))
-      ((or :slow   :insert-slow)          '(200 . 1000))
-      (_                                  requested-speed))))
-
-(defun demo-it--get-text-scale (&optional size)
-  "Returns SIZE if SIZE is an integer, otherwise, returns an
-integer matching the symbol specified by SIZE, e.g. `:large'."
-  (let ((requested-size (or size demo-it--text-scale)))
-    (pcase requested-size
-      ((or :small    :text-small)    -1)
-      ((or :normal   :text-normal)    0)
-      ((or :medium   :text-medium)    1)
-      ((or :large    :text-large)     2)
-      ((or :x-large  :text-x-large)   3)
-      ((or :xx-large :text-xx-large)  4)
-      ((or :huge     :text-huge)      5)
-      (_                              requested-size))))
-
-(defun demo-it--set-property (prop)
-  "Sets a particular property, specified by keyword, PROP to t."
-  (pcase prop
-    (:simple-mode      (setq demo-it--keymap-mode-style :simple-mode))
-    (:advance-mode     (setq demo-it--keymap-mode-style :advanced-mode))
-    (:advanced-mode    (setq demo-it--keymap-mode-style :advanced-mode))
-
-    (:use-eshell       (setq demo-it--shell-or-eshell   :eshell))
-    (:use-shell        (setq demo-it--shell-or-eshell   :shell))
-    (:eshell           (setq demo-it--shell-or-eshell   :eshell))
-    (:shell            (setq demo-it--shell-or-eshell   :shell))
-
-    (:windows-on-side  (setq demo-it--open-windows      :right))
-    (:windows-on-right (setq demo-it--open-windows      :right))
-    (:windows-on-left  (setq demo-it--open-windows      :left))
-    (:windows-below    (setq demo-it--open-windows      :below))
-    (:windows-above    (setq demo-it--open-windows      :above))
-    (:windows-replace  (setq demo-it--open-windows      :none))
-
-    (:fullscreen       (setq demo-it--start-fullscreen    t))
-    (:full-screen      (setq demo-it--start-fullscreen    t))
-    (:single-window    (setq demo-it--start-single-window t))
-
-    (:text-small       (setq demo-it--text-scale -1))
-    (:text-normal      (setq demo-it--text-scale 0))
-    (:text-medium      (setq demo-it--text-scale 1))
-    (:text-large       (setq demo-it--text-scale 2))
-    (:text-x-large     (setq demo-it--text-scale 3))
-    (:text-xx-large    (setq demo-it--text-scale 4))
-    (:text-huge        (setq demo-it--text-scale 5))
-
-    (:insert-quickly   (setq demo-it--insert-text-speed :instant))
-    (:insert-faster    (setq demo-it--insert-text-speed :faster))
-    (:insert-fast      (setq demo-it--insert-text-speed :fast))
-    (:insert-medium    (setq demo-it--insert-text-speed :medium))
-    (:insert-slow      (setq demo-it--insert-text-speed :slow))
-
-    (:show-mode-line   (setq demo-it--presentation-hide-mode-line nil))
-    (:hide-mode-line   (setq demo-it--presentation-hide-mode-line t))
-    (:show-org-markers (setq demo-it--presentation-hide-org-markers nil))
-    (:hide-org-markers (setq demo-it--presentation-hide-org-markers t))
-    (:variable-width   (setq demo-it--presentation-variable-width t))
-    (:fixed-width      (setq demo-it--presentation-variable-width nil))
-    (:show-block-headers (setq demo-it--presentation-hide-org-blocks nil))
-    (:hide-block-headers (setq demo-it--presentation-hide-org-blocks t))))
-
-(provide 'demo-it-custom)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; demo-it-custom.el ends here
diff --git a/elpa/demo-it-20190828.26/demo-it-extras.el b/elpa/demo-it-20190828.26/demo-it-extras.el
deleted file mode 100644 (file)
index f82c752..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-;;; DEMO-IT-EXTRAS --- Demo Functions that depend on other packages
-;;
-;; Author: Howard Abrams <howard.abramsNOSPAMgmail.com>
-;; Copyright © 2016, Howard Abrams, all rights reserved.
-;; Created: 23 September 2016
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Commentary:
-;;
-;;  A collection of functions that depend on other packages available
-;;  from MELPA. While the functions check to see if the package is
-;;  available and loaded, it does not actually do the loading (or the
-;;  installing of the package).
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 3, or
-;; (at your option) any later version.
-;;
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with this program; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
-;; Floor, Boston, MA 02110-1301, USA.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Code:
-
-(require 'cl)
-
-(declare-function demo-it--get-section "demo-it")
-(declare-function demo-it-load-file "demo-it")
-
-(declare-function fancy-narrow-to-region "ext:fancy-narrow")
-(declare-function fancy-narrow-to-defun "ext:fancy-narrow")
-
-;; ----------------------------------------------------------------------
-;; FANCY HIGHLIGHTING
-;;
-;;   A function useful for interactive work or as part of a
-;;   demonstration script, can use the tres cool highlighting feature
-;;   of `fancy-narrow' (see https://github.com/Malabarba/fancy-narrow)
-
-(defun demo-it-highlight-dwim (&optional type-or-fn start end)
-  "Highlights or narrows to a particular 'section'.
-
-If TYPE-OR-FN is a string, it specifies the name of a function to
-highlight. If it is :line, then START and END specifies the
-beginning or ending lines. If TYPE-OR-FN is :char, then START and
-END are buffer positions. Finally, if TYPE-OR-FN is :regex, then
-START and END are regular expressions that refers to a match in
-the buffer.
-
-If TYPE-OR-FN is `nil', (or running interactively), then if a
-section is currently highlighted/narrowed, it is
-unhighlighted/widened. If the region is active, use, the region,
-otherwise, select the function the point is currently in.
-
-If the `fancy-narrow' package is installed, we'll call
-`fancy-narrow-to-region' or `fancy-narrow-to-defun', otherwise,
-we narrow to it."
-  (interactive)
-
-  (cl-flet ((hi-defun ()   ;; Highlight the current function
-                      (if (fboundp 'fancy-narrow-to-defun)
-                          (fancy-narrow-to-defun)
-                        (narrow-to-defun)))
-
-            (hi-region (start end)
-                       (if (fboundp 'fancy-narrow-to-region)
-                           (fancy-narrow-to-region start end)
-                         (narrow-to-region start end))
-                       (if (region-active-p)
-                           (deactivate-mark)))
-            (active-p ()
-                      (if (fboundp 'fancy-narrow-active-p)
-                          (fancy-narrow-active-p)
-                        (buffer-narrowed-p)))
-            (unhighlight ()
-                         (if (fboundp 'fancy-narrow-to-region)
-                             (ignore-errors
-                               (fancy-widen))
-                           (widen))))
-    (let ((should-highlight (not (active-p))))
-      (unhighlight)
-      (cond
-       ;; Type is null, we assume we are interactive:
-       ((null type-or-fn) (when should-highlight
-                            (if (region-active-p)
-                                (hi-region (region-beginning) (region-end))
-                              (hi-defun))))
-
-       ;; With a specified type, we aren't interactive, and if we got a
-       ;; symbol, then we can use `demo-it--get-section' for our bounds.
-       ((symbolp type-or-fn)
-        (let ((positions (demo-it--get-section type-or-fn start end)))
-          (goto-char (car positions))
-          (hi-region (car positions) (cdr positions))
-          (recenter)))
-
-       ;; With string, use `imenu' for matching:
-       ((stringp type-or-fn)   (imenu type-or-fn)
-        (hi-defun))))))
-
-(defun demo-it-load-fancy-file (file type &optional start end side size)
-  "Splits window and loads FILE in another window, and use fancy
-narrow to highlight part of the buffer.
-
-If TYPE is a string that specifies a function name (available via
-the `imenu' call), then it highlights that function.
-
-If TYPE is :char or 'char, START and END refers to specific
-character positions, but if TYPE is :line or 'line, this selects
-the point positions as if START and END are line numbers.
-
-If `fancy-narrow' is not installed, then simply narrows to the area."
-  (demo-it-load-file file side size)
-  (demo-it-highlight-dwim type start end))
-
-
-(provide 'demo-it-extras)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; demo-it-extras.el ends here
diff --git a/elpa/demo-it-20190828.26/demo-it-pkg.el b/elpa/demo-it-20190828.26/demo-it-pkg.el
deleted file mode 100644 (file)
index d7d0484..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-(define-package "demo-it" "20190828.26" "Create demonstrations" 'nil :keywords
-  '("demonstration" "presentation" "test")
-  :authors
-  '(("Howard Abrams" . "howard.abramsNOSPAMgmail.com"))
-  :maintainer
-  '("Howard Abrams" . "howard.abramsNOSPAMgmail.com"))
-;; Local Variables:
-;; no-byte-compile: t
-;; End:
diff --git a/elpa/demo-it-20190828.26/demo-it-present.el b/elpa/demo-it-20190828.26/demo-it-present.el
deleted file mode 100644 (file)
index 79e2a95..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-;;; DEMO-IT-PRESENT --- Summary
-;;
-;; Author: Howard Abrams <howard.abramsNOSPAMgmail.com>
-;; Copyright © 2016, Howard Abrams, all rights reserved.
-;; Created: 23 September 2016
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Commentary:
-;;
-;;    Since I often have an org-mode file on the side of the screen to
-;;    demonstrate an outline of what I will be demoing, I made it a
-;;    function.
-;;
-;;    The file contains functions for displaying an org-mode file as a
-;;    presentation using the `org-tree-slide' project (see
-;;    https://github.com/takaxp/org-tree-slide).
-;;
-;;    If `org-tree-slide' is not available, it simply shows the
-;;    org-mode file. We really need to look at a way to make the
-;;    display configurable.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 3, or
-;; (at your option) any later version.
-;;
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with this program; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
-;; Floor, Boston, MA 02110-1301, USA.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Code:
-
-(require 'cl)
-
-(declare-function org-tree-slide-content "ext:org-tree-slide")
-(declare-function org-tree-slide-move-next-tree "ext:org-tree-slide")
-(declare-function face-remap-add-relative "face-remap.el")
-(declare-function face-remap-remove-relative "face-remap.el")
-
-(defvar org-image-actual-width)
-(defvar org-tree-slide-heading-emphasis)
-(defvar org-hide-emphasis-markers)
-
-(defvar demo-it--text-scale)
-(defvar demo-it--presentation-hide-mode-line)
-(defvar demo-it--presentation-hide-org-markers)
-(defvar demo-it--presentation-variable-width)
-(defvar demo-it--presentation-hide-org-blocks)
-
-(declare-function demo-it--get-text-scale "demo-it-custom.el")
-(declare-function demo-it--presentation-variable-width-p "demo-it-custom.el")
-(declare-function demo-it--presentation-hide-blocks-p "demo-it-custom.el")
-(declare-function demo-it-hide-mode-line "demo-it.el")
-(declare-function demo-it-show-mode-line "demo-it.el")
-(declare-function demo-it-disable-mode "demo-it.el")
-
-(declare-function demo-it-create "demo-it.el")
-(declare-function demo-it-start "demo-it.el")
-(declare-function demo-it--setq-restore "demo-it.el")
-
-;; ----------------------------------------------------------------------
-
-(defvar demo-it--presentation-file "")
-(defvar demo-it--presentation-buffer nil)
-(defvar demo-it--presentation-prev-settings (make-hash-table))
-
-
-(defun demo-it-presentation (file &optional size style section)
-  "Load FILE (org-mode?) as presentation.  Start `org-tree-slide'
-if available.  SIZE specifies the text scale, and defaults to the
-value set in `demo-it--text-scale'.
-
- STYLE can either be `:variable' for variable font pitch,
-`:blocks' for diminished headers on org-blocks, or `:both' for
-both features. If nil, defaults to the customize variables,
-`demo-it--presentation-variable-width' and
-`demo-it--presentation-hide-org-blocks'.
-
-The SECTION is the name of an org-mode header to specify as the
-first section to display."
-  (find-file file)
-  (setq demo-it--presentation-file file)
-  (setq demo-it--presentation-buffer (buffer-name))
-
-  (when (fboundp 'org-tree-slide-mode)
-    (setq org-tree-slide-heading-emphasis t)
-    (org-tree-slide-mode))
-
-  (when section
-    (demo-it--presentation-section section))
-
-  ;; Style things up correctly...
-  (make-local-variable 'demo-it--presentation-prev-settings)
-  (puthash :emphasis-markers org-hide-emphasis-markers demo-it--presentation-prev-settings)
-  (setq org-hide-emphasis-markers demo-it--presentation-hide-org-markers)
-
-  ;; Make the display of the org-mode file more presentable
-  (when (demo-it--presentation-hide-blocks-p style)
-    (demo-it--presentation-display-set))
-  (when (demo-it--presentation-variable-width-p style)
-    (variable-pitch-mode 1))
-  (when demo-it--presentation-hide-mode-line
-    (demo-it-hide-mode-line))
-  (text-scale-set (demo-it--get-text-scale size))
-
-  (when (fboundp 'org-bullets-mode)
-    (org-bullets-mode 1))
-  (when (fboundp 'flyspell-mode)
-    (flyspell-mode -1))
-  (setq cursor-type nil))
-
-(defun demo-it--presentation-display-set ()
-  "Change some typical `org-mode' display values to make more
-presentation-friendly.  Store the changed values in a hashtable.
-See `demo-it--presentation-display-restore'."
-  ;; Save everything that is interesting into a hash table:
-  (puthash :restore t demo-it--presentation-prev-settings)
-  ;; Allow us to resize our images:
-  (setq org-image-actual-width nil)
-  (let* ((backgd (face-attribute 'default :background))
-         (border (list (list :foreground backgd :background backgd :height 1))))
-    (cl-flet ((set-attr (attr values)
-                        (puthash attr
-                                 (face-remap-add-relative attr values)
-                                 demo-it--presentation-prev-settings)))
-      (set-attr 'org-block-begin-line border)
-      (set-attr 'org-block-end-line   border)
-      (set-attr 'org-meta-line        border)
-      (set-attr 'org-special-keyword  border)
-      (set-attr 'org-block            '((:family "monospace")))
-      (set-attr 'org-verbatim         '((:family "monospace")))
-      (set-attr 'org-code             '((:family "monospace")))
-      (set-attr 'org-table            '((:family "monospace")))
-      (set-attr 'org-special-keyword  '((:family "monospace"))))))
-
-(defun demo-it--presentation-display-restore ()
-  "After `demo-it--presentation-display-set', call to restore previous settings."
-  (setq org-hide-emphasis-markers
-        (gethash :emphasis-markers demo-it--presentation-prev-settings))
-  (when (gethash :restore demo-it--presentation-prev-settings)
-    (remhash :restore demo-it--presentation-prev-settings)
-    (cl-flet ((rest-attr (attr) (face-remap-remove-relative
-                                 (gethash attr demo-it--presentation-prev-settings))))
-      (mapcar #'rest-attr (list 'org-block-begin-line 'org-block-end-line 'org-block 'org-meta-line
-                                'org-verbatim 'org-code 'org-table 'org-special-keyword)))))
-
-;; Specify a section in the presentation
-
-(defun demo-it--presentation-section (section)
-  "Moves the displayed presentation to a SECTION header."
-  (interactive "s")
-  (when demo-it--presentation-buffer
-    (switch-to-buffer demo-it--presentation-buffer)
-
-    (when (fboundp 'org-tree-slide-mode)
-      (org-tree-slide-content))
-
-    (goto-char (point-min))
-    (re-search-forward (format "^\*+ +%s" section))
-
-    (when (fboundp 'org-tree-slide-mode)
-      (org-tree-slide-move-next-tree))))
-
-;; Jumping Back to the Presentation
-;;
-;;    In this case, we've been doing some steps, and the screen is
-;;    "messed up", calling this function returns back to the
-;;    presentation.
-
-(defun demo-it-presentation-return-noadvance ()
-  "Return to the presentation buffer and delete other windows."
-  (when demo-it--presentation-buffer
-    (switch-to-buffer demo-it--presentation-buffer))
-  (delete-other-windows))
-
-(defun demo-it-presentation-return ()
-  "Return to the presentation buffer, delete other windows, and
-advance to the next 'org-mode' section."
-  (when demo-it--presentation-buffer
-    (demo-it-presentation-return-noadvance)
-    (when (fboundp 'org-tree-slide-move-next-tree)
-      (org-tree-slide-move-next-tree))))
-
-;; Advance Presentation without Changing Focus
-;;
-;;    Advances the org-mode presentation, but after popping into that
-;;    presentation buffer, returns to the window where our focus was
-;;    initially.
-
-(defun demo-it-presentation-advance ()
-  "Advance the presentation to the next frame (if the buffer is
-an `org-mode' and `org-tree-slide' is available), but doesn't
-change focus to the window."
-  (interactive)
-  (when demo-it--presentation-buffer
-    (let ((orig-window (current-buffer)))
-      (switch-to-buffer demo-it--presentation-buffer)
-      (when (fboundp 'org-tree-slide-move-next-tree)
-        (org-tree-slide-move-next-tree))
-      (switch-to-buffer orig-window))))
-
-(defun demo-it-presentation-highlight-phrase (phrase &optional color)
-  "Highlight a PHRASE (based on a regular expression) in the
-presentation buffer. This is useful to highlight bullet point
-items while executing appropriate code."
-  (when demo-it--presentation-buffer
-    (let ((orig-window (current-buffer))
-          (hilite-color (if (null color) 'hi-green-b color)))
-      (switch-to-buffer demo-it--presentation-buffer)
-      (hi-lock-unface-buffer t)
-      (hi-lock-face-phrase-buffer phrase hilite-color)
-      (switch-to-buffer orig-window))))
-
-(define-obsolete-function-alias 'demo-it--presentation-highlight-phrase
-  'demo-it-presentation-highlight-phrase "2016-Oct")
-
-(defun demo-it-presentation-unhighlight-all ()
-  "Remove all highlighted values in a presentation previously set
-by a call to `demo-it-presentation-highlight-phrase'."
-  (when demo-it--presentation-buffer
-    (let ((orig-window (current-buffer)))
-      (switch-to-buffer demo-it--presentation-buffer)
-      (hi-lock-unface-buffer t)
-      (switch-to-buffer orig-window))))
-
-(define-obsolete-function-alias 'demo-it--presentation-unhighlight-all
-  'demo-it-presentation-unhighlight-all "2016-Oct")
-
-;; Clean up the Presentation
-;;
-;;    The org-presentation-start function alters the way an org-mode file
-;;    is displayed. This function returns it back to a normal, editable
-;;    state.
-
-(defun demo-it-presentation-quit ()
-  "Undo display settings made to the presentation buffer."
-  (interactive)
-  (demo-it--setq-restore)
-  (when demo-it--presentation-buffer
-    (switch-to-buffer demo-it--presentation-buffer)
-    (when (fboundp 'org-tree-slide-mode)
-      (org-tree-slide-mode -1))
-    (when (fboundp 'flyspell-mode)
-      (flyspell-mode t))
-    (setq cursor-type t)
-    (demo-it--presentation-display-restore)  ; Restore previous changes
-    (variable-pitch-mode 0)
-    (demo-it-show-mode-line)
-    (text-scale-set 0)))
-
-;; ----------------------------------------------------------------------
-
-;;;###autoload
-(defun demo-it-single-presentation (file &optional size style section)
-  "Demonstration that presents an `org-mode' FILE as a
-full-screen presentation. SIZE is the text scaling size, and STYLE is the presentation "
-  (interactive "fPresentation File: ")
-  (demo-it-create (demo-it-presentation file size style section))
-  (demo-it-start)
-
-  ;; Now that the presentation is going, let's change the mode:
-  (demo-it-disable-mode)
-  (demo-it-mode-pres t))
-
-(define-minor-mode demo-it-mode-pres "Pressing 'space' advances demo."
-  :lighter " demo-p"
-  :require 'demo-it
-  :global t
-  :keymap '((" "               . demo-it-presentation-advance)
-            ("\r"              . demo-it-presentation-advance)
-            ("q"               . demo-it-disable-mode)
-            ("Q"               . demo-it-end)))
-
-(provide 'demo-it-present)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; demo-it-present.el ends here
diff --git a/elpa/demo-it-20190828.26/demo-it.el b/elpa/demo-it-20190828.26/demo-it.el
deleted file mode 100644 (file)
index 45d521c..0000000
+++ /dev/null
@@ -1,765 +0,0 @@
-;;; demo-it.el --- Create demonstrations
-;;
-;; Author: Howard Abrams <howard.abramsNOSPAMgmail.com>
-;; Copyright (C) 2014  Howard Abrams
-;; Keywords: demonstration presentation test
-;; Version: 2.0.0
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Commentary:
-;;
-;;   When making demonstrations of new products, technologies and other
-;;   geekery, I love the versatility of using Emacs to demonstrate the
-;;   trifecta of sprint reviews, including:
-;;
-;;   - Presentations explaining the technologies
-;;   - Source code ... correctly highlighted
-;;   - Executing the code in Eshell ... or similar demonstration
-;;   - Test a new feature
-;;
-;;   However, I don't want to fat-finger, mentally burp, or even delay
-;;   the gratification while I type, so I predefine each "step" as an
-;;   Elisp function or keyboard macro, and then have =demo-it= execute
-;;   each function when I hit either the SPACE key or the F12 key
-;;   (advanced minor mode).
-;;
-;;   Using the library is a four step process:
-;;
-;;   1. Load the library in your own Elisp source code file
-;;   2. Create a collection of functions that "do things".
-;;   3. Create the ordered list of functions/steps with `demo-it-create'
-;;   4. Start the demonstration with `demo-it-start'
-;;
-;;   For instance:
-;;
-;;       (require 'demo-it)   ;; Load this library of functions
-;;
-;;       (defun dit-load-source-code ()
-;;         "Load some source code in a side window."
-;;         (demo-it-presentation-advance)
-;;         (demo-it-load-fancy-file "example.py" :line 5 12 :side))
-;;
-;;       (defun dit-run-code ()
-;;         "Execute our source code in an Eshell buffer."
-;;         ;; Close other windows and advance the presentation:
-;;         (demo-it-presentation-return)
-;;         (demo-it-start-shell)
-;;         (demo-it-run-in-shell "python example.py Snoopy"))
-;;
-;;       (demo-it-create :single-window :insert-slow :full-screen
-;;                       (demo-it-title-screen "example-title.org")
-;;                       (demo-it-presentation "example.org")
-;;                        dit-load-source-code
-;;                        dit-run-code
-;;                       (demo-it-run-in-shell "exit" nil :instant))
-;;
-;;       (demo-it-start)
-;;
-;;   Each "step" is a series of Elisp functions that "do things".
-;;   While this package has a collection of helping functions, the steps
-;;   can use any Elisp command to show off a feature.
-;;
-;;   I recommend installing these other Emacs packages:
-;;
-;;   - https://github.com/takaxp/org-tree-slide
-;;   - https://github.com/sabof/org-bullets
-;;   - https://github.com/magnars/expand-region.el
-;;   - https://github.com/Bruce-Connor/fancy-narrow
-;;
-;;   See http://github.com/howardabrams/demo-it for more details and
-;;   better examples.  You will want to walk through the source code
-;;   for all the utility functions.
-;;
-;;; Code:
-
-(require 'cl-lib)
-
-;; Predefined necessary external functions:
-(defvar org-image-actual-width)
-
-;; And functions from other projects I like to use...
-(declare-function eshell-send-input "ext:eshell")
-(declare-function show-all "ext:eshell.c")
-
-;; Load our 'modules' from other files:
-(require 'demo-it-custom)
-
-;; And specify the customization variables set in that module:
-(defvar demo-it--shell-or-eshell)
-(defvar demo-it--keymap-mode-style)
-(defvar demo-it--insert-text-speed)
-(defvar demo-it--open-windows)
-(defvar demo-it--open-windows-size)
-(defvar demo-it--text-scale)
-(defvar demo-it--start-fullscreen)
-(defvar demo-it--start-single-window)
-(declare-function demo-it--get-insert-text-speed "demo-it-custom.el")
-(declare-function demo-it--get-text-scale "demo-it-custom.el")
-(declare-function demo-it--set-property "demo-it-custom.el")
-
-
-;; ----------------------------------------------------------------------
-;; MINOR MODES
-;;
-;;   We define two styles of minor modes for dealing with special keys
-;;   to advance the demonstration along ... a simple uses space and
-;;   return, and an 'advanced' mode that requires a special function
-;;   key...
-
-(define-minor-mode demo-it-mode "Pressing 'space' advances demo."
-  :lighter " demo"
-  :require 'demo-it
-  :global t
-  :keymap '((" "               . demo-it-step)
-            ("\r"              . demo-it-step)
-            ("[down]"          . demo-it-step)
-            ("[mouse-1]"       . demo-it-set-mouse-or-advance)
-            ([nil mouse-1]     . demo-it-step)
-            ([nil wheel-up]    . demo-it-ignore-event)
-            ([nil wheel-down]  . demo-it-ignore-event)
-            ([nil wheel-left]  . demo-it-ignore-event)
-            ([nil wheel-right] . demo-it-ignore-event)
-            ("q"               . demo-it-disable-mode)
-            ("Q"               . demo-it-end)))
-
-(define-minor-mode demo-it-mode-adv "Pressing '<f12>' advances demo."
-  :lighter " demo-adv"
-  :require 'demo-it
-  :global  t
-  :keymap  (let ((map (make-sparse-keymap)))
-             (define-key map (kbd   "<f12>") 'demo-it-step)
-             (define-key map (kbd "s-<f12>") 'demo-it-insert-text)
-             (define-key map (kbd "A-<f12>") 'demo-it-insert-text)
-             (define-key map (kbd "C-<f12>") 'demo-it-highlight-dwim)
-             (define-key map (kbd "M-<f12>") 'demo-it-end)
-             map))
-
-;; Demo Mode
-;;
-;;   Allows us to advance to the next step by pressing the
-;;   space bar or return. Press the 'q' key to stop the mode.
-
-(defun demo-it-disable-mode ()
-  "Called when 'q' (or similar key) pressed to disable either the
-simple or advanced version of `demo-it-mode'."
-  (interactive)
-  (demo-it-mode -1)
-  (demo-it-mode-adv -1))
-
-;; ----------------------------------------------------------------------
-;; DEMONSTRATION MAKER
-;;
-;;   When we start a demonstration, we would pass in a list of functions
-;;   to call for each step, and then call =demo-step= to execute the
-;;   first one on the list.
-
-;; A "global" variable (shudder) to track state of the demonstration:
-(defvar demo-it--step 0  "Stores the current demo 'step' function.")
-(defvar demo-it--steps '() "List of functions to be executed in order.")
-(defvar demo-it-start-winconf nil
-  "Window configuration when starting demo. Used to restore
-  buffer positions after demonstration is complete.")
-
-;;;###autoload
-(defun demo-it-start (&optional steps advanced-mode)
-  "Start the current demonstration and kick off the first step.
-STEPS is a list of functions or keystrokes to execute.
-If nil, the STEPS must be specified by a call to `demo-it-create'.
-
-The optional ADVANCED-MODE turns on keybindings where <F12>
-advances the steps instead of Space.  This mode is better for
-more interactive demonstrations."
-  (interactive)
-  (when (or demo-it-mode demo-it-mode-adv)
-    (error "Do not start new demonstrations DURING demonstration"))
-
-  (setq demo-it-start-winconf (current-window-configuration))
-  (setq demo-it--step 0)      ;; Reset the step to the beginning
-  (when steps
-    (setq demo-it--steps steps)) ;; Store the steps.
-
-  (if (or advanced-mode (eq demo-it--keymap-mode-style :advanced-mode))
-      (demo-it-mode-adv t)
-    (demo-it-mode t))
-
-  (if demo-it--start-fullscreen
-      (demo-it-frame-fullscreen))
-  (if demo-it--start-single-window
-      (delete-other-windows))
-
-  (demo-it-step))
-
-;;;###autoload
-(defmacro demo-it-create (&rest forms)
-  "Create and store an ordered list of steps and configuration
-values. The FORMS can be either function names, expressions or
-keywords, like `:advanced-mode' and `:variable-width'."
-  `(progn
-     (demo-it--set-properties (cl-remove-if-not 'keywordp '(,@forms)))
-     (setq demo-it--steps     (cl-remove-if     'keywordp '(,@forms)))))
-
-(defun demo-it--set-properties (l)
-  "Sets a series of single property values from list, L."
-  ;; First, save all the customization properties...
-  (demo-it-setq-save demo-it--keymap-mode-style
-                     demo-it--shell-or-eshell
-                     demo-it--open-windows
-                     demo-it--text-scale
-                     demo-it--start-fullscreen
-                     demo-it--start-single-window
-                     demo-it--insert-text-speed)
-  ;; Second, set all the new customization properties:
-  (mapc 'demo-it--set-property l))
-
-(defun demo-it-end ()
-  "End the current demonstration by resetting the values
-inflicted on the presentation buffer as well as closing other
-windows."
-  (interactive)
-  (demo-it-disable-mode)
-  (demo-it-presentation-quit)
-  (set-window-configuration demo-it-start-winconf))
-
-;; Next Step
-;;
-;;   Hitting the <F12> key should be bound to triggering the next step in
-;;   the demonstration.
-
-(defun demo-it-step (&optional step)
-  "Execute the next step in the current demonstration.  Jump to a
-particular STEP if the optional parameter is given, i.e. C-6 <F12>
-to run the 6th step."
-  (interactive "P")
-  (if step
-      (setq demo-it--step step)    ;; Changing Global state, yay!
-    (setq demo-it--step (1+ demo-it--step)))
-  (let
-      ;; At this point, step is 1-based, and I need it 0-based
-      ;; and f-step is the function to call for this step...
-      ((f-step (nth (1- demo-it--step) demo-it--steps)))
-    (if f-step
-        (demo-it--execute-step f-step)
-      (read-event "Demonstration finished. Hit any key to return.")
-      (demo-it-end))))
-
-(defun demo-it-restep ()
-  "Execute the previous step in the current demonstration.
-
-Useful when the previous step failed, and you want to redo it."
-  (interactive)
-  (let
-      ;; At this point, step is 1-based, and I need it 0-based
-      ;; and f-step is the function to call for this step...
-      ((f-step (nth (1- demo-it--step) demo-it--steps)))
-    (if f-step
-        (demo-it--execute-step f-step)
-      (message "Finished the entire demonstration."))))
-
-(defun demo-it--execute-step (f-step)
-  "Executes F-STEP depending on its type, e.g. expression, function, etc."
-  (condition-case err
-      (cond ((functionp f-step) (funcall f-step))
-            ((listp     f-step) (eval f-step))     ; An expression
-            ((stringp   f-step) (execute-kbd-macro (kbd f-step)))
-            ((keywordp  f-step) (demo-it--set-property f-step))
-            (t                  (error "invaid step: %s" f-step)))
-    (error (read-event (format "Abort the demonstration because of error. Hit any key to return.\n%S" err))
-           (demo-it-end))))
-
-;; Position or advance the slide? Depends...
-
-(defun demo-it-set-mouse-or-advance (evt)
-  "Advances to the next step if clicked on the right side of any
-window, otherwise, it position the point as expected.  With EVT,
-function can be bound to the mouse click."
-  (interactive "e")
-  (if (posn-area (event-start evt))  ;; Clicked in special area?
-      (demo-it-step)
-    (let ((col (car (posn-col-row (event-start evt))))
-          (wid (window-width (posn-window (event-start evt)))))
-      (if (> col (- wid 4))
-          (demo-it-step)
-        (mouse-set-point evt)))))
-
-(defun demo-it-show-step ()
-  "Display the expected function to be run during the next step."
-  (interactive)
-  (let ((func  (nth demo-it--step demo-it--steps)))
-    (message "Step: %d - Going to run: %s" demo-it--step func)))
-
-(defun demo-it-ignore-event (evt)
-  "Empty function that absorbs the EVT parameter to keep
-demonstration from flipping out."
-  (interactive "P")
-  (message ""))
-
-
-;; ----------------------------------------------------------------------
-;; HIDE MODELINE
-;;
-;;    Call the `demo-it-hide-mode-line' when displaying images and
-;;    org-mode files displayed as "presentations", so that we aren't
-;;    bothered by the sight of the mode.
-
-(defvar demo-it--old-mode-line nil)
-(make-variable-buffer-local 'demo-it--old-mode-line)
-
-(defun demo-it-hide-mode-line ()
-  "Hide mode line for a particular buffer."
-  (interactive)
-  (when mode-line-format
-    (setq demo-it--old-mode-line mode-line-format)
-    (setq mode-line-format nil)))
-
-(defun demo-it-show-mode-line ()
-  "Show mode line for a particular buffer, if it was previously hidden with 'demo-it--hide-mode-line."
-  (interactive)
-  (if demo-it--old-mode-line
-      (setq mode-line-format demo-it--old-mode-line)))
-
-
-;; ----------------------------------------------------------------------
-;; SIDE WINDOWS and HELPER FILES
-;;
-;;    Typically, we make a side window that is large enough to have some
-;;    fun in, as the main window would serve as little more than an
-;;    outline or displaying a presentation.
-;;
-;;    The `demo-it--make-side-window' function is a helper and
-;;    probably won't be called directly, but instead is called by
-;;    functions that load a file, image or start a shell...
-
-(defun demo-it--make-side-window (&optional side size)
-  "Opens window on the side of the current frame and selects that window.
-
-SIDE is either `:above', `:below', `:left', `:right', `:side' (a
-synonym for `:right') or `:none' (for a window that occupies
-the entire frame). Defaults to the value of `demo-it--open-windows'
-(A value of `:none' acts as a no-op and doesn't open a window).
-
-SIZE specifies the width of the window if new window is on the
-side, or the height if the window is either `:above' or
-`:below'."
-  ;; Since many functions call this, we need a way to actually /not/
-  ;; split the screen, so passing in a `:none' overrides the default.
-  (when (not (or (eq side 'none) (eq side :none)))
-
-    (select-window (demo-it--new-root-window
-                    (or side demo-it--open-windows)
-                    (or size demo-it--open-windows-size)))))
-
-;; Since the `make-side-window' shouldn't be called, it has two
-;; dashes, but to maintain backward compatibility, we make an alias:
-(define-obsolete-function-alias 'demo-it-make-side-window
-  'demo-it--make-side-window "2016-Oct")
-
-(defun demo-it--new-root-window (direction size)
-  "Split the main window in the DIRECTION where DIRECTION is a
-symbol with possible values of 'right, 'left, 'above or 'below
-and SIZE is the final size of the windows, if the window is split
-horizontally (i.e. DIRECTION 'below or 'above) SIZE is assumed to
-be the target height otherwise SIZE is assumed to be target
-width."
-  (let* ((dir (pcase direction   ;; Create synonyms!?
-                (:left  'left)
-                (:right 'right)
-                (:side  'right)
-                (:below 'below)
-                (:above 'above)
-                (_      direction)))
-         (new-window (split-window (frame-root-window) nil dir))
-         (horizontal (member dir '(right left))))
-    (save-excursion
-      (select-window new-window)
-      (enlarge-window (- size (if horizontal
-                                  (window-width)
-                                (window-height)))
-                      horizontal))
-    new-window))
-
-(defun demo-it-load-file (file &optional side size width)
-  "Splits root frame into a window and load FILE into it.
-
-SIDE can be `:above' or `:below' (for vertical split) or `:left'
-or `:right' (`:side' is a synomym for `:right'), or `:none' for
-load the file in the current buffer. This defaults to the
-customized value of `demo-it--open-windows'.
-
-SIZE can specify the text font scale, and if `nil', it uses the
-value of `demo-it--text-scale'.  The WIDTH specifies the size of
-this new window, which is either the width of a side window, or
-the height if the window is `:above' or `:below'."
-  (demo-it--make-side-window side width)
-  (find-file file)
-  (text-scale-set (demo-it--get-text-scale size)))
-
-(defun demo-it--get-section (type &optional start end)
-  "Return tuple of beginning and end of a section of buffer.
-
-If TYPE is :char or 'char, START and END refers to specific
-character positions, but if TYPE is :line or 'line, this returns
-the point positions as if START and END are line numbers."
-
-  (cond
-   ;; LINE ... resets the START and END positions to be character
-   ;; positions based on the line numbers given.
-   ((or (eq type :line) (eq type 'line))
-    (save-excursion
-      ;; Re-implementing `goto-line' for the win!
-      (goto-char (point-min)) (forward-line (1- start))
-      (setq start (point))
-      (goto-char (point-min)) (end-of-line end)
-      (setq end (point))))
-
-   ;; CHAR ... start and end should already be the positions. Unless
-   ;; START or END are null, in which case, we can assume we are
-   ;; looking at the end of the buffer.
-   ((or (eq type :char) (eq type 'char))
-    (when (null start)
-      (setq start (point-min)))
-    (when (null end)
-      (setq end (point-max))))
-
-   ;; REGEXP
-   ((or (eq type :regex) (eq type :regexp))
-    (save-excursion
-      (goto-char (point-min))
-      (re-search-forward start)
-      (setq start (match-beginning 0))
-      (re-search-forward end)
-      (setq end (match-end 0))))
-
-   ;; STRING
-   ((or (eq type :str) (eq type :string))
-    (save-excursion
-      (goto-char (point-min))
-      (search-forward start)
-      (setq start (match-beginning 0))
-      (search-forward end)
-      (setq end (match-end 0)))))
-
-  (cons start end))
-
-(defun demo-it-load-part-file (file type start end &optional side size width)
-  "Splits window and loads FILE, but narrow to particular region.
-
-If TYPE is set to :line, then START and END refers to the first
-and last lines to narrow. If TYPE is set to :char, then START and
-END refer to specific character positions.
-
-See `demo-it-load-file' for an explanation of SIDE and SIZE.
-Also see `demo-it-load-fancy-file' for an alternative version."
-  (demo-it-load-file file side size width)
-  (let ((positions (demo-it--get-section type start end)))
-    (narrow-to-region (car positions) (cdr positions))))
-
-(defun demo-it-show-image (file &optional side size width)
-  "Load FILE as image (or any other special file) in another
-window without a mode line or fringe.  SIDE can be either :side
-or :below, and if `nil', the default is to use the value of
-`demo-it--open-windows'."
-  (demo-it-load-file file side size width)
-  (fringe-mode '(0 . 0))
-  (demo-it-hide-mode-line))
-
-;; Compare and Contrast Files
-;;
-;;   Places two files next to each other so that you can diff
-;;   or at least visually compare them. I suppose that after
-;;   they are loaded, you can switch to them with something like:
-;;      (pop-to-buffer "example.py")
-;;   To further manipulate them.
-
-(defun demo-it-compare-files (file1 file2 &optional side size)
-  "Load FILE1 and FILE2 as either two windows on top of each
-other on the side of the screen, or two windows below (depending
-on the value of SIDE).  The SIZE specifies the text scaling of
-both buffers."
-  (if (null side)
-      (setq side demo-it--open-windows))
-  (if (null size)
-      (setq size demo-it--text-scale))
-
-  (cl-flet ((open-other-window (file side size)
-               (if (or (eq side 'below) (eq side :below))
-                   (split-window-horizontally)
-                 (split-window-below))
-               (find-file file)
-               (text-scale-set (demo-it--get-text-scale size))))
-    (demo-it-load-file file2 side size)
-    (open-other-window file1 side size)))
-
-;; ----------------------------------------------------------------------
-;; SHELL WORK
-;;
-;;    Kick off a shell in another window, change to a particular
-;;    directory, and automatically run something.
-
-(defun demo-it--erase-shell-buffer ()
-  "Uses comint-clear-buffer in Emacs >=25, otherwise erase buffer. Better
-compatibility with read-only shell-mode prompts"
-  (let ((inhibit-read-only t))
-    (if (and (fboundp 'comint-clear-buffer)
-             (derived-mode-p 'comint-mode))
-        (progn
-          (comint-clear-buffer)
-          t)
-      (erase-buffer))))
-
-(defun demo-it-start-shell (&optional directory command name
-                                      side size width)
-  "Start a shell or eshell instance, and change to DIRECTORY to
-execute COMMAND.  NAME optionally labels the buffer, and defaults
-to `Shell'.
-
-SIDE can be `:above' or `:below' (for vertical split) or `:left'
-or `:right' (`:side' is a synomym for `:right'), or `:none' for
-load the file in the current buffer. This defaults to the
-customized value of `demo-it--open-windows'.
-
-SIZE can specify the text font scale, and if `nil', it uses the
-value of `demo-it--text-scale'.  The WIDTH specifies the size of
-this new window, which is either the width of a side window, or
-the height if the window is `:above' or `:below'."
-  (let* ((title (demo-it--shell-buffer-name name))
-         (des-buf (get-buffer title)))
-
-    (demo-it--make-side-window side width)
-    (if des-buf
-        (demo-it--start-shell-reuse title directory)
-
-      ;; Otherwise, create a new shell buffer...
-      (demo-it--start-shell-new title directory size))
-
-    (when command
-      (demo-it-insert-shell command))))
-
-(define-obsolete-function-alias 'demo-it-start-eshell 'demo-it-start-shell "2016-Oct")
-
-(defun demo-it--start-shell-new (title directory size)
-  "Attempt to create a new shell/eshell with a buffer named TITLE
-in a particular DIRECTORY."
-  (let ((default-directory (or directory
-                               (file-name-directory (buffer-file-name)))))
-    (if (eq demo-it--shell-or-eshell :shell)
-        (shell title)
-
-      (eshell "new-shell")
-      (rename-buffer title))
-
-    (read-only-mode -1)
-    (text-scale-set (demo-it--get-text-scale size))
-
-    (unless (demo-it--erase-shell-buffer)
-      (demo-it-insert-shell "" :instant))))
-
-(defun demo-it--start-shell-reuse (title directory)
-  "Attempt to re-use existing shell/eshell with a buffer named
-TITLE in a particular DIRECTORY."
-  (switch-to-buffer title)
-  (when directory
-    (goto-char (point-max))
-    (demo-it-insert-shell (format "cd %s" directory) :instant)
-    (unless (demo-it--erase-shell-buffer)
-      (demo-it-insert-shell "" :instant))))
-
-(defun demo-it--shell-buffer-name (&optional name)
-  "Return the buffer NAME for the shell or eshell window."
-  (if name
-      (concat "Shell: " name)
-    "Shell"))
-
-(defun demo-it-insert-shell (command &optional speed)
-  "Inserts some text in the given shell or eshell. The optional
-SPEED overrides the custom, `demo-it--insert-text-speed'."
-  (demo-it-insert command speed)
-  (if (eq demo-it--shell-or-eshell :shell)
-      (comint-send-input)
-    (eshell-send-input)))
-
-(defun demo-it-insert (str &optional speed)
-  "Insert STR into the current buffer as if you were typing it by hand.
-The SPEED (if non-nil) overrides the default value settings of the
-`demo-it--insert-text-speed' custom variable."
-  (let ((timings (demo-it--get-insert-text-speed speed)))
-
-    (if (eq timings :instant)
-        (insert str)
-      (let ((bottom-limit (car timings))
-            (top-limit    (cdr timings)))
-
-        ;; If we are not inserting instantaneously, then loop over each
-        ;; character in the string with a random delay based on this range:
-        (dolist (ch (string-to-list str))
-          (insert ch)
-          (let ((tm  (+ (/ bottom-limit 1000.0)
-                        (/ (random top-limit) 1000.0))))
-            (sit-for tm)))))))
-
-(defun demo-it-run-in-shell (command &optional name speed)
-  "Run shell command COMMAND in a previously initialized Eshell.
-If NAME is not specified, it defaults to `Shell'."
-  (pop-to-buffer (demo-it--shell-buffer-name name))
-  (goto-char (point-max))
-  (demo-it-insert-shell command speed))
-
-(define-obsolete-function-alias 'demo-it-run-in-eshell 'demo-it-run-in-shell "2016-Oct")
-(define-obsolete-function-alias 'demo-it-type-in-eshell 'demo-it-run-in-shell "2016-Oct")
-
-(defun demo-it-show-shell (&optional name side width)
-  "Show the shell buffer of a given NAME whose buffer may have
-been buried and not in visible. Optionally specify the
-SIDE (either 'below or 'side) of the screen where the shell
-should be shown."
-  (demo-it--make-side-window side width)
-  (switch-to-buffer (demo-it--shell-buffer-name name)))
-
-(define-obsolete-function-alias 'demo-it-show-eshell 'demo-it-show-shell "2016-Oct")
-
-
-;; TITLE DISPLAY
-;;
-;;    Create a file to serve as a "title" as it will be displayed with a
-;;    larger-than-life font and make Emacs not look like Emacs.
-
-(defun demo-it-title-screen (file &optional size)
-  "Display FILE to serve as the demonstration's title, as it will
-be displayed with a larger-than-life font without a mode line,
-etc.  SIZE specifies the text scale, which ignores the
-`demo-it--text-scale' customization setting and defaults to 5x."
-  (fringe-mode '(0 . 0))
-
-  (find-file file)
-  (show-all)
-  (demo-it-hide-mode-line)
-  (setq cursor-type nil)
-  (if (fboundp 'flyspell-mode)
-      (flyspell-mode -1))
-  (variable-pitch-mode 1)
-  (text-scale-set (or size (demo-it--get-text-scale :huge)))
-
-  ;; Time to brag a wee bit...
-  (message "† This presentation is running within Emacs."))
-
-
-;; ----------------------------------------------------------------------
-;; DEALING WITH FRAME
-;;
-;;    During a demonstration, it might be nice to toggle between
-;;    full screen and "regular window" in a programmatic way:
-
-(defun demo-it-toggle-fullscreen ()
-  "Toggle the frame between full screen and normal size. Only
-useful for old versions of Emacs, but this code probably won't
-work on them anyway."
-  (declare (obsolete toggle-frame-fullscreen "2016-Oct"))
-  (interactive)
-  (set-frame-parameter
-   nil 'fullscreen
-   (when (not (frame-parameter nil 'fullscreen)) 'fullboth)))
-
-;; We can force the window to be full screen:
-
-(defun demo-it-frame-fullscreen ()
-  "Set the frame window to cover the full screen."
-  (interactive)
-  (set-frame-parameter nil 'fullscreen 'fullboth))
-
-;; Let's make a right-side frame window:
-
-(defun demo-it-frame-leftside ()
-  "Set the window frame to be exactly half the physical display
-screen, and place it on the left side of the screen.  This can be
-helpful when showing off some other application."
-  (declare (obsolete "Really!? You think this is useful?" "2016-Oct"))
-  (interactive)
-  (let* ((full-pixels (- (x-display-pixel-width) 16))
-         (full-width  (/ full-pixels (frame-char-width)))
-         (dest-width (/ full-width 2)))
-    (set-frame-parameter nil 'fullscreen nil)
-    (set-frame-parameter nil 'width dest-width)
-    (set-frame-parameter nil 'left 0)))
-
-;; Temporary variables
-;;
-;;    Set variables during a demonstration.
-;;    They are restored after the demonstration.
-
-(defvar demo-it--setq-tempvars (make-hash-table))
-(defvar demo-it--setq-voidvars nil)
-(defvar demo-it--setq-nilvars nil)
-
-(defun demo-it--setq (l)
-  (cl-case (length l)
-    (0)
-    (1
-     (error "Argument length is odd"))
-    (t
-     (let ((name (car l))
-           (var  (eval (cadr l))))
-       (cond ((and (boundp name) (symbol-value name))
-              (puthash name (symbol-value name) demo-it--setq-tempvars))
-             ((boundp name)
-              (push name demo-it--setq-nilvars))
-             (t
-              (push name demo-it--setq-voidvars)))
-       (set name var)
-       (demo-it--setq (nthcdr 2 l))))))
-
-(defmacro demo-it-setq (&rest list)
-  "Like `setq', but the values are restored to original after the demo.
-Actually restored by `demo-it--setq-restore'."
-  `(demo-it--setq '(,@list)))
-
-(defmacro demo-it-setq-save (&rest list)
-  "Saves the original value of a LIST of variables.
-
-Call `demo-it--setq-restore' to restore the original values of
-the variables."
-  `(mapcar ,(lambda (v) (puthash v (eval v) demo-it--setq-tempvars))
-           '(,@list)))
-
-(defun demo-it--setq-restore ()
-  "Restore values of setting by `demo-it-setq'."
-  (cl-loop for name being the hash-keys in demo-it--setq-tempvars using (hash-values value)
-           do (set name value))
-  (dolist (name demo-it--setq-nilvars) (set name nil))
-  (mapc 'makunbound demo-it--setq-voidvars)
-  (clrhash demo-it--setq-tempvars)
-  (setq demo-it--setq-nilvars nil
-        demo-it--setq-voidvars nil))
-
-;; Helper Functions
-
-(defun demo-it-message-keybinding (key command)
-  "Display message showing the KEY keybinding and its COMMAND."
-  (interactive)
-  (message "Typed: '%s' Command: '%s'" key command))
-
-;; ----------------------------------------------------------------------
-
-(require 'demo-it-present)
-(require 'demo-it-extras)
-
-;;   As a final harrah, we need to let other files know how to include
-;;   this bad child.
-
-(provide 'demo-it)
-
-;;; demo-it.el ends here
diff --git a/elpa/demo-it-20190828.26/demo-it.info b/elpa/demo-it-20190828.26/demo-it.info
deleted file mode 100644 (file)
index 93b0d0c..0000000
+++ /dev/null
@@ -1,1409 +0,0 @@
-This is demo-it.info, produced by makeinfo version 5.2 from
-demo-it.texi.
-
-This manual is for demo-it (version 2.0, last updated 24 October 2016),
-a project for running demonstrations within Emacs.
-
-   Copyright © 2016, Howard Abrams
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with no Front-Cover Texts,
-     and with no Back-Cover Texts.  A copy of the license is included in
-     the section entitled “GNU Free Documentation License”.
-INFO-DIR-SECTION Emacs
-START-INFO-DIR-ENTRY
-* Demo It: (demo-it).   Demonstrations made and shown in Emacs.
-END-INFO-DIR-ENTRY
-
-\1f
-File: demo-it.info,  Node: Top,  Next: Basics,  Up: (dir)
-
-Demo It
-*******
-
-This manual is for demo-it (version 2.0, last updated 24 October 2016),
-a project for running demonstrations within Emacs.
-
-   Copyright © 2016, Howard Abrams
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with no Front-Cover Texts,
-     and with no Back-Cover Texts.  A copy of the license is included in
-     the section entitled “GNU Free Documentation License”.
-
-* Menu:
-
-* Basics::
-* Showing Presentations::
-* Showing Files::
-* Running Commands::
-* Inserting Text::
-* Extra Functions::
-* Customization::
-* Index::
-
-— The Detailed Node Listing —
-
-Basics
-
-* Simple Example::
-* Step Types::
-* Demonstration Options::
-* Running the Demo::
-* Demo Modes::
-
-
-
-
-
-Demo Modes
-
-* demo-it-mode::
-* demo-it-mode-adv::
-
-Showing Presentations
-
-* demo-it-presentation::
-* demo-it-presentation-quit::
-* demo-it-presentation-return::
-* demo-it-presentation-return-noadvance::
-* demo-it-presentation-advance::
-* demo-it-presentation-highlight-phrase::
-* demo-it-single-presentation::
-
-
-
-Showing Files
-
-* demo-it-load-file::
-* demo-it-load-part-file::
-* demo-it-load-fancy-file::
-* demo-it-show-image::
-* demo-it-compare-files::
-
-
-
-Running Commands
-
-* demo-it-start-shell::
-* demo-it-run-in-shell::
-* demo-it-show-shell::
-
-
-
-
-Extra Functions
-
-* demo-it-end::
-* demo-it-step::
-* demo-it-restep::
-* demo-it-show-step::
-* demo-it-hide-mode-line::
-* demo-it-show-mode-line::
-* demo-it-title-screen::
-* demo-it-message-keybinding::
-* demo-it-highlight-dwim::
-
-
-
-Customization
-
-* demo-it--keymap-mode-style::
-* demo-it--shell-or-eshell::
-* demo-it--open-windows::
-* demo-it--open-windows-size::
-* demo-it--text-scale::
-* demo-it--start-fullscreen::
-* demo-it--start-single-window::
-* demo-it--presentation-hide-mode-line::
-* demo-it--presentation-hide-org-markers::
-* demo-it--presentation-variable-width::
-* demo-it--presentation-hide-org-blocks::
-* demo-it--insert-text-speed::
-
-\1f
-File: demo-it.info,  Node: Basics,  Next: Showing Presentations,  Prev: Top,  Up: Top
-
-Basics
-******
-
-At the end of each sprint, each of us demonstrate our accomplishments.
-These reviews often incorporate the following trifecta:
-
-   • Presentations explaining the technology and whatnot
-   • Source code reviews…correctly highlighted and interactive
-   • Executing the code in a shell
-
-   During my sprint reviews, I noticed I used my org-mode-formatted
-files, eshell and source code buffers… In other words, I was always in
-Emacs.  However, fat-fingering or mentally burping delayed the
-gratification for my audience while I laboriously typed.  I originally
-solved this problem by predefining each “step” as an Emacs Lisp
-function, and then had another function execute each function when I hit
-an _advance_ key (F12).
-
-   After I had amassed a small army of _helper functions_, I packaged it
-as demo-it, because I lack the imagination to come up with anything more
-clever.
-
-   See the following videos as examples of what can be done:
-
-   • Emacs: An Introduction for the Curious
-     (http://www.youtube.com/watch?v=B6jfrrwR10k)
-   • Literate DevOps Programming
-     (https://www.youtube.com/watch?v=dljNabciEGg)
-   • Learn You Some Lisp for Great Good
-     (http://www.youtube.com/watch?v=3T00X_sNg4Q)
-
-* Menu:
-
-* Simple Example::
-* Step Types::
-* Demonstration Options::
-* Running the Demo::
-* Demo Modes::
-
-\1f
-File: demo-it.info,  Node: Simple Example,  Next: Step Types,  Up: Basics
-
-Simple Example
-==============
-
-Using this project is a four step process:
-
-  1. Load the library in your own Elisp source code file
-  2. Create zero or more helper functions that “do things”, or use the
-     functions provided by this project.
-  3. Order the functions by calling (demo-it-create)
-  4. Call demo-it-start to begin the fun.
-
-   Press the space for each step, or call demo-it-end to end early.
-
-   For instance:
-
-     (require 'demo-it)
-
-     (defun my-demo-step/show-code ()
-       "Helper demo function that displays some source code and
-     advances the presentation at the same time."
-       (demo-it-load-side-window "example/example.py")
-       (demo-it-presentation-advance))
-
-     ;; Order the functions and forms for this presentation:
-     (demo-it-create (demo-it-presentation "example/example.org")
-                      my-demo-step/show-code
-                      demo-it-presentation-return ; close file and advance
-                     (demo-it-run-in-eshell "python example/example.py"))
-
-     (demo-it-start)
-
-\1f
-File: demo-it.info,  Node: Step Types,  Next: Demonstration Options,  Prev: Simple Example,  Up: Basics
-
-Step Types
-==========
-
-The ‘demo-it-create’ is a macro that stores a single demonstration.
-Calling it a second time replaces any previously created demonstrations.
-
-   Each “step” given to the demo-it-create macro can be one of the
-following:
-
-   • Expression typically calling a helper function, for instance:
-          (demo-it-presentation "example/example.org")
-
-   • Name of a function to call that does multiple actions, for
-     instance:
-          demo-it-presentation-return
-
-   • a string referring to a key-binding to run, for instance:
-          "C-x C-f example.el "
-
-   • a property that affects demonstration behavior, see the *note
-     Demonstration Options: Demonstration Options. or *note
-     Customization: Customization.
-
-   Note: Any Emacs function can be called, either by name or as part of
-an expression.  These functions can be standard functions, supplied by
-this demo-it package, or even ones you write.  ;-)
-
-\1f
-File: demo-it.info,  Node: Demonstration Options,  Next: Running the Demo,  Prev: Step Types,  Up: Basics
-
-Demonstration Options
-=====================
-
-The following list of keywords can be passed to demo-it-create to
-override various *note Customization: Customization. settings:
-
-   • :simple-mode uses mode where space advances demonstration.
-   • :advance-mode uses mode where ‘F12’ advances demonstration.
-   • :use-shell chooses a standard shell command line interface when
-     running the *note demo-it-start-shell: demo-it-start-shell.
-     command.
-   • :use-shell chooses to use the built-in Emacs shell, which Emacs
-     uses find more comfortable when subjected to Windows systems.
-   • :eshell is an alias for :use-eshell.
-   • :shell is an alias for :user-shell.
-   • :windows-on-right defaults to opening auxiliary windows on the
-     right side of the frame (see *note demo-it-load-file: Showing
-     Files. and other helper functions for examples).
-   • :windows-on-side is an alias for :windows-on-right.
-   • :windows-on-left like the above, but defaults to the _left_ side of
-     the frame.
-   • :windows-below opens other windows at the bottom of the current
-     frame.
-   • :windows-above opens other windows at the top of the current frame.
-   • :fullscreen starts the demonstration with the current frame in
-     fullscreen mode.
-   • :single-window deletes other windows when started, and restores
-     those windows when the demonstration completes.
-   • :text-small starts presentations and other files in a slightly
-     smaller font that the current default.  Yeah, it seems like a nice
-     idea to offer it, but I wonder if that is really helpful as a
-     default for a demonstration.
-   • :text-normal starts presentations and other loaded files in the
-     default font and size.
-   • :text-medium starts presentations and other loaded files in a
-     slight larger font size (technically scaled at 1).
-   • :text-large scales presentations and other loaded files at 2.
-   • :text-x-large scales loaded files at 3.
-   • :text-xx-large scales loaded files at 4 … go figure.
-   • :text-huge scales newly loaded files at 5.  Got a big monitor or
-     very few words, I see.
-   • :insert-slow shell commands (and other calls to *note
-     demo-it-insert: Inserting Text. function) are inserted character by
-     character as if a hacker who never took a typing class in middle
-     school was typing the text.
-   • :insert-medium shell commands and other text are inserted as if a
-     medium-grade nerd with sufficient typing skills entered them.
-   • :insert-fast shell commands are entered like a typist, but to an
-     audience with the attention span of a gerbil.
-   • :insert-quickly shell commands are instantly entered, and the
-     audience is spared the gimmickry of yet-another Emacs feature.
-   • :show-mode-line leaves the mode-line alone for presentations and
-     files loaded by the demonstration package.
-   • :hide-mode-line hides the mode line so neckbeards pay attention to
-     your demonstration and quit straining to see what minor modes you
-     prefer.  Still using paredit, I see.
-   • :hide-org-markers hides the asterisks, slashes, and other markup
-     characters that format text, but still shows the text in bold and
-     italics.
-   • :show-org-markers displays org-mode presentations as you wrote it.
-   • :variable-width uses a variable width font for presentations
-     because we want to make the vi users cry.
-   • :fixed-width displays org-mode presentations with your default
-     monospaced font for ultra nerd cred.  You may need this feature if
-     source code in your presentation.
-   • :show-block-headers Should the #+begin and #+end markers be shown?
-     If you are trying to talk about _literate devops_ then, the answer
-     is yes, show them the way you see them.
-   • :hide-block-headers Hides the #+begin and #+end markers, but shows
-     the glorious source code inside.  Currently, also shows the
-     surrounding #+HEADER entries, so beware.
-
-\1f
-File: demo-it.info,  Node: Running the Demo,  Next: Demo Modes,  Prev: Demonstration Options,  Up: Basics
-
-Running the Demo
-================
-
-Once the demonstration has been created using ‘demo-it-create’, start it
-by calling demo-it-start, as this will invoke the first step.
-
-   Typically, pressing the SPACE or RETURN key will advance to the next
-step, but this depends on which of the *note Demo Modes: Demo Modes. was
-chosen.
-
-   A deprecated version of demo-it-start allows you to pass in a list of
-the steps, but creating this list can be problematic, so you’ll get more
-mileage from the demo-it-create macro.
-
-\1f
-File: demo-it.info,  Node: Demo Modes,  Prev: Running the Demo,  Up: Basics
-
-Demo Modes
-==========
-
-Some demonstrations are so complete that pressing the space bar to
-advance to each step is sufficient.  However, this project can be used
-as a _helper_ where each step merely sets up an environment where some
-Emacs feature or source code can be elaborated with personal
-prestidigitation.  In this case, using the space and return to advance
-the demonstration would limit what can be demonstrated manually.
-
-   So demo-it contains two minor modes, and starting a demonstration,
-one of the following minor mode is chosen.
-
-   The choice is either made by setting the global customization value,
-, or by passing the following keyword to demo-it-create.
-   • :simple-mode
-   • :advance-mode
-
-* Menu:
-
-* demo-it-mode::
-* demo-it-mode-adv::
-
-\1f
-File: demo-it.info,  Node: demo-it-mode,  Next: demo-it-mode-adv,  Up: Demo Modes
-
-demo-it-mode
-------------
-
-The standard minor mode for demonstrations, has the following key
-features:
-   • ‘Space’ or ‘Return’ advances to the next demonstration step
-   • ‘q’ turns off this mode, allowing you to type normally.  Call
-     demo-it-mode to resume this mode
-   • ‘Q’ ends the demonstration
-
-   Note: In this mode, clicking the mouse on the right-side of the
-screen will advance the demonstration, while clicking elsewhere,
-repositions the cursor.
-
-\1f
-File: demo-it.info,  Node: demo-it-mode-adv,  Prev: demo-it-mode,  Up: Demo Modes
-
-demo-it-mode-adv
-----------------
-
-The advanced mode is used when the demo-it project simply sets up an
-environment, where you want most keys available to enter commands
-manually.  This mode has the following key features:
-
-   • ‘F12’ advances to the next step in the demonstration
-   • ‘M-F12’ ends the demonstration
-
-   Why yes, while called _advanced_ is certainly has limited features.
-
-\1f
-File: demo-it.info,  Node: Showing Presentations,  Next: Showing Files,  Prev: Basics,  Up: Top
-
-Showing Presentations
-*********************
-
-This project relies on other projects to do most of the heavy lifting
-for using ‘org-mode’ files as the basis of a presentation, especially
-the org-tree-slide (https://github.com/takaxp/org-tree-slide) project,
-which displays each section under a header as the sole contents of a
-buffer.
-
-   The following functions can be added to your demonstration to control
-the display of the presentation.
-
-* Menu:
-
-* demo-it-presentation::
-* demo-it-presentation-quit::
-* demo-it-presentation-return::
-* demo-it-presentation-return-noadvance::
-* demo-it-presentation-advance::
-* demo-it-presentation-highlight-phrase::
-* demo-it-single-presentation::
-
-\1f
-File: demo-it.info,  Node: demo-it-presentation,  Next: demo-it-presentation-quit,  Up: Showing Presentations
-
-demo-it-presentation
-====================
-
-(file &optional size style section)
-
-   Loads the given ‘org-mode’ file as a presentation.  This
-automatically calls org-tree-slide
-(https://github.com/takaxp/org-tree-slide) if available.
-
-   This function takes an optional ‘size’ parameter to specifies the
-text scale.  If ‘nil’, this defaults to the value set in *note
-demo-it–text-scale: demo-it--text-scale. customization variable.
-
-   The optional ‘style’ parameter can be set to either :variable for
-variable font pitch, :blocks for diminished headers on org-blocks, or
-:both to enable both features.  This is a deprecated, legacy feature,
-since it is easier and clearer to either use the customization
-variables:
-   • *note demo-it–presentation-variable-width:
-     demo-it--presentation-variable-width.
-   • *note demo-it–presentation-hide-org-blocks:
-     demo-it--presentation-hide-org-blocks.
-
-   The final parameter, ‘section’, is a string containing the name of an
-‘org-mode’ header to specify as the first section to display.
-
-\1f
-File: demo-it.info,  Node: demo-it-presentation-quit,  Next: demo-it-presentation-return,  Prev: demo-it-presentation,  Up: Showing Presentations
-
-demo-it-presentation-quit
-=========================
-
-Undoes the display settings made to the presentation buffer.
-
-\1f
-File: demo-it.info,  Node: demo-it-presentation-return,  Next: demo-it-presentation-return-noadvance,  Prev: demo-it-presentation-quit,  Up: Showing Presentations
-
-demo-it-presentation-return
-===========================
-
-Makes the last running presentation the current buffer, deletes other
-windows, and advances to the next ‘org-mode’ section.
-
-\1f
-File: demo-it.info,  Node: demo-it-presentation-return-noadvance,  Next: demo-it-presentation-advance,  Prev: demo-it-presentation-return,  Up: Showing Presentations
-
-demo-it-presentation-return-noadvance
-=====================================
-
-Similar to calling *note demo-it-presentation-return:
-demo-it-presentation-return. in that the latest specified presentation
-becomes the current buffer and all other windows are deleted.
-
-   However, the presentation is not advanced to the next section.
-
-\1f
-File: demo-it.info,  Node: demo-it-presentation-advance,  Next: demo-it-presentation-highlight-phrase,  Prev: demo-it-presentation-return-noadvance,  Up: Showing Presentations
-
-demo-it-presentation-advance
-============================
-
-Advances the currently running presentation to the next section, but
-doesn’t change focus to the window.  Any further commands happen in the
-current window.
-
-   This function is useful if a presentation discusses multiple
-commands, then you can advance through them while other commands
-actually perform the action (like executing commands in a shell).
-
-   As an example, the following demonstration will _live-code_ while the
-presentation discusses each part:
-
-     (demo-it-create (demo-it-presentation "elisp-cookbook.org")
-                     (demo-it-load-file "elisp-example.el")
-
-                     ; Advance to next section that talks about defun:
-                      demo-it-presentation-advance
-
-                     ; Start coding an Emacs Lisp function:
-                     (demo-it-insert "def")       ; Begin yasnippet template
-                     "TAB"                        ; Trigger yasnippet
-                     (demo-it-insert "some-func") ; The function name
-                     "TAB"                        ; Advance to parameters
-                     (demo-it-insert "x y")       ; parameters
-                     "TAB"                        ; Advance to parameters
-                     (demo-it-insert "Example function.")
-                     "TAB"                        ; Advance to interactive
-                     (demo-it-insert " ")         ; No need for this section
-                     "TAB"                        ; Advance to function body
-
-                     ; Advance to next section to talk about if statements
-                      demo-it-presentation-advance
-
-                     (demo-it-insert "if")        ; Begin next template
-                     "TAB"                        ; Trigger yasnippet
-                     (demo-it-insert "(eq x y)")  ; predicate expression
-                     "TAB"                        ; Advance to if body
-
-                      ) ;; etc.
-
-\1f
-File: demo-it.info,  Node: demo-it-presentation-highlight-phrase,  Next: demo-it-single-presentation,  Prev: demo-it-presentation-advance,  Up: Showing Presentations
-
-demo-it-presentation-highlight-phrase
-=====================================
-
-Given a string parameter, ‘phrase’, as a regular expression, this
-function highlights a _phrase_ in the presentation buffer without
-changing the current buffer.  This is useful to highlight bullet point
-items while executing appropriate code.
-
-   The ‘color’ parameter is a face from the ‘hi-lock’ project, e.g.
-:hi-yellow.
-
-   Note: This unhighlights previous highlighted phrases.  Call
-‘demo-it-presentation-unhighlight-all’ if you just want to remove the
-highlighting.
-
-\1f
-File: demo-it.info,  Node: demo-it-single-presentation,  Prev: demo-it-presentation-highlight-phrase,  Up: Showing Presentations
-
-demo-it-single-presentation
-===========================
-
-Demonstration similar to calling *note demo-it-presentation:
-demo-it-presentation, in that it presents an ‘org-mode’ file as a
-full-screen presentation.  In this form, the demonstration doesn’t do
-anything more than advance through the presentation, and calling either
-‘demo-it-create’ or ‘demo-it-start’ is not needed.
-
-   This function begins a minor-mode where the space or return key
-advances the presentation to the next section.  In this mode, the ‘q’
-disables this mode, and ‘Q’ quits the demonstration and presentation.
-
-   While the standard customization variables configure the presentation
-display style, this function accepts a ‘size’ parameter to set the text
-scaling size.
-
-   The optional ‘style’ parameter can be set to either :variable for
-variable font pitch, :blocks for diminished headers on org-blocks, or
-:both to enable both features.
-
-\1f
-File: demo-it.info,  Node: Showing Files,  Next: Running Commands,  Prev: Showing Presentations,  Up: Top
-
-Showing Files
-*************
-
-While a simple call to find-file is often sufficient to display a file
-in Emacs, the following functions can be helpful for showing files and
-source code during a demonstration.
-
-   These functions often take the following optional parameters, and in
-the spirit of DRY, we will specify them here:
-
-   The optional ‘side’ parameter specifies the side of the frame to
-display the new window.  Acceptable values can one of the following
-keywords:
-   • :above
-   • :below
-   • :left
-   • :right
-   • :side is a synomym for :right
-   • :none loads the file in the current buffer.
-
-   If ‘nil’, defaults is to use the customized value of *note
-demo-it–open-windows: demo-it--open-windows.
-
-   The optional ‘size’ parameter takes an integer and specifies the text
-scale.  If ‘nil’, this defaults to the value set in *note
-demo-it–text-scale: demo-it--text-scale. customization variable.
-
-   The ‘width’ parameter specifies the size of the new window, which is
-either the width of a side window, or the height if the window is :above
-or :below.
-
-* Menu:
-
-* demo-it-load-file::
-* demo-it-load-part-file::
-* demo-it-load-fancy-file::
-* demo-it-show-image::
-* demo-it-compare-files::
-
-\1f
-File: demo-it.info,  Node: demo-it-load-file,  Next: demo-it-load-part-file,  Up: Showing Files
-
-demo-it-load-file
-=================
-
-Calling this function with a file, first splits the root frame into a
-side window and loads the file into that window.
-
-   Keep in mind, that calling it a second time will result in further
-splitting of the root window.  Call delete-window or *note
-demo-it-presentation-return-noadvance:
-demo-it-presentation-return-noadvance, or close the window while also
-updating the presentation with *note demo-it-presentation-return:
-demo-it-presentation-return.
-
-   The optional parameters this function takes are *note described
-above: Showing Files.
-
-\1f
-File: demo-it.info,  Node: demo-it-load-part-file,  Next: demo-it-load-fancy-file,  Prev: demo-it-load-file,  Up: Showing Files
-
-demo-it-load-part-file
-======================
-
-Splits window and loads a file, but also narrows to particular region.
-
-   If the ‘type’ parameter is set to :line, then the ‘start’ and ‘end’
-parameters specify the first and last lines of the region to narrow.  If
-‘type’ is set to :char, then ‘start’ and ‘end’ refer to specific
-character positions.
-
-   The other optional parameters this function takes are *note described
-above: Showing Files.
-
-   See *note demo-it-load-fancy-file: demo-it-load-fancy-file. for an
-alternative version.
-
-\1f
-File: demo-it.info,  Node: demo-it-load-fancy-file,  Next: demo-it-show-image,  Prev: demo-it-load-part-file,  Up: Showing Files
-
-demo-it-load-fancy-file
-=======================
-
-Splits the root frame and loads a ‘file’ specified by the first
-parameter in that window (see *note demo-it-load-file:
-demo-it-load-file.), however, this function can use the fancy narrow
-(https://github.com/Malabarba/fancy-narrow) to highlight part of the
-buffer (if it has been loaded), otherwise, it behaves like *note
-demo-it-load-part-file: demo-it-load-part-file. and narrows to the area
-specified.
-
-   If the second parameter, ‘type’ is a string that specifies a function
-name (available via ‘imenu’), then it highlights that function.
-
-   If ‘type’ is a :line, then the next two parameters, ‘start’ and ‘end’
-specifies the beginning or ending lines.
-
-   If ‘type’ is :char, then ‘start’ and ‘end’ are exact buffer
-positions, which you can determine by evaluating (‘M-;’) the following
-expression:
-     (kill-new (int-to-string (point)))
-
-   The optional parameters ‘side’ and ‘size’ are *note described above:
-Showing Files.
-
-   Note: This function simply detects if the ‘fancy-narrow’ package has
-been loaded.  The demonstration will need to issue a ‘require’.
-
-\1f
-File: demo-it.info,  Node: demo-it-show-image,  Next: demo-it-compare-files,  Prev: demo-it-load-fancy-file,  Up: Showing Files
-
-demo-it-show-image
-==================
-
-Loads a file as an image (or any other special file) in another window
-without a mode line or fringe.
-
-   The optional parameters this function takes are *note described
-above: Showing Files.
-
-\1f
-File: demo-it.info,  Node: demo-it-compare-files,  Prev: demo-it-show-image,  Up: Showing Files
-
-demo-it-compare-files
-=====================
-
-Loads two files in either two windows on top of each other on the right
-side of the screen, or two windows below (depending on the value of the
-‘side’, which should either be :below or :side.
-
-   The other optional parameter, ‘size’ is *note described above:
-Showing Files.
-
-\1f
-File: demo-it.info,  Node: Running Commands,  Next: Inserting Text,  Prev: Showing Files,  Up: Top
-
-Running Commands
-****************
-
-What Emacs-sponsored demonstration would be complete without being able
-to run the application you created.  While your demonstration could
-easily call ‘shell-command’, starting a shell, and having Emacs _type_
-the commands makes a demonstration appear more real and interactive.
-
-   The _typing_ abilities when inserting text are not very realistic, as
-it simply picks a random delay between each letter.  What is lacking,
-however, it clacking should of the switches going off while the letter
-appears (PRs are acceptable).
-
-   The following functions can be added to your demonstration to enter
-commands in a shell (both your default shell, as well as the Eshell is
-supported by setting the *note demo-it–shell-or-eshell:
-demo-it--shell-or-eshell. variable or giving demo-it-create one of the
-following keyword configurations:
-
-   • :use-shell
-   • :use-eshell
-
-* Menu:
-
-* demo-it-start-shell::
-* demo-it-run-in-shell::
-* demo-it-show-shell::
-
-\1f
-File: demo-it.info,  Node: demo-it-start-shell,  Next: demo-it-run-in-shell,  Up: Running Commands
-
-demo-it-start-shell
-===================
-
-Starts a shell or eshell instance, in a particular directory and
-executes the given command.  The command can be entered into the shell
-with a slight random delay intended to mimic a person typing.  This
-speed of this is specified by *note demo-it–insert-text-speed:
-demo-it--insert-text-speed.
-
-   The optional ‘name’ parameter labels the buffer, and defaults to
-‘Shell’.
-
-   The other optional parameters this function takes are *note described
-above: Showing Files.
-
-\1f
-File: demo-it.info,  Node: demo-it-run-in-shell,  Next: demo-it-show-shell,  Prev: demo-it-start-shell,  Up: Running Commands
-
-demo-it-run-in-shell
-====================
-
-Run shell command in a shell previously started with *note
-demo-it-start-shell: demo-it-start-shell.  If a ‘name’ is not specified,
-it defaults to name, ‘Shell’.
-
-   The optional ‘speed’ parameter overrides the customization value set
-by *note demo-it–insert-text-speed: demo-it--insert-text-speed, or the
-text-speed related keyword given to demo-it-create.
-
-\1f
-File: demo-it.info,  Node: demo-it-show-shell,  Prev: demo-it-run-in-shell,  Up: Running Commands
-
-demo-it-show-shell
-==================
-
-Call to display the shell buffer if the shell window of a given ‘name’
-has been hidden.  If ‘name’ is not specified, it defaults to ‘Shell’.
-
-   The other optional parameters this function takes are *note described
-above: Showing Files.
-
-\1f
-File: demo-it.info,  Node: Inserting Text,  Next: Extra Functions,  Prev: Running Commands,  Up: Top
-
-Inserting Text
-**************
-
-Perhaps you want to regale your audience with your programmatic prowess,
-but don’t dare attempt to do live-coding in front of live individuals?
-Yes, even creating a series of yasnippets can result in some serious
-embarrassment (and compiler errors) if you fat-finger any of the fields.
-
-   Have no fear, just create a series of entries that contains calls to
-‘demo-it-insert’, as this function inserts a string into the current
-buffer as if you were typing it by hand (this is called by *note
-demo-it-run-in-shell: demo-it-run-in-shell.).
-
-   The following demo-it example uses this function as well as the def
-yasnippet for Ruby and particular keystrokes to move from field to
-field:
-
-     (demo-it-create (find-file "foobar.rb")
-                     (demo-it-insert "def")
-                     (yas-expand)
-                     (demo-it-insert "hello")
-                     "TAB TAB"
-                     (demo-it-insert "name")
-                     "TAB"
-                     (demo-it-insert "\"Hello, #{name}\"" :fast))
-
-   The optional ‘speed’ parameter is *note described above: Showing
-Files.
-
-   Note: The previous version of demo-it offered specialized feature for
-inserting text where each string to entered was put in a hashmap,
-‘demo-it-text-entries’, and the entries were inserted with calls to a
-dedicated function, ‘demo-it-insert-text’.  However, the above seems to
-work just as well without a special function, so it has been deprecated
-and removed.
-
-\1f
-File: demo-it.info,  Node: Extra Functions,  Next: Customization,  Prev: Inserting Text,  Up: Top
-
-Extra Functions
-***************
-
-The following are useful functions that don’t fit in the previous
-sections, so consider this the _miscellaeous_ section.
-
-* Menu:
-
-* demo-it-end::
-* demo-it-step::
-* demo-it-restep::
-* demo-it-show-step::
-* demo-it-hide-mode-line::
-* demo-it-show-mode-line::
-* demo-it-title-screen::
-* demo-it-message-keybinding::
-* demo-it-highlight-dwim::
-
-\1f
-File: demo-it.info,  Node: demo-it-end,  Next: demo-it-step,  Up: Extra Functions
-
-demo-it-end
-===========
-
-Calling this command ends the current demonstration by disabling the
-mode (see *note Demo Modes: Demo Modes.), resetting the values inflicted
-on the presentation buffer as well as restoring the window arrangement
-to their original glory before demo-it-start was called.
-
-\1f
-File: demo-it.info,  Node: demo-it-step,  Next: demo-it-restep,  Prev: demo-it-end,  Up: Extra Functions
-
-demo-it-step
-============
-
-This function is typically called by one of the *note Demo Modes: Demo
-Modes. to execute the next step in the current demonstration.
-
-   However, this function can be called to jump to a particular STEP by
-specifying a step number to the optional parameter, ‘step’.  This can
-also be done with a prefix, e.g.  C-6 <F12> to run the 6th step.
-
-   Keep in mind that normally step functions expect a particular state
-to be established, so calling this function to jump to a particular step
-may not work as intended.
-
-   Why yes, we do want to figure out a good mechanism for establishing a
-state for each called step, but that be a wee-bit challenging.
-
-\1f
-File: demo-it.info,  Node: demo-it-restep,  Next: demo-it-show-step,  Prev: demo-it-step,  Up: Extra Functions
-
-demo-it-restep
-==============
-
-Re-executes the previous step in the current demonstration.
-
-   Note, this doesn’t handle the concept of the state of the Emacs
-system, so calling this function interactively does not rewind and
-re-executes, it just re-executes given the current Emacs state.
-
-\1f
-File: demo-it.info,  Node: demo-it-show-step,  Next: demo-it-hide-mode-line,  Prev: demo-it-restep,  Up: Extra Functions
-
-demo-it-show-step
-=================
-
-Displays a message about the expected function (that is, the function
-that _will be run_) during the next step.  This can be useful when
-you’ve lost your way, and ask yourself, How did I get here?
-
-   Of course, you may ask yourself, How do I work this?
-And you may ask yourself, Where is that large automobile?
-And you may tell yourself, This is not my beautiful house!
-And you may tell yourself, This is not my beautiful wife!
-
-\1f
-File: demo-it.info,  Node: demo-it-hide-mode-line,  Next: demo-it-show-mode-line,  Prev: demo-it-show-step,  Up: Extra Functions
-
-demo-it-hide-mode-line
-======================
-
-Hides the mode line for a current buffer.  This is done by setting the
-‘mode-line-format’ to ‘nil’, but also saves off the value so that it can
-be restored by calling *note demo-it-show-mode-line:
-demo-it-show-mode-line.
-
-\1f
-File: demo-it.info,  Node: demo-it-show-mode-line,  Next: demo-it-title-screen,  Prev: demo-it-hide-mode-line,  Up: Extra Functions
-
-demo-it-show-mode-line
-======================
-
-Shows the mode line of the current buffer, if it was previously hidden
-with a call to *note demo-it-hide-mode-line: demo-it-hide-mode-line.
-
-\1f
-File: demo-it.info,  Node: demo-it-title-screen,  Next: demo-it-message-keybinding,  Prev: demo-it-show-mode-line,  Up: Extra Functions
-
-demo-it-title-screen
-====================
-
-Displays a file as the demonstration’s title, e.g.  displayed with a
-larger-than-life font without a mode line, etc.  Typically, a
-specially-formatted org-mode file would do the job, but any file,
-including an image will work.
-
-   The ‘size’ parameter specifies the text scale, which ignores the
-*note demo-it–text-scale: demo-it--text-scale. customization setting and
-defaults to :huge (or 5x your normal text font size).
-
-\1f
-File: demo-it.info,  Node: demo-it-message-keybinding,  Next: demo-it-highlight-dwim,  Prev: demo-it-title-screen,  Up: Extra Functions
-
-demo-it-message-keybinding
-==========================
-
-When demonstrating Emacs features, you may want to display the keystroke
-you type.  Yes, you could (and probably should) use a package like
-mwe-log-commands
-(http://www.foldr.org/~michaelw/emacs/mwe-log-commands.el) by Michael
-Weber, but you can’t really use that sort of feature with demo-it, as
-you’d just log a bunch of spacebars bound to *note demo-it-step:
-demo-it-step.
-
-   What you really want is to display the key you _wanted_ to type.  For
-that, you’ll want to end your _step function_ with a call to
-‘demo-it-message-keybinding’, as it will take two strings, where the
-first one is the “key” and the other is a function or command that it
-normally calls.
-
-   For instance:
-     (defun my-demo/dired-a-directory ()
-       "Opens a `dired' buffer on a particular directory.
-     This is a step function that I add to demo-it-create."
-       (dired (expand-file-name "~/work"))
-       (demo-it-message-keybinding "C-x d" "dired"))
-
-   This sort of _step function_ would be added to demo-it-create as a
-simple symbol, like:
-     (demo-it-create ;; :keybindings
-                     ;; other functions and expressions
-                     my-demo/dired-a-directory
-                     ;; other functions and expressions
-                     )
-
-\1f
-File: demo-it.info,  Node: demo-it-highlight-dwim,  Prev: demo-it-message-keybinding,  Up: Extra Functions
-
-demo-it-highlight-dwim
-======================
-
-Can use the fancy-narrow (https://github.com/Malabarba/fancy-narrow)
-package to highlight a particular _section_.  If the package is not
-available, it simply _narrows_ to that area.  If called interactively,
-this highlights the region (if active) or the current function.
-
-   If the first parameter, ‘type-or-fn’ is a string, this specifies the
-name of a function to highlight.
-
-   If it is a :line, then the next two parameters, ‘start’ and ‘end’
-specifies the beginning or ending lines.
-
-   If it is :char, then ‘start’ and ‘end’ are exact buffer positions,
-which you can determine by evaluating (‘M-;’) the following expression:
-     (kill-new (int-to-string (point)))
-
-   If ‘type-or-fn’ is ‘nil’ and the region is active, highlight the
-region.
-
-   If none of the following match, simply select the function the point
-is currently in.
-
-   Note: While this function checks to see if the package is available
-and loaded, it does not actually do the loading (or the installing of
-the package), for that, you will need to do something like:
-
-     (require 'fancy-narrow)
-
-\1f
-File: demo-it.info,  Node: Customization,  Next: Index,  Prev: Extra Functions,  Up: Top
-
-Appendix A Customization
-************************
-
-The following is a list of custom variables that can be set through the
-standard Emacs customization feature (under the demo-it group).  Note,
-each custom value may be overridden with a magic symbol to the *note
-demo-it-create: Step Types. macro or with a parameter to many functions.
-
-* Menu:
-
-* demo-it--keymap-mode-style::
-* demo-it--shell-or-eshell::
-* demo-it--open-windows::
-* demo-it--open-windows-size::
-* demo-it--text-scale::
-* demo-it--start-fullscreen::
-* demo-it--start-single-window::
-* demo-it--presentation-hide-mode-line::
-* demo-it--presentation-hide-org-markers::
-* demo-it--presentation-variable-width::
-* demo-it--presentation-hide-org-blocks::
-* demo-it--insert-text-speed::
-
-\1f
-File: demo-it.info,  Node: demo-it--keymap-mode-style,  Next: demo-it--shell-or-eshell,  Up: Customization
-
-demo-it–keymap-mode-style
-=========================
-
-The keymap-specific minor mode to use when a demonstration starts.
-Should either be set to the symbol, :simple-mode for using the space to
-advance to next step and ‘q’ to exit the demonstration, or
-:advanced-mode, where ‘F12’ advances.
-
-   Defaults to :simple-mode
-
-   This setting can be overridden by a keyword to demo-it-create:
-   • :simple-mode
-   • :advanced-mode
-
-\1f
-File: demo-it.info,  Node: demo-it--shell-or-eshell,  Next: demo-it--open-windows,  Prev: demo-it--keymap-mode-style,  Up: Customization
-
-demo-it–shell-or-eshell
-=======================
-
-When opening up a shell, this customization value specifies whether it
-should run the shell or eshell command.
-
-   Should be set to one of the following keywords:
-   • :shell
-   • :eshell
-
-   Defaults to :eshell
-
-   This setting can be overridden by the following keywords to
-demo-it-create macro:
-   • :use-eshell
-   • :use-shell
-
-\1f
-File: demo-it.info,  Node: demo-it--open-windows,  Next: demo-it--open-windows-size,  Prev: demo-it--shell-or-eshell,  Up: Customization
-
-demo-it–open-windows
-====================
-
-When opening side windows, split the frame on a particular side.  Should
-be set to one of the following keywords:
-
-   • :above
-   • :below
-   • :left
-   • :right
-
-   The keyword, :side is a synonym for :right.
-
-   Defaults to :right
-
-   This setting can be overridden by one of the following keywords
-passed to demo-it-create:
-   • :windows-on-side
-   • :windows-on-right
-   • :windows-on-left
-   • :windows-below
-   • :windows-above
-
-\1f
-File: demo-it.info,  Node: demo-it--open-windows-size,  Next: demo-it--text-scale,  Prev: demo-it--open-windows,  Up: Customization
-
-demo-it–open-windows-size
-=========================
-
-The size of side windows to open.  This is the width if the window is
-opened on one of the sides (:left or :right), or the height if the
-window is opened :above or :below.
-
-   Defaults to 80
-
-\1f
-File: demo-it.info,  Node: demo-it--text-scale,  Next: demo-it--start-fullscreen,  Prev: demo-it--open-windows-size,  Up: Customization
-
-demo-it–text-scale
-==================
-
-Sets the default text scale when opening files in side windows (see
-*note demo-it–open-windows: demo-it--open-windows.).  While this can be
-set to an integer, it can also be set to one of the following keywords:
-   • :small, set to a text scale of -1
-   • :normal, set to a text scale of 0
-   • :medium, set to a text scale of 1
-   • :large, set to a text scale of 2
-   • :x-large, set to a text scale of 3
-   • :xx-large, set to a text scale of 4
-   • :huge, set to a text scale of 5
-
-   It defaults to :large (a text-scale-set value of 2).
-
-   This customization value can be overridden with one of the following
-keywords passed to demo-it-create:
-   • :text-small
-   • :text-normal
-   • :text-medium
-   • :text-large
-   • :text-x-large
-   • :text-xx-large
-   • :text-huge
-
-\1f
-File: demo-it.info,  Node: demo-it--start-fullscreen,  Next: demo-it--start-single-window,  Prev: demo-it--text-scale,  Up: Customization
-
-demo-it–start-fullscreen
-========================
-
-A boolean setting that if set to a non-nil value, demonstrations start
-with the current frame in fullscreen mode.  Defaults to false.
-
-   This customization value can be overridden with :fullscreen keyword
-passed to demo-it-create.
-
-\1f
-File: demo-it.info,  Node: demo-it--start-single-window,  Next: demo-it--presentation-hide-mode-line,  Prev: demo-it--start-fullscreen,  Up: Customization
-
-demo-it–start-single-window
-===========================
-
-A boolean setting that if non-nil, deletes other windows to start the
-demonstration with a current buffer window being the only displayed
-window.  Defaults to t.
-
-   This customization value can be overridden with :single-window
-keyword passed to demo-it-create.
-
-\1f
-File: demo-it.info,  Node: demo-it--presentation-hide-mode-line,  Next: demo-it--presentation-hide-org-markers,  Prev: demo-it--start-single-window,  Up: Customization
-
-demo-it–presentation-hide-mode-line
-===================================
-
-If set to a nil value (_false_), the mode-line is hidden for any
-presentation files (this doesn’t affect other files opened with the
-*note demo-it-load-file: demo-it-load-file.).  Defaults to t.
-
-   This customization value can be overridden with either of the
-following keywords passed to demo-it-create:
-   • :show-mode-line
-   • :hide-mode-line
-
-\1f
-File: demo-it.info,  Node: demo-it--presentation-hide-org-markers,  Next: demo-it--presentation-variable-width,  Prev: demo-it--presentation-hide-mode-line,  Up: Customization
-
-demo-it–presentation-hide-org-markers
-=====================================
-
-If set to a non-nil value, surrounding asterisks, underlines and slashes
-that define an ‘org-mode’ textual formats in a presentation are
-displayed.  Otherwise those characters hidden, even though the effects
-of bolding and italics are still shown.  Defaults to t.
-
-   This customization value can be overridden with either of the
-following keywords passed to demo-it-create:
-   • :show-org-markers
-   • :hide-org-markers
-
-\1f
-File: demo-it.info,  Node: demo-it--presentation-variable-width,  Next: demo-it--presentation-hide-org-blocks,  Prev: demo-it--presentation-hide-org-markers,  Up: Customization
-
-demo-it–presentation-variable-width
-===================================
-
-If set to a non-nil value, a _variable-width_ font is used when
-displaying ‘org-mode’ presentation files, otherwise the standard
-fixed-width font is used.  Defaults to nil.
-
-   This customization value can be overridden with either of the
-following keywords passed to demo-it-create:
-   • :variable-width
-   • :fixed-width
-
-\1f
-File: demo-it.info,  Node: demo-it--presentation-hide-org-blocks,  Next: demo-it--insert-text-speed,  Prev: demo-it--presentation-variable-width,  Up: Customization
-
-demo-it–presentation-hide-org-blocks
-====================================
-
-If set to a non-nil value, the start and ending lines of ‘org-mode’
-blocks are shown during a presentation, otherwise these lines are
-hidden, but the contents within the blocks are still shown.
-
-   This currently only hides these lines:
-#+BEGIN_SRC
-   ...
-#+END_SRC
-
-   Other surrounding header values, like #+HEADERS: may still be seen.
-
-   This defaults to t, however, this customization value can be
-overridden with either of the following keywords passed to
-demo-it-create:
-   • :show-block-headers
-   • :hide-block-headers
-
-\1f
-File: demo-it.info,  Node: demo-it--insert-text-speed,  Prev: demo-it--presentation-hide-org-blocks,  Up: Customization
-
-demo-it–insert-text-speed
-=========================
-
-The functions, *note demo-it-run-in-shell: demo-it-run-in-shell, *note
-demo-it-start-shell: demo-it-start-shell, and *note demo-it-insert:
-Inserting Text, enters the text into the shell as if a human were typing
-it.  This value specifies the speed at which that text is inserted into
-the shell.
-
-   This can set to one of the following keywords:
-   • :instant to insert text with no delay
-   • :slow
-   • :medium
-   • :fast
-
-   Defaults to :medium.
-
-   This can also specify a tuple of two integer values for the random
-number of milliseconds between those two values to delay before
-inserting each character, for instance, the :medium delay has a lower
-value of 30 milliseconds, and an upper delay of 500.
-
-\1f
-File: demo-it.info,  Node: Index,  Prev: Customization,  Up: Top
-
-Index
-*****
-
-For those of you trying to read this online, this index is generated and
-only available within Emacs.  If you are reading this from within Emacs,
-well-done.
-
-\0\b[index\0\b]
-* Menu:
-
-* Basic exmaple:                         Simple Example.        (line 6)
-* Defaults for advancing demo:           demo-it--keymap-mode-style.
-                                                                (line 6)
-* demo-it--insert-text-speed:            demo-it--insert-text-speed.
-                                                                (line 6)
-* demo-it--keymap-mode-style:            demo-it--keymap-mode-style.
-                                                                (line 6)
-* demo-it--open-windows:                 demo-it--open-windows. (line 6)
-* demo-it--open-windows-size:            demo-it--open-windows-size.
-                                                                (line 6)
-* demo-it--presentation-hide-mode-line:  demo-it--presentation-hide-mode-line.
-                                                                (line 6)
-* demo-it--presentation-hide-org-blocks: demo-it--presentation-hide-org-blocks.
-                                                                (line 6)
-* demo-it--presentation-hide-org-markers: demo-it--presentation-hide-org-markers.
-                                                                (line 6)
-* demo-it--presentation-variable-width:  demo-it--presentation-variable-width.
-                                                                (line 6)
-* demo-it--shell-or-eshell:              demo-it--shell-or-eshell.
-                                                                (line 6)
-* demo-it--start-fullscreen:             demo-it--start-fullscreen.
-                                                                (line 6)
-* demo-it--start-single-window:          demo-it--start-single-window.
-                                                                (line 6)
-* demo-it--text-scale:                   demo-it--text-scale.   (line 6)
-* demo-it-compare-files:                 demo-it-compare-files. (line 6)
-* demo-it-create:                        Step Types.            (line 6)
-* demo-it-end:                           demo-it-end.           (line 6)
-* demo-it-hide-mode-line:                demo-it-hide-mode-line.
-                                                                (line 6)
-* demo-it-highlight-dwim:                demo-it-highlight-dwim.
-                                                                (line 6)
-* demo-it-how-mode-line:                 demo-it-show-mode-line.
-                                                                (line 6)
-* demo-it-insert:                        Inserting Text.        (line 6)
-* demo-it-load-fancy-file:               demo-it-load-fancy-file.
-                                                                (line 6)
-* demo-it-load-file:                     demo-it-load-file.     (line 6)
-* demo-it-load-part-file:                demo-it-load-part-file.
-                                                                (line 6)
-* demo-it-message-keybinding:            demo-it-message-keybinding.
-                                                                (line 6)
-* demo-it-mode:                          demo-it-mode.          (line 6)
-* demo-it-mode-adv:                      demo-it-mode-adv.      (line 6)
-* demo-it-presentation:                  demo-it-presentation.  (line 6)
-* demo-it-presentation-advance:          demo-it-presentation-advance.
-                                                                (line 6)
-* demo-it-presentation-highlight-phrase: demo-it-presentation-highlight-phrase.
-                                                                (line 6)
-* demo-it-presentation-quit:             demo-it-presentation-quit.
-                                                                (line 6)
-* demo-it-presentation-return:           demo-it-presentation-return.
-                                                                (line 6)
-* demo-it-presentation-return-noadvance: demo-it-presentation-return-noadvance.
-                                                                (line 6)
-* demo-it-restep:                        demo-it-restep.        (line 6)
-* demo-it-run-in-shell:                  demo-it-run-in-shell.  (line 6)
-* demo-it-show-image:                    demo-it-show-image.    (line 6)
-* demo-it-show-shell:                    demo-it-show-shell.    (line 6)
-* demo-it-show-step:                     demo-it-show-step.     (line 6)
-* demo-it-single-presentation:           demo-it-single-presentation.
-                                                                (line 6)
-* demo-it-start:                         Running the Demo.      (line 6)
-* demo-it-start-shell:                   demo-it-start-shell.   (line 6)
-* demo-it-step:                          demo-it-step.          (line 6)
-* demo-it-title-screen:                  demo-it-title-screen.  (line 6)
-* Demonstration Begins:                  demo-it-title-screen.  (line 6)
-* Demonstration Behavior options:        Demonstration Options. (line 6)
-* Demonstration Customizations:          Customization.         (line 6)
-* Demonstration with Only Presentation:  demo-it-single-presentation.
-                                                                (line 6)
-* Ending Demonstration:                  demo-it-end.           (line 6)
-* Highlighting while showing side file:  demo-it-load-fancy-file.
-                                                                (line 6)
-* Loading side files:                    demo-it-load-file.     (line 6)
-* Minor modes:                           Demo Modes.            (line 6)
-* Open Source License:                   Top.                   (line 6)
-* Options for side files:                Showing Files.         (line 6)
-* org-mode Presentations:                Showing Presentations. (line 6)
-* Parameters for demo-it-create:         Step Types.            (line 6)
-* Presentations:                         demo-it-presentation.  (line 6)
-* Redoing Demo Step:                     demo-it-restep.        (line 6)
-* Shell Commands:                        Running Commands.      (line 6)
-* Show part of a file:                   demo-it-load-part-file.
-                                                                (line 6)
-* Showing Side Files:                    Showing Files.         (line 6)
-* Showing Two Files:                     demo-it-compare-files. (line 6)
-* Showing what you type:                 demo-it-message-keybinding.
-                                                                (line 6)
-* Side Windows:                          demo-it--open-windows. (line 6)
-* Side Windows Font Size:                demo-it--text-scale.   (line 6)
-* Side Windows Size:                     demo-it--open-windows-size.
-                                                                (line 6)
-* Starting Demonstration:                Running the Demo.      (line 6)
-* Text highlighting:                     demo-it-highlight-dwim.
-                                                                (line 6)
-* Typing in Shell:                       demo-it-run-in-shell.  (line 6)
-* Typing Text into Buffer:               Inserting Text.        (line 6)
-* What step am I on?:                    demo-it-show-step.     (line 6)
-
-
-\1f
-Tag Table:
-Node: Top\7f777
-Node: Basics\7f2927
-Node: Simple Example\7f4362
-Node: Step Types\7f5486
-Node: Demonstration Options\7f6548
-Node: Running the Demo\7f10652
-Node: Demo Modes\7f11278
-Node: demo-it-mode\7f12120
-Node: demo-it-mode-adv\7f12690
-Node: Showing Presentations\7f13178
-Node: demo-it-presentation\7f13968
-Node: demo-it-presentation-quit\7f15150
-Node: demo-it-presentation-return\7f15414
-Node: demo-it-presentation-return-noadvance\7f15766
-Node: demo-it-presentation-advance\7f16267
-Node: demo-it-presentation-highlight-phrase\7f18441
-Node: demo-it-single-presentation\7f19176
-Node: Showing Files\7f20255
-Node: demo-it-load-file\7f21603
-Node: demo-it-load-part-file\7f22283
-Node: demo-it-load-fancy-file\7f22976
-Node: demo-it-show-image\7f24284
-Node: demo-it-compare-files\7f24647
-Node: Running Commands\7f25074
-Node: demo-it-start-shell\7f26167
-Node: demo-it-run-in-shell\7f26790
-Node: demo-it-show-shell\7f27335
-Node: Inserting Text\7f27725
-Node: Extra Functions\7f29346
-Node: demo-it-end\7f29825
-Node: demo-it-step\7f30206
-Node: demo-it-restep\7f30995
-Node: demo-it-show-step\7f31402
-Node: demo-it-hide-mode-line\7f31995
-Node: demo-it-show-mode-line\7f32404
-Node: demo-it-title-screen\7f32727
-Node: demo-it-message-keybinding\7f33341
-Node: demo-it-highlight-dwim\7f34800
-Node: Customization\7f36061
-Node: demo-it--keymap-mode-style\7f36902
-Node: demo-it--shell-or-eshell\7f37450
-Node: demo-it--open-windows\7f37981
-Node: demo-it--open-windows-size\7f38619
-Node: demo-it--text-scale\7f39001
-Node: demo-it--start-fullscreen\7f39987
-Node: demo-it--start-single-window\7f40414
-Node: demo-it--presentation-hide-mode-line\7f40895
-Node: demo-it--presentation-hide-org-markers\7f41496
-Node: demo-it--presentation-variable-width\7f42184
-Node: demo-it--presentation-hide-org-blocks\7f42771
-Node: demo-it--insert-text-speed\7f43553
-Node: Index\7f44447
-\1f
-End Tag Table
-
-\1f
-Local Variables:
-coding: utf-8
-End:
diff --git a/elpa/demo-it-20190828.26/dir b/elpa/demo-it-20190828.26/dir
deleted file mode 100644 (file)
index f3b3386..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-This is the file .../info/dir, which contains the
-topmost node of the Info hierarchy, called (dir)Top.
-The first time you invoke Info you start off looking at this node.
-\1f
-File: dir,     Node: Top       This is the top of the INFO tree
-
-  This (the Directory node) gives a menu of major topics.
-  Typing "q" exits, "?" lists all Info commands, "d" returns here,
-  "h" gives a primer for first-timers,
-  "mEmacs<Return>" visits the Emacs manual, etc.
-
-  In Emacs, you can click mouse button 2 on a menu item or cross reference
-  to select it.
-
-* Menu:
-
-Emacs
-* Demo It: (demo-it).           Demonstrations made and shown in Emacs.
diff --git a/elpa/demo-it-20211221.2152/demo-it-autoloads.el b/elpa/demo-it-20211221.2152/demo-it-autoloads.el
new file mode 100644 (file)
index 0000000..1671f97
--- /dev/null
@@ -0,0 +1,74 @@
+;;; demo-it-autoloads.el --- automatically extracted autoloads  -*- lexical-binding: t -*-
+;;
+;;; Code:
+
+(add-to-list 'load-path (directory-file-name
+                         (or (file-name-directory #$) (car load-path))))
+
+\f
+;;;### (autoloads nil "demo-it" "demo-it.el" (0 0 0 0))
+;;; Generated autoloads from demo-it.el
+
+(autoload 'demo-it-start "demo-it" "\
+Start the current demonstration and kick off the first step.
+STEPS is a list of functions or keystrokes to execute.
+If nil, the STEPS must be specified by a call to `demo-it-create'.
+
+The optional ADVANCED-MODE turns on keybindings where <F12>
+advances the steps instead of Space.  This mode is better for
+more interactive demonstrations.
+
+\(fn &optional STEPS ADVANCED-MODE)" t nil)
+
+(autoload 'demo-it-create "demo-it" "\
+Create and store an ordered list of steps and configuration
+values. The FORMS can be either function names, expressions or
+keywords, like `:advanced-mode' and `:variable-width'.
+
+\(fn &rest FORMS)" nil t)
+
+(register-definition-prefixes "demo-it" '("demo-it-"))
+
+;;;***
+\f
+;;;### (autoloads nil "demo-it-custom" "demo-it-custom.el" (0 0 0
+;;;;;;  0))
+;;; Generated autoloads from demo-it-custom.el
+
+(register-definition-prefixes "demo-it-custom" '("demo-it--"))
+
+;;;***
+\f
+;;;### (autoloads nil "demo-it-extras" "demo-it-extras.el" (0 0 0
+;;;;;;  0))
+;;; Generated autoloads from demo-it-extras.el
+
+(register-definition-prefixes "demo-it-extras" '("demo-it-"))
+
+;;;***
+\f
+;;;### (autoloads nil "demo-it-present" "demo-it-present.el" (0 0
+;;;;;;  0 0))
+;;; Generated autoloads from demo-it-present.el
+
+(autoload 'demo-it-single-presentation "demo-it-present" "\
+Demonstration that presents an `org-mode' FILE as a
+full-screen presentation. SIZE is the text scaling size, and STYLE is the presentation 
+
+\(fn FILE &optional SIZE STYLE SECTION)" t nil)
+
+(register-definition-prefixes "demo-it-present" '("demo-it-"))
+
+;;;***
+\f
+;;;### (autoloads nil nil ("demo-it-pkg.el") (0 0 0 0))
+
+;;;***
+\f
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; coding: utf-8
+;; End:
+;;; demo-it-autoloads.el ends here
diff --git a/elpa/demo-it-20211221.2152/demo-it-custom.el b/elpa/demo-it-20211221.2152/demo-it-custom.el
new file mode 100644 (file)
index 0000000..ef2938a
--- /dev/null
@@ -0,0 +1,228 @@
+;;; DEMO-IT-CUSTOM --- The project's custom variables
+;;
+;; Author: Howard Abrams <howard.abramsNOSPAMgmail.com>
+;; Copyright © 2016, Howard Abrams, all rights reserved.
+;; Created: 19 September 2016
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; Two ways to set default properties and demonstration settings.
+;; First, by setting the value on customized values, and
+;; Second, by passing in a mnemonic value with `demo-it-create',
+;;    See the `demo-it--set-property' for the mapping.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 3, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+;; Floor, Boston, MA 02110-1301, USA.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+(defgroup demo-it nil
+  "Customizations and behaviors for demonstrations."
+  :prefix "demo-it-"
+  :group 'applications
+  :link '(url-link :tag "Github" "https://github.com/howardabrams/demo-it"))
+
+(defcustom demo-it--keymap-mode-style :simple-mode
+  "The keymap-specific minor mode to use when a demonstration
+starts. Should either be :simple-mode for using the space to
+advance to next step and `q' to exit the demonstration,
+or :advanced-mode, where <F12> advances."
+  :type '(choice (const :tag "simple"   :simple-mode)
+                 (const :tag "advanced" :advanced-mode))
+  :group 'demo-it)
+
+(defcustom demo-it--shell-or-eshell :eshell
+  "When opening up a shell, should this run the `shell' or `eshell' command."
+  :type '(choice (const :tag "shell"  :shell)
+                 (const :tag "eshell" :eshell))
+  :group 'demo-it)
+
+(defcustom demo-it--open-windows :right
+  "When opening side windows, split the frame on a particular
+side, like `:below' or on the `:right'."
+  :type '(choice (const :tag "above" :above)
+                 (const :tag "below" :below)
+                 (const :tag "left"  :left)
+                 (const :tag "right" :right))
+  :group 'demo-it)
+
+(defcustom demo-it--open-windows-size 80
+  "The size of the window to open. This is the width if the
+  window is opened on one of the sides (:left or :right), or the
+  height if the window is opened :above or :below."
+  :type '(integer))
+
+(defcustom demo-it--text-scale 2
+  "Sets the default text scale when opening files."
+  :type '(choice integer
+                 (const :tag "small" -1)
+                 (const :tag "normal" 0)
+                 (const :tag "medium" 1)
+                 (const :tag "large" 2)
+                 (const :tag "x-large" 3)
+                 (const :tag "xx-large" 4)
+                 (const :tag "huge" 5))
+  :group 'demo-it)
+
+(defcustom demo-it--start-fullscreen nil
+  "If non-nil, start the demonstration with the frame in fullscreen mode."
+  :type '(boolean)
+  :group 'demo-it)
+
+(defcustom demo-it--start-single-window t
+  "If non-nil, delete other windows to start the demonstration with a single buffer window."
+  :type '(boolean)
+  :group 'demo-it)
+
+(defcustom demo-it--presentation-hide-mode-line t
+  "If non-nil, shows the mode-line during a presentation,
+otherwise the mode-line is hidden from view."
+  :type '(boolean))
+
+(defcustom demo-it--presentation-hide-org-markers t
+  "If non-nil, shows the surrounding asterisks, underlines and
+slashes that define an `org-mode' textual formats, otherwise
+these characters hidden, even though the effects of bolding and
+italics are shown."
+  :type '(boolean))
+
+(defcustom demo-it--presentation-variable-width nil
+  "If non-nil, uses a variable-width font for `org-mode' presentation files,
+otherwise the continues to use the standard fixed-width font."
+  :type '(boolean))
+
+(defcustom demo-it--presentation-hide-org-blocks t
+  "If non-nil, shows the `#+BEGIN_SRC' and `#+END_SRC' code
+blocks in an `org-mode' presentation file, otherwise these lines
+are hidden, but the contents within the blocks are still shown."
+  :type '(boolean))
+
+(defun demo-it--presentation-variable-width-p (&optional style)
+  "Predicate return `t' if STYLE is either `:variable' or `:both'
+or the customization setting,
+`demo-it--presentation-variable-width' is true. Otherwise, STYLE
+can be `:fixed'."
+  (if (eq style :fixed)
+      nil
+    (when (or (eq style :variable)
+              (eq style :both)
+              demo-it--presentation-variable-width)
+      t)))
+
+(defun demo-it--presentation-hide-blocks-p (&optional style)
+  "Predicate return `t' if STYLE is either `:block' or `:both'
+or the customization setting, `demo-it--presentation-hide-org-blocks'
+is non-nil."
+  (when (or (eq style :block) (eq style :blocks)
+            (eq style :both)
+            demo-it--presentation-hide-org-blocks)
+    t))
+
+(defcustom demo-it--insert-text-speed :medium
+  "The speed at which some functions insert text into the shell
+and other place. This can be :instant for instantaneous,
+or :slow, :medium or :fast.
+
+This can also be a tuple of two integer values for the random
+number of milliseconds between inserting each character."
+  :type '(choice (const :tag "fast"    :fast)
+                 (const :tag "faster"  :faster)
+                 (const :tag "medium"  :medium)
+                 (const :tag "slow"    :slow)
+                 (const :tag "instant" :instant))
+  :group 'demo-it)
+
+(defun demo-it--get-insert-text-speed (&optional speed)
+  "The tuple of the lower and upper limits for the insert speed
+based on the symbol stored in `demo-it--insert-text-speed'.
+The optional value for SPEED override the default value."
+  (let ((requested-speed (or speed demo-it--insert-text-speed)))
+    (pcase requested-speed
+      ((or :faster :insert-faster)        '(1 . 10))
+      ((or :fast   :insert-fast)          '(10 . 100))
+      ((or :medium :insert-medium)        '(30 . 500))
+      ((or :slow   :insert-slow)          '(200 . 1000))
+      (_                                  requested-speed))))
+
+(defun demo-it--get-text-scale (&optional size)
+  "Returns SIZE if SIZE is an integer, otherwise, returns an
+integer matching the symbol specified by SIZE, e.g. `:large'."
+  (let ((requested-size (or size demo-it--text-scale)))
+    (pcase requested-size
+      ((or :small    :text-small)    -1)
+      ((or :normal   :text-normal)    0)
+      ((or :medium   :text-medium)    1)
+      ((or :large    :text-large)     2)
+      ((or :x-large  :text-x-large)   3)
+      ((or :xx-large :text-xx-large)  4)
+      ((or :huge     :text-huge)      5)
+      (_                              requested-size))))
+
+(defun demo-it--set-property (prop)
+  "Sets a particular property, specified by keyword, PROP to t."
+  (pcase prop
+    (:simple-mode      (setq demo-it--keymap-mode-style :simple-mode))
+    (:advance-mode     (setq demo-it--keymap-mode-style :advanced-mode))
+    (:advanced-mode    (setq demo-it--keymap-mode-style :advanced-mode))
+
+    (:use-eshell       (setq demo-it--shell-or-eshell   :eshell))
+    (:use-shell        (setq demo-it--shell-or-eshell   :shell))
+    (:eshell           (setq demo-it--shell-or-eshell   :eshell))
+    (:shell            (setq demo-it--shell-or-eshell   :shell))
+
+    (:windows-on-side  (setq demo-it--open-windows      :right))
+    (:windows-on-right (setq demo-it--open-windows      :right))
+    (:windows-on-left  (setq demo-it--open-windows      :left))
+    (:windows-below    (setq demo-it--open-windows      :below))
+    (:windows-above    (setq demo-it--open-windows      :above))
+    (:windows-replace  (setq demo-it--open-windows      :none))
+
+    (:fullscreen       (setq demo-it--start-fullscreen    t))
+    (:full-screen      (setq demo-it--start-fullscreen    t))
+    (:single-window    (setq demo-it--start-single-window t))
+
+    (:text-small       (setq demo-it--text-scale -1))
+    (:text-normal      (setq demo-it--text-scale 0))
+    (:text-medium      (setq demo-it--text-scale 1))
+    (:text-large       (setq demo-it--text-scale 2))
+    (:text-x-large     (setq demo-it--text-scale 3))
+    (:text-xx-large    (setq demo-it--text-scale 4))
+    (:text-huge        (setq demo-it--text-scale 5))
+
+    (:insert-quickly   (setq demo-it--insert-text-speed :instant))
+    (:insert-faster    (setq demo-it--insert-text-speed :faster))
+    (:insert-fast      (setq demo-it--insert-text-speed :fast))
+    (:insert-medium    (setq demo-it--insert-text-speed :medium))
+    (:insert-slow      (setq demo-it--insert-text-speed :slow))
+
+    (:show-mode-line   (setq demo-it--presentation-hide-mode-line nil))
+    (:hide-mode-line   (setq demo-it--presentation-hide-mode-line t))
+    (:show-org-markers (setq demo-it--presentation-hide-org-markers nil))
+    (:hide-org-markers (setq demo-it--presentation-hide-org-markers t))
+    (:variable-width   (setq demo-it--presentation-variable-width t))
+    (:fixed-width      (setq demo-it--presentation-variable-width nil))
+    (:show-block-headers (setq demo-it--presentation-hide-org-blocks nil))
+    (:hide-block-headers (setq demo-it--presentation-hide-org-blocks t))))
+
+(provide 'demo-it-custom)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; demo-it-custom.el ends here
diff --git a/elpa/demo-it-20211221.2152/demo-it-extras.el b/elpa/demo-it-20211221.2152/demo-it-extras.el
new file mode 100644 (file)
index 0000000..f82c752
--- /dev/null
@@ -0,0 +1,132 @@
+;;; DEMO-IT-EXTRAS --- Demo Functions that depend on other packages
+;;
+;; Author: Howard Abrams <howard.abramsNOSPAMgmail.com>
+;; Copyright © 2016, Howard Abrams, all rights reserved.
+;; Created: 23 September 2016
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;;  A collection of functions that depend on other packages available
+;;  from MELPA. While the functions check to see if the package is
+;;  available and loaded, it does not actually do the loading (or the
+;;  installing of the package).
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 3, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+;; Floor, Boston, MA 02110-1301, USA.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+(require 'cl)
+
+(declare-function demo-it--get-section "demo-it")
+(declare-function demo-it-load-file "demo-it")
+
+(declare-function fancy-narrow-to-region "ext:fancy-narrow")
+(declare-function fancy-narrow-to-defun "ext:fancy-narrow")
+
+;; ----------------------------------------------------------------------
+;; FANCY HIGHLIGHTING
+;;
+;;   A function useful for interactive work or as part of a
+;;   demonstration script, can use the tres cool highlighting feature
+;;   of `fancy-narrow' (see https://github.com/Malabarba/fancy-narrow)
+
+(defun demo-it-highlight-dwim (&optional type-or-fn start end)
+  "Highlights or narrows to a particular 'section'.
+
+If TYPE-OR-FN is a string, it specifies the name of a function to
+highlight. If it is :line, then START and END specifies the
+beginning or ending lines. If TYPE-OR-FN is :char, then START and
+END are buffer positions. Finally, if TYPE-OR-FN is :regex, then
+START and END are regular expressions that refers to a match in
+the buffer.
+
+If TYPE-OR-FN is `nil', (or running interactively), then if a
+section is currently highlighted/narrowed, it is
+unhighlighted/widened. If the region is active, use, the region,
+otherwise, select the function the point is currently in.
+
+If the `fancy-narrow' package is installed, we'll call
+`fancy-narrow-to-region' or `fancy-narrow-to-defun', otherwise,
+we narrow to it."
+  (interactive)
+
+  (cl-flet ((hi-defun ()   ;; Highlight the current function
+                      (if (fboundp 'fancy-narrow-to-defun)
+                          (fancy-narrow-to-defun)
+                        (narrow-to-defun)))
+
+            (hi-region (start end)
+                       (if (fboundp 'fancy-narrow-to-region)
+                           (fancy-narrow-to-region start end)
+                         (narrow-to-region start end))
+                       (if (region-active-p)
+                           (deactivate-mark)))
+            (active-p ()
+                      (if (fboundp 'fancy-narrow-active-p)
+                          (fancy-narrow-active-p)
+                        (buffer-narrowed-p)))
+            (unhighlight ()
+                         (if (fboundp 'fancy-narrow-to-region)
+                             (ignore-errors
+                               (fancy-widen))
+                           (widen))))
+    (let ((should-highlight (not (active-p))))
+      (unhighlight)
+      (cond
+       ;; Type is null, we assume we are interactive:
+       ((null type-or-fn) (when should-highlight
+                            (if (region-active-p)
+                                (hi-region (region-beginning) (region-end))
+                              (hi-defun))))
+
+       ;; With a specified type, we aren't interactive, and if we got a
+       ;; symbol, then we can use `demo-it--get-section' for our bounds.
+       ((symbolp type-or-fn)
+        (let ((positions (demo-it--get-section type-or-fn start end)))
+          (goto-char (car positions))
+          (hi-region (car positions) (cdr positions))
+          (recenter)))
+
+       ;; With string, use `imenu' for matching:
+       ((stringp type-or-fn)   (imenu type-or-fn)
+        (hi-defun))))))
+
+(defun demo-it-load-fancy-file (file type &optional start end side size)
+  "Splits window and loads FILE in another window, and use fancy
+narrow to highlight part of the buffer.
+
+If TYPE is a string that specifies a function name (available via
+the `imenu' call), then it highlights that function.
+
+If TYPE is :char or 'char, START and END refers to specific
+character positions, but if TYPE is :line or 'line, this selects
+the point positions as if START and END are line numbers.
+
+If `fancy-narrow' is not installed, then simply narrows to the area."
+  (demo-it-load-file file side size)
+  (demo-it-highlight-dwim type start end))
+
+
+(provide 'demo-it-extras)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; demo-it-extras.el ends here
diff --git a/elpa/demo-it-20211221.2152/demo-it-pkg.el b/elpa/demo-it-20211221.2152/demo-it-pkg.el
new file mode 100644 (file)
index 0000000..2625fec
--- /dev/null
@@ -0,0 +1,11 @@
+(define-package "demo-it" "20211221.2152" "Create demonstrations" 'nil :commit "8ade739bb2605275f1f56128a0a9a8c6b55bab6a" :authors
+  '(("Howard Abrams" . "howard.abramsNOSPAMgmail.com"))
+  :maintainers
+  '(("Howard Abrams" . "howard.abramsNOSPAMgmail.com"))
+  :maintainer
+  '("Howard Abrams" . "howard.abramsNOSPAMgmail.com")
+  :keywords
+  '("demonstration" "presentation" "test"))
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
diff --git a/elpa/demo-it-20211221.2152/demo-it-present.el b/elpa/demo-it-20211221.2152/demo-it-present.el
new file mode 100644 (file)
index 0000000..79e2a95
--- /dev/null
@@ -0,0 +1,288 @@
+;;; DEMO-IT-PRESENT --- Summary
+;;
+;; Author: Howard Abrams <howard.abramsNOSPAMgmail.com>
+;; Copyright © 2016, Howard Abrams, all rights reserved.
+;; Created: 23 September 2016
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;;    Since I often have an org-mode file on the side of the screen to
+;;    demonstrate an outline of what I will be demoing, I made it a
+;;    function.
+;;
+;;    The file contains functions for displaying an org-mode file as a
+;;    presentation using the `org-tree-slide' project (see
+;;    https://github.com/takaxp/org-tree-slide).
+;;
+;;    If `org-tree-slide' is not available, it simply shows the
+;;    org-mode file. We really need to look at a way to make the
+;;    display configurable.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 3, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+;; Floor, Boston, MA 02110-1301, USA.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+(require 'cl)
+
+(declare-function org-tree-slide-content "ext:org-tree-slide")
+(declare-function org-tree-slide-move-next-tree "ext:org-tree-slide")
+(declare-function face-remap-add-relative "face-remap.el")
+(declare-function face-remap-remove-relative "face-remap.el")
+
+(defvar org-image-actual-width)
+(defvar org-tree-slide-heading-emphasis)
+(defvar org-hide-emphasis-markers)
+
+(defvar demo-it--text-scale)
+(defvar demo-it--presentation-hide-mode-line)
+(defvar demo-it--presentation-hide-org-markers)
+(defvar demo-it--presentation-variable-width)
+(defvar demo-it--presentation-hide-org-blocks)
+
+(declare-function demo-it--get-text-scale "demo-it-custom.el")
+(declare-function demo-it--presentation-variable-width-p "demo-it-custom.el")
+(declare-function demo-it--presentation-hide-blocks-p "demo-it-custom.el")
+(declare-function demo-it-hide-mode-line "demo-it.el")
+(declare-function demo-it-show-mode-line "demo-it.el")
+(declare-function demo-it-disable-mode "demo-it.el")
+
+(declare-function demo-it-create "demo-it.el")
+(declare-function demo-it-start "demo-it.el")
+(declare-function demo-it--setq-restore "demo-it.el")
+
+;; ----------------------------------------------------------------------
+
+(defvar demo-it--presentation-file "")
+(defvar demo-it--presentation-buffer nil)
+(defvar demo-it--presentation-prev-settings (make-hash-table))
+
+
+(defun demo-it-presentation (file &optional size style section)
+  "Load FILE (org-mode?) as presentation.  Start `org-tree-slide'
+if available.  SIZE specifies the text scale, and defaults to the
+value set in `demo-it--text-scale'.
+
+ STYLE can either be `:variable' for variable font pitch,
+`:blocks' for diminished headers on org-blocks, or `:both' for
+both features. If nil, defaults to the customize variables,
+`demo-it--presentation-variable-width' and
+`demo-it--presentation-hide-org-blocks'.
+
+The SECTION is the name of an org-mode header to specify as the
+first section to display."
+  (find-file file)
+  (setq demo-it--presentation-file file)
+  (setq demo-it--presentation-buffer (buffer-name))
+
+  (when (fboundp 'org-tree-slide-mode)
+    (setq org-tree-slide-heading-emphasis t)
+    (org-tree-slide-mode))
+
+  (when section
+    (demo-it--presentation-section section))
+
+  ;; Style things up correctly...
+  (make-local-variable 'demo-it--presentation-prev-settings)
+  (puthash :emphasis-markers org-hide-emphasis-markers demo-it--presentation-prev-settings)
+  (setq org-hide-emphasis-markers demo-it--presentation-hide-org-markers)
+
+  ;; Make the display of the org-mode file more presentable
+  (when (demo-it--presentation-hide-blocks-p style)
+    (demo-it--presentation-display-set))
+  (when (demo-it--presentation-variable-width-p style)
+    (variable-pitch-mode 1))
+  (when demo-it--presentation-hide-mode-line
+    (demo-it-hide-mode-line))
+  (text-scale-set (demo-it--get-text-scale size))
+
+  (when (fboundp 'org-bullets-mode)
+    (org-bullets-mode 1))
+  (when (fboundp 'flyspell-mode)
+    (flyspell-mode -1))
+  (setq cursor-type nil))
+
+(defun demo-it--presentation-display-set ()
+  "Change some typical `org-mode' display values to make more
+presentation-friendly.  Store the changed values in a hashtable.
+See `demo-it--presentation-display-restore'."
+  ;; Save everything that is interesting into a hash table:
+  (puthash :restore t demo-it--presentation-prev-settings)
+  ;; Allow us to resize our images:
+  (setq org-image-actual-width nil)
+  (let* ((backgd (face-attribute 'default :background))
+         (border (list (list :foreground backgd :background backgd :height 1))))
+    (cl-flet ((set-attr (attr values)
+                        (puthash attr
+                                 (face-remap-add-relative attr values)
+                                 demo-it--presentation-prev-settings)))
+      (set-attr 'org-block-begin-line border)
+      (set-attr 'org-block-end-line   border)
+      (set-attr 'org-meta-line        border)
+      (set-attr 'org-special-keyword  border)
+      (set-attr 'org-block            '((:family "monospace")))
+      (set-attr 'org-verbatim         '((:family "monospace")))
+      (set-attr 'org-code             '((:family "monospace")))
+      (set-attr 'org-table            '((:family "monospace")))
+      (set-attr 'org-special-keyword  '((:family "monospace"))))))
+
+(defun demo-it--presentation-display-restore ()
+  "After `demo-it--presentation-display-set', call to restore previous settings."
+  (setq org-hide-emphasis-markers
+        (gethash :emphasis-markers demo-it--presentation-prev-settings))
+  (when (gethash :restore demo-it--presentation-prev-settings)
+    (remhash :restore demo-it--presentation-prev-settings)
+    (cl-flet ((rest-attr (attr) (face-remap-remove-relative
+                                 (gethash attr demo-it--presentation-prev-settings))))
+      (mapcar #'rest-attr (list 'org-block-begin-line 'org-block-end-line 'org-block 'org-meta-line
+                                'org-verbatim 'org-code 'org-table 'org-special-keyword)))))
+
+;; Specify a section in the presentation
+
+(defun demo-it--presentation-section (section)
+  "Moves the displayed presentation to a SECTION header."
+  (interactive "s")
+  (when demo-it--presentation-buffer
+    (switch-to-buffer demo-it--presentation-buffer)
+
+    (when (fboundp 'org-tree-slide-mode)
+      (org-tree-slide-content))
+
+    (goto-char (point-min))
+    (re-search-forward (format "^\*+ +%s" section))
+
+    (when (fboundp 'org-tree-slide-mode)
+      (org-tree-slide-move-next-tree))))
+
+;; Jumping Back to the Presentation
+;;
+;;    In this case, we've been doing some steps, and the screen is
+;;    "messed up", calling this function returns back to the
+;;    presentation.
+
+(defun demo-it-presentation-return-noadvance ()
+  "Return to the presentation buffer and delete other windows."
+  (when demo-it--presentation-buffer
+    (switch-to-buffer demo-it--presentation-buffer))
+  (delete-other-windows))
+
+(defun demo-it-presentation-return ()
+  "Return to the presentation buffer, delete other windows, and
+advance to the next 'org-mode' section."
+  (when demo-it--presentation-buffer
+    (demo-it-presentation-return-noadvance)
+    (when (fboundp 'org-tree-slide-move-next-tree)
+      (org-tree-slide-move-next-tree))))
+
+;; Advance Presentation without Changing Focus
+;;
+;;    Advances the org-mode presentation, but after popping into that
+;;    presentation buffer, returns to the window where our focus was
+;;    initially.
+
+(defun demo-it-presentation-advance ()
+  "Advance the presentation to the next frame (if the buffer is
+an `org-mode' and `org-tree-slide' is available), but doesn't
+change focus to the window."
+  (interactive)
+  (when demo-it--presentation-buffer
+    (let ((orig-window (current-buffer)))
+      (switch-to-buffer demo-it--presentation-buffer)
+      (when (fboundp 'org-tree-slide-move-next-tree)
+        (org-tree-slide-move-next-tree))
+      (switch-to-buffer orig-window))))
+
+(defun demo-it-presentation-highlight-phrase (phrase &optional color)
+  "Highlight a PHRASE (based on a regular expression) in the
+presentation buffer. This is useful to highlight bullet point
+items while executing appropriate code."
+  (when demo-it--presentation-buffer
+    (let ((orig-window (current-buffer))
+          (hilite-color (if (null color) 'hi-green-b color)))
+      (switch-to-buffer demo-it--presentation-buffer)
+      (hi-lock-unface-buffer t)
+      (hi-lock-face-phrase-buffer phrase hilite-color)
+      (switch-to-buffer orig-window))))
+
+(define-obsolete-function-alias 'demo-it--presentation-highlight-phrase
+  'demo-it-presentation-highlight-phrase "2016-Oct")
+
+(defun demo-it-presentation-unhighlight-all ()
+  "Remove all highlighted values in a presentation previously set
+by a call to `demo-it-presentation-highlight-phrase'."
+  (when demo-it--presentation-buffer
+    (let ((orig-window (current-buffer)))
+      (switch-to-buffer demo-it--presentation-buffer)
+      (hi-lock-unface-buffer t)
+      (switch-to-buffer orig-window))))
+
+(define-obsolete-function-alias 'demo-it--presentation-unhighlight-all
+  'demo-it-presentation-unhighlight-all "2016-Oct")
+
+;; Clean up the Presentation
+;;
+;;    The org-presentation-start function alters the way an org-mode file
+;;    is displayed. This function returns it back to a normal, editable
+;;    state.
+
+(defun demo-it-presentation-quit ()
+  "Undo display settings made to the presentation buffer."
+  (interactive)
+  (demo-it--setq-restore)
+  (when demo-it--presentation-buffer
+    (switch-to-buffer demo-it--presentation-buffer)
+    (when (fboundp 'org-tree-slide-mode)
+      (org-tree-slide-mode -1))
+    (when (fboundp 'flyspell-mode)
+      (flyspell-mode t))
+    (setq cursor-type t)
+    (demo-it--presentation-display-restore)  ; Restore previous changes
+    (variable-pitch-mode 0)
+    (demo-it-show-mode-line)
+    (text-scale-set 0)))
+
+;; ----------------------------------------------------------------------
+
+;;;###autoload
+(defun demo-it-single-presentation (file &optional size style section)
+  "Demonstration that presents an `org-mode' FILE as a
+full-screen presentation. SIZE is the text scaling size, and STYLE is the presentation "
+  (interactive "fPresentation File: ")
+  (demo-it-create (demo-it-presentation file size style section))
+  (demo-it-start)
+
+  ;; Now that the presentation is going, let's change the mode:
+  (demo-it-disable-mode)
+  (demo-it-mode-pres t))
+
+(define-minor-mode demo-it-mode-pres "Pressing 'space' advances demo."
+  :lighter " demo-p"
+  :require 'demo-it
+  :global t
+  :keymap '((" "               . demo-it-presentation-advance)
+            ("\r"              . demo-it-presentation-advance)
+            ("q"               . demo-it-disable-mode)
+            ("Q"               . demo-it-end)))
+
+(provide 'demo-it-present)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; demo-it-present.el ends here
diff --git a/elpa/demo-it-20211221.2152/demo-it.el b/elpa/demo-it-20211221.2152/demo-it.el
new file mode 100644 (file)
index 0000000..a3314a3
--- /dev/null
@@ -0,0 +1,772 @@
+;;; demo-it.el --- Create demonstrations
+;;
+;; Author: Howard Abrams <howard.abramsNOSPAMgmail.com>
+;; Copyright (C) 2014  Howard Abrams
+;; Keywords: demonstration presentation test
+;; Version: 2.0.0
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;;   When making demonstrations of new products, technologies and other
+;;   geekery, I love the versatility of using Emacs to demonstrate the
+;;   trifecta of sprint reviews, including:
+;;
+;;   - Presentations explaining the technologies
+;;   - Source code ... correctly highlighted
+;;   - Executing the code in Eshell ... or similar demonstration
+;;   - Test a new feature
+;;
+;;   However, I don't want to fat-finger, mentally burp, or even delay
+;;   the gratification while I type, so I predefine each "step" as an
+;;   Elisp function or keyboard macro, and then have =demo-it= execute
+;;   each function when I hit either the SPACE key or the F12 key
+;;   (advanced minor mode).
+;;
+;;   Using the library is a four step process:
+;;
+;;   1. Load the library in your own Elisp source code file
+;;   2. Create a collection of functions that "do things".
+;;   3. Create the ordered list of functions/steps with `demo-it-create'
+;;   4. Start the demonstration with `demo-it-start'
+;;
+;;   For instance:
+;;
+;;       (require 'demo-it)   ;; Load this library of functions
+;;
+;;       (defun dit-load-source-code ()
+;;         "Load some source code in a side window."
+;;         (demo-it-presentation-advance)
+;;         (demo-it-load-fancy-file "example.py" :line 5 12 :side))
+;;
+;;       (defun dit-run-code ()
+;;         "Execute our source code in an Eshell buffer."
+;;         ;; Close other windows and advance the presentation:
+;;         (demo-it-presentation-return)
+;;         (demo-it-start-shell)
+;;         (demo-it-run-in-shell "python example.py Snoopy"))
+;;
+;;       (demo-it-create :single-window :insert-slow :full-screen
+;;                       (demo-it-title-screen "example-title.org")
+;;                       (demo-it-presentation "example.org")
+;;                        dit-load-source-code
+;;                        dit-run-code
+;;                       (demo-it-run-in-shell "exit" nil :instant))
+;;
+;;       (demo-it-start)
+;;
+;;   Each "step" is a series of Elisp functions that "do things".
+;;   While this package has a collection of helping functions, the steps
+;;   can use any Elisp command to show off a feature.
+;;
+;;   I recommend installing these other Emacs packages:
+;;
+;;   - https://github.com/takaxp/org-tree-slide
+;;   - https://github.com/sabof/org-bullets
+;;   - https://github.com/magnars/expand-region.el
+;;   - https://github.com/Bruce-Connor/fancy-narrow
+;;
+;;   See http://github.com/howardabrams/demo-it for more details and
+;;   better examples.  You will want to walk through the source code
+;;   for all the utility functions.
+;;
+;;; Code:
+
+(require 'cl-lib)
+
+;; Predefined necessary external functions:
+(defvar org-image-actual-width)
+
+;; And functions from other projects I like to use...
+(declare-function eshell-send-input "ext:eshell")
+(declare-function show-all "ext:eshell.c")
+
+;; Load our 'modules' from other files:
+(require 'demo-it-custom)
+
+;; And specify the customization variables set in that module:
+(defvar demo-it--shell-or-eshell)
+(defvar demo-it--keymap-mode-style)
+(defvar demo-it--insert-text-speed)
+(defvar demo-it--open-windows)
+(defvar demo-it--open-windows-size)
+(defvar demo-it--text-scale)
+(defvar demo-it--start-fullscreen)
+(defvar demo-it--start-single-window)
+(declare-function demo-it--get-insert-text-speed "demo-it-custom.el")
+(declare-function demo-it--get-text-scale "demo-it-custom.el")
+(declare-function demo-it--set-property "demo-it-custom.el")
+
+
+;; ----------------------------------------------------------------------
+;; MINOR MODES
+;;
+;;   We define two styles of minor modes for dealing with special keys
+;;   to advance the demonstration along ... a simple uses space and
+;;   return, and an 'advanced' mode that requires a special function
+;;   key...
+
+(define-minor-mode demo-it-mode "Pressing 'space' advances demo."
+  :lighter " demo"
+  :require 'demo-it
+  :global t
+  :keymap '((" "               . demo-it-step)
+            ("\r"              . demo-it-step)
+            ("[down]"          . demo-it-step)
+            ("[mouse-1]"       . demo-it-set-mouse-or-advance)
+            ([nil mouse-1]     . demo-it-step)
+            ([nil wheel-up]    . demo-it-ignore-event)
+            ([nil wheel-down]  . demo-it-ignore-event)
+            ([nil wheel-left]  . demo-it-ignore-event)
+            ([nil wheel-right] . demo-it-ignore-event)
+            ("q"               . demo-it-disable-mode)
+            ("Q"               . demo-it-end)))
+
+(define-minor-mode demo-it-mode-adv "Pressing '<f12>' advances demo."
+  :lighter " demo-adv"
+  :require 'demo-it
+  :global  t
+  :keymap  (let ((map (make-sparse-keymap)))
+             (define-key map (kbd   "<f12>") 'demo-it-step)
+             (define-key map (kbd "s-<f12>") 'demo-it-insert-text)
+             (define-key map (kbd "A-<f12>") 'demo-it-insert-text)
+             (define-key map (kbd "C-<f12>") 'demo-it-highlight-dwim)
+             (define-key map (kbd "M-<f12>") 'demo-it-end)
+             map))
+
+;; Demo Mode
+;;
+;;   Allows us to advance to the next step by pressing the
+;;   space bar or return. Press the 'q' key to stop the mode.
+
+(defun demo-it-disable-mode ()
+  "Called when 'q' (or similar key) pressed to disable either the
+simple or advanced version of `demo-it-mode'."
+  (interactive)
+  (demo-it-mode -1)
+  (demo-it-mode-adv -1))
+
+;; ----------------------------------------------------------------------
+;; DEMONSTRATION MAKER
+;;
+;;   When we start a demonstration, we would pass in a list of functions
+;;   to call for each step, and then call =demo-step= to execute the
+;;   first one on the list.
+
+;; A "global" variable (shudder) to track state of the demonstration:
+(defvar demo-it--step 0  "Stores the current demo 'step' function.")
+(defvar demo-it--steps '() "List of functions to be executed in order.")
+(defvar demo-it-start-winconf nil
+  "Window configuration when starting demo. Used to restore
+  buffer positions after demonstration is complete.")
+
+;;;###autoload
+(defun demo-it-start (&optional steps advanced-mode)
+  "Start the current demonstration and kick off the first step.
+STEPS is a list of functions or keystrokes to execute.
+If nil, the STEPS must be specified by a call to `demo-it-create'.
+
+The optional ADVANCED-MODE turns on keybindings where <F12>
+advances the steps instead of Space.  This mode is better for
+more interactive demonstrations."
+  (interactive)
+  (when (or demo-it-mode demo-it-mode-adv)
+    (error "Do not start new demonstrations DURING demonstration"))
+
+  (setq demo-it-start-winconf (current-window-configuration))
+  (setq demo-it--step 0)      ;; Reset the step to the beginning
+  (when steps
+    (setq demo-it--steps steps)) ;; Store the steps.
+
+  (if (or advanced-mode (eq demo-it--keymap-mode-style :advanced-mode))
+      (demo-it-mode-adv t)
+    (demo-it-mode t))
+
+  (if demo-it--start-fullscreen
+      (demo-it-frame-fullscreen))
+  (if demo-it--start-single-window
+      (delete-other-windows))
+
+  (demo-it-step))
+
+;;;###autoload
+(defmacro demo-it-create (&rest forms)
+  "Create and store an ordered list of steps and configuration
+values. The FORMS can be either function names, expressions or
+keywords, like `:advanced-mode' and `:variable-width'."
+  `(progn
+     (demo-it--set-properties (cl-remove-if-not 'keywordp '(,@forms)))
+     (setq demo-it--steps     (cl-remove-if     'keywordp '(,@forms)))))
+
+
+
+(defun demo-it-end ()
+  "End the current demonstration by resetting the values
+inflicted on the presentation buffer as well as closing other
+windows."
+  (interactive)
+  (demo-it-disable-mode)
+  (demo-it-presentation-quit)
+  (set-window-configuration demo-it-start-winconf))
+
+;; Next Step
+;;
+;;   Hitting the <F12> key should be bound to triggering the next step in
+;;   the demonstration.
+
+(defun demo-it-step (&optional step)
+  "Execute the next step in the current demonstration.  Jump to a
+particular STEP if the optional parameter is given, i.e. C-6 <F12>
+to run the 6th step."
+  (interactive "P")
+  (if step
+      (setq demo-it--step step)    ;; Changing Global state, yay!
+    (setq demo-it--step (1+ demo-it--step)))
+  (let
+      ;; At this point, step is 1-based, and I need it 0-based
+      ;; and f-step is the function to call for this step...
+      ((f-step (nth (1- demo-it--step) demo-it--steps)))
+    (if f-step
+        (demo-it--execute-step f-step)
+      (read-event "Demonstration finished. Hit any key to return.")
+      (demo-it-end))))
+
+(defun demo-it-restep ()
+  "Execute the previous step in the current demonstration.
+
+Useful when the previous step failed, and you want to redo it."
+  (interactive)
+  (let
+      ;; At this point, step is 1-based, and I need it 0-based
+      ;; and f-step is the function to call for this step...
+      ((f-step (nth (1- demo-it--step) demo-it--steps)))
+    (if f-step
+        (demo-it--execute-step f-step)
+      (message "Finished the entire demonstration."))))
+
+(defun demo-it--execute-step (f-step)
+  "Executes F-STEP depending on its type, e.g. expression, function, etc."
+  (condition-case err
+      (cond ((functionp f-step) (funcall f-step))
+            ((listp     f-step) (eval f-step))     ; An expression
+            ((stringp   f-step) (execute-kbd-macro (kbd f-step)))
+            ((keywordp  f-step) (demo-it--set-property f-step))
+            (t                  (error "invaid step: %s" f-step)))
+    (error (read-event (format "Abort the demonstration because of error. Hit any key to return.\n%S" err))
+           (demo-it-end))))
+
+;; Position or advance the slide? Depends...
+
+(defun demo-it-set-mouse-or-advance (evt)
+  "Advances to the next step if clicked on the right side of any
+window, otherwise, it position the point as expected.  With EVT,
+function can be bound to the mouse click."
+  (interactive "e")
+  (if (posn-area (event-start evt))  ;; Clicked in special area?
+      (demo-it-step)
+    (let ((col (car (posn-col-row (event-start evt))))
+          (wid (window-width (posn-window (event-start evt)))))
+      (if (> col (- wid 4))
+          (demo-it-step)
+        (mouse-set-point evt)))))
+
+(defun demo-it-show-step ()
+  "Display the expected function to be run during the next step."
+  (interactive)
+  (let ((func  (nth demo-it--step demo-it--steps)))
+    (message "Step: %d - Going to run: %s" demo-it--step func)))
+
+(defun demo-it-ignore-event (evt)
+  "Empty function that absorbs the EVT parameter to keep
+demonstration from flipping out."
+  (interactive "P")
+  (message ""))
+
+
+;; ----------------------------------------------------------------------
+;; HIDE MODELINE
+;;
+;;    Call the `demo-it-hide-mode-line' when displaying images and
+;;    org-mode files displayed as "presentations", so that we aren't
+;;    bothered by the sight of the mode.
+
+(defvar demo-it--old-mode-line nil)
+(make-variable-buffer-local 'demo-it--old-mode-line)
+
+(defun demo-it-hide-mode-line ()
+  "Hide mode line for a particular buffer."
+  (interactive)
+  (when mode-line-format
+    (setq demo-it--old-mode-line mode-line-format)
+    (setq mode-line-format nil)))
+
+(defun demo-it-show-mode-line ()
+  "Show mode line for a particular buffer, if it was previously hidden with 'demo-it--hide-mode-line."
+  (interactive)
+  (if demo-it--old-mode-line
+      (setq mode-line-format demo-it--old-mode-line)))
+
+
+;; ----------------------------------------------------------------------
+;; SIDE WINDOWS and HELPER FILES
+;;
+;;    Typically, we make a side window that is large enough to have some
+;;    fun in, as the main window would serve as little more than an
+;;    outline or displaying a presentation.
+;;
+;;    The `demo-it--make-side-window' function is a helper and
+;;    probably won't be called directly, but instead is called by
+;;    functions that load a file, image or start a shell...
+
+(defun demo-it--make-side-window (&optional side size)
+  "Opens window on the side of the current frame and selects that window.
+
+SIDE is either `:above', `:below', `:left', `:right', `:side' (a
+synonym for `:right') or `:none' (for a window that occupies
+the entire frame). Defaults to the value of `demo-it--open-windows'
+(A value of `:none' acts as a no-op and doesn't open a window).
+
+SIZE specifies the width of the window if new window is on the
+side, or the height if the window is either `:above' or
+`:below'."
+  ;; Since many functions call this, we need a way to actually /not/
+  ;; split the screen, so passing in a `:none' overrides the default.
+  (when (not (or (eq side 'none) (eq side :none)))
+
+    (select-window (demo-it--new-root-window
+                    (or side demo-it--open-windows)
+                    (or size demo-it--open-windows-size)))))
+
+;; Since the `make-side-window' shouldn't be called, it has two
+;; dashes, but to maintain backward compatibility, we make an alias:
+(define-obsolete-function-alias 'demo-it-make-side-window
+  'demo-it--make-side-window "2016-Oct")
+
+(defun demo-it--new-root-window (direction size)
+  "Split the main window in the DIRECTION where DIRECTION is a
+symbol with possible values of 'right, 'left, 'above or 'below
+and SIZE is the final size of the windows, if the window is split
+horizontally (i.e. DIRECTION 'below or 'above) SIZE is assumed to
+be the target height otherwise SIZE is assumed to be target
+width."
+  (let* ((dir (pcase direction   ;; Create synonyms!?
+                (:left  'left)
+                (:right 'right)
+                (:side  'right)
+                (:below 'below)
+                (:above 'above)
+                (_      direction)))
+         (new-window (split-window (frame-root-window) nil dir))
+         (horizontal (member dir '(right left))))
+    (save-excursion
+      (select-window new-window)
+      (enlarge-window (- size (if horizontal
+                                  (window-width)
+                                (window-height)))
+                      horizontal))
+    new-window))
+
+(defun demo-it-load-file (file &optional side size width)
+  "Splits root frame into a window and load FILE into it.
+
+SIDE can be `:above' or `:below' (for vertical split) or `:left'
+or `:right' (`:side' is a synomym for `:right'), or `:none' for
+load the file in the current buffer. This defaults to the
+customized value of `demo-it--open-windows'.
+
+SIZE can specify the text font scale, and if `nil', it uses the
+value of `demo-it--text-scale'.  The WIDTH specifies the size of
+this new window, which is either the width of a side window, or
+the height if the window is `:above' or `:below'."
+  (demo-it--make-side-window side width)
+  (find-file file)
+  (text-scale-set (demo-it--get-text-scale size)))
+
+(defun demo-it--get-section (type &optional start end)
+  "Return tuple of beginning and end of a section of buffer.
+
+If TYPE is :char or 'char, START and END refers to specific
+character positions, but if TYPE is :line or 'line, this returns
+the point positions as if START and END are line numbers."
+
+  (cond
+   ;; LINE ... resets the START and END positions to be character
+   ;; positions based on the line numbers given.
+   ((or (eq type :line) (eq type 'line))
+    (save-excursion
+      ;; Re-implementing `goto-line' for the win!
+      (goto-char (point-min)) (forward-line (1- start))
+      (setq start (point))
+      (goto-char (point-min)) (end-of-line end)
+      (setq end (point))))
+
+   ;; CHAR ... start and end should already be the positions. Unless
+   ;; START or END are null, in which case, we can assume we are
+   ;; looking at the end of the buffer.
+   ((or (eq type :char) (eq type 'char))
+    (when (null start)
+      (setq start (point-min)))
+    (when (null end)
+      (setq end (point-max))))
+
+   ;; REGEXP
+   ((or (eq type :regex) (eq type :regexp))
+    (save-excursion
+      (goto-char (point-min))
+      (re-search-forward start)
+      (setq start (match-beginning 0))
+      (re-search-forward end)
+      (setq end (match-end 0))))
+
+   ;; STRING
+   ((or (eq type :str) (eq type :string))
+    (save-excursion
+      (goto-char (point-min))
+      (search-forward start)
+      (setq start (match-beginning 0))
+      (search-forward end)
+      (setq end (match-end 0)))))
+
+  (cons start end))
+
+(defun demo-it-load-part-file (file type start end &optional side size width)
+  "Splits window and loads FILE, but narrow to particular region.
+
+If TYPE is set to :line, then START and END refers to the first
+and last lines to narrow. If TYPE is set to :char, then START and
+END refer to specific character positions.
+
+See `demo-it-load-file' for an explanation of SIDE and SIZE.
+Also see `demo-it-load-fancy-file' for an alternative version."
+  (demo-it-load-file file side size width)
+  (let ((positions (demo-it--get-section type start end)))
+    (narrow-to-region (car positions) (cdr positions))))
+
+(defun demo-it-show-image (file &optional side size width)
+  "Load FILE as image (or any other special file) in another
+window without a mode line or fringe.  SIDE can be either :side
+or :below, and if `nil', the default is to use the value of
+`demo-it--open-windows'."
+  (demo-it-load-file file side size width)
+  (fringe-mode '(0 . 0))
+  (demo-it-hide-mode-line))
+
+;; Compare and Contrast Files
+;;
+;;   Places two files next to each other so that you can diff
+;;   or at least visually compare them. I suppose that after
+;;   they are loaded, you can switch to them with something like:
+;;      (pop-to-buffer "example.py")
+;;   To further manipulate them.
+
+(defun demo-it-compare-files (file1 file2 &optional side size)
+  "Load FILE1 and FILE2 as either two windows on top of each
+other on the side of the screen, or two windows below (depending
+on the value of SIDE).  The SIZE specifies the text scaling of
+both buffers."
+  (if (null side)
+      (setq side demo-it--open-windows))
+  (if (null size)
+      (setq size demo-it--text-scale))
+
+  (cl-flet ((open-other-window (file side size)
+               (if (or (eq side 'below) (eq side :below))
+                   (split-window-horizontally)
+                 (split-window-below))
+               (find-file file)
+               (text-scale-set (demo-it--get-text-scale size))))
+    (demo-it-load-file file2 side size)
+    (open-other-window file1 side size)))
+
+;; ----------------------------------------------------------------------
+;; SHELL WORK
+;;
+;;    Kick off a shell in another window, change to a particular
+;;    directory, and automatically run something.
+
+(defun demo-it--erase-shell-buffer ()
+  "Uses comint-clear-buffer in Emacs >=25, otherwise erase buffer. Better
+compatibility with read-only shell-mode prompts"
+  (let ((inhibit-read-only t))
+    (if (and (fboundp 'comint-clear-buffer)
+             (derived-mode-p 'comint-mode))
+        (progn
+          (comint-clear-buffer)
+          t)
+      (erase-buffer))))
+
+(defun demo-it-start-shell (&optional directory command name
+                                      side size width)
+  "Start a shell or eshell instance, and change to DIRECTORY to
+execute COMMAND.  NAME optionally labels the buffer, and defaults
+to `Shell'.
+
+SIDE can be `:above' or `:below' (for vertical split) or `:left'
+or `:right' (`:side' is a synomym for `:right'), or `:none' for
+load the file in the current buffer. This defaults to the
+customized value of `demo-it--open-windows'.
+
+SIZE can specify the text font scale, and if `nil', it uses the
+value of `demo-it--text-scale'.  The WIDTH specifies the size of
+this new window, which is either the width of a side window, or
+the height if the window is `:above' or `:below'."
+  (let* ((title (demo-it--shell-buffer-name name))
+         (des-buf (get-buffer title)))
+
+    (demo-it--make-side-window side width)
+    (if des-buf
+        (demo-it--start-shell-reuse title directory)
+
+      ;; Otherwise, create a new shell buffer...
+      (demo-it--start-shell-new title directory size))
+
+    (when command
+      (demo-it-insert-shell command))))
+
+(define-obsolete-function-alias 'demo-it-start-eshell 'demo-it-start-shell "2016-Oct")
+
+(defun demo-it--start-shell-new (title directory size)
+  "Attempt to create a new shell/eshell with a buffer named TITLE
+in a particular DIRECTORY."
+  (let ((default-directory (or directory
+                               (file-name-directory (buffer-file-name)))))
+    (cond
+     ((not (keywordp demo-it--shell-or-eshell))
+      (funcall-interactively demo-it--shell-or-eshell title))
+
+     ((eq demo-it--shell-or-eshell :shell) (shell title))
+     (t (progn
+          (eshell "new-shell")
+          (rename-buffer title))))
+
+    (read-only-mode -1)
+    (text-scale-set (demo-it--get-text-scale size))
+
+    (unless (demo-it--erase-shell-buffer)
+      (demo-it-insert-shell "" :instant))))
+
+(defun demo-it--start-shell-reuse (title directory)
+  "Attempt to re-use existing shell/eshell with a buffer named
+TITLE in a particular DIRECTORY."
+  (switch-to-buffer title)
+  (when directory
+    (goto-char (point-max))
+    (demo-it-insert-shell (format "cd %s" directory) :instant)
+    (unless (demo-it--erase-shell-buffer)
+      (demo-it-insert-shell "" :instant))))
+
+(defun demo-it--shell-buffer-name (&optional name)
+  "Return the buffer NAME for the shell or eshell window."
+  (if name
+      (concat "Shell: " name)
+    "Shell"))
+
+(defun demo-it-insert-shell (command &optional speed)
+  "Inserts some text in the given shell or eshell. The optional
+SPEED overrides the custom, `demo-it--insert-text-speed'."
+  (demo-it-insert command speed)
+  (if (eq demo-it--shell-or-eshell :eshell)
+      (eshell-send-input)
+    (comint-send-input)))
+
+(defun demo-it-insert (str &optional speed)
+  "Insert STR into the current buffer as if you were typing it by hand.
+The SPEED (if non-nil) overrides the default value settings of the
+`demo-it--insert-text-speed' custom variable."
+  (let ((timings (demo-it--get-insert-text-speed speed)))
+
+    (if (eq timings :instant)
+        (insert str)
+
+      (let ((entries (if (stringp str)
+                         (string-to-list str)
+                       str))
+            (bottom-limit (car timings))
+            (top-limit    (cdr timings)))
+        ;; If we are not inserting instantaneously, then loop over each
+        ;; character in the string with a random delay based on this range:
+        (dolist (ch entries)
+          (insert ch)
+          (let ((tm  (+ (/ bottom-limit 1000.0)
+                        (/ (random top-limit) 1000.0))))
+            (sit-for tm)))))))
+
+(defun demo-it-run-in-shell (command &optional name speed)
+  "Run shell command COMMAND in a previously initialized Eshell.
+If NAME is not specified, it defaults to `Shell'."
+  (pop-to-buffer (demo-it--shell-buffer-name name))
+  (goto-char (point-max))
+  (demo-it-insert-shell command speed))
+
+(define-obsolete-function-alias 'demo-it-run-in-eshell 'demo-it-run-in-shell "2016-Oct")
+(define-obsolete-function-alias 'demo-it-type-in-eshell 'demo-it-run-in-shell "2016-Oct")
+
+(defun demo-it-show-shell (&optional name side width)
+  "Show the shell buffer of a given NAME whose buffer may have
+been buried and not in visible. Optionally specify the
+SIDE (either 'below or 'side) of the screen where the shell
+should be shown."
+  (demo-it--make-side-window side width)
+  (switch-to-buffer (demo-it--shell-buffer-name name)))
+
+(define-obsolete-function-alias 'demo-it-show-eshell 'demo-it-show-shell "2016-Oct")
+
+
+;; TITLE DISPLAY
+;;
+;;    Create a file to serve as a "title" as it will be displayed with a
+;;    larger-than-life font and make Emacs not look like Emacs.
+
+(defun demo-it-title-screen (file &optional size)
+  "Display FILE to serve as the demonstration's title, as it will
+be displayed with a larger-than-life font without a mode line,
+etc.  SIZE specifies the text scale, which ignores the
+`demo-it--text-scale' customization setting and defaults to 5x."
+  (fringe-mode '(0 . 0))
+
+  (find-file file)
+  (show-all)
+  (demo-it-hide-mode-line)
+  (setq cursor-type nil)
+  (if (fboundp 'flyspell-mode)
+      (flyspell-mode -1))
+  (variable-pitch-mode 1)
+  (text-scale-set (or size (demo-it--get-text-scale :huge)))
+
+  ;; Time to brag a wee bit...
+  (message "† This presentation is running within Emacs."))
+
+
+;; ----------------------------------------------------------------------
+;; DEALING WITH FRAME
+;;
+;;    During a demonstration, it might be nice to toggle between
+;;    full screen and "regular window" in a programmatic way:
+
+(defun demo-it-toggle-fullscreen ()
+  "Toggle the frame between full screen and normal size. Only
+useful for old versions of Emacs, but this code probably won't
+work on them anyway."
+  (declare (obsolete toggle-frame-fullscreen "2016-Oct"))
+  (interactive)
+  (set-frame-parameter
+   nil 'fullscreen
+   (when (not (frame-parameter nil 'fullscreen)) 'fullboth)))
+
+;; We can force the window to be full screen:
+
+(defun demo-it-frame-fullscreen ()
+  "Set the frame window to cover the full screen."
+  (interactive)
+  (set-frame-parameter nil 'fullscreen 'fullboth))
+
+;; Let's make a right-side frame window:
+
+(defun demo-it-frame-leftside ()
+  "Set the window frame to be exactly half the physical display
+screen, and place it on the left side of the screen.  This can be
+helpful when showing off some other application."
+  (declare (obsolete "Really!? You think this is useful?" "2016-Oct"))
+  (interactive)
+  (let* ((full-pixels (- (x-display-pixel-width) 16))
+         (full-width  (/ full-pixels (frame-char-width)))
+         (dest-width (/ full-width 2)))
+    (set-frame-parameter nil 'fullscreen nil)
+    (set-frame-parameter nil 'width dest-width)
+    (set-frame-parameter nil 'left 0)))
+
+;; Temporary variables
+;;
+;;    Set variables during a demonstration.
+;;    They are restored after the demonstration.
+
+(defvar demo-it--setq-tempvars (make-hash-table))
+(defvar demo-it--setq-voidvars nil)
+(defvar demo-it--setq-nilvars nil)
+
+(defun demo-it--setq (l)
+  (cl-case (length l)
+    (0)
+    (1
+     (error "Argument length is odd"))
+    (t
+     (let ((name (car l))
+           (var  (eval (cadr l))))
+       (cond ((and (boundp name) (symbol-value name))
+              (puthash name (symbol-value name) demo-it--setq-tempvars))
+             ((boundp name)
+              (push name demo-it--setq-nilvars))
+             (t
+              (push name demo-it--setq-voidvars)))
+       (set name var)
+       (demo-it--setq (nthcdr 2 l))))))
+
+(defmacro demo-it-setq (&rest list)
+  "Like `setq', but the values are restored to original after the demo.
+Actually restored by `demo-it--setq-restore'."
+  `(demo-it--setq '(,@list)))
+
+(defmacro demo-it-setq-save (&rest list)
+  "Saves the original value of a LIST of variables.
+
+Call `demo-it--setq-restore' to restore the original values of
+the variables."
+  `(mapcar ,(lambda (v) (puthash v (eval v) demo-it--setq-tempvars))
+           '(,@list)))
+
+(defun demo-it--setq-restore ()
+  "Restore values of setting by `demo-it-setq'."
+  (cl-loop for name being the hash-keys in demo-it--setq-tempvars using (hash-values value)
+           do (set name value))
+  (dolist (name demo-it--setq-nilvars) (set name nil))
+  (mapc 'makunbound demo-it--setq-voidvars)
+  (clrhash demo-it--setq-tempvars)
+  (setq demo-it--setq-nilvars nil
+        demo-it--setq-voidvars nil))
+
+(defun demo-it--set-properties (l)
+  "Sets a series of single property values from list, L."
+  ;; First, save all the customization properties...
+  (demo-it-setq-save demo-it--keymap-mode-style
+                     demo-it--shell-or-eshell
+                     demo-it--open-windows
+                     demo-it--text-scale
+                     demo-it--start-fullscreen
+                     demo-it--start-single-window
+                     demo-it--insert-text-speed)
+  ;; Second, set all the new customization properties:
+  (mapc 'demo-it--set-property l))
+;; Helper Functions
+
+(defun demo-it-message-keybinding (key command)
+  "Display message showing the KEY keybinding and its COMMAND."
+  (interactive)
+  (message "Typed: '%s' Command: '%s'" key command))
+
+;; ----------------------------------------------------------------------
+
+(require 'demo-it-present)
+(require 'demo-it-extras)
+
+;;   As a final harrah, we need to let other files know how to include
+;;   this bad child.
+
+(provide 'demo-it)
+
+;;; demo-it.el ends here
diff --git a/elpa/demo-it-20211221.2152/demo-it.info b/elpa/demo-it-20211221.2152/demo-it.info
new file mode 100644 (file)
index 0000000..93b0d0c
--- /dev/null
@@ -0,0 +1,1409 @@
+This is demo-it.info, produced by makeinfo version 5.2 from
+demo-it.texi.
+
+This manual is for demo-it (version 2.0, last updated 24 October 2016),
+a project for running demonstrations within Emacs.
+
+   Copyright © 2016, Howard Abrams
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with no Front-Cover Texts,
+     and with no Back-Cover Texts.  A copy of the license is included in
+     the section entitled “GNU Free Documentation License”.
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* Demo It: (demo-it).   Demonstrations made and shown in Emacs.
+END-INFO-DIR-ENTRY
+
+\1f
+File: demo-it.info,  Node: Top,  Next: Basics,  Up: (dir)
+
+Demo It
+*******
+
+This manual is for demo-it (version 2.0, last updated 24 October 2016),
+a project for running demonstrations within Emacs.
+
+   Copyright © 2016, Howard Abrams
+
+     Permission is granted to copy, distribute and/or modify this
+     document under the terms of the GNU Free Documentation License,
+     Version 1.3 or any later version published by the Free Software
+     Foundation; with no Invariant Sections, with no Front-Cover Texts,
+     and with no Back-Cover Texts.  A copy of the license is included in
+     the section entitled “GNU Free Documentation License”.
+
+* Menu:
+
+* Basics::
+* Showing Presentations::
+* Showing Files::
+* Running Commands::
+* Inserting Text::
+* Extra Functions::
+* Customization::
+* Index::
+
+— The Detailed Node Listing —
+
+Basics
+
+* Simple Example::
+* Step Types::
+* Demonstration Options::
+* Running the Demo::
+* Demo Modes::
+
+
+
+
+
+Demo Modes
+
+* demo-it-mode::
+* demo-it-mode-adv::
+
+Showing Presentations
+
+* demo-it-presentation::
+* demo-it-presentation-quit::
+* demo-it-presentation-return::
+* demo-it-presentation-return-noadvance::
+* demo-it-presentation-advance::
+* demo-it-presentation-highlight-phrase::
+* demo-it-single-presentation::
+
+
+
+Showing Files
+
+* demo-it-load-file::
+* demo-it-load-part-file::
+* demo-it-load-fancy-file::
+* demo-it-show-image::
+* demo-it-compare-files::
+
+
+
+Running Commands
+
+* demo-it-start-shell::
+* demo-it-run-in-shell::
+* demo-it-show-shell::
+
+
+
+
+Extra Functions
+
+* demo-it-end::
+* demo-it-step::
+* demo-it-restep::
+* demo-it-show-step::
+* demo-it-hide-mode-line::
+* demo-it-show-mode-line::
+* demo-it-title-screen::
+* demo-it-message-keybinding::
+* demo-it-highlight-dwim::
+
+
+
+Customization
+
+* demo-it--keymap-mode-style::
+* demo-it--shell-or-eshell::
+* demo-it--open-windows::
+* demo-it--open-windows-size::
+* demo-it--text-scale::
+* demo-it--start-fullscreen::
+* demo-it--start-single-window::
+* demo-it--presentation-hide-mode-line::
+* demo-it--presentation-hide-org-markers::
+* demo-it--presentation-variable-width::
+* demo-it--presentation-hide-org-blocks::
+* demo-it--insert-text-speed::
+
+\1f
+File: demo-it.info,  Node: Basics,  Next: Showing Presentations,  Prev: Top,  Up: Top
+
+Basics
+******
+
+At the end of each sprint, each of us demonstrate our accomplishments.
+These reviews often incorporate the following trifecta:
+
+   • Presentations explaining the technology and whatnot
+   • Source code reviews…correctly highlighted and interactive
+   • Executing the code in a shell
+
+   During my sprint reviews, I noticed I used my org-mode-formatted
+files, eshell and source code buffers… In other words, I was always in
+Emacs.  However, fat-fingering or mentally burping delayed the
+gratification for my audience while I laboriously typed.  I originally
+solved this problem by predefining each “step” as an Emacs Lisp
+function, and then had another function execute each function when I hit
+an _advance_ key (F12).
+
+   After I had amassed a small army of _helper functions_, I packaged it
+as demo-it, because I lack the imagination to come up with anything more
+clever.
+
+   See the following videos as examples of what can be done:
+
+   • Emacs: An Introduction for the Curious
+     (http://www.youtube.com/watch?v=B6jfrrwR10k)
+   • Literate DevOps Programming
+     (https://www.youtube.com/watch?v=dljNabciEGg)
+   • Learn You Some Lisp for Great Good
+     (http://www.youtube.com/watch?v=3T00X_sNg4Q)
+
+* Menu:
+
+* Simple Example::
+* Step Types::
+* Demonstration Options::
+* Running the Demo::
+* Demo Modes::
+
+\1f
+File: demo-it.info,  Node: Simple Example,  Next: Step Types,  Up: Basics
+
+Simple Example
+==============
+
+Using this project is a four step process:
+
+  1. Load the library in your own Elisp source code file
+  2. Create zero or more helper functions that “do things”, or use the
+     functions provided by this project.
+  3. Order the functions by calling (demo-it-create)
+  4. Call demo-it-start to begin the fun.
+
+   Press the space for each step, or call demo-it-end to end early.
+
+   For instance:
+
+     (require 'demo-it)
+
+     (defun my-demo-step/show-code ()
+       "Helper demo function that displays some source code and
+     advances the presentation at the same time."
+       (demo-it-load-side-window "example/example.py")
+       (demo-it-presentation-advance))
+
+     ;; Order the functions and forms for this presentation:
+     (demo-it-create (demo-it-presentation "example/example.org")
+                      my-demo-step/show-code
+                      demo-it-presentation-return ; close file and advance
+                     (demo-it-run-in-eshell "python example/example.py"))
+
+     (demo-it-start)
+
+\1f
+File: demo-it.info,  Node: Step Types,  Next: Demonstration Options,  Prev: Simple Example,  Up: Basics
+
+Step Types
+==========
+
+The ‘demo-it-create’ is a macro that stores a single demonstration.
+Calling it a second time replaces any previously created demonstrations.
+
+   Each “step” given to the demo-it-create macro can be one of the
+following:
+
+   • Expression typically calling a helper function, for instance:
+          (demo-it-presentation "example/example.org")
+
+   • Name of a function to call that does multiple actions, for
+     instance:
+          demo-it-presentation-return
+
+   • a string referring to a key-binding to run, for instance:
+          "C-x C-f example.el "
+
+   • a property that affects demonstration behavior, see the *note
+     Demonstration Options: Demonstration Options. or *note
+     Customization: Customization.
+
+   Note: Any Emacs function can be called, either by name or as part of
+an expression.  These functions can be standard functions, supplied by
+this demo-it package, or even ones you write.  ;-)
+
+\1f
+File: demo-it.info,  Node: Demonstration Options,  Next: Running the Demo,  Prev: Step Types,  Up: Basics
+
+Demonstration Options
+=====================
+
+The following list of keywords can be passed to demo-it-create to
+override various *note Customization: Customization. settings:
+
+   • :simple-mode uses mode where space advances demonstration.
+   • :advance-mode uses mode where ‘F12’ advances demonstration.
+   • :use-shell chooses a standard shell command line interface when
+     running the *note demo-it-start-shell: demo-it-start-shell.
+     command.
+   • :use-shell chooses to use the built-in Emacs shell, which Emacs
+     uses find more comfortable when subjected to Windows systems.
+   • :eshell is an alias for :use-eshell.
+   • :shell is an alias for :user-shell.
+   • :windows-on-right defaults to opening auxiliary windows on the
+     right side of the frame (see *note demo-it-load-file: Showing
+     Files. and other helper functions for examples).
+   • :windows-on-side is an alias for :windows-on-right.
+   • :windows-on-left like the above, but defaults to the _left_ side of
+     the frame.
+   • :windows-below opens other windows at the bottom of the current
+     frame.
+   • :windows-above opens other windows at the top of the current frame.
+   • :fullscreen starts the demonstration with the current frame in
+     fullscreen mode.
+   • :single-window deletes other windows when started, and restores
+     those windows when the demonstration completes.
+   • :text-small starts presentations and other files in a slightly
+     smaller font that the current default.  Yeah, it seems like a nice
+     idea to offer it, but I wonder if that is really helpful as a
+     default for a demonstration.
+   • :text-normal starts presentations and other loaded files in the
+     default font and size.
+   • :text-medium starts presentations and other loaded files in a
+     slight larger font size (technically scaled at 1).
+   • :text-large scales presentations and other loaded files at 2.
+   • :text-x-large scales loaded files at 3.
+   • :text-xx-large scales loaded files at 4 … go figure.
+   • :text-huge scales newly loaded files at 5.  Got a big monitor or
+     very few words, I see.
+   • :insert-slow shell commands (and other calls to *note
+     demo-it-insert: Inserting Text. function) are inserted character by
+     character as if a hacker who never took a typing class in middle
+     school was typing the text.
+   • :insert-medium shell commands and other text are inserted as if a
+     medium-grade nerd with sufficient typing skills entered them.
+   • :insert-fast shell commands are entered like a typist, but to an
+     audience with the attention span of a gerbil.
+   • :insert-quickly shell commands are instantly entered, and the
+     audience is spared the gimmickry of yet-another Emacs feature.
+   • :show-mode-line leaves the mode-line alone for presentations and
+     files loaded by the demonstration package.
+   • :hide-mode-line hides the mode line so neckbeards pay attention to
+     your demonstration and quit straining to see what minor modes you
+     prefer.  Still using paredit, I see.
+   • :hide-org-markers hides the asterisks, slashes, and other markup
+     characters that format text, but still shows the text in bold and
+     italics.
+   • :show-org-markers displays org-mode presentations as you wrote it.
+   • :variable-width uses a variable width font for presentations
+     because we want to make the vi users cry.
+   • :fixed-width displays org-mode presentations with your default
+     monospaced font for ultra nerd cred.  You may need this feature if
+     source code in your presentation.
+   • :show-block-headers Should the #+begin and #+end markers be shown?
+     If you are trying to talk about _literate devops_ then, the answer
+     is yes, show them the way you see them.
+   • :hide-block-headers Hides the #+begin and #+end markers, but shows
+     the glorious source code inside.  Currently, also shows the
+     surrounding #+HEADER entries, so beware.
+
+\1f
+File: demo-it.info,  Node: Running the Demo,  Next: Demo Modes,  Prev: Demonstration Options,  Up: Basics
+
+Running the Demo
+================
+
+Once the demonstration has been created using ‘demo-it-create’, start it
+by calling demo-it-start, as this will invoke the first step.
+
+   Typically, pressing the SPACE or RETURN key will advance to the next
+step, but this depends on which of the *note Demo Modes: Demo Modes. was
+chosen.
+
+   A deprecated version of demo-it-start allows you to pass in a list of
+the steps, but creating this list can be problematic, so you’ll get more
+mileage from the demo-it-create macro.
+
+\1f
+File: demo-it.info,  Node: Demo Modes,  Prev: Running the Demo,  Up: Basics
+
+Demo Modes
+==========
+
+Some demonstrations are so complete that pressing the space bar to
+advance to each step is sufficient.  However, this project can be used
+as a _helper_ where each step merely sets up an environment where some
+Emacs feature or source code can be elaborated with personal
+prestidigitation.  In this case, using the space and return to advance
+the demonstration would limit what can be demonstrated manually.
+
+   So demo-it contains two minor modes, and starting a demonstration,
+one of the following minor mode is chosen.
+
+   The choice is either made by setting the global customization value,
+, or by passing the following keyword to demo-it-create.
+   • :simple-mode
+   • :advance-mode
+
+* Menu:
+
+* demo-it-mode::
+* demo-it-mode-adv::
+
+\1f
+File: demo-it.info,  Node: demo-it-mode,  Next: demo-it-mode-adv,  Up: Demo Modes
+
+demo-it-mode
+------------
+
+The standard minor mode for demonstrations, has the following key
+features:
+   • ‘Space’ or ‘Return’ advances to the next demonstration step
+   • ‘q’ turns off this mode, allowing you to type normally.  Call
+     demo-it-mode to resume this mode
+   • ‘Q’ ends the demonstration
+
+   Note: In this mode, clicking the mouse on the right-side of the
+screen will advance the demonstration, while clicking elsewhere,
+repositions the cursor.
+
+\1f
+File: demo-it.info,  Node: demo-it-mode-adv,  Prev: demo-it-mode,  Up: Demo Modes
+
+demo-it-mode-adv
+----------------
+
+The advanced mode is used when the demo-it project simply sets up an
+environment, where you want most keys available to enter commands
+manually.  This mode has the following key features:
+
+   • ‘F12’ advances to the next step in the demonstration
+   • ‘M-F12’ ends the demonstration
+
+   Why yes, while called _advanced_ is certainly has limited features.
+
+\1f
+File: demo-it.info,  Node: Showing Presentations,  Next: Showing Files,  Prev: Basics,  Up: Top
+
+Showing Presentations
+*********************
+
+This project relies on other projects to do most of the heavy lifting
+for using ‘org-mode’ files as the basis of a presentation, especially
+the org-tree-slide (https://github.com/takaxp/org-tree-slide) project,
+which displays each section under a header as the sole contents of a
+buffer.
+
+   The following functions can be added to your demonstration to control
+the display of the presentation.
+
+* Menu:
+
+* demo-it-presentation::
+* demo-it-presentation-quit::
+* demo-it-presentation-return::
+* demo-it-presentation-return-noadvance::
+* demo-it-presentation-advance::
+* demo-it-presentation-highlight-phrase::
+* demo-it-single-presentation::
+
+\1f
+File: demo-it.info,  Node: demo-it-presentation,  Next: demo-it-presentation-quit,  Up: Showing Presentations
+
+demo-it-presentation
+====================
+
+(file &optional size style section)
+
+   Loads the given ‘org-mode’ file as a presentation.  This
+automatically calls org-tree-slide
+(https://github.com/takaxp/org-tree-slide) if available.
+
+   This function takes an optional ‘size’ parameter to specifies the
+text scale.  If ‘nil’, this defaults to the value set in *note
+demo-it–text-scale: demo-it--text-scale. customization variable.
+
+   The optional ‘style’ parameter can be set to either :variable for
+variable font pitch, :blocks for diminished headers on org-blocks, or
+:both to enable both features.  This is a deprecated, legacy feature,
+since it is easier and clearer to either use the customization
+variables:
+   • *note demo-it–presentation-variable-width:
+     demo-it--presentation-variable-width.
+   • *note demo-it–presentation-hide-org-blocks:
+     demo-it--presentation-hide-org-blocks.
+
+   The final parameter, ‘section’, is a string containing the name of an
+‘org-mode’ header to specify as the first section to display.
+
+\1f
+File: demo-it.info,  Node: demo-it-presentation-quit,  Next: demo-it-presentation-return,  Prev: demo-it-presentation,  Up: Showing Presentations
+
+demo-it-presentation-quit
+=========================
+
+Undoes the display settings made to the presentation buffer.
+
+\1f
+File: demo-it.info,  Node: demo-it-presentation-return,  Next: demo-it-presentation-return-noadvance,  Prev: demo-it-presentation-quit,  Up: Showing Presentations
+
+demo-it-presentation-return
+===========================
+
+Makes the last running presentation the current buffer, deletes other
+windows, and advances to the next ‘org-mode’ section.
+
+\1f
+File: demo-it.info,  Node: demo-it-presentation-return-noadvance,  Next: demo-it-presentation-advance,  Prev: demo-it-presentation-return,  Up: Showing Presentations
+
+demo-it-presentation-return-noadvance
+=====================================
+
+Similar to calling *note demo-it-presentation-return:
+demo-it-presentation-return. in that the latest specified presentation
+becomes the current buffer and all other windows are deleted.
+
+   However, the presentation is not advanced to the next section.
+
+\1f
+File: demo-it.info,  Node: demo-it-presentation-advance,  Next: demo-it-presentation-highlight-phrase,  Prev: demo-it-presentation-return-noadvance,  Up: Showing Presentations
+
+demo-it-presentation-advance
+============================
+
+Advances the currently running presentation to the next section, but
+doesn’t change focus to the window.  Any further commands happen in the
+current window.
+
+   This function is useful if a presentation discusses multiple
+commands, then you can advance through them while other commands
+actually perform the action (like executing commands in a shell).
+
+   As an example, the following demonstration will _live-code_ while the
+presentation discusses each part:
+
+     (demo-it-create (demo-it-presentation "elisp-cookbook.org")
+                     (demo-it-load-file "elisp-example.el")
+
+                     ; Advance to next section that talks about defun:
+                      demo-it-presentation-advance
+
+                     ; Start coding an Emacs Lisp function:
+                     (demo-it-insert "def")       ; Begin yasnippet template
+                     "TAB"                        ; Trigger yasnippet
+                     (demo-it-insert "some-func") ; The function name
+                     "TAB"                        ; Advance to parameters
+                     (demo-it-insert "x y")       ; parameters
+                     "TAB"                        ; Advance to parameters
+                     (demo-it-insert "Example function.")
+                     "TAB"                        ; Advance to interactive
+                     (demo-it-insert " ")         ; No need for this section
+                     "TAB"                        ; Advance to function body
+
+                     ; Advance to next section to talk about if statements
+                      demo-it-presentation-advance
+
+                     (demo-it-insert "if")        ; Begin next template
+                     "TAB"                        ; Trigger yasnippet
+                     (demo-it-insert "(eq x y)")  ; predicate expression
+                     "TAB"                        ; Advance to if body
+
+                      ) ;; etc.
+
+\1f
+File: demo-it.info,  Node: demo-it-presentation-highlight-phrase,  Next: demo-it-single-presentation,  Prev: demo-it-presentation-advance,  Up: Showing Presentations
+
+demo-it-presentation-highlight-phrase
+=====================================
+
+Given a string parameter, ‘phrase’, as a regular expression, this
+function highlights a _phrase_ in the presentation buffer without
+changing the current buffer.  This is useful to highlight bullet point
+items while executing appropriate code.
+
+   The ‘color’ parameter is a face from the ‘hi-lock’ project, e.g.
+:hi-yellow.
+
+   Note: This unhighlights previous highlighted phrases.  Call
+‘demo-it-presentation-unhighlight-all’ if you just want to remove the
+highlighting.
+
+\1f
+File: demo-it.info,  Node: demo-it-single-presentation,  Prev: demo-it-presentation-highlight-phrase,  Up: Showing Presentations
+
+demo-it-single-presentation
+===========================
+
+Demonstration similar to calling *note demo-it-presentation:
+demo-it-presentation, in that it presents an ‘org-mode’ file as a
+full-screen presentation.  In this form, the demonstration doesn’t do
+anything more than advance through the presentation, and calling either
+‘demo-it-create’ or ‘demo-it-start’ is not needed.
+
+   This function begins a minor-mode where the space or return key
+advances the presentation to the next section.  In this mode, the ‘q’
+disables this mode, and ‘Q’ quits the demonstration and presentation.
+
+   While the standard customization variables configure the presentation
+display style, this function accepts a ‘size’ parameter to set the text
+scaling size.
+
+   The optional ‘style’ parameter can be set to either :variable for
+variable font pitch, :blocks for diminished headers on org-blocks, or
+:both to enable both features.
+
+\1f
+File: demo-it.info,  Node: Showing Files,  Next: Running Commands,  Prev: Showing Presentations,  Up: Top
+
+Showing Files
+*************
+
+While a simple call to find-file is often sufficient to display a file
+in Emacs, the following functions can be helpful for showing files and
+source code during a demonstration.
+
+   These functions often take the following optional parameters, and in
+the spirit of DRY, we will specify them here:
+
+   The optional ‘side’ parameter specifies the side of the frame to
+display the new window.  Acceptable values can one of the following
+keywords:
+   • :above
+   • :below
+   • :left
+   • :right
+   • :side is a synomym for :right
+   • :none loads the file in the current buffer.
+
+   If ‘nil’, defaults is to use the customized value of *note
+demo-it–open-windows: demo-it--open-windows.
+
+   The optional ‘size’ parameter takes an integer and specifies the text
+scale.  If ‘nil’, this defaults to the value set in *note
+demo-it–text-scale: demo-it--text-scale. customization variable.
+
+   The ‘width’ parameter specifies the size of the new window, which is
+either the width of a side window, or the height if the window is :above
+or :below.
+
+* Menu:
+
+* demo-it-load-file::
+* demo-it-load-part-file::
+* demo-it-load-fancy-file::
+* demo-it-show-image::
+* demo-it-compare-files::
+
+\1f
+File: demo-it.info,  Node: demo-it-load-file,  Next: demo-it-load-part-file,  Up: Showing Files
+
+demo-it-load-file
+=================
+
+Calling this function with a file, first splits the root frame into a
+side window and loads the file into that window.
+
+   Keep in mind, that calling it a second time will result in further
+splitting of the root window.  Call delete-window or *note
+demo-it-presentation-return-noadvance:
+demo-it-presentation-return-noadvance, or close the window while also
+updating the presentation with *note demo-it-presentation-return:
+demo-it-presentation-return.
+
+   The optional parameters this function takes are *note described
+above: Showing Files.
+
+\1f
+File: demo-it.info,  Node: demo-it-load-part-file,  Next: demo-it-load-fancy-file,  Prev: demo-it-load-file,  Up: Showing Files
+
+demo-it-load-part-file
+======================
+
+Splits window and loads a file, but also narrows to particular region.
+
+   If the ‘type’ parameter is set to :line, then the ‘start’ and ‘end’
+parameters specify the first and last lines of the region to narrow.  If
+‘type’ is set to :char, then ‘start’ and ‘end’ refer to specific
+character positions.
+
+   The other optional parameters this function takes are *note described
+above: Showing Files.
+
+   See *note demo-it-load-fancy-file: demo-it-load-fancy-file. for an
+alternative version.
+
+\1f
+File: demo-it.info,  Node: demo-it-load-fancy-file,  Next: demo-it-show-image,  Prev: demo-it-load-part-file,  Up: Showing Files
+
+demo-it-load-fancy-file
+=======================
+
+Splits the root frame and loads a ‘file’ specified by the first
+parameter in that window (see *note demo-it-load-file:
+demo-it-load-file.), however, this function can use the fancy narrow
+(https://github.com/Malabarba/fancy-narrow) to highlight part of the
+buffer (if it has been loaded), otherwise, it behaves like *note
+demo-it-load-part-file: demo-it-load-part-file. and narrows to the area
+specified.
+
+   If the second parameter, ‘type’ is a string that specifies a function
+name (available via ‘imenu’), then it highlights that function.
+
+   If ‘type’ is a :line, then the next two parameters, ‘start’ and ‘end’
+specifies the beginning or ending lines.
+
+   If ‘type’ is :char, then ‘start’ and ‘end’ are exact buffer
+positions, which you can determine by evaluating (‘M-;’) the following
+expression:
+     (kill-new (int-to-string (point)))
+
+   The optional parameters ‘side’ and ‘size’ are *note described above:
+Showing Files.
+
+   Note: This function simply detects if the ‘fancy-narrow’ package has
+been loaded.  The demonstration will need to issue a ‘require’.
+
+\1f
+File: demo-it.info,  Node: demo-it-show-image,  Next: demo-it-compare-files,  Prev: demo-it-load-fancy-file,  Up: Showing Files
+
+demo-it-show-image
+==================
+
+Loads a file as an image (or any other special file) in another window
+without a mode line or fringe.
+
+   The optional parameters this function takes are *note described
+above: Showing Files.
+
+\1f
+File: demo-it.info,  Node: demo-it-compare-files,  Prev: demo-it-show-image,  Up: Showing Files
+
+demo-it-compare-files
+=====================
+
+Loads two files in either two windows on top of each other on the right
+side of the screen, or two windows below (depending on the value of the
+‘side’, which should either be :below or :side.
+
+   The other optional parameter, ‘size’ is *note described above:
+Showing Files.
+
+\1f
+File: demo-it.info,  Node: Running Commands,  Next: Inserting Text,  Prev: Showing Files,  Up: Top
+
+Running Commands
+****************
+
+What Emacs-sponsored demonstration would be complete without being able
+to run the application you created.  While your demonstration could
+easily call ‘shell-command’, starting a shell, and having Emacs _type_
+the commands makes a demonstration appear more real and interactive.
+
+   The _typing_ abilities when inserting text are not very realistic, as
+it simply picks a random delay between each letter.  What is lacking,
+however, it clacking should of the switches going off while the letter
+appears (PRs are acceptable).
+
+   The following functions can be added to your demonstration to enter
+commands in a shell (both your default shell, as well as the Eshell is
+supported by setting the *note demo-it–shell-or-eshell:
+demo-it--shell-or-eshell. variable or giving demo-it-create one of the
+following keyword configurations:
+
+   • :use-shell
+   • :use-eshell
+
+* Menu:
+
+* demo-it-start-shell::
+* demo-it-run-in-shell::
+* demo-it-show-shell::
+
+\1f
+File: demo-it.info,  Node: demo-it-start-shell,  Next: demo-it-run-in-shell,  Up: Running Commands
+
+demo-it-start-shell
+===================
+
+Starts a shell or eshell instance, in a particular directory and
+executes the given command.  The command can be entered into the shell
+with a slight random delay intended to mimic a person typing.  This
+speed of this is specified by *note demo-it–insert-text-speed:
+demo-it--insert-text-speed.
+
+   The optional ‘name’ parameter labels the buffer, and defaults to
+‘Shell’.
+
+   The other optional parameters this function takes are *note described
+above: Showing Files.
+
+\1f
+File: demo-it.info,  Node: demo-it-run-in-shell,  Next: demo-it-show-shell,  Prev: demo-it-start-shell,  Up: Running Commands
+
+demo-it-run-in-shell
+====================
+
+Run shell command in a shell previously started with *note
+demo-it-start-shell: demo-it-start-shell.  If a ‘name’ is not specified,
+it defaults to name, ‘Shell’.
+
+   The optional ‘speed’ parameter overrides the customization value set
+by *note demo-it–insert-text-speed: demo-it--insert-text-speed, or the
+text-speed related keyword given to demo-it-create.
+
+\1f
+File: demo-it.info,  Node: demo-it-show-shell,  Prev: demo-it-run-in-shell,  Up: Running Commands
+
+demo-it-show-shell
+==================
+
+Call to display the shell buffer if the shell window of a given ‘name’
+has been hidden.  If ‘name’ is not specified, it defaults to ‘Shell’.
+
+   The other optional parameters this function takes are *note described
+above: Showing Files.
+
+\1f
+File: demo-it.info,  Node: Inserting Text,  Next: Extra Functions,  Prev: Running Commands,  Up: Top
+
+Inserting Text
+**************
+
+Perhaps you want to regale your audience with your programmatic prowess,
+but don’t dare attempt to do live-coding in front of live individuals?
+Yes, even creating a series of yasnippets can result in some serious
+embarrassment (and compiler errors) if you fat-finger any of the fields.
+
+   Have no fear, just create a series of entries that contains calls to
+‘demo-it-insert’, as this function inserts a string into the current
+buffer as if you were typing it by hand (this is called by *note
+demo-it-run-in-shell: demo-it-run-in-shell.).
+
+   The following demo-it example uses this function as well as the def
+yasnippet for Ruby and particular keystrokes to move from field to
+field:
+
+     (demo-it-create (find-file "foobar.rb")
+                     (demo-it-insert "def")
+                     (yas-expand)
+                     (demo-it-insert "hello")
+                     "TAB TAB"
+                     (demo-it-insert "name")
+                     "TAB"
+                     (demo-it-insert "\"Hello, #{name}\"" :fast))
+
+   The optional ‘speed’ parameter is *note described above: Showing
+Files.
+
+   Note: The previous version of demo-it offered specialized feature for
+inserting text where each string to entered was put in a hashmap,
+‘demo-it-text-entries’, and the entries were inserted with calls to a
+dedicated function, ‘demo-it-insert-text’.  However, the above seems to
+work just as well without a special function, so it has been deprecated
+and removed.
+
+\1f
+File: demo-it.info,  Node: Extra Functions,  Next: Customization,  Prev: Inserting Text,  Up: Top
+
+Extra Functions
+***************
+
+The following are useful functions that don’t fit in the previous
+sections, so consider this the _miscellaeous_ section.
+
+* Menu:
+
+* demo-it-end::
+* demo-it-step::
+* demo-it-restep::
+* demo-it-show-step::
+* demo-it-hide-mode-line::
+* demo-it-show-mode-line::
+* demo-it-title-screen::
+* demo-it-message-keybinding::
+* demo-it-highlight-dwim::
+
+\1f
+File: demo-it.info,  Node: demo-it-end,  Next: demo-it-step,  Up: Extra Functions
+
+demo-it-end
+===========
+
+Calling this command ends the current demonstration by disabling the
+mode (see *note Demo Modes: Demo Modes.), resetting the values inflicted
+on the presentation buffer as well as restoring the window arrangement
+to their original glory before demo-it-start was called.
+
+\1f
+File: demo-it.info,  Node: demo-it-step,  Next: demo-it-restep,  Prev: demo-it-end,  Up: Extra Functions
+
+demo-it-step
+============
+
+This function is typically called by one of the *note Demo Modes: Demo
+Modes. to execute the next step in the current demonstration.
+
+   However, this function can be called to jump to a particular STEP by
+specifying a step number to the optional parameter, ‘step’.  This can
+also be done with a prefix, e.g.  C-6 <F12> to run the 6th step.
+
+   Keep in mind that normally step functions expect a particular state
+to be established, so calling this function to jump to a particular step
+may not work as intended.
+
+   Why yes, we do want to figure out a good mechanism for establishing a
+state for each called step, but that be a wee-bit challenging.
+
+\1f
+File: demo-it.info,  Node: demo-it-restep,  Next: demo-it-show-step,  Prev: demo-it-step,  Up: Extra Functions
+
+demo-it-restep
+==============
+
+Re-executes the previous step in the current demonstration.
+
+   Note, this doesn’t handle the concept of the state of the Emacs
+system, so calling this function interactively does not rewind and
+re-executes, it just re-executes given the current Emacs state.
+
+\1f
+File: demo-it.info,  Node: demo-it-show-step,  Next: demo-it-hide-mode-line,  Prev: demo-it-restep,  Up: Extra Functions
+
+demo-it-show-step
+=================
+
+Displays a message about the expected function (that is, the function
+that _will be run_) during the next step.  This can be useful when
+you’ve lost your way, and ask yourself, How did I get here?
+
+   Of course, you may ask yourself, How do I work this?
+And you may ask yourself, Where is that large automobile?
+And you may tell yourself, This is not my beautiful house!
+And you may tell yourself, This is not my beautiful wife!
+
+\1f
+File: demo-it.info,  Node: demo-it-hide-mode-line,  Next: demo-it-show-mode-line,  Prev: demo-it-show-step,  Up: Extra Functions
+
+demo-it-hide-mode-line
+======================
+
+Hides the mode line for a current buffer.  This is done by setting the
+‘mode-line-format’ to ‘nil’, but also saves off the value so that it can
+be restored by calling *note demo-it-show-mode-line:
+demo-it-show-mode-line.
+
+\1f
+File: demo-it.info,  Node: demo-it-show-mode-line,  Next: demo-it-title-screen,  Prev: demo-it-hide-mode-line,  Up: Extra Functions
+
+demo-it-show-mode-line
+======================
+
+Shows the mode line of the current buffer, if it was previously hidden
+with a call to *note demo-it-hide-mode-line: demo-it-hide-mode-line.
+
+\1f
+File: demo-it.info,  Node: demo-it-title-screen,  Next: demo-it-message-keybinding,  Prev: demo-it-show-mode-line,  Up: Extra Functions
+
+demo-it-title-screen
+====================
+
+Displays a file as the demonstration’s title, e.g.  displayed with a
+larger-than-life font without a mode line, etc.  Typically, a
+specially-formatted org-mode file would do the job, but any file,
+including an image will work.
+
+   The ‘size’ parameter specifies the text scale, which ignores the
+*note demo-it–text-scale: demo-it--text-scale. customization setting and
+defaults to :huge (or 5x your normal text font size).
+
+\1f
+File: demo-it.info,  Node: demo-it-message-keybinding,  Next: demo-it-highlight-dwim,  Prev: demo-it-title-screen,  Up: Extra Functions
+
+demo-it-message-keybinding
+==========================
+
+When demonstrating Emacs features, you may want to display the keystroke
+you type.  Yes, you could (and probably should) use a package like
+mwe-log-commands
+(http://www.foldr.org/~michaelw/emacs/mwe-log-commands.el) by Michael
+Weber, but you can’t really use that sort of feature with demo-it, as
+you’d just log a bunch of spacebars bound to *note demo-it-step:
+demo-it-step.
+
+   What you really want is to display the key you _wanted_ to type.  For
+that, you’ll want to end your _step function_ with a call to
+‘demo-it-message-keybinding’, as it will take two strings, where the
+first one is the “key” and the other is a function or command that it
+normally calls.
+
+   For instance:
+     (defun my-demo/dired-a-directory ()
+       "Opens a `dired' buffer on a particular directory.
+     This is a step function that I add to demo-it-create."
+       (dired (expand-file-name "~/work"))
+       (demo-it-message-keybinding "C-x d" "dired"))
+
+   This sort of _step function_ would be added to demo-it-create as a
+simple symbol, like:
+     (demo-it-create ;; :keybindings
+                     ;; other functions and expressions
+                     my-demo/dired-a-directory
+                     ;; other functions and expressions
+                     )
+
+\1f
+File: demo-it.info,  Node: demo-it-highlight-dwim,  Prev: demo-it-message-keybinding,  Up: Extra Functions
+
+demo-it-highlight-dwim
+======================
+
+Can use the fancy-narrow (https://github.com/Malabarba/fancy-narrow)
+package to highlight a particular _section_.  If the package is not
+available, it simply _narrows_ to that area.  If called interactively,
+this highlights the region (if active) or the current function.
+
+   If the first parameter, ‘type-or-fn’ is a string, this specifies the
+name of a function to highlight.
+
+   If it is a :line, then the next two parameters, ‘start’ and ‘end’
+specifies the beginning or ending lines.
+
+   If it is :char, then ‘start’ and ‘end’ are exact buffer positions,
+which you can determine by evaluating (‘M-;’) the following expression:
+     (kill-new (int-to-string (point)))
+
+   If ‘type-or-fn’ is ‘nil’ and the region is active, highlight the
+region.
+
+   If none of the following match, simply select the function the point
+is currently in.
+
+   Note: While this function checks to see if the package is available
+and loaded, it does not actually do the loading (or the installing of
+the package), for that, you will need to do something like:
+
+     (require 'fancy-narrow)
+
+\1f
+File: demo-it.info,  Node: Customization,  Next: Index,  Prev: Extra Functions,  Up: Top
+
+Appendix A Customization
+************************
+
+The following is a list of custom variables that can be set through the
+standard Emacs customization feature (under the demo-it group).  Note,
+each custom value may be overridden with a magic symbol to the *note
+demo-it-create: Step Types. macro or with a parameter to many functions.
+
+* Menu:
+
+* demo-it--keymap-mode-style::
+* demo-it--shell-or-eshell::
+* demo-it--open-windows::
+* demo-it--open-windows-size::
+* demo-it--text-scale::
+* demo-it--start-fullscreen::
+* demo-it--start-single-window::
+* demo-it--presentation-hide-mode-line::
+* demo-it--presentation-hide-org-markers::
+* demo-it--presentation-variable-width::
+* demo-it--presentation-hide-org-blocks::
+* demo-it--insert-text-speed::
+
+\1f
+File: demo-it.info,  Node: demo-it--keymap-mode-style,  Next: demo-it--shell-or-eshell,  Up: Customization
+
+demo-it–keymap-mode-style
+=========================
+
+The keymap-specific minor mode to use when a demonstration starts.
+Should either be set to the symbol, :simple-mode for using the space to
+advance to next step and ‘q’ to exit the demonstration, or
+:advanced-mode, where ‘F12’ advances.
+
+   Defaults to :simple-mode
+
+   This setting can be overridden by a keyword to demo-it-create:
+   • :simple-mode
+   • :advanced-mode
+
+\1f
+File: demo-it.info,  Node: demo-it--shell-or-eshell,  Next: demo-it--open-windows,  Prev: demo-it--keymap-mode-style,  Up: Customization
+
+demo-it–shell-or-eshell
+=======================
+
+When opening up a shell, this customization value specifies whether it
+should run the shell or eshell command.
+
+   Should be set to one of the following keywords:
+   • :shell
+   • :eshell
+
+   Defaults to :eshell
+
+   This setting can be overridden by the following keywords to
+demo-it-create macro:
+   • :use-eshell
+   • :use-shell
+
+\1f
+File: demo-it.info,  Node: demo-it--open-windows,  Next: demo-it--open-windows-size,  Prev: demo-it--shell-or-eshell,  Up: Customization
+
+demo-it–open-windows
+====================
+
+When opening side windows, split the frame on a particular side.  Should
+be set to one of the following keywords:
+
+   • :above
+   • :below
+   • :left
+   • :right
+
+   The keyword, :side is a synonym for :right.
+
+   Defaults to :right
+
+   This setting can be overridden by one of the following keywords
+passed to demo-it-create:
+   • :windows-on-side
+   • :windows-on-right
+   • :windows-on-left
+   • :windows-below
+   • :windows-above
+
+\1f
+File: demo-it.info,  Node: demo-it--open-windows-size,  Next: demo-it--text-scale,  Prev: demo-it--open-windows,  Up: Customization
+
+demo-it–open-windows-size
+=========================
+
+The size of side windows to open.  This is the width if the window is
+opened on one of the sides (:left or :right), or the height if the
+window is opened :above or :below.
+
+   Defaults to 80
+
+\1f
+File: demo-it.info,  Node: demo-it--text-scale,  Next: demo-it--start-fullscreen,  Prev: demo-it--open-windows-size,  Up: Customization
+
+demo-it–text-scale
+==================
+
+Sets the default text scale when opening files in side windows (see
+*note demo-it–open-windows: demo-it--open-windows.).  While this can be
+set to an integer, it can also be set to one of the following keywords:
+   • :small, set to a text scale of -1
+   • :normal, set to a text scale of 0
+   • :medium, set to a text scale of 1
+   • :large, set to a text scale of 2
+   • :x-large, set to a text scale of 3
+   • :xx-large, set to a text scale of 4
+   • :huge, set to a text scale of 5
+
+   It defaults to :large (a text-scale-set value of 2).
+
+   This customization value can be overridden with one of the following
+keywords passed to demo-it-create:
+   • :text-small
+   • :text-normal
+   • :text-medium
+   • :text-large
+   • :text-x-large
+   • :text-xx-large
+   • :text-huge
+
+\1f
+File: demo-it.info,  Node: demo-it--start-fullscreen,  Next: demo-it--start-single-window,  Prev: demo-it--text-scale,  Up: Customization
+
+demo-it–start-fullscreen
+========================
+
+A boolean setting that if set to a non-nil value, demonstrations start
+with the current frame in fullscreen mode.  Defaults to false.
+
+   This customization value can be overridden with :fullscreen keyword
+passed to demo-it-create.
+
+\1f
+File: demo-it.info,  Node: demo-it--start-single-window,  Next: demo-it--presentation-hide-mode-line,  Prev: demo-it--start-fullscreen,  Up: Customization
+
+demo-it–start-single-window
+===========================
+
+A boolean setting that if non-nil, deletes other windows to start the
+demonstration with a current buffer window being the only displayed
+window.  Defaults to t.
+
+   This customization value can be overridden with :single-window
+keyword passed to demo-it-create.
+
+\1f
+File: demo-it.info,  Node: demo-it--presentation-hide-mode-line,  Next: demo-it--presentation-hide-org-markers,  Prev: demo-it--start-single-window,  Up: Customization
+
+demo-it–presentation-hide-mode-line
+===================================
+
+If set to a nil value (_false_), the mode-line is hidden for any
+presentation files (this doesn’t affect other files opened with the
+*note demo-it-load-file: demo-it-load-file.).  Defaults to t.
+
+   This customization value can be overridden with either of the
+following keywords passed to demo-it-create:
+   • :show-mode-line
+   • :hide-mode-line
+
+\1f
+File: demo-it.info,  Node: demo-it--presentation-hide-org-markers,  Next: demo-it--presentation-variable-width,  Prev: demo-it--presentation-hide-mode-line,  Up: Customization
+
+demo-it–presentation-hide-org-markers
+=====================================
+
+If set to a non-nil value, surrounding asterisks, underlines and slashes
+that define an ‘org-mode’ textual formats in a presentation are
+displayed.  Otherwise those characters hidden, even though the effects
+of bolding and italics are still shown.  Defaults to t.
+
+   This customization value can be overridden with either of the
+following keywords passed to demo-it-create:
+   • :show-org-markers
+   • :hide-org-markers
+
+\1f
+File: demo-it.info,  Node: demo-it--presentation-variable-width,  Next: demo-it--presentation-hide-org-blocks,  Prev: demo-it--presentation-hide-org-markers,  Up: Customization
+
+demo-it–presentation-variable-width
+===================================
+
+If set to a non-nil value, a _variable-width_ font is used when
+displaying ‘org-mode’ presentation files, otherwise the standard
+fixed-width font is used.  Defaults to nil.
+
+   This customization value can be overridden with either of the
+following keywords passed to demo-it-create:
+   • :variable-width
+   • :fixed-width
+
+\1f
+File: demo-it.info,  Node: demo-it--presentation-hide-org-blocks,  Next: demo-it--insert-text-speed,  Prev: demo-it--presentation-variable-width,  Up: Customization
+
+demo-it–presentation-hide-org-blocks
+====================================
+
+If set to a non-nil value, the start and ending lines of ‘org-mode’
+blocks are shown during a presentation, otherwise these lines are
+hidden, but the contents within the blocks are still shown.
+
+   This currently only hides these lines:
+#+BEGIN_SRC
+   ...
+#+END_SRC
+
+   Other surrounding header values, like #+HEADERS: may still be seen.
+
+   This defaults to t, however, this customization value can be
+overridden with either of the following keywords passed to
+demo-it-create:
+   • :show-block-headers
+   • :hide-block-headers
+
+\1f
+File: demo-it.info,  Node: demo-it--insert-text-speed,  Prev: demo-it--presentation-hide-org-blocks,  Up: Customization
+
+demo-it–insert-text-speed
+=========================
+
+The functions, *note demo-it-run-in-shell: demo-it-run-in-shell, *note
+demo-it-start-shell: demo-it-start-shell, and *note demo-it-insert:
+Inserting Text, enters the text into the shell as if a human were typing
+it.  This value specifies the speed at which that text is inserted into
+the shell.
+
+   This can set to one of the following keywords:
+   • :instant to insert text with no delay
+   • :slow
+   • :medium
+   • :fast
+
+   Defaults to :medium.
+
+   This can also specify a tuple of two integer values for the random
+number of milliseconds between those two values to delay before
+inserting each character, for instance, the :medium delay has a lower
+value of 30 milliseconds, and an upper delay of 500.
+
+\1f
+File: demo-it.info,  Node: Index,  Prev: Customization,  Up: Top
+
+Index
+*****
+
+For those of you trying to read this online, this index is generated and
+only available within Emacs.  If you are reading this from within Emacs,
+well-done.
+
+\0\b[index\0\b]
+* Menu:
+
+* Basic exmaple:                         Simple Example.        (line 6)
+* Defaults for advancing demo:           demo-it--keymap-mode-style.
+                                                                (line 6)
+* demo-it--insert-text-speed:            demo-it--insert-text-speed.
+                                                                (line 6)
+* demo-it--keymap-mode-style:            demo-it--keymap-mode-style.
+                                                                (line 6)
+* demo-it--open-windows:                 demo-it--open-windows. (line 6)
+* demo-it--open-windows-size:            demo-it--open-windows-size.
+                                                                (line 6)
+* demo-it--presentation-hide-mode-line:  demo-it--presentation-hide-mode-line.
+                                                                (line 6)
+* demo-it--presentation-hide-org-blocks: demo-it--presentation-hide-org-blocks.
+                                                                (line 6)
+* demo-it--presentation-hide-org-markers: demo-it--presentation-hide-org-markers.
+                                                                (line 6)
+* demo-it--presentation-variable-width:  demo-it--presentation-variable-width.
+                                                                (line 6)
+* demo-it--shell-or-eshell:              demo-it--shell-or-eshell.
+                                                                (line 6)
+* demo-it--start-fullscreen:             demo-it--start-fullscreen.
+                                                                (line 6)
+* demo-it--start-single-window:          demo-it--start-single-window.
+                                                                (line 6)
+* demo-it--text-scale:                   demo-it--text-scale.   (line 6)
+* demo-it-compare-files:                 demo-it-compare-files. (line 6)
+* demo-it-create:                        Step Types.            (line 6)
+* demo-it-end:                           demo-it-end.           (line 6)
+* demo-it-hide-mode-line:                demo-it-hide-mode-line.
+                                                                (line 6)
+* demo-it-highlight-dwim:                demo-it-highlight-dwim.
+                                                                (line 6)
+* demo-it-how-mode-line:                 demo-it-show-mode-line.
+                                                                (line 6)
+* demo-it-insert:                        Inserting Text.        (line 6)
+* demo-it-load-fancy-file:               demo-it-load-fancy-file.
+                                                                (line 6)
+* demo-it-load-file:                     demo-it-load-file.     (line 6)
+* demo-it-load-part-file:                demo-it-load-part-file.
+                                                                (line 6)
+* demo-it-message-keybinding:            demo-it-message-keybinding.
+                                                                (line 6)
+* demo-it-mode:                          demo-it-mode.          (line 6)
+* demo-it-mode-adv:                      demo-it-mode-adv.      (line 6)
+* demo-it-presentation:                  demo-it-presentation.  (line 6)
+* demo-it-presentation-advance:          demo-it-presentation-advance.
+                                                                (line 6)
+* demo-it-presentation-highlight-phrase: demo-it-presentation-highlight-phrase.
+                                                                (line 6)
+* demo-it-presentation-quit:             demo-it-presentation-quit.
+                                                                (line 6)
+* demo-it-presentation-return:           demo-it-presentation-return.
+                                                                (line 6)
+* demo-it-presentation-return-noadvance: demo-it-presentation-return-noadvance.
+                                                                (line 6)
+* demo-it-restep:                        demo-it-restep.        (line 6)
+* demo-it-run-in-shell:                  demo-it-run-in-shell.  (line 6)
+* demo-it-show-image:                    demo-it-show-image.    (line 6)
+* demo-it-show-shell:                    demo-it-show-shell.    (line 6)
+* demo-it-show-step:                     demo-it-show-step.     (line 6)
+* demo-it-single-presentation:           demo-it-single-presentation.
+                                                                (line 6)
+* demo-it-start:                         Running the Demo.      (line 6)
+* demo-it-start-shell:                   demo-it-start-shell.   (line 6)
+* demo-it-step:                          demo-it-step.          (line 6)
+* demo-it-title-screen:                  demo-it-title-screen.  (line 6)
+* Demonstration Begins:                  demo-it-title-screen.  (line 6)
+* Demonstration Behavior options:        Demonstration Options. (line 6)
+* Demonstration Customizations:          Customization.         (line 6)
+* Demonstration with Only Presentation:  demo-it-single-presentation.
+                                                                (line 6)
+* Ending Demonstration:                  demo-it-end.           (line 6)
+* Highlighting while showing side file:  demo-it-load-fancy-file.
+                                                                (line 6)
+* Loading side files:                    demo-it-load-file.     (line 6)
+* Minor modes:                           Demo Modes.            (line 6)
+* Open Source License:                   Top.                   (line 6)
+* Options for side files:                Showing Files.         (line 6)
+* org-mode Presentations:                Showing Presentations. (line 6)
+* Parameters for demo-it-create:         Step Types.            (line 6)
+* Presentations:                         demo-it-presentation.  (line 6)
+* Redoing Demo Step:                     demo-it-restep.        (line 6)
+* Shell Commands:                        Running Commands.      (line 6)
+* Show part of a file:                   demo-it-load-part-file.
+                                                                (line 6)
+* Showing Side Files:                    Showing Files.         (line 6)
+* Showing Two Files:                     demo-it-compare-files. (line 6)
+* Showing what you type:                 demo-it-message-keybinding.
+                                                                (line 6)
+* Side Windows:                          demo-it--open-windows. (line 6)
+* Side Windows Font Size:                demo-it--text-scale.   (line 6)
+* Side Windows Size:                     demo-it--open-windows-size.
+                                                                (line 6)
+* Starting Demonstration:                Running the Demo.      (line 6)
+* Text highlighting:                     demo-it-highlight-dwim.
+                                                                (line 6)
+* Typing in Shell:                       demo-it-run-in-shell.  (line 6)
+* Typing Text into Buffer:               Inserting Text.        (line 6)
+* What step am I on?:                    demo-it-show-step.     (line 6)
+
+
+\1f
+Tag Table:
+Node: Top\7f777
+Node: Basics\7f2927
+Node: Simple Example\7f4362
+Node: Step Types\7f5486
+Node: Demonstration Options\7f6548
+Node: Running the Demo\7f10652
+Node: Demo Modes\7f11278
+Node: demo-it-mode\7f12120
+Node: demo-it-mode-adv\7f12690
+Node: Showing Presentations\7f13178
+Node: demo-it-presentation\7f13968
+Node: demo-it-presentation-quit\7f15150
+Node: demo-it-presentation-return\7f15414
+Node: demo-it-presentation-return-noadvance\7f15766
+Node: demo-it-presentation-advance\7f16267
+Node: demo-it-presentation-highlight-phrase\7f18441
+Node: demo-it-single-presentation\7f19176
+Node: Showing Files\7f20255
+Node: demo-it-load-file\7f21603
+Node: demo-it-load-part-file\7f22283
+Node: demo-it-load-fancy-file\7f22976
+Node: demo-it-show-image\7f24284
+Node: demo-it-compare-files\7f24647
+Node: Running Commands\7f25074
+Node: demo-it-start-shell\7f26167
+Node: demo-it-run-in-shell\7f26790
+Node: demo-it-show-shell\7f27335
+Node: Inserting Text\7f27725
+Node: Extra Functions\7f29346
+Node: demo-it-end\7f29825
+Node: demo-it-step\7f30206
+Node: demo-it-restep\7f30995
+Node: demo-it-show-step\7f31402
+Node: demo-it-hide-mode-line\7f31995
+Node: demo-it-show-mode-line\7f32404
+Node: demo-it-title-screen\7f32727
+Node: demo-it-message-keybinding\7f33341
+Node: demo-it-highlight-dwim\7f34800
+Node: Customization\7f36061
+Node: demo-it--keymap-mode-style\7f36902
+Node: demo-it--shell-or-eshell\7f37450
+Node: demo-it--open-windows\7f37981
+Node: demo-it--open-windows-size\7f38619
+Node: demo-it--text-scale\7f39001
+Node: demo-it--start-fullscreen\7f39987
+Node: demo-it--start-single-window\7f40414
+Node: demo-it--presentation-hide-mode-line\7f40895
+Node: demo-it--presentation-hide-org-markers\7f41496
+Node: demo-it--presentation-variable-width\7f42184
+Node: demo-it--presentation-hide-org-blocks\7f42771
+Node: demo-it--insert-text-speed\7f43553
+Node: Index\7f44447
+\1f
+End Tag Table
+
+\1f
+Local Variables:
+coding: utf-8
+End:
diff --git a/elpa/demo-it-20211221.2152/dir b/elpa/demo-it-20211221.2152/dir
new file mode 100644 (file)
index 0000000..f3b3386
--- /dev/null
@@ -0,0 +1,18 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+\1f
+File: dir,     Node: Top       This is the top of the INFO tree
+
+  This (the Directory node) gives a menu of major topics.
+  Typing "q" exits, "?" lists all Info commands, "d" returns here,
+  "h" gives a primer for first-timers,
+  "mEmacs<Return>" visits the Emacs manual, etc.
+
+  In Emacs, you can click mouse button 2 on a menu item or cross reference
+  to select it.
+
+* Menu:
+
+Emacs
+* Demo It: (demo-it).           Demonstrations made and shown in Emacs.