X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=ew-var.el;h=605061a9bb7b05b21b3bb5e9db571e69bf03b6dd;hb=4d9c85cce61c5f3a0e1746a885b57b667f3843d8;hp=24636268db99616c66a3097899c0244060a722fb;hpb=78d112053d1500b2fe8a166dec28a300f69ef18f;p=elisp%2Fflim.git diff --git a/ew-var.el b/ew-var.el index 2463626..605061a 100644 --- a/ew-var.el +++ b/ew-var.el @@ -179,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))) +