1
0
Fork
You've already forked teleprompter
0
Teleprompter provides an emacs minor mode to convert your buffer into a teleprompter with adjustable text size and speed.
  • Emacs Lisp 100%
2026年03月30日 10:19:04 -05:00
.gitignore Initial commit 2026年03月30日 14:43:25 +02:00
LICENSE Initial commit 2026年03月30日 14:43:25 +02:00
README.md Replaced video for gif in screencast 2026年03月30日 09:59:13 -05:00
teleprompter.el Inital Code and readme 2026年03月30日 09:27:17 -05:00
teleprompter.gif Replaced video for gif in screencast 2026年03月30日 09:59:13 -05:00

teleprompter

Teleprompter provides an emacs minor mode to convert your buffer into a teleprompter with adjustable text size and speed.

Installation

To install teleprompter, clone the repo and add the created teleprompter directory to load-path variable:

(add-to-list 'load-path "path/to/teleprompter/directory")
(require 'teleprompter)

Screencast

Usage and Functions

teleprompter provides the minor mode teleprompter-mode.

Once enabled with M-x teleprompter-mode, the buffer`s text will:

  • Increase its size. Text size can be adjusted with the + (teleprompter-increase-text) or - (teleprompter-decrease-text) keys.
  • Start visual mode and word wrap, so words are not split in lines.
  • Start scrolling the text. The scrolling can be paused or resumed by pressing SPC (teleprompter-toggle-pause), and its speed can be adjusted by either slowing it by 10% with s (teleprompter-decrease-speed) or making it faster by 10% with f (teleprompter-increase-speed).

Use Cases

I wrote teleprompter to use it as, well, a teleprompter, for a speech I needed to record. But after accidentally activating it in an eww buffer, I realized that it makes for a nice interaction-free reading of long texts, and in general, long buffers.

Known Problems

In some tests I saw the text jittering, but I could not consistently reproduce the behavior.

When it reaches the end of the buffer produces an error ("Error running timer ‘teleprompter--scroll-step’: (end-of-buffer)").

License

teleprompter is free (as in freedom) software released under the GPL-3 or later.

Contributing

If you want to improve teleprompter you are welcome!

However, AI-made or AI-enhanced contributions are not. This is meant to be fun, not business, so take your time, drink your coffee and write your code.

Sources, Acknowledgments and Thanks

User Zedoriah in this reddit offered the simple idea of advancing one line of text and waiting some arbitrary time with sit-for. A deleted user provided a function that was partially modified from mouse-drag.el.

For teleprompter the main idea was imitating the scrolling obtained with the mouse's wheel: one pixel at a time (not a line at a time, so it did not "jump"). Emacs 29.0 added pixel-scroll-precision-mode, so I could move by one pixel.

The other part was running the pixel advance function at regular intervals, so enter run-with-timer, part of elisp timers. It will run a function every n seconds, and we can give the user the tools to increase or decrease that value n, effectively reducing or increasing the speed with which the text advances in the screen. In the same node (elisp/timers) is another important function cancel-timer, needed to stop the running timer.

Thanks to all developers and contributors of Emacs for providing and maintaining such a valuable software.

Similar Projects

There seems to have existed a package called spray initially at https://github.com/zk-phi/spray. But when you follow that link, you get that it was moved to http://github.com/ian-kelling/spray/ which returns a 404. Apparently it was a speed reading tool, more than a teleprompter.