X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=ew-var.el;h=605061a9bb7b05b21b3bb5e9db571e69bf03b6dd;hb=4d9c85cce61c5f3a0e1746a885b57b667f3843d8;hp=9a3e485a25dfa6a4cfaaa1dbdf809ecf298e9bc8;hpb=be4c9118f688a62f5f7b6b6f4114f22fa83cf420;p=elisp%2Fflim.git diff --git a/ew-var.el b/ew-var.el index 9a3e485..605061a 100644 --- a/ew-var.el +++ b/ew-var.el @@ -8,7 +8,7 @@ (defvar ew-ignore-76bytes-limit nil) (defvar ew-permit-sticked-comment nil) (defvar ew-permit-sticked-special nil) -(defvar ew-permit-null-encoded-text nil) ; affect when loading time. +(defvar ew-permit-null-encoded-text nil) (defvar ew-remove-bare-crlf nil) (defvar ew-default-mime-charset 'x-ctext) @@ -123,10 +123,7 @@ ;;; constants. (defconst ew-token-regexp "[-!#-'*+0-9A-Z^-~]+") -(defconst ew-encoded-text-regexp - (if ew-permit-null-encoded-text - "[!->@-~]*" - "[!->@-~]+")) +(defconst ew-encoded-text-regexp "[!->@-~]*") (defconst ew-encoded-word-regexp (concat (regexp-quote "=?") @@ -182,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))) +