home *** CD-ROM | disk | FTP | other *** search
- x-gateway: rodan.UU.NET from help-lucid-emacs to alt.lucid-emacs.help; Thu, 19 Nov 1992 09:04:24 EST
- Date: Thu, 19 Nov 1992 14:02:58 GMT
- From: djh@CIS.Prime.COM (David Hughes)
- Message-ID: <9211191402.AA11997@CIS.Prime.COM>
- Subject: vm-reply.el
- Newsgroups: alt.lucid-emacs.help
- Path: sparky!uunet!wendy-fate.uu.net!help-lucid-emacs
- Sender: help-lucid-emacs-request@lucid.com
- Lines: 93
-
- 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))))))
-