Kyle,

    Here is a patch for two functions in vm-reply which do not work properly
if the user sets vm-included-text-prefix to nil or to "" (in the latter case
in goes into a nasty loop).

--
Regards, David

(defun vm-mail-yank-default (message)
  (save-excursion
    (delete-region (point) (progn (search-forward "\n\n") (point)))
    (if vm-included-text-attribution-format
	(insert (vm-sprintf 'vm-included-text-attribution-format message)))
    (let ((zmacs-regions nil))
      (if (and (stringp vm-included-text-prefix)
               (not (zerop (length vm-included-text-prefix))))
          (while (and (re-search-forward "^" nil t) (< (point) (mark)))
            (replace-match vm-included-text-prefix t t))))))

(defun vm-yank-message (message &optional prefix)
  "Yank message number N into the current buffer at point.
When called interactively N is always read from the minibuffer.  When
called non-interactively the first argument is expected to be a message
struct.

This command is meant to be used in VM created Mail mode buffers; the
yanked message comes from the mail buffer containing the message you
are replying to, forwarding, or invoked VM's mail command from.

All message headers are yanked along with the text.  Point is left
before the inserted text, the mark after.  Any hook functions bound to
mail-yank-hooks are run, aftert inserting the text and setting point
and mark.

Prefix arg means to ignore mail-yank-hooks, don't set the mark, prepend the
value of vm-included-text-prefix to every yanked line, and don't yank any
headers other than those specified in vm-visible-headers/vm-invisible-headers."
  (interactive
   (list
    ;; What we really want for the first argument is a message struct,
    ;; but if called interactively, we let the user type in a message
    ;; number instead.
    (let (mp default (result 0) prompt)
      (save-excursion
        (vm-select-folder-buffer)
        (setq default (and vm-message-pointer
                           (vm-number-of (car vm-message-pointer)))
              prompt (if default
                         (format "Yank message number: (default %s) "
                                 default)
                       "Yank message number: "))
        (while (zerop result)
          (setq result (read-string prompt))
          (and (string= result "") default (setq result default))
          (setq result (string-to-int result)))
        (if (null (setq mp (nthcdr (1- result) vm-message-list)))
            (error "No such message.")))
      (car mp))
    current-prefix-arg ))
  (if (not (bufferp vm-mail-buffer))
      (error "This is not a VM Mail mode buffer."))
  (if (null (buffer-name vm-mail-buffer))
      (error "The mail buffer containing message %d has been killed."
             (vm-number-of message)))
  (let ((b (current-buffer)) (start (point)) mp end)
    (save-restriction
      (widen)
      (save-excursion
        (set-buffer (marker-buffer (vm-start-of message)))
        (save-restriction
          (widen)
          (append-to-buffer b (if prefix
                                  (vm-vheaders-of message)
                                (vm-start-of message))
                            (vm-text-end-of message))
          (setq end (vm-marker (+ start (- (vm-text-end-of message)
                                           (if prefix
                                               (vm-vheaders-of message)
                                             (vm-start-of message)))) b))))
      (if prefix
          (save-excursion
            (if (and (stringp vm-included-text-prefix)
                     (not (zerop (length vm-included-text-prefix))))
                (while (and (< (point) end) (re-search-forward "^" end t))
                  (replace-match vm-included-text-prefix t t)
                  (forward-line))))
        ;; Delete UNIX From or MMDF ^A^A^A^A line
        (delete-region (point) (progn (forward-line) (point)))
        (push-mark end)
        (if mail-yank-hooks
            (run-hooks 'mail-yank-hooks)
          (vm-mail-yank-default message))))))
Newsgroups: alt.lucid-emacs.help