Index: register.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/register.el,v retrieving revision 1.56 diff -p -u -w -r1.56 register.el --- register.el 26 Jul 2007 05:26:32 -0000 1.56 +++ register.el 2 Nov 2007 19:00:03 -0000 @@ -287,10 +287,14 @@ With prefix arg, delete as well. Called from program, takes four args: REGISTER, START, END and DELETE-FLAG. START and END are buffer positions indicating what to append." (interactive "cAppend to register: \nr\nP") - (or (stringp (get-register register)) - (error "Register does not contain text")) - (set-register register (concat (get-register register) - (filter-buffer-substring start end))) + (let ((reg (get-register register))) + (cond + ((not reg) (set-register register (filter-buffer-substring start end))) + ((stringp reg) + (set-register register + (concat reg (filter-buffer-substring start end)))) + (t + (error "Register does not contain text")))) (if delete-flag (delete-region start end))) (defun prepend-to-register (register start end &optional delete-flag) @@ -299,10 +303,14 @@ With prefix arg, delete as well. Called from program, takes four args: REGISTER, START, END and DELETE-FLAG. START and END are buffer positions indicating what to prepend." (interactive "cPrepend to register: \nr\nP") - (or (stringp (get-register register)) - (error "Register does not contain text")) - (set-register register (concat (filter-buffer-substring start end) - (get-register register))) + (let ((reg (get-register register))) + (cond + ((not reg) (set-register register (filter-buffer-substring start end))) + ((stringp reg) + (set-register register + (concat (filter-buffer-substring start end) reg))) + (t + (error "Register does not contain text")))) (if delete-flag (delete-region start end))) (defun copy-rectangle-to-register (register start end &optional delete-flag)