(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)))))))