X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=ew-var.el;h=605061a9bb7b05b21b3bb5e9db571e69bf03b6dd;hb=4d9c85cce61c5f3a0e1746a885b57b667f3843d8;hp=4d9a0bf9640394ddfaab97804fd8f74f528d0aa7;hpb=746a098abd9001ddd0b1d08649323432ddf9b1b8;p=elisp%2Fflim.git diff --git a/ew-var.el b/ew-var.el index 4d9a0bf..605061a 100644 --- a/ew-var.el +++ b/ew-var.el @@ -123,29 +123,19 @@ ;;; constants. (defconst ew-token-regexp "[-!#-'*+0-9A-Z^-~]+") -(defconst ew-encoded-text-regexp0 "[!->@-~]*") -(defconst ew-encoded-text-regexp1 "[!->@-~]+") +(defconst ew-encoded-text-regexp "[!->@-~]*") -(defconst ew-encoded-word-regexp0 +(defconst ew-encoded-word-regexp (concat (regexp-quote "=?") "\\(" ew-token-regexp "\\)" (regexp-quote "?") "\\(" ew-token-regexp "\\)" (regexp-quote "?") - "\\(" ew-encoded-text-regexp0 "\\)" - (regexp-quote "?="))) - -(defconst ew-encoded-word-regexp1 - (concat (regexp-quote "=?") - "\\(" ew-token-regexp "\\)" - (regexp-quote "?") - "\\(" ew-token-regexp "\\)" - (regexp-quote "?") - "\\(" ew-encoded-text-regexp1 "\\)" + "\\(" ew-encoded-text-regexp "\\)" (regexp-quote "?="))) (defconst ew-anchored-encoded-word-regexp - (concat "\\`" ew-encoded-word-regexp0 "\\'")) + (concat "\\`" ew-encoded-word-regexp "\\'")) (defconst ew-b-regexp (eval-when-compile @@ -175,7 +165,7 @@ (regexp-quote "?") "\\(" ew-token-regexp "\\)" (regexp-quote "?") - "\\(" ew-encoded-text-regexp0 "\\)" + "\\(" ew-encoded-text-regexp "\\)" (regexp-quote "?") "\\'")) @@ -189,16 +179,32 @@ ;;; utilities for variables. +(defconst ew-option-list + '(ew-decode-sticked-encoded-word + ew-decode-quoted-encoded-word + ew-ignore-75bytes-limit + ew-ignore-76bytes-limit + ew-permit-sticked-comment + ew-permit-sticked-special + ew-permit-null-encoded-text)) + +(defun ew-save-boolean-options () + (let ((tmp 1) (opts ew-option-list) (val 0)) + (while opts + (when (symbol-value (car opts)) (setq val (logior val tmp))) + (setq tmp (lsh tmp 1) + opts (cdr opts))) + val)) + +(defun ew-restore-boolean-options (val) + (let ((tmp 1) (opts ew-option-list)) + (while opts + (set (car opts) (not (zerop (logand val tmp)))) + (setq tmp (lsh tmp 1) + opts (cdr opts))))) + (defun ew-dynamic-options () (cons ew-default-mime-charset - (logior - (if ew-decode-sticked-encoded-word 1 0) - (if ew-decode-quoted-encoded-word 2 0) - (if ew-ignore-75bytes-limit 4 0) - (if ew-ignore-76bytes-limit 8 0) - (if ew-permit-sticked-comment 16 0) - (if ew-permit-sticked-special 32 0) - (if ew-remove-bare-crlf 64 0) - (if ew-permit-null-encoded-text 128 0) - ))) + (ew-save-boolean-options))) +