;;; Code:
-(require 'std11-parse)
+(require 'std11)
(require 'mel)
(require 'mime-def)
;;; @@ Quoted-Printable
;;;
-(defconst quoted-printable-hex-chars "0123456789ABCDEF")
-(defconst quoted-printable-octet-regexp
- (concat "=[" quoted-printable-hex-chars
- "][" quoted-printable-hex-chars "]"))
-
(defconst eword-Q-encoded-text-regexp
(concat "\\([^=?]\\|" quoted-printable-octet-regexp "\\)+"))
;; (defconst eword-Q-encoding-and-encoded-text-regexp
;;;
(defcustom eword-decode-ignored-field-list
- '(newsgroups path lines nntp-posting-host received message-id date)
+ '(Newsgroups Path Lines Nntp-Posting-Host Received Message-Id Date)
"*List of field-names to be ignored when decoding.
Each field name must be symbol."
:group 'eword-decode
:type '(repeat symbol))
(defcustom eword-decode-structured-field-list
- '(reply-to resent-reply-to from resent-from sender resent-sender
- to resent-to cc resent-cc bcc resent-bcc dcc
- mime-version content-type content-transfer-encoding
- content-disposition)
+ '(Reply-To Resent-Reply-To From Resent-From Sender Resent-Sender
+ To Resent-To Cc Resent-Cc Bcc Resent-Bcc Dcc
+ Mime-Version Content-Type Content-Transfer-Encoding
+ Content-Disposition)
"*List of field-names to decode as structured field.
Each field name must be symbol."
:group 'eword-decode
p (match-end 0)
field-name (buffer-substring beg (1- p))
len (string-width field-name)
- field-name (intern (downcase field-name))
+ field-name (intern (capitalize field-name))
end (std11-field-end))
(cond ((memq field-name eword-decode-ignored-field-list)
;; Don't decode
;;; @ encoded-word decoder
;;;
-(defvar eword-warning-face nil "Face used for invalid encoded-word.")
+(defvar eword-decode-encoded-word-error-handler
+ 'eword-decode-encoded-word-default-error-handler)
+
+(defvar eword-warning-face nil
+ "Face used for invalid encoded-word.")
+
+(defun eword-decode-encoded-word-default-error-handler (word signal)
+ (and (add-text-properties 0 (length word)
+ (and eword-warning-face
+ (list 'face eword-warning-face))
+ word)
+ word))
(defun eword-decode-encoded-word (word &optional must-unfold)
"Decode WORD if it is an encoded-word.
(condition-case err
(eword-decode-encoded-text charset encoding text must-unfold)
(error
- (and
- (add-text-properties 0 (length word)
- (and eword-warning-face
- (list 'face eword-warning-face))
- word)
- word)))
+ (funcall eword-decode-encoded-word-error-handler word err)
+ ))
))
word))