Last edit

Summary: CategoryExtensions


> CategoryExtensions

later-do.el will help you “fork off” a thread of execution that does things while the user can still work with emacs. This is a dog cheap trick: We just call a function in a timer. You add a function that does a simple task, and adds another function for the next task. So, this is a kind of cooperative threading.


 (defun foo (x)
   (message "Foo: %s" x)
   (unless (null x)
     (later-do 'foo (cdr x))))
 (later-do 'foo '(1 2 3 4 5 6))

This will print

 Foo: (1 2 3 4 5 6)
 Foo: (2 3 4 5 6)
 Foo: (3 4 5 6)
 Foo: (4 5 6)
 Foo: (5 6)
 Foo: (6)
 Foo: nil

in your Messages buffer, while you can still work with emacs while it does this. In case you haven’t noticed: this is a sort-of tail call optimization for elisp, too ;)


CategoryCode CategoryExtensions