(defmacro do-lines (args &rest body)
(let ((line (gensym "line-"))
(beg (gensym "beg-"))
(end (gensym "end-")))
`(let (,@args)
(save-excursion
(save-match-data
(goto-char (point-min))
(while (< (point) (point-max))
(setq ,beg (point))
(forward-line 1)
(setq ,end (point))
(setq ,line (buffer-substring-no-properties ,beg ,end))
(setq ,(car args) ,line)
(when ',(cdr args) (setq ,(cadr args) ,beg))
(when ',(cddr args) (setq ,(caddr args) ,end))
(progn ,@body)))))))
(let (lines)
(do-lines (l b e)
(push (cons l e) lines))
(reverse lines))
Wednesday, April 25, 2007
Loop on lines in emacs (version 1)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment