Hi guys, Aren't you tired of writing the same for loops in various contexts? I know I was, and there's a better way! I just added a function `stream-regexp' to stream.el to stream the search of a regexp in a buffer: (let ((str (stream-regexp buf ".*foo\\(.*\\)$"))) (seq-map (lambda (match-data) ...) str)) (I still have to document it and test it properly) Because streams are lazy and immutable, you can reuse such a stream forever or keep it for later, move around in a buffer or modify the buffer and re-evaluate the stream (you'll get new match data), or map the result, etc. All the credit goes to Damien Cassou for giving me the idea :-) Cheers, Nico