| .gitignore | Initial commit | |
| LICENSE | Initial commit | |
| README.md | Replaced video for gif in screencast | |
| teleprompter.el | Inital Code and readme | |
| teleprompter.gif | Replaced video for gif in screencast | |
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% withs(teleprompter-decrease-speed) or making it faster by 10% withf(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.