• Stars
    star
    324
  • Rank 129,708 (Top 3 %)
  • Language
    Emacs Lisp
  • License
    GNU General Publi...
  • Created over 10 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An Emacs package for running demonstrations, screencasts and presentations from within Emacs.

At the end of each sprint, each of us demonstrate accomplishments. These reviews often incorporate the following trifecta:

  • Presentations explaining the technology and other frobnications
  • Source code, correctly highlighted and perhaps interactive
  • Executing the code, preferably in a shell to maintain nerd cred

During my sprint reviews, I noticed I used my org-mode-formatted files, eshell and source code buffers… always in Emacs. However, fat-fingering or mentally burping delayed the gratification for my audience while I laboriously typed. I solved this problem by predefining each “step” as an Emacs Lisp function, and had another function execute each step 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:

Click the following image for a quicker example:

Example and Demonstration

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 step-1 step-2 ...)
  4. Call demo-it-start to kick off the fun.

Press space for each step, or call demo-it-end to end earlier.

For instance:

(require 'demo-it)   ;; Load this library of functions

(defun my-demo-step/show-code ()
  "Helper demo function that displays some source code and
advances the presentation at one time."
  (demo-it-load-file "example/example.py" :right)
  (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)

Each “step” given to demo-it-create can be one of the following:

  • an expression typically calling a helper function
  • a name of a function to call that does multiple actions
  • a string referring to a key-binding to run
  • a property that affects demonstration behavior

This package has a collection of helping functions, that can either be called directly as part of an expression, or embedded in a demonstration step function. For a more complete example, see example.el or the other examples in the example directory.

Finally, read the documentation (which is available as an Info manual).

Historical Record

The initial release, while published on MELPA, was rather an ad hoc collection of functions, poorly organized and barely documented. Sorry about that. I really didn’t think any one would care enough to use it.

Version 2 of this project attempted to remedy those shortcomings, cleaning and standardizing the interface of functions. Also included is the following features:

  • Simplification of a demonstration’s construction. Originally each step essentially required a helper function, but now, we can specify full expressions directly into demo-it-create.
  • Default behavior is now based on customized preferences instead of hard-coded values. Functions still accept optional values to override those defaults. Also the demo-it-create macro accepts demo-level overrides of the customized preferences.
  • Described every function both online and as an Info manual, with lots of examples for the step functions.

Version 3 is a plan to have each step more repeatable. Currently, each step assumes a state built by the previous steps, which makes developing, debugging, and reversing difficult.

More Repositories

1

dot-files

My Emacs initialization code and standard scripts I use for client and servers alike.
Emacs Lisp
806
star
2

hamacs

My personal VIM-like configuration of Emacs inspired by Doom and Spacemacs.
Emacs Lisp
75
star
3

literate-devops-demo

The code for demonstrating Literate Devops in Emacs
Emacs Lisp
71
star
4

magit-demo

Another emacs-based demonstration of Magit
Shell
28
star
5

pdx-emacs-hackers

Documents, notes, and a small collection of magical incantations related to the Portland-based Emacs User Group. Happy Hacking.
Emacs Lisp
28
star
6

cookie-python

A framework for teaching kids to program using iPython's Notebook feature
Python
24
star
7

express-api-docs

A way to use Dox to document the public REST API provided by Express
JavaScript
14
star
8

fuzzytoast

A jQuery plugin for combining templates with data from web servers in a regular web browser.
JavaScript
9
star
9

flora-simulator

A web application that renders a simplistic CPU (with an assembly language) to demonstrate basic computer fundamentals.
HTML
9
star
10

opencv-python-xp

Collection of experimental code for learning OpenCV
Python
7
star
11

labrats

A client-side multivariate testing (A/B tests) plugin for jQuery.
JavaScript
7
star
12

regexp-workshop

Client-side workshop and tutorial on Regular Expressions
HTML
7
star
13

emacs-rpgtk

The Solo RPG Toolkit for Emacs
Emacs Lisp
6
star
14

jake-utils

Functions for making jake a little nicer
JavaScript
6
star
15

textfile-notes

Script to work with a directory of text files as a collection of "notes".
Shell
5
star
16

node-project-skeleton

Initial structure with skeleton code to begin a Node.js / Express project.
JavaScript
5
star
17

knife.el

An 'completion-oriented' interface to the `knife` CLI through Emacs
Emacs Lisp
3
star
18

emacs-chef

Emacs interface to the Chef API
Emacs Lisp
3
star
19

mongrue

A simple, free-form REST interface to a MongoDB database instance built on top of node.js.
JavaScript
3
star
20

node-idocs

Generate internal documentation of functions and modules
JavaScript
2
star
21

server-status

A little project to keep track of the access levels of some of my servers.
JavaScript
2
star
22

demo42

Displays three values _graphically_ from a Redis database on a web client.
JavaScript
1
star
23

learning-frc-robotics

A project for learning the basics of Java and robotics that will lead a student to better participate in the FIRST Robotics Competitions.
Java
1
star