rendered paste body(defvar *card-id-column* 72)
(defun add-card-id (start end prefix from)
(interactive "r
sPrefix:
nFrom:")
(setf prefix (subseq prefix 0 (min (length prefix) 7)))
(let ((nf (format "%%-%ds%s%%0%dd"
*card-id-column*
prefix
(- 8 (length prefix)))))
(save-excursion
(let ((end (let ((m (make-marker))) (set-marker m end))))
(goto-char start)
(while (re-search-forward "\\(.*\\)" end nil)
(let ((line (match-string 0)))
(delete-region (match-beginning 0) (match-end 0))
(insert (format nf
(subseq line 0 (min (length line) *card-id-column*))
from))
(forward-char 1)
(incf from)))))))