(rmail-cease-edit): If there is a Content-Type header we don't
understand, don't insert another. (Bug#4624) If changing mime charset, insert the new one in the right place.
This commit is contained in:
parent
00169eb683
commit
25ab030201
2 changed files with 43 additions and 28 deletions
|
@ -1,3 +1,9 @@
|
|||
2009-10-06 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* mail/rmailedit.el (rmail-cease-edit): If there is a Content-Type
|
||||
header we don't understand, don't insert another. (Bug#4624)
|
||||
If changing mime charset, insert the new one in the right place.
|
||||
|
||||
2009-10-06 Matthew Junker <matthew.junker@sbcglobal.net> (tiny change)
|
||||
|
||||
* calendar/cal-tex.el (cal-tex-cursor-month-landscape)
|
||||
|
|
|
@ -168,35 +168,43 @@ This function runs the hooks `text-mode-hook' and `rmail-edit-mode-hook'.
|
|||
(string= old (buffer-substring (point-min) (point-max))))
|
||||
(setq old nil)
|
||||
(goto-char (point-min))
|
||||
;; If they changed the message's encoding, rewrite the charset=
|
||||
;; header for them, so that subsequent rmail-show-message
|
||||
;; decodes it correctly.
|
||||
(let ((buffer-read-only nil)
|
||||
(new-coding (coding-system-base edited-coding))
|
||||
old-coding mime-charset mime-beg mime-end)
|
||||
(when (re-search-forward rmail-mime-charset-pattern
|
||||
(1- (save-excursion (search-forward "\n\n")))
|
||||
'move)
|
||||
(setq mime-beg (match-beginning 1)
|
||||
mime-end (match-end 1)
|
||||
old-coding (coding-system-from-name (match-string 1))))
|
||||
(setq mime-charset
|
||||
(symbol-name
|
||||
(or (coding-system-get new-coding :mime-charset)
|
||||
(if (coding-system-equal new-coding 'undecided)
|
||||
'us-ascii
|
||||
new-coding))))
|
||||
(cond
|
||||
((null old-coding)
|
||||
;; If there was no charset= spec, insert one.
|
||||
(insert "Content-type: text/plain; charset=" mime-charset "\n"))
|
||||
((not (coding-system-equal (coding-system-base old-coding)
|
||||
new-coding))
|
||||
(delete-region mime-beg mime-end)
|
||||
(insert mime-charset))))
|
||||
(goto-char (point-min))
|
||||
;; FIXME the edit may have inadvertently removed this.
|
||||
(search-forward "\n\n")
|
||||
(setq headers-end (point))
|
||||
(setq headers-end (point-marker))
|
||||
(goto-char (point-min))
|
||||
(save-restriction
|
||||
(narrow-to-region (point) headers-end)
|
||||
;; If they changed the message's encoding, rewrite the charset=
|
||||
;; header for them, so that subsequent rmail-show-message
|
||||
;; decodes it correctly.
|
||||
(let* ((buffer-read-only nil)
|
||||
(new-coding (coding-system-base edited-coding))
|
||||
(mime-charset (symbol-name
|
||||
(or (coding-system-get new-coding :mime-charset)
|
||||
(if (coding-system-equal new-coding
|
||||
'undecided)
|
||||
'us-ascii
|
||||
new-coding))))
|
||||
old-coding mime-beg mime-end content-type)
|
||||
(if (re-search-forward rmail-mime-charset-pattern nil 'move)
|
||||
(setq mime-beg (match-beginning 1)
|
||||
mime-end (match-end 1)
|
||||
old-coding (coding-system-from-name (match-string 1)))
|
||||
(setq content-type (mail-fetch-field "Content-Type")))
|
||||
(cond
|
||||
;; No match for rmail-mime-charset-pattern, but there was some
|
||||
;; other Content-Type. We should not insert another. (Bug#4624)
|
||||
(content-type)
|
||||
((null old-coding)
|
||||
;; If there was no charset= spec, insert one.
|
||||
(backward-char 1)
|
||||
(insert "Content-type: text/plain; charset=" mime-charset "\n"))
|
||||
((not (coding-system-equal (coding-system-base old-coding)
|
||||
new-coding))
|
||||
(goto-char mime-end)
|
||||
(delete-region mime-beg mime-end)
|
||||
(insert mime-charset)))))
|
||||
(goto-char headers-end)
|
||||
(setq new-headers (rmail-edit-headers-alist t))
|
||||
(rmail-swap-buffers-maybe)
|
||||
(narrow-to-region (rmail-msgbeg rmail-current-message)
|
||||
|
@ -205,6 +213,7 @@ This function runs the hooks `text-mode-hook' and `rmail-edit-mode-hook'.
|
|||
(setq limit
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
;; FIXME this should not be using NOERROR.
|
||||
(search-forward "\n\n" nil t)))
|
||||
;; All 3 of the functions we call below assume the buffer was
|
||||
;; narrowed to just the headers of the message.
|
||||
|
|
Loading…
Add table
Reference in a new issue