Protesilaos: Emacs: tmr version 1.4.0

Wait 5 sec.

TMR provides facilities for setting timers using a convenientnotation. Lots of commands are available to operate on timers, whilethere also exists a tabulated view to display all timers in a nicegrid. Package name (GNU ELPA): tmr Official manual: https://protesilaos.com/emacs/tmr Change log: https://protesilaos.com/emacs/tmr-changelog Git repositories: GitHub: https://github.com/protesilaos/tmr GitLab: https://gitlab.com/protesilaos/tmr Video demonstration: https://protesilaos.com/codelog/2026-01-19-emacs-timers-tmr-demo/ Backronym: TMR May Ring; Timer Must Run.Below are the release notes.Version 1.4.0 on 2026-07-31TMR is an efficient package that has been stable for years. This newversion introduces some nice new features as well as several smallerinternal refinements.Create a timer that repeatsThe command tmr-repeat prompts for a duration, like the standardtmr command but also asks for a number of times to repeat the giventimer. When called with a prefix argument (C-u with defaultkeybindings), tmr-repeat will also ask for a description for the newtimer and whether it should be acknowledged or not after allrepetitions have elapsed.Thanks to Óscar Fuentes for contributing the original implementationof tmr-repeat (with many extra changes/features by me). This wasdone in pull request 16: https://github.com/protesilaos/tmr/pull/16.Óscar has assigned copyright to the Free Software Foundation.Modify the repeat count of an existing timerThe command tmr-edit-repeat-count prompts for an existing timer andupdates its repeat count. If the repeat count is set to 0, then thetimer is no longer considered repeatable.As with all commands that operate on existing timers, tmr-edit-repeat-countautomatically applies to the timer at point when called from insidethe tabulated list of timers (per tmr-tabulated-view).Modifying a timer’s repeat count does not start a new timer. It simplyupdates the relevant data. Use the command tmr-clone to start a newtimer using the data of an existing timer.The tabulated view has more columns and all of them can be adjustedThe tabulated list of timers, which is typically produced by thecommand tmr-tabulated-view, now has extra columns for the data thatpertains to repeatable timers.Users who want to control which columns are displayed, and in whatorder, can modify the user option tmr-tabulated-columns. Itsdocumentation covers the technicalities. The default value is todisplay all columns.Completion metadata for the prompt that selects a timerAdvanced users can now modify all the completion-metadata associatedwith the prompt that reads/selects one among the existing timerobjects (the function is tmr-read-timer). The relevant variable istmr-completion-metadata. I am not providing this as a user option,because regular users will anyway not be able to do much with it as itinvolves custom functions.Timers in the completion prompt are sorted by end timeThe prompt for selecting a timer now sorts candidates by their endtime. The closest end time appears at the top.This affects all commands that operate on a timer, such astmr-edit-repeat-count, tmr-cancel, and more.In the past, there was no sorting whatsoever. Users who prefer thatstyle can add the following to their configuration:(setq tmr-completion-metadata (list (cons 'category 'tmr-timer) (cons 'display-sort-function #'identity) ; THIS IS THE RELEVANT PART (cons 'annotation-function #'tmr-completion-annotate)))Miscellaneous The manual is easier to read. I have rewritten it to group commandsand user options under appropriate headings. Lots of internal refinements to the code. I tweaks things to makethe code easier to maintain and contribute to. Thanks to Pavlo Lysov for adding a small example to the manual aboutusing TMR hooks to send a custom notification on the macOS. This wasdone in pull request 25: https://github.com/protesilaos/tmr/pull/25.Pavlo does not need to assign copyright to the Free SoftwareFoundation. Thanks to Carlos Pajuelo Rojo for refining an earlier version of thefunction that produces a message about the repeat count of a giventimer (I have since made lots of changes on this and other fronts).Carlos’ contribution is in pull request 20: https://github.com/protesilaos/tmr/pull/20.The change is small, meaning that Carlos does not need to assigncopyright to the Free Software Foundation. Thanks to f6p for use the appropriate face for the paused indicatorin the tabulated view. This was done in pull request 17:https://github.com/protesilaos/tmr/pull/17. The change is small,meaning that the author does not need to assign copyright to theFree Software Foundation.