1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

* lisp/mail/rmail.el (rmail-set-header-1): Handle multi-line headers

Ignore case.

Fixes: debbugs:13330
This commit is contained in:
Glenn Morris 2013-01-03 11:41:59 -08:00
parent 0d1f53adb0
commit a8aa6c2d08
2 changed files with 24 additions and 6 deletions

View File

@ -1,5 +1,8 @@
2013-01-03 Glenn Morris <rgm@gnu.org>
* mail/rmail.el (rmail-set-header-1): Ignore case.
Handle multi-line headers. (Bug#13330)
* progmodes/make-mode.el (makefile-fill-paragraph): Add doc.
Handle paragraph starting at beginning of buffer.

View File

@ -2173,20 +2173,35 @@ If MSGNUM is nil, use the current message."
(defun rmail-set-header-1 (name value)
"Subroutine of `rmail-set-header'.
Narrow to header, set header NAME to VALUE, replacing existing if present.
VALUE nil means to remove NAME altogether."
Narrow to headers, set header NAME to VALUE, replacing existing if present.
VALUE nil means to remove NAME altogether.
Only changes the first instance of NAME. If VALUE is multi-line,
continuation lines should already be indented. VALUE should not
end in a newline."
(if (search-forward "\n\n" nil t)
(progn
(forward-char -1)
(narrow-to-region (point-min) (point))
;; cf mail-fetch-field.
(goto-char (point-min))
(if (re-search-forward (concat "^" (regexp-quote name) ":") nil 'move)
(if (let ((case-fold-search t))
(re-search-forward (concat "^" (regexp-quote name) "[ \t]*:")
nil 'move))
(let ((start (point))
end)
(while (and (zerop (forward-line 1))
(looking-at "[ \t]")))
;; Back up over newline.
(forward-char -1)
(setq end (point))
(goto-char start)
(if value
(progn
(delete-region (point) (line-end-position))
(delete-region start end)
(insert " " value))
(delete-region (line-beginning-position)
(line-beginning-position 2)))
(delete-region (line-beginning-position) (1+ end))))
;; Not already present: insert at end of headers.
(if value (insert name ": " value "\n"))))
(rmail-error-bad-format)))