From fce98252c6b81fe25975e349645a53d5f66fa661 Mon Sep 17 00:00:00 2001 From: Andreas Gerler Date: Sun, 22 Dec 2024 13:09:42 +0100 Subject: [PATCH] update mew Signed-off-by: Andreas Gerler --- elpa/mew-20230415.633/mew-pkg.el | 9 - .../dir | 0 .../etc/Mew.img | 0 .../etc/Mew.png | Bin .../etc/Mew.xbm | 0 .../etc/Mew.xpm | 0 .../etc/mew-Audio.xpm | 0 .../etc/mew-Blank.xpm | 0 .../etc/mew-External.xpm | 0 .../etc/mew-Folder.xpm | 0 .../etc/mew-Image.xpm | 0 .../etc/mew-Octet-Stream.xpm | 0 .../etc/mew-Postscript.xpm | 0 .../etc/mew-Rfc822.xpm | 0 .../etc/mew-Text.xpm | 0 .../etc/mew-Unknown.xpm | 0 .../etc/mew-Video.xpm | 0 .../etc/mew-attach.xpm | 0 .../etc/mew-cite.xpm | 0 .../etc/mew-forward.xpm | 0 .../etc/mew-inc.xpm | 0 .../etc/mew-lock.xpm | 0 .../etc/mew-next.xpm | 0 .../etc/mew-pgp-enc.xpm | 0 .../etc/mew-pgp-sigenc.xpm | 0 .../etc/mew-pgp-sign.xpm | 0 .../etc/mew-prev.xpm | 0 .../etc/mew-queue.xpm | 0 .../etc/mew-refile.xpm | 0 .../etc/mew-reply.xpm | 0 .../etc/mew-send.xpm | 0 .../etc/mew-sep.xpm | 0 .../etc/mew-show.xpm | 0 .../etc/mew-write.xpm | 0 .../etc/mew-yank.xpm | 0 .../mew-addrbook.el | 8 +- .../mew-attach.el | 0 .../mew-auth.el | 72 -- .../mew-autoloads.el | 191 +---- .../mew-blvs.el | 0 .../mew-bq.el | 6 +- .../mew-cache.el | 0 .../mew-complete.el | 4 +- .../mew-config.el | 26 +- .../mew-const.el | 0 .../mew-darwin.el | 0 .../mew-decode.el | 13 +- .../mew-demo.el | 0 .../mew-draft.el | 12 +- .../mew-edit.el | 6 +- .../mew-encode.el | 10 +- .../mew-env.el | 2 +- .../mew-env0.el | 0 .../mew-exec.el | 8 +- .../mew-ext.el | 0 .../mew-fib.el | 0 .../mew-func.el | 14 +- .../mew-gemacs.el | 0 .../mew-header.el | 0 .../mew-highlight.el | 5 +- .../mew-imap.el | 60 +- .../mew-imap2.el | 21 +- .../mew-key.el | 0 .../mew-lang-jp.el | 2 +- .../mew-lang-kr.el | 0 .../mew-lang-latin.el | 0 .../mew-local.el | 10 +- .../mew-mark.el | 8 +- .../mew-message.el | 6 +- .../mew-mime.el | 4 +- .../mew-minibuf.el | 10 +- .../mew-mule.el | 0 .../mew-mule3.el | 0 .../mew-net.el | 26 +- .../mew-nntp.el | 0 .../mew-nntp2.el | 0 elpa/mew-20240911.749/mew-oauth2.el | 296 ++++++++ .../mew-passwd.el | 2 +- .../mew-pgp.el | 4 +- .../mew-pick.el | 6 +- elpa/mew-20240911.749/mew-pkg.el | 7 + .../mew-pop.el | 19 +- .../mew-refile.el | 14 +- .../mew-scan.el | 28 +- .../mew-search.el | 0 .../mew-smime.el | 0 .../mew-smtp.el | 12 +- .../mew-sort.el | 0 .../mew-ssh.el | 0 .../mew-ssl.el | 10 +- .../mew-summary.el | 2 +- .../mew-summary2.el | 38 +- .../mew-summary3.el | 34 +- .../mew-summary4.el | 58 +- .../mew-syntax.el | 7 +- .../mew-thread.el | 16 +- .../mew-unix.el | 0 .../mew-vars.el | 488 ++++++------- .../mew-vars2.el | 48 +- .../mew-vars3.el | 4 +- .../mew-varsx.el | 0 .../mew-virtual.el | 12 +- .../mew-win32.el | 0 .../mew.el | 28 +- .../mew.info | 658 +++++++++++------- .../mew.ja.info | 555 +++++++++------ elpa/mew-readme.txt | 4 - 107 files changed, 1685 insertions(+), 1198 deletions(-) delete mode 100644 elpa/mew-20230415.633/mew-pkg.el rename elpa/{mew-20230415.633 => mew-20240911.749}/dir (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/Mew.img (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/Mew.png (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/Mew.xbm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/Mew.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Audio.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Blank.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-External.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Folder.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Image.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Octet-Stream.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Postscript.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Rfc822.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Text.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Unknown.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-Video.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-attach.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-cite.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-forward.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-inc.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-lock.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-next.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-pgp-enc.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-pgp-sigenc.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-pgp-sign.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-prev.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-queue.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-refile.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-reply.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-send.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-sep.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-show.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-write.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/etc/mew-yank.xpm (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-addrbook.el (98%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-attach.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-auth.el (58%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-autoloads.el (57%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-blvs.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-bq.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-cache.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-complete.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-config.el (96%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-const.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-darwin.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-decode.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-demo.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-draft.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-edit.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-encode.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-env.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-env0.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-exec.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-ext.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-fib.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-func.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-gemacs.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-header.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-highlight.el (98%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-imap.el (97%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-imap2.el (96%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-key.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-lang-jp.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-lang-kr.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-lang-latin.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-local.el (98%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-mark.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-message.el (98%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-mime.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-minibuf.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-mule.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-mule3.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-net.el (97%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-nntp.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-nntp2.el (100%) create mode 100644 elpa/mew-20240911.749/mew-oauth2.el rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-passwd.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-pgp.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-pick.el (99%) create mode 100644 elpa/mew-20240911.749/mew-pkg.el rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-pop.el (98%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-refile.el (98%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-scan.el (97%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-search.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-smime.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-smtp.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-sort.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-ssh.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-ssl.el (97%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-summary.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-summary2.el (95%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-summary3.el (95%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-summary4.el (95%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-syntax.el (99%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-thread.el (98%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-unix.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-vars.el (87%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-vars2.el (95%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-vars3.el (98%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-varsx.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-virtual.el (96%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew-win32.el (100%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew.el (97%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew.info (92%) rename elpa/{mew-20230415.633 => mew-20240911.749}/mew.ja.info (93%) delete mode 100644 elpa/mew-readme.txt diff --git a/elpa/mew-20230415.633/mew-pkg.el b/elpa/mew-20230415.633/mew-pkg.el deleted file mode 100644 index c29f2a4f..00000000 --- a/elpa/mew-20230415.633/mew-pkg.el +++ /dev/null @@ -1,9 +0,0 @@ -(define-package "mew" "20230415.633" "Messaging in the Emacs World" 'nil :commit "47886a3b6bc64e5822546318e5a3dd0ff5eeb967" :authors - '(("Mew developing team")) - :maintainers - '(("Mew developing team")) - :maintainer - '("Mew developing team")) -;; Local Variables: -;; no-byte-compile: t -;; End: diff --git a/elpa/mew-20230415.633/dir b/elpa/mew-20240911.749/dir similarity index 100% rename from elpa/mew-20230415.633/dir rename to elpa/mew-20240911.749/dir diff --git a/elpa/mew-20230415.633/etc/Mew.img b/elpa/mew-20240911.749/etc/Mew.img similarity index 100% rename from elpa/mew-20230415.633/etc/Mew.img rename to elpa/mew-20240911.749/etc/Mew.img diff --git a/elpa/mew-20230415.633/etc/Mew.png b/elpa/mew-20240911.749/etc/Mew.png similarity index 100% rename from elpa/mew-20230415.633/etc/Mew.png rename to elpa/mew-20240911.749/etc/Mew.png diff --git a/elpa/mew-20230415.633/etc/Mew.xbm b/elpa/mew-20240911.749/etc/Mew.xbm similarity index 100% rename from elpa/mew-20230415.633/etc/Mew.xbm rename to elpa/mew-20240911.749/etc/Mew.xbm diff --git a/elpa/mew-20230415.633/etc/Mew.xpm b/elpa/mew-20240911.749/etc/Mew.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/Mew.xpm rename to elpa/mew-20240911.749/etc/Mew.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Audio.xpm b/elpa/mew-20240911.749/etc/mew-Audio.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Audio.xpm rename to elpa/mew-20240911.749/etc/mew-Audio.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Blank.xpm b/elpa/mew-20240911.749/etc/mew-Blank.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Blank.xpm rename to elpa/mew-20240911.749/etc/mew-Blank.xpm diff --git a/elpa/mew-20230415.633/etc/mew-External.xpm b/elpa/mew-20240911.749/etc/mew-External.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-External.xpm rename to elpa/mew-20240911.749/etc/mew-External.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Folder.xpm b/elpa/mew-20240911.749/etc/mew-Folder.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Folder.xpm rename to elpa/mew-20240911.749/etc/mew-Folder.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Image.xpm b/elpa/mew-20240911.749/etc/mew-Image.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Image.xpm rename to elpa/mew-20240911.749/etc/mew-Image.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Octet-Stream.xpm b/elpa/mew-20240911.749/etc/mew-Octet-Stream.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Octet-Stream.xpm rename to elpa/mew-20240911.749/etc/mew-Octet-Stream.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Postscript.xpm b/elpa/mew-20240911.749/etc/mew-Postscript.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Postscript.xpm rename to elpa/mew-20240911.749/etc/mew-Postscript.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Rfc822.xpm b/elpa/mew-20240911.749/etc/mew-Rfc822.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Rfc822.xpm rename to elpa/mew-20240911.749/etc/mew-Rfc822.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Text.xpm b/elpa/mew-20240911.749/etc/mew-Text.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Text.xpm rename to elpa/mew-20240911.749/etc/mew-Text.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Unknown.xpm b/elpa/mew-20240911.749/etc/mew-Unknown.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Unknown.xpm rename to elpa/mew-20240911.749/etc/mew-Unknown.xpm diff --git a/elpa/mew-20230415.633/etc/mew-Video.xpm b/elpa/mew-20240911.749/etc/mew-Video.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-Video.xpm rename to elpa/mew-20240911.749/etc/mew-Video.xpm diff --git a/elpa/mew-20230415.633/etc/mew-attach.xpm b/elpa/mew-20240911.749/etc/mew-attach.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-attach.xpm rename to elpa/mew-20240911.749/etc/mew-attach.xpm diff --git a/elpa/mew-20230415.633/etc/mew-cite.xpm b/elpa/mew-20240911.749/etc/mew-cite.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-cite.xpm rename to elpa/mew-20240911.749/etc/mew-cite.xpm diff --git a/elpa/mew-20230415.633/etc/mew-forward.xpm b/elpa/mew-20240911.749/etc/mew-forward.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-forward.xpm rename to elpa/mew-20240911.749/etc/mew-forward.xpm diff --git a/elpa/mew-20230415.633/etc/mew-inc.xpm b/elpa/mew-20240911.749/etc/mew-inc.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-inc.xpm rename to elpa/mew-20240911.749/etc/mew-inc.xpm diff --git a/elpa/mew-20230415.633/etc/mew-lock.xpm b/elpa/mew-20240911.749/etc/mew-lock.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-lock.xpm rename to elpa/mew-20240911.749/etc/mew-lock.xpm diff --git a/elpa/mew-20230415.633/etc/mew-next.xpm b/elpa/mew-20240911.749/etc/mew-next.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-next.xpm rename to elpa/mew-20240911.749/etc/mew-next.xpm diff --git a/elpa/mew-20230415.633/etc/mew-pgp-enc.xpm b/elpa/mew-20240911.749/etc/mew-pgp-enc.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-pgp-enc.xpm rename to elpa/mew-20240911.749/etc/mew-pgp-enc.xpm diff --git a/elpa/mew-20230415.633/etc/mew-pgp-sigenc.xpm b/elpa/mew-20240911.749/etc/mew-pgp-sigenc.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-pgp-sigenc.xpm rename to elpa/mew-20240911.749/etc/mew-pgp-sigenc.xpm diff --git a/elpa/mew-20230415.633/etc/mew-pgp-sign.xpm b/elpa/mew-20240911.749/etc/mew-pgp-sign.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-pgp-sign.xpm rename to elpa/mew-20240911.749/etc/mew-pgp-sign.xpm diff --git a/elpa/mew-20230415.633/etc/mew-prev.xpm b/elpa/mew-20240911.749/etc/mew-prev.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-prev.xpm rename to elpa/mew-20240911.749/etc/mew-prev.xpm diff --git a/elpa/mew-20230415.633/etc/mew-queue.xpm b/elpa/mew-20240911.749/etc/mew-queue.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-queue.xpm rename to elpa/mew-20240911.749/etc/mew-queue.xpm diff --git a/elpa/mew-20230415.633/etc/mew-refile.xpm b/elpa/mew-20240911.749/etc/mew-refile.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-refile.xpm rename to elpa/mew-20240911.749/etc/mew-refile.xpm diff --git a/elpa/mew-20230415.633/etc/mew-reply.xpm b/elpa/mew-20240911.749/etc/mew-reply.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-reply.xpm rename to elpa/mew-20240911.749/etc/mew-reply.xpm diff --git a/elpa/mew-20230415.633/etc/mew-send.xpm b/elpa/mew-20240911.749/etc/mew-send.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-send.xpm rename to elpa/mew-20240911.749/etc/mew-send.xpm diff --git a/elpa/mew-20230415.633/etc/mew-sep.xpm b/elpa/mew-20240911.749/etc/mew-sep.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-sep.xpm rename to elpa/mew-20240911.749/etc/mew-sep.xpm diff --git a/elpa/mew-20230415.633/etc/mew-show.xpm b/elpa/mew-20240911.749/etc/mew-show.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-show.xpm rename to elpa/mew-20240911.749/etc/mew-show.xpm diff --git a/elpa/mew-20230415.633/etc/mew-write.xpm b/elpa/mew-20240911.749/etc/mew-write.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-write.xpm rename to elpa/mew-20240911.749/etc/mew-write.xpm diff --git a/elpa/mew-20230415.633/etc/mew-yank.xpm b/elpa/mew-20240911.749/etc/mew-yank.xpm similarity index 100% rename from elpa/mew-20230415.633/etc/mew-yank.xpm rename to elpa/mew-20240911.749/etc/mew-yank.xpm diff --git a/elpa/mew-20230415.633/mew-addrbook.el b/elpa/mew-20240911.749/mew-addrbook.el similarity index 98% rename from elpa/mew-20230415.633/mew-addrbook.el rename to elpa/mew-20240911.749/mew-addrbook.el index 5d9aabb1..0565d2a3 100644 --- a/elpa/mew-20230415.633/mew-addrbook.el +++ b/elpa/mew-20240911.749/mew-addrbook.el @@ -132,7 +132,7 @@ ;;; (defvar mew-alias-expand-prefix nil - "A variable to make 'mew-alias-expand' elegant.") + "A variable to make `mew-alias-expand' elegant.") ;; for completion (defun mew-addrbook-alias-get (key alist) @@ -153,9 +153,9 @@ (defun mew-alias-expand (key alist count) "Expand KEY to a list of addresses according to ALIST. -Infinite loop is prevented by COUNT and 'mew-expand-max-depth'. -Before calling, 'mew-alias-expand-prefix' must be set 'nil'. -If \"prefix:a,b,c;\" is given, 'mew-alias-expand-prefix' +Infinite loop is prevented by COUNT and `mew-expand-max-depth'. +Before calling, `mew-alias-expand-prefix' must be set `nil'. +If \"prefix:a,b,c;\" is given, `mew-alias-expand-prefix' is set to \"prefix\", and (expanded-a expanded-b expanded-c) is returned." (cond diff --git a/elpa/mew-20230415.633/mew-attach.el b/elpa/mew-20240911.749/mew-attach.el similarity index 100% rename from elpa/mew-20230415.633/mew-attach.el rename to elpa/mew-20240911.749/mew-attach.el diff --git a/elpa/mew-20230415.633/mew-auth.el b/elpa/mew-20240911.749/mew-auth.el similarity index 58% rename from elpa/mew-20230415.633/mew-auth.el rename to elpa/mew-20240911.749/mew-auth.el index 19baad94..943ed92a 100644 --- a/elpa/mew-20230415.633/mew-auth.el +++ b/elpa/mew-20240911.749/mew-auth.el @@ -67,78 +67,6 @@ (defun mew-keyed-md5 (key passwd) (mew-md5 (concat key passwd))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; XOAUTH2 - -(defun mew-auth-xoauth2-auth-string (user token) - ;; base64(user=user@example.com^Aauth=Bearer ya29vF9dft4...^A^A) - (base64-encode-string (format "user=%s\1auth=Bearer %s\1\1" user token) t)) - -(defun mew-auth-xoauth2-json-status (status-string) - ;; https://developers.google.com/gmail/imap/xoauth2-protocol#error_response_2 - (require 'json) - (let ((json-status - (ignore-errors - (json-read-from-string - (base64-decode-string status-string))))) - (if json-status - (if (string-match "^2" (cdr (assoc 'status json-status))) - "OK" ;; 2XX - "NO") ;; XXX: Anyway NO? - "OK"))) ;; XXX: Maybe OK if not JSON. - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; OAuth2 - -(defvar mew-auth-oauth2-client-id - "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com") - -(defvar mew-auth-oauth2-client-secret - "xxxxxxxxxxxxxxxxxxxxxxxx") - -(defvar mew-auth-oauth2-auth-url "https://accounts.google.com/o/oauth2/auth" - "OAuth2 auth server URL.") - -(defvar mew-auth-oauth2-token-url "https://accounts.google.com/o/oauth2/token" - "OAuth2 token server URL.") - -(defvar mew-auth-oauth2-resource-url "https://mail.google.com/" - "URL used to request access to Mail Resources.") - -(defvar mew-auth-oauth2-redirect-url nil - "URL used to OAuth redirect url.") - -(declare-function oauth2-auth-and-store "oauth2") -(declare-function oauth2-refresh-access "oauth2") -(declare-function oauth2-token-access-token "oauth2") - -(defun mew-auth-oauth2-auth-and-store - (resource-url client-id client-secret &optional redirect-url) - "Request access to a mail resource and store it using `auth-source'." - (require 'oauth2) - (oauth2-auth-and-store - mew-auth-oauth2-auth-url - mew-auth-oauth2-token-url - resource-url - client-id - client-secret - redirect-url)) - -(defun mew-auth-oauth2-token () - "Get OAuth token for Mew to access mail service." - (require 'oauth2) - (let ((token (mew-auth-oauth2-auth-and-store - mew-auth-oauth2-resource-url - mew-auth-oauth2-client-id - mew-auth-oauth2-client-secret - mew-auth-oauth2-redirect-url))) - (oauth2-refresh-access token) - token)) - -(defun mew-auth-oauth2-token-access-token () - (require 'oauth2) - (ignore-errors (oauth2-token-access-token (mew-auth-oauth2-token)))) - (provide 'mew-auth) ;;; Copyright Notice: diff --git a/elpa/mew-20230415.633/mew-autoloads.el b/elpa/mew-20240911.749/mew-autoloads.el similarity index 57% rename from elpa/mew-20230415.633/mew-autoloads.el rename to elpa/mew-20240911.749/mew-autoloads.el index 727808f9..ba009265 100644 --- a/elpa/mew-20230415.633/mew-autoloads.el +++ b/elpa/mew-20240911.749/mew-autoloads.el @@ -1,45 +1,45 @@ -;;; mew-autoloads.el --- automatically extracted autoloads -*- lexical-binding: t -*- -;; +;;; mew-autoloads.el --- automatically extracted autoloads (do not edit) -*- lexical-binding: t -*- +;; Generated by the `loaddefs-generate' function. + +;; This file is part of GNU Emacs. + ;;; Code: -(add-to-list 'load-path (directory-file-name - (or (file-name-directory #$) (car load-path)))) +(add-to-list 'load-path (or (and load-file-name (directory-file-name (file-name-directory load-file-name))) (car load-path))) + -;;;### (autoloads nil "mew" "mew.el" (0 0 0 0)) ;;; Generated autoloads from mew.el (autoload 'mew "mew" "\ Execute Mew first unless Mew is running. And retrieve arrived messages or just visit to the default folder. -'proto' is determined by 'mew-proto' and 'mew-case'. +`proto' is determined by `mew-proto' and `mew-case'. -If 'proto' is '+' (ie a local folder), a mailbox is determined -according to 'mew-mailbox-type'. Otherwise (ie a remote folder), an +If `proto' is `+' (ie a local folder), a mailbox is determined +according to `mew-mailbox-type'. Otherwise (ie a remote folder), an appropriate protocol to retrieve messages is chosen according to -'proto'. +`proto'. -If 'mew-auto-get' is 't', arrived messages are asynchronously fetched +If `mew-auto-get' is `t', arrived messages are asynchronously fetched and listed up in Summary mode. -'mew-auto-get' is 'nil', just visit to the folder determined by -'proto'. +`mew-auto-get' is `nil', just visit to the folder determined by +`proto'. -When executed with '\\[universal-argument]', 'mew-auto-get' is +When executed with `\\[universal-argument]', `mew-auto-get' is considered reversed. -\(fn &optional ARG)" t nil) - +(fn &optional ARG)" t) (autoload 'mew-send "mew" "\ Execute Mew then prepare a draft. This may be used as library function. -\(fn &optional TO CC SUBJECT)" t nil) - +(fn &optional TO CC SUBJECT)" t) (autoload 'mew-user-agent-compose "mew" "\ Set up message composition draft with Mew. -This is 'mail-user-agent' entry point to Mew. +This is `mail-user-agent' entry point to Mew. The optional arguments TO and SUBJECT specify recipients and the initial Subject field, respectively. @@ -52,476 +52,349 @@ A Draft buffer is prepared according to SWITCH-FUNCTION. CONTINUE, YANK-ACTION and SEND-ACTIONS are ignored. -\(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION SEND-ACTIONS &rest DUMMY)" nil nil) - +(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION SEND-ACTIONS &rest DUMMY)") (register-definition-prefixes "mew" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-addrbook" "mew-addrbook.el" (0 0 0 0)) ;;; Generated autoloads from mew-addrbook.el (register-definition-prefixes "mew-addrbook" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-attach" "mew-attach.el" (0 0 0 0)) ;;; Generated autoloads from mew-attach.el (register-definition-prefixes "mew-attach" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-auth" "mew-auth.el" (0 0 0 0)) ;;; Generated autoloads from mew-auth.el (register-definition-prefixes "mew-auth" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-blvs" "mew-blvs.el" (0 0 0 0)) ;;; Generated autoloads from mew-blvs.el (register-definition-prefixes "mew-blvs" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-bq" "mew-bq.el" (0 0 0 0)) ;;; Generated autoloads from mew-bq.el (register-definition-prefixes "mew-bq" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-cache" "mew-cache.el" (0 0 0 0)) ;;; Generated autoloads from mew-cache.el (register-definition-prefixes "mew-cache" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-complete" "mew-complete.el" (0 0 0 0)) ;;; Generated autoloads from mew-complete.el (register-definition-prefixes "mew-complete" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-config" "mew-config.el" (0 0 0 0)) ;;; Generated autoloads from mew-config.el (register-definition-prefixes "mew-config" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-const" "mew-const.el" (0 0 0 0)) ;;; Generated autoloads from mew-const.el (register-definition-prefixes "mew-const" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-darwin" "mew-darwin.el" (0 0 0 0)) ;;; Generated autoloads from mew-darwin.el (register-definition-prefixes "mew-darwin" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-decode" "mew-decode.el" (0 0 0 0)) ;;; Generated autoloads from mew-decode.el (register-definition-prefixes "mew-decode" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-demo" "mew-demo.el" (0 0 0 0)) ;;; Generated autoloads from mew-demo.el (register-definition-prefixes "mew-demo" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-draft" "mew-draft.el" (0 0 0 0)) ;;; Generated autoloads from mew-draft.el (register-definition-prefixes "mew-draft" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-edit" "mew-edit.el" (0 0 0 0)) ;;; Generated autoloads from mew-edit.el (register-definition-prefixes "mew-edit" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-encode" "mew-encode.el" (0 0 0 0)) ;;; Generated autoloads from mew-encode.el (register-definition-prefixes "mew-encode" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-env" "mew-env.el" (0 0 0 0)) ;;; Generated autoloads from mew-env.el (register-definition-prefixes "mew-env" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-env0" "mew-env0.el" (0 0 0 0)) ;;; Generated autoloads from mew-env0.el (register-definition-prefixes "mew-env0" '("mew-no-warning-def")) -;;;*** -;;;### (autoloads nil "mew-exec" "mew-exec.el" (0 0 0 0)) ;;; Generated autoloads from mew-exec.el (register-definition-prefixes "mew-exec" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-ext" "mew-ext.el" (0 0 0 0)) ;;; Generated autoloads from mew-ext.el (register-definition-prefixes "mew-ext" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-fib" "mew-fib.el" (0 0 0 0)) ;;; Generated autoloads from mew-fib.el (register-definition-prefixes "mew-fib" '("mew-fib-")) -;;;*** -;;;### (autoloads nil "mew-func" "mew-func.el" (0 0 0 0)) ;;; Generated autoloads from mew-func.el (register-definition-prefixes "mew-func" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-gemacs" "mew-gemacs.el" (0 0 0 0)) ;;; Generated autoloads from mew-gemacs.el (register-definition-prefixes "mew-gemacs" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-header" "mew-header.el" (0 0 0 0)) ;;; Generated autoloads from mew-header.el (register-definition-prefixes "mew-header" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-highlight" "mew-highlight.el" (0 0 0 0)) ;;; Generated autoloads from mew-highlight.el (register-definition-prefixes "mew-highlight" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-imap" "mew-imap.el" (0 0 0 0)) ;;; Generated autoloads from mew-imap.el -(register-definition-prefixes "mew-imap" '("mew-imap")) +(register-definition-prefixes "mew-imap" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-imap2" "mew-imap2.el" (0 0 0 0)) ;;; Generated autoloads from mew-imap2.el (register-definition-prefixes "mew-imap2" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-key" "mew-key.el" (0 0 0 0)) ;;; Generated autoloads from mew-key.el (register-definition-prefixes "mew-key" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-lang-jp" "mew-lang-jp.el" (0 0 0 0)) ;;; Generated autoloads from mew-lang-jp.el (register-definition-prefixes "mew-lang-jp" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-lang-kr" "mew-lang-kr.el" (0 0 0 0)) ;;; Generated autoloads from mew-lang-kr.el (register-definition-prefixes "mew-lang-kr" '("mew-thread-indent-strings")) -;;;*** -;;;### (autoloads nil "mew-lang-latin" "mew-lang-latin.el" (0 0 0 -;;;;;; 0)) ;;; Generated autoloads from mew-lang-latin.el (register-definition-prefixes "mew-lang-latin" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-local" "mew-local.el" (0 0 0 0)) ;;; Generated autoloads from mew-local.el (register-definition-prefixes "mew-local" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-mark" "mew-mark.el" (0 0 0 0)) ;;; Generated autoloads from mew-mark.el (register-definition-prefixes "mew-mark" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-message" "mew-message.el" (0 0 0 0)) ;;; Generated autoloads from mew-message.el (register-definition-prefixes "mew-message" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-mime" "mew-mime.el" (0 0 0 0)) ;;; Generated autoloads from mew-mime.el (register-definition-prefixes "mew-mime" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-minibuf" "mew-minibuf.el" (0 0 0 0)) ;;; Generated autoloads from mew-minibuf.el (register-definition-prefixes "mew-minibuf" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-mule" "mew-mule.el" (0 0 0 0)) ;;; Generated autoloads from mew-mule.el (register-definition-prefixes "mew-mule" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-mule3" "mew-mule3.el" (0 0 0 0)) ;;; Generated autoloads from mew-mule3.el (register-definition-prefixes "mew-mule3" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-net" "mew-net.el" (0 0 0 0)) ;;; Generated autoloads from mew-net.el (register-definition-prefixes "mew-net" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-nntp" "mew-nntp.el" (0 0 0 0)) ;;; Generated autoloads from mew-nntp.el (register-definition-prefixes "mew-nntp" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-nntp2" "mew-nntp2.el" (0 0 0 0)) ;;; Generated autoloads from mew-nntp2.el (register-definition-prefixes "mew-nntp2" '("mew-nntp2-")) -;;;*** -;;;### (autoloads nil "mew-passwd" "mew-passwd.el" (0 0 0 0)) +;;; Generated autoloads from mew-oauth2.el + +(register-definition-prefixes "mew-oauth2" '("mew-")) + + ;;; Generated autoloads from mew-passwd.el (register-definition-prefixes "mew-passwd" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-pgp" "mew-pgp.el" (0 0 0 0)) ;;; Generated autoloads from mew-pgp.el (register-definition-prefixes "mew-pgp" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-pick" "mew-pick.el" (0 0 0 0)) ;;; Generated autoloads from mew-pick.el (register-definition-prefixes "mew-pick" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-pop" "mew-pop.el" (0 0 0 0)) ;;; Generated autoloads from mew-pop.el -(register-definition-prefixes "mew-pop" '("mew-pop-")) +(register-definition-prefixes "mew-pop" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-refile" "mew-refile.el" (0 0 0 0)) ;;; Generated autoloads from mew-refile.el (register-definition-prefixes "mew-refile" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-scan" "mew-scan.el" (0 0 0 0)) ;;; Generated autoloads from mew-scan.el (register-definition-prefixes "mew-scan" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-search" "mew-search.el" (0 0 0 0)) ;;; Generated autoloads from mew-search.el (register-definition-prefixes "mew-search" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-smime" "mew-smime.el" (0 0 0 0)) ;;; Generated autoloads from mew-smime.el (register-definition-prefixes "mew-smime" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-smtp" "mew-smtp.el" (0 0 0 0)) ;;; Generated autoloads from mew-smtp.el (register-definition-prefixes "mew-smtp" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-sort" "mew-sort.el" (0 0 0 0)) ;;; Generated autoloads from mew-sort.el (register-definition-prefixes "mew-sort" '("mew-s")) -;;;*** -;;;### (autoloads nil "mew-ssh" "mew-ssh.el" (0 0 0 0)) ;;; Generated autoloads from mew-ssh.el (register-definition-prefixes "mew-ssh" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-ssl" "mew-ssl.el" (0 0 0 0)) ;;; Generated autoloads from mew-ssl.el (register-definition-prefixes "mew-ssl" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-summary" "mew-summary.el" (0 0 0 0)) ;;; Generated autoloads from mew-summary.el (register-definition-prefixes "mew-summary" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-summary2" "mew-summary2.el" (0 0 0 0)) ;;; Generated autoloads from mew-summary2.el (register-definition-prefixes "mew-summary2" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-summary3" "mew-summary3.el" (0 0 0 0)) ;;; Generated autoloads from mew-summary3.el (register-definition-prefixes "mew-summary3" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-summary4" "mew-summary4.el" (0 0 0 0)) ;;; Generated autoloads from mew-summary4.el (register-definition-prefixes "mew-summary4" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-syntax" "mew-syntax.el" (0 0 0 0)) ;;; Generated autoloads from mew-syntax.el (register-definition-prefixes "mew-syntax" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-thread" "mew-thread.el" (0 0 0 0)) ;;; Generated autoloads from mew-thread.el (register-definition-prefixes "mew-thread" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-unix" "mew-unix.el" (0 0 0 0)) ;;; Generated autoloads from mew-unix.el (register-definition-prefixes "mew-unix" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-vars" "mew-vars.el" (0 0 0 0)) ;;; Generated autoloads from mew-vars.el (register-definition-prefixes "mew-vars" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-vars2" "mew-vars2.el" (0 0 0 0)) ;;; Generated autoloads from mew-vars2.el (register-definition-prefixes "mew-vars2" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-vars3" "mew-vars3.el" (0 0 0 0)) ;;; Generated autoloads from mew-vars3.el (register-definition-prefixes "mew-vars3" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-varsx" "mew-varsx.el" (0 0 0 0)) ;;; Generated autoloads from mew-varsx.el (register-definition-prefixes "mew-varsx" '("mew-defvar")) -;;;*** -;;;### (autoloads nil "mew-virtual" "mew-virtual.el" (0 0 0 0)) ;;; Generated autoloads from mew-virtual.el (register-definition-prefixes "mew-virtual" '("mew-")) -;;;*** -;;;### (autoloads nil "mew-win32" "mew-win32.el" (0 0 0 0)) ;;; Generated autoloads from mew-win32.el (register-definition-prefixes "mew-win32" '("mew-")) - -;;;*** -;;;### (autoloads nil nil ("mew-pkg.el") (0 0 0 0)) +;;; End of scraped data + +(provide 'mew-autoloads) -;;;*** - ;; Local Variables: ;; version-control: never ;; no-byte-compile: t ;; no-update-autoloads: t -;; coding: utf-8 +;; no-native-compile: t +;; coding: utf-8-emacs-unix ;; End: + ;;; mew-autoloads.el ends here diff --git a/elpa/mew-20230415.633/mew-blvs.el b/elpa/mew-20240911.749/mew-blvs.el similarity index 100% rename from elpa/mew-20230415.633/mew-blvs.el rename to elpa/mew-20240911.749/mew-blvs.el diff --git a/elpa/mew-20230415.633/mew-bq.el b/elpa/mew-20240911.749/mew-bq.el similarity index 99% rename from elpa/mew-20230415.633/mew-bq.el rename to elpa/mew-20240911.749/mew-bq.el index 6ac8cfd1..19cb7720 100644 --- a/elpa/mew-20230415.633/mew-bq.el +++ b/elpa/mew-20240911.749/mew-bq.el @@ -160,7 +160,7 @@ (t (aset ret j (or prefix ?=)) (setq j (1+ j)) - (aset ret j (aref "0123456789ABCDEF" (lsh char -4))) + (aset ret j (aref "0123456789ABCDEF" (ash char -4))) (setq j (1+ j)) (aset ret j (aref "0123456789ABCDEF" (logand char 15))))) (setq j (1+ j))) @@ -182,7 +182,7 @@ (aset ret j char) (aset ret j ?:) (setq j (1+ j)) - (aset ret j (aref "0123456789abcdef" (lsh char -4))) + (aset ret j (aref "0123456789abcdef" (ash char -4))) (setq j (1+ j)) (aset ret j (aref "0123456789abcdef" (logand char 15)))) (setq j (1+ j))) @@ -847,7 +847,7 @@ That is, each line may be more than 75." (aset ret j char) (aset ret j ?%) (setq j (1+ j)) - (aset ret j (aref "0123456789ABCDEF" (lsh char -4))) + (aset ret j (aref "0123456789ABCDEF" (ash char -4))) (setq j (1+ j)) (aset ret j (aref "0123456789ABCDEF" (logand char 15)))) (setq j (1+ j))) diff --git a/elpa/mew-20230415.633/mew-cache.el b/elpa/mew-20240911.749/mew-cache.el similarity index 100% rename from elpa/mew-20230415.633/mew-cache.el rename to elpa/mew-20240911.749/mew-cache.el diff --git a/elpa/mew-20230415.633/mew-complete.el b/elpa/mew-20240911.749/mew-complete.el similarity index 99% rename from elpa/mew-20230415.633/mew-complete.el rename to elpa/mew-20240911.749/mew-complete.el index d47a3a1f..f5d4f22c 100644 --- a/elpa/mew-20230415.633/mew-complete.el +++ b/elpa/mew-20240911.749/mew-complete.el @@ -418,7 +418,7 @@ the cursor is inserted." (defun mew-circular-complete-switch () "A switch function to call a function defined to -'mew-circular-complete-function'." +`mew-circular-complete-function'." (interactive) (if mew-circular-complete-function (funcall mew-circular-complete-function))) @@ -478,7 +478,7 @@ the cursor is inserted." (defun mew-expand-address () "Address expansion function for To:, Cc:, etc. -'user@domain' will be expands 'name ' if +`user@domain' will be expands `name ' if the name exists." (interactive) (let ((word (mew-delete-backward-char)) func name) diff --git a/elpa/mew-20230415.633/mew-config.el b/elpa/mew-20240911.749/mew-config.el similarity index 96% rename from elpa/mew-20230415.633/mew-config.el rename to elpa/mew-20240911.749/mew-config.el index d47623b7..36987e71 100644 --- a/elpa/mew-20230415.633/mew-config.el +++ b/elpa/mew-20240911.749/mew-config.el @@ -516,6 +516,30 @@ (defun mew-use-format-flowed (&optional case) (mew-cfent-value case "use-format-flowed" mew-use-format-flowed)) +;; + +(defun mew-oauth2-client-id (&optional case) + (mew-cfent-value case "oauth2-client-id" mew-oauth2-client-id)) + +(defun mew-oauth2-client-secret (&optional case) + (mew-cfent-value case "oauth2-client-secret" mew-oauth2-client-secret)) + +(defun mew-oauth2-redirect-url (&optional case) + (mew-cfent-value case "oauth2-redirect-url" mew-oauth2-redirect-url)) + +(defun mew-oauth2-redirect-port (&optional case) + (mew-cfent-value case "oauth2-redirect-port" mew-oauth2-redirect-port)) + +(defun mew-oauth2-auth-url (&optional case) + (mew-cfent-value case "oauth2-auth-url" mew-oauth2-auth-url)) + +(defun mew-oauth2-token-url (&optional case) + (mew-cfent-value case "oauth2-token-url" mew-oauth2-token-url)) + +(defun mew-oauth2-resource-url (&optional case) + (mew-cfent-value case "oauth2-resource-url" mew-oauth2-resource-url)) + + ;;; ;;; Setting case ;;; @@ -604,7 +628,7 @@ fields in the header according to the new value." (mew-draft-header-insert mew-x-mailer: mew-x-mailer))))) (defun mew-draft-get-case-by-guess (&optional alist) - "Guess case according to 'mew-case-guess-alist'." + "Guess case according to `mew-case-guess-alist'." (unless alist (setq alist mew-case-guess-alist)) (let ((cases (mew-refile-guess-by-alist1 alist))) (if cases diff --git a/elpa/mew-20230415.633/mew-const.el b/elpa/mew-20240911.749/mew-const.el similarity index 100% rename from elpa/mew-20230415.633/mew-const.el rename to elpa/mew-20240911.749/mew-const.el diff --git a/elpa/mew-20230415.633/mew-darwin.el b/elpa/mew-20240911.749/mew-darwin.el similarity index 100% rename from elpa/mew-20230415.633/mew-darwin.el rename to elpa/mew-20240911.749/mew-darwin.el diff --git a/elpa/mew-20230415.633/mew-decode.el b/elpa/mew-20240911.749/mew-decode.el similarity index 99% rename from elpa/mew-20230415.633/mew-decode.el rename to elpa/mew-20240911.749/mew-decode.el index 46b8025c..882d28a1 100644 --- a/elpa/mew-20230415.633/mew-decode.el +++ b/elpa/mew-20240911.749/mew-decode.el @@ -119,8 +119,8 @@ ,@body))) (defun mew-summary-toggle-header-veil () - "If 'mew-use-header-veil' is non-nil, field lines of To: and Cc: -over 'mew-header-veil-count' are covered with invisible veils. + "If `mew-use-header-veil' is non-nil, field lines of To: and Cc: +over `mew-header-veil-count' are covered with invisible veils. This commands toggles visibility of these lines." (interactive) (when (and mew-use-header-veil (get-buffer (mew-buffer-message))) @@ -605,7 +605,7 @@ Return a part syntax after moving the beginning of the content body." (ct (mew-syntax-get-value ctl 'cap)) (textp (mew-ct-textp ct)) (cte (or (mew-syntax-get-cte syntax) mew-7bit)) - (multi-err t) (encap nil) type hend format delsp) + (multi-err t) (encap nil) hend format delsp cooked-textp) ;; the beginning of the content body (cond ((not (mew-cte-p cte)) @@ -685,11 +685,12 @@ Return a part syntax after moving the beginning of the content body." ;; ct may be changed to apo ;; or single in multipart/alternative ;; or single in multipart/security - (setq type (mew-syntax-get-value (mew-syntax-get-ct syntax) 'cap)) + (setq cooked-textp (and (string= mew-ct-txt (mew-syntax-get-value (mew-syntax-get-ct syntax) 'cap)) + (not (mew-syntax-from-alternative syntax)))) (setq hend (mew-syntax-get-end syntax)) (unless hend (mew-syntax-set-end syntax (point-max))) - (when (and (string= type mew-ct-txt) + (when (and cooked-textp (setq format (mew-syntax-get-param ctl "format")) (mew-case-equal format "flowed")) (setq delsp (mew-syntax-get-param ctl "delsp")) @@ -699,7 +700,7 @@ Return a part syntax after moving the beginning of the content body." (mew-decode-flowed (mew-syntax-get-begin syntax) (point-max) delsp) (setq hend nil)) ;; highlight in the cache buffers only - (when (and (string= type mew-ct-txt) + (when (and cooked-textp (string-match mew-buffer-cache-prefix (buffer-name))) (mew-highlight-body-region (mew-syntax-get-begin syntax) (point-max))) (unless hend diff --git a/elpa/mew-20230415.633/mew-demo.el b/elpa/mew-20240911.749/mew-demo.el similarity index 100% rename from elpa/mew-20230415.633/mew-demo.el rename to elpa/mew-20240911.749/mew-demo.el diff --git a/elpa/mew-20230415.633/mew-draft.el b/elpa/mew-20240911.749/mew-draft.el similarity index 99% rename from elpa/mew-20230415.633/mew-draft.el rename to elpa/mew-20240911.749/mew-draft.el index 0e90a82e..f4dba45f 100644 --- a/elpa/mew-20230415.633/mew-draft.el +++ b/elpa/mew-20240911.749/mew-draft.el @@ -524,7 +524,7 @@ citation prefix and label. (defun mew-cite-strings () "A function to create cite labels according to -'mew-cite-format' and 'mew-cite-fields'." +`mew-cite-format' and `mew-cite-fields'." (if (null mew-cite-fields) "" (let* ((vals (mapcar 'mew-cite-get-value mew-cite-fields)) @@ -562,7 +562,7 @@ citation prefix and label. (defun mew-cite-prefix-username () "A good candidate for mew-cite-prefix-function. -The citation style is 'from_address> ', e.g. 'kazu> '" +The citation style is `from_address> ', e.g. `kazu> '" (let* ((from (mew-header-parse-address mew-from:)) (user (mew-addrstr-extract-user from)) (func (mew-addrbook-func mew-addrbook-for-cite-prefix)) @@ -607,13 +607,13 @@ format=flowed is used on composing." (defun mew-draft-use-format-flowed (&optional arg) "Toggle the use of format=flowed for the current draft. -If called with '\\[universal-argument]', enable format=flowed if the argument +If called with `\\[universal-argument]', enable format=flowed if the argument is positive. You can use `mew-draft-use-format-flowed-hooks' to enable interesting minor modes according to whether the message is flowed or not. Here is an example: -\(add-hook 'mew-draft-use-format-flowed-hooks - '(lambda() +\(add-hook \\='mew-draft-use-format-flowed-hooks + \\='(lambda() (if mew-use-format-flowed (progn (auto-fill-mode 0) @@ -952,7 +952,7 @@ Set privacy service which will be effective when \\[mew-draft-make-message]." (defvar mew-draft-privacy-method-alist '(("pgp" . pgp) ("smime" . smime))) (defun mew-draft-set-privacy-method () - "Set mew-draft-privacy-method. 'pgp or 'smime." + "Set mew-draft-privacy-method. `pgp' or `smime'." (interactive) (let ((method (completing-read "Privacy method: " mew-draft-privacy-method-alist nil t))) (setq mew-draft-privacy-method diff --git a/elpa/mew-20230415.633/mew-edit.el b/elpa/mew-20240911.749/mew-edit.el similarity index 99% rename from elpa/mew-20230415.633/mew-edit.el rename to elpa/mew-20240911.749/mew-edit.el index 71edf4b3..27a9465c 100644 --- a/elpa/mew-20230415.633/mew-edit.el +++ b/elpa/mew-20240911.749/mew-edit.el @@ -656,9 +656,9 @@ typically included in a MIME-encapsulated error message. 2. In +queue or +postq, the message is moved to +draft and is edited. 3. Otherwise, the message is copied to +draft and is edited. -For the other folders, if mew-case-guess-when-prepared is 't', each +For the other folders, if mew-case-guess-when-prepared is `t', each fields of the original header is replaced according to a guessed -sending case. If called with '\\[universal-argument]', the original +sending case. If called with `\\[universal-argument]', the original header is reserved. See also mew-summary-edit-again." @@ -825,7 +825,7 @@ The message is assumed to be a valid MIME message." (defun mew-summary-edit-again () "Edit an old fashioned error message in which the original message -is encapsulated after strings defined in 'mew-summary-edit-again-regex' +is encapsulated after strings defined in `mew-summary-edit-again-regex' An example is \"----- Original message follows -----\". See also mew-summary-reedit." (interactive) diff --git a/elpa/mew-20230415.633/mew-encode.el b/elpa/mew-20240911.749/mew-encode.el similarity index 99% rename from elpa/mew-20230415.633/mew-encode.el rename to elpa/mew-20240911.749/mew-encode.el index 8910d06a..64b4399d 100644 --- a/elpa/mew-20230415.633/mew-encode.el +++ b/elpa/mew-20240911.749/mew-encode.el @@ -734,7 +734,7 @@ (narrow-to-region beg end) (when (mew-encode-flowed-check) (setq flowed t) - (setq delsp (mew-charset-to-delsp charset)) + (setq delsp (mew-delsp-p)) (setq column mew-flowed-fold-length) (if delsp (setq column (1- column))) (while (not (eobp)) @@ -742,6 +742,14 @@ (forward-line))))) (list flowed delsp))) +(defun mew-delsp-p () + (save-excursion + (let ((n (- (point-max) (point-min))) + (i 0)) + (while (re-search-forward " +" nil t) + (setq i (+ i 1))) + (< (/ (* i 100) n) mew-flowed-delsp-threshold)))) + (defun mew-encode-flowed-remove-trailing-sp () (while (and (not (bobp)) (= (char-before) mew-sp)) (delete-char -1))) diff --git a/elpa/mew-20230415.633/mew-env.el b/elpa/mew-20240911.749/mew-env.el similarity index 99% rename from elpa/mew-20230415.633/mew-env.el rename to elpa/mew-20240911.749/mew-env.el index 218619a5..3870fbc2 100644 --- a/elpa/mew-20230415.633/mew-env.el +++ b/elpa/mew-20240911.749/mew-env.el @@ -17,7 +17,7 @@ (and ent (setq auto-mode-alist (delq ent auto-mode-alist)))) (defvar mew-connection-type1 nil - "Connection type for many processes. 't' means PTY and 'nil' means PIPE. + "Connection type for many processes. `t' means PTY and `nil' means PIPE. PIPE is usually recommended for speed but some OSes such as Linux requires PTY.") diff --git a/elpa/mew-20230415.633/mew-env0.el b/elpa/mew-20240911.749/mew-env0.el similarity index 100% rename from elpa/mew-20230415.633/mew-env0.el rename to elpa/mew-20240911.749/mew-env0.el diff --git a/elpa/mew-20230415.633/mew-exec.el b/elpa/mew-20240911.749/mew-exec.el similarity index 99% rename from elpa/mew-20230415.633/mew-exec.el rename to elpa/mew-20240911.749/mew-exec.el index af52904a..ab26d469 100644 --- a/elpa/mew-20230415.633/mew-exec.el +++ b/elpa/mew-20240911.749/mew-exec.el @@ -41,8 +41,8 @@ DELS represents the messages to be deleted." (mew-summary-unlink-msgs src dels))) (defun mew-mark-exec-delete (src dels) - "Delete messages from the SRC folder according to 'mew-trash-folder' -and 'mew-trash-folder-list'. + "Delete messages from the SRC folder according to `mew-trash-folder' +and `mew-trash-folder-list'. DELS represents the messages to be deleted." (when dels ;; see also mew-summary-exec-remote-get-execinfo. @@ -233,8 +233,8 @@ all marked messages before the current message." (mew-summary-exec-region (point-min) (point-max)))) (defun mew-summary-exec-refile (&optional arg) - "Process messages marked with 'o'. -If called with '\\[universal-argument]', only messages whose + "Process messages marked with `o'. +If called with `\\[universal-argument]', only messages whose destination is the same as that of the current message are processed." (interactive "P") (let* ((ent (assoc mew-mark-refile mew-mark-spec)) diff --git a/elpa/mew-20230415.633/mew-ext.el b/elpa/mew-20240911.749/mew-ext.el similarity index 100% rename from elpa/mew-20230415.633/mew-ext.el rename to elpa/mew-20240911.749/mew-ext.el diff --git a/elpa/mew-20230415.633/mew-fib.el b/elpa/mew-20240911.749/mew-fib.el similarity index 100% rename from elpa/mew-20230415.633/mew-fib.el rename to elpa/mew-20240911.749/mew-fib.el diff --git a/elpa/mew-20230415.633/mew-func.el b/elpa/mew-20240911.749/mew-func.el similarity index 99% rename from elpa/mew-20230415.633/mew-func.el rename to elpa/mew-20240911.749/mew-func.el index 928a4085..e8ab2311 100644 --- a/elpa/mew-20230415.633/mew-func.el +++ b/elpa/mew-20240911.749/mew-func.el @@ -158,7 +158,7 @@ This is O(N^2). So, do not use this function with a large LST." (defun mew-assoc-match (key alist nth) "Return list in ALIST that KEY regex is matched to its NTH element. -Case is ignored. Note that the NTH element is 't', +Case is ignored. Note that the NTH element is `t', the list is always selected." (let ((case-fold-search t) n) (catch 'loop @@ -170,7 +170,7 @@ the list is always selected." (defun mew-assoc-match2 (key alist nth) "Return list in ALIST whose NTH regex is matched to KEY. -Case is ignored. Note that the NTH element is 't', +Case is ignored. Note that the NTH element is `t', the list is always selected." (let ((case-fold-search t) n) (catch 'loop @@ -182,7 +182,7 @@ the list is always selected." (defun mew-assoc-match3 (key alist nth) "Return list in ALIST whose NTH regex is matched to KEY. -Case is ignored. Note that the NTH element is 't', +Case is ignored. Note that the NTH element is `t', the list is always selected. The deference from mew-assoc-match2 is that this returns the position of a selected list in addition to the list itself." @@ -1065,6 +1065,12 @@ and sets buffer-file-coding-system." (aset ret i (aref base (% (mew-random) baselen)))) ret)) +(defun mew-random-binary-string (len) + (let ((ret (mew-make-string len))) + (dotimes (i len) + (aset ret i (% (mew-random) 255))) + ret)) + (defun mew-random-filename (dir len nump &optional suffix) (let ((cnt 0) (max 20) ;; ad hoc file filepath) @@ -1306,7 +1312,7 @@ and sets buffer-file-coding-system." (defun mew-get-my-address-regex-list () "This creates a list of regular expression used to tell whether or not a given address is mine. The list is created -from (mew-user), (mew-mail-address), and 'mew-mail-address-list'." +from (mew-user), (mew-mail-address), and `mew-mail-address-list'." (cons (concat "^" (regexp-quote (mew-user)) "$") (cons (concat "^" (regexp-quote (mew-mail-address)) "$") mew-mail-address-list))) diff --git a/elpa/mew-20230415.633/mew-gemacs.el b/elpa/mew-20240911.749/mew-gemacs.el similarity index 100% rename from elpa/mew-20230415.633/mew-gemacs.el rename to elpa/mew-20240911.749/mew-gemacs.el diff --git a/elpa/mew-20230415.633/mew-header.el b/elpa/mew-20240911.749/mew-header.el similarity index 100% rename from elpa/mew-20230415.633/mew-header.el rename to elpa/mew-20240911.749/mew-header.el diff --git a/elpa/mew-20230415.633/mew-highlight.el b/elpa/mew-20240911.749/mew-highlight.el similarity index 98% rename from elpa/mew-20230415.633/mew-highlight.el rename to elpa/mew-20240911.749/mew-highlight.el index 91d305cc..72fb220f 100644 --- a/elpa/mew-20230415.633/mew-highlight.el +++ b/elpa/mew-20240911.749/mew-highlight.el @@ -153,10 +153,7 @@ (defun mew-highlight-body-region (BEG END &optional draft rehighlight) (when (and (or mew-use-highlight-body mew-use-highlight-url) (or (= 0 mew-highlight-body-max-size) - (<= BEG mew-highlight-body-max-size))) - (unless (or (= 0 mew-highlight-body-max-size) - (<= END mew-highlight-body-max-size)) - (setq END mew-highlight-body-max-size)) + (<= (- END BEG) mew-highlight-body-max-size))) (let* ((inhibit-point-motion-hooks t) (cite-regex mew-highlight-body-regex-cite) (cmt-regex mew-highlight-body-regex-comment) diff --git a/elpa/mew-20230415.633/mew-imap.el b/elpa/mew-20240911.749/mew-imap.el similarity index 97% rename from elpa/mew-20230415.633/mew-imap.el rename to elpa/mew-20240911.749/mew-imap.el index 0df21f98..495eb965 100644 --- a/elpa/mew-20230415.633/mew-imap.el +++ b/elpa/mew-20240911.749/mew-imap.el @@ -7,6 +7,8 @@ (require 'mew) +(declare-function string-replace "subr") + (defvar mew-imap-msgid-file ".mew-msgid") (defvar mew-imap-folder-alist-file ".mew-folder-alist") (defvar mew-imap-folder-alist nil) @@ -1014,22 +1016,11 @@ (defun mew-imap-command-auth-xoauth2 (pro pnm) (let* ((user (mew-imap-get-user pnm)) - (token (mew-auth-oauth2-token-access-token)) - (auth-string (mew-auth-xoauth2-auth-string user token))) - ;; XXX: need to reset satus if token is nil. + (tag (mew-imap-passtag pnm)) + (auth-string (mew-xoauth2-auth-string user tag (mew-imap-get-case pnm)))) (mew-imap-process-send-string pro pnm (format "AUTHENTICATE XOAUTH2 %s" auth-string)) (mew-imap-set-status pnm "auth-xoauth2"))) -;; XXX: defalias does not work! -;; (defalias 'mew-imap2-command-auth-xoauth2 'mew-imap-command-auth-xoauth2) -(defun mew-imap2-command-auth-xoauth2 (pro pnm) - (let* ((user (mew-imap2-get-user pnm)) - (token (mew-auth-oauth2-token-access-token)) - (auth-string (mew-auth-xoauth2-auth-string user token))) - ;; XXX: need to reset satus if token is nil. - (mew-imap2-process-send-string pro pnm (format "AUTHENTICATE XOAUTH2 %s" auth-string)) - (mew-imap2-set-status pnm "auth-xoauth2"))) - (defun mew-imap-command-xoauth2-wpwd (pro pnm) (mew-imap-set-done pnm t) (mew-passwd-set-passwd (mew-imap-passtag pnm) nil) @@ -1037,15 +1028,6 @@ ;; XXX: Should be cared more! Clear process and filter without sending LOGOUT. (error "IMAP XOAUTH2 token is wrong!")) -;; XXX: defalias does not work! -;; (defalias 'mew-imap2-command-xoauth2-wpwd 'mew-imap-command-xoauth2-wpwd) -(defun mew-imap2-command-xoauth2-wpwd (pro pnm) - (mew-imap2-set-done pnm t) - (mew-passwd-set-passwd (mew-imap2-passtag pnm) nil) - (delete-process pro) - ;; XXX: Should be cared more! Clear process and filter without sending LOGOUT. - (error "IMAP XOAUTH2 token is wrong!")) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Sub functions @@ -1314,6 +1296,8 @@ (setq ret (cons (mew-make-mark-hist :msg msg :mark mew-mark-read) ret)))))) (nreverse ret))) +(defvar mew--gnutls-imap-greeting nil) + (defun mew-imap-retrieve (case directive bnm &rest args) (let* ((server (mew-imap-server case)) (user (mew-imap-user case)) @@ -1462,11 +1446,13 @@ (set-process-buffer process buf) ;; (when sslnp - ;; GnuTLS requires a client-initiated command after the - ;; session is established or upgraded to use TLS because - ;; no additional greeting from the server. - (mew-imap-set-status pnm "capability") - (mew-imap-command-capability process pnm)) + ;; GnuTLS receives IMAP greeting in its internals + ;; and passes it as a return value. + ;; We store the value in the variable mew--gnutls-imap-greeting + ;; and pass it to the filter to process the greeting. + (mew-imap-filter process + (string-replace "\r\n" "\n" + mew--gnutls-imap-greeting))) )))) (defun mew-imap-exec-recover (bnm) @@ -1545,7 +1531,7 @@ (setq next (mew-imap-fsm-next status (if (string= status "auth-xoauth2") - (mew-auth-xoauth2-json-status (mew-match-string 1)) + (mew-xoauth2-json-status (mew-match-string 1)) "OK")))) ((and (goto-char (point-max)) (= (forward-line -1) 0) (looking-at eos)) (mew-imap-set-tag pnm nil) @@ -1616,7 +1602,8 @@ (file (mew-expand-file bnm mew-imap-msgid-file)) (buf (process-buffer process)) (virtual-info (mew-imap-get-virtual-info pnm)) - (disp-info (mew-imap-get-disp-info pnm))) + (disp-info (mew-imap-get-disp-info pnm)) + (sinfo-mark-hist (mew-sinfo-get-mark-hist))) (save-excursion (mew-imap-debug "IMAP SENTINEL" event) (set-process-buffer process nil) @@ -1683,7 +1670,9 @@ (mew-net-uidl-db-set (mew-imap-passtag pnm) uidl) (cond ((= rttl 0) - (mew-imap-message pnm "No new messages")) + (mew-imap-message pnm "No new messages") + (when sinfo-mark-hist + (mew-summary-folder-cache-save))) ((= rttl 1) (mew-imap-message pnm "1 message retrieved") (mew-summary-folder-cache-save)) @@ -1693,7 +1682,9 @@ ((eq directive 'get) (cond ((= rttl 0) - (mew-imap-message pnm "The message does not exist")) + (mew-imap-message pnm "The message does not exist") + (when sinfo-mark-hist + (mew-summary-folder-cache-save))) ((= rttl 1) (mew-imap-message pnm "1 message retrieved") (mew-summary-folder-cache-save)) @@ -1704,7 +1695,9 @@ (mew-biff-clear) (cond ((or (= rttl 0) (null msgid)) - (mew-imap-message pnm "No new messages")) + (mew-imap-message pnm "No new messages") + (when sinfo-mark-hist + (mew-summary-folder-cache-save))) ((= rttl 1) (mew-imap-message pnm "1 message retrieved") (mew-lisp-save file msgid nil 'unlimit) @@ -1720,7 +1713,8 @@ (mew-inherit-offline t)) (mew-mark-exec-refile bnm movs))) (when (or kils movs) - (mew-mark-kill-invisible) + (mew-mark-kill-invisible)) + (when (or kils movs sinfo-mark-hist) (mew-summary-folder-cache-save)) (cond ((= rttl 1) diff --git a/elpa/mew-20230415.633/mew-imap2.el b/elpa/mew-20240911.749/mew-imap2.el similarity index 96% rename from elpa/mew-20230415.633/mew-imap2.el rename to elpa/mew-20240911.749/mew-imap2.el index 28350577..f05da86a 100644 --- a/elpa/mew-20230415.633/mew-imap2.el +++ b/elpa/mew-20240911.749/mew-imap2.el @@ -280,6 +280,24 @@ (epasswd (mew-base64-encode-string passwd))) (mew-imap2-process-send-string2 pro epasswd))) +;;;;;;;;;;;;;;;; +;; XOAUTH2 + +(defun mew-imap2-command-auth-xoauth2 (pro pnm) + (let* ((user (mew-imap2-get-user pnm)) + (tag (mew-imap2-passtag pnm)) + (auth-string (mew-xoauth2-auth-string user tag (mew-imap-get-case pnm)))) + ;; XXX: need to reset satus if token is nil. + (mew-imap2-process-send-string pro pnm (format "AUTHENTICATE XOAUTH2 %s" auth-string)) + (mew-imap2-set-status pnm "auth-xoauth2"))) + +(defun mew-imap2-command-xoauth2-wpwd (pro pnm) + (mew-imap2-set-done pnm t) + (mew-passwd-set-passwd (mew-imap2-passtag pnm) nil) + (delete-process pro) + ;; XXX: Should be cared more! Clear process and filter without sending LOGOUT. + (error "IMAP XOAUTH2 token is wrong!")) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Sub functions @@ -581,7 +599,8 @@ with '*' in the region are handled." (setq next (mew-imap2-fsm-next status (if (string= status "auth-xoauth2") - (mew-auth-xoauth2-json-status (mew-match-string 1)) + (mew-xoauth2-json-status (mew-match-string 1)) + "OK" "OK")))) ((string-match eos str) (mew-imap2-set-tag pnm nil) diff --git a/elpa/mew-20230415.633/mew-key.el b/elpa/mew-20240911.749/mew-key.el similarity index 100% rename from elpa/mew-20230415.633/mew-key.el rename to elpa/mew-20240911.749/mew-key.el diff --git a/elpa/mew-20230415.633/mew-lang-jp.el b/elpa/mew-20240911.749/mew-lang-jp.el similarity index 99% rename from elpa/mew-20230415.633/mew-lang-jp.el rename to elpa/mew-20240911.749/mew-lang-jp.el index 91f7ea79..56349f88 100644 --- a/elpa/mew-20230415.633/mew-lang-jp.el +++ b/elpa/mew-20240911.749/mew-lang-jp.el @@ -181,7 +181,7 @@ "\\(\\(s?https?\\|ftp\\|gopher\\|telnet\\|wais\\)://\\)" "\\)" "[^ $B!!(B\t\n>)\"]*" - "[^] $B!!(B\t\n>.,:)\"]+")) + "[^] $B!!(B\t\n>,:)\"]+")) (provide 'mew-lang-jp) diff --git a/elpa/mew-20230415.633/mew-lang-kr.el b/elpa/mew-20240911.749/mew-lang-kr.el similarity index 100% rename from elpa/mew-20230415.633/mew-lang-kr.el rename to elpa/mew-20240911.749/mew-lang-kr.el diff --git a/elpa/mew-20230415.633/mew-lang-latin.el b/elpa/mew-20240911.749/mew-lang-latin.el similarity index 100% rename from elpa/mew-20230415.633/mew-lang-latin.el rename to elpa/mew-20240911.749/mew-lang-latin.el diff --git a/elpa/mew-20230415.633/mew-local.el b/elpa/mew-20240911.749/mew-local.el similarity index 98% rename from elpa/mew-20230415.633/mew-local.el rename to elpa/mew-20240911.749/mew-local.el index 7a4bbce1..4dd7b08c 100644 --- a/elpa/mew-20230415.633/mew-local.el +++ b/elpa/mew-20240911.749/mew-local.el @@ -29,10 +29,10 @@ Subdirectories are expressed by a list. This function uses two techniques for speed up. One is to gather candidates of directory by matching -'mew-regex-folder-candidate'. The default is +`mew-regex-folder-candidate'. The default is \"^[^.0-9]\\|^[0-9].*[^0-9]\". So, typical messages whose name is numeric are not gathered. This makes it faster to check whether or not -each candidate is a directory in 'while' loop. +each candidate is a directory in `while' loop. The other is to see if the link count of a directory is 2. If so, the directory does not have subdirectories. So, it is not necessary to @@ -56,10 +56,10 @@ Subdirectories are expressed by a list. This function uses one technique for speed up. It is to gather candidates of directory by matching -'mew-regex-folder-candidate'. The default is +`mew-regex-folder-candidate'. The default is \"^[^.0-9]\\|^[0-9].*[^0-9]\". So, typical messages whose name is numeric are not gathered. This makes it faster to check whether or not -each candidate is a directory in 'while' loop." +each candidate is a directory in `while' loop." (let* ((default-directory (expand-file-name dir default-directory)) (dirent (directory-files "." nil mew-regex-folder-candidate)) ;; MUST sort dirs ent subdirs) @@ -171,7 +171,7 @@ each candidate is a directory in 'while' loop." ;;; (defun mew-local-folder-insert (folder) - "Insert FOLDER to 'mew-local-folder-alist'. + "Insert FOLDER to `mew-local-folder-alist'. Binary search is used for speed reasons." (let (dir subdir) (unless (string-match mew-regex-ignore-folders folder) diff --git a/elpa/mew-20230415.633/mew-mark.el b/elpa/mew-20240911.749/mew-mark.el similarity index 99% rename from elpa/mew-20230415.633/mew-mark.el rename to elpa/mew-20240911.749/mew-mark.el index fd74d2a1..dd3a3d59 100644 --- a/elpa/mew-20230415.633/mew-mark.el +++ b/elpa/mew-20240911.749/mew-mark.el @@ -92,7 +92,7 @@ If optional argument NO-MSG is non-nil, no message is displayed." ;; (defun mew-summary-mark-undo-all () - "Unmark all message marked with 'o' or 'D' or 'X'." + "Unmark all message marked with `o' or `D' or `X'." (interactive) (message "Unmarking...") (dolist (mark mew-summary-mark-undo-marks) @@ -701,8 +701,8 @@ BEG and END." ;;; (defun mew-summary-mark-duplicated (&optional arg) - "Put the mark specified by 'mew-mark-duplicated' on duplicated -messages. If called with '\\[universal-argument]', process in the + "Put the mark specified by `mew-mark-duplicated' on duplicated +messages. If called with `\\[universal-argument]', process in the region." (interactive "P") (mew-summary-not-in-queue @@ -863,7 +863,7 @@ the specified mark." (defun mew-summary-exchange-marks () "Exchange the first input mark to the second one. -The 'o' mark is not exchangeable." +The `o' mark is not exchangeable." (interactive) (let* ((from (mew-summary-input-exchangeable-mark "Input mark from: ")) (to (mew-summary-input-exchangeable-mark "Input mark to: ")) diff --git a/elpa/mew-20230415.633/mew-message.el b/elpa/mew-20240911.749/mew-message.el similarity index 98% rename from elpa/mew-20230415.633/mew-message.el rename to elpa/mew-20240911.749/mew-message.el index 3f5b26a9..5ec58a11 100644 --- a/elpa/mew-20230415.633/mew-message.el +++ b/elpa/mew-20240911.749/mew-message.el @@ -46,7 +46,7 @@ (setq mode-line-process (format " %s %s/%s" flag fld msg))))) (defun mew-message-next-page (&optional lines) - "Scroll up this message. Return 'nil' if more pages. Otherwise, return 't'." + "Scroll up this message. Return `nil' if more pages. Otherwise, return `t'." (interactive) (if (save-excursion (goto-char (window-end)) @@ -76,8 +76,8 @@ nil)) (defun mew-message-prev-page (&optional lines) - "Back-scroll this message. Return 'nil' if more pages. -Otherwise, return 't'." + "Back-scroll this message. Return `nil' if more pages. +Otherwise, return `t'." (interactive) (move-to-window-line 0) (if (save-excursion diff --git a/elpa/mew-20230415.633/mew-mime.el b/elpa/mew-20240911.749/mew-mime.el similarity index 99% rename from elpa/mew-20230415.633/mew-mime.el rename to elpa/mew-20240911.749/mew-mime.el index 7dffd00f..17aa63f0 100644 --- a/elpa/mew-20230415.633/mew-mime.el +++ b/elpa/mew-20240911.749/mew-mime.el @@ -673,10 +673,10 @@ Content-Type is automatically asked. And if it has both internal and external visualization mechanisms, you are asked which you want to use. -If executed with '\\[universal-argument]', you can specify a +If executed with `\\[universal-argument]', you can specify a command to be executed. -See 'mew-mime-content-type' to know how actions can be defined." +See `mew-mime-content-type' to know how actions can be defined." (interactive "P") (mew-summary-msg-or-part (let* ((fld (mew-summary-folder-name)) diff --git a/elpa/mew-20230415.633/mew-minibuf.el b/elpa/mew-20240911.749/mew-minibuf.el similarity index 99% rename from elpa/mew-20230415.633/mew-minibuf.el rename to elpa/mew-20240911.749/mew-minibuf.el index e5ac3ad1..0a2deb3f 100644 --- a/elpa/mew-20230415.633/mew-minibuf.el +++ b/elpa/mew-20240911.749/mew-minibuf.el @@ -14,18 +14,18 @@ (defvar mew-input-complete-function nil "A function to be called when TAB is typed in minibuffer. -This is used in 'mew-input-complete'.") +This is used in `mew-input-complete'.") (defun mew-input-complete () "Do completion according to the global variable -\"mew-input-complete-function\"." +`mew-input-complete-function'." (interactive) (if (and mew-input-complete-function (fboundp mew-input-complete-function)) (funcall mew-input-complete-function))) (defvar mew-input-exit-minibuffer-function nil "A function to be called when RET is typed in minibuffer. -This function are used to check validity of 'case' and sort key.") +This function are used to check validity of `case' and sort key.") (defun mew-input-exit-minibuffer () "Ensure the input meets a condition." @@ -36,8 +36,8 @@ This function are used to check validity of 'case' and sort key.") (exit-minibuffer))) (defvar mew-input-comma-function nil - "A function to be called when ',' is typed in minibuffer. -This function can be used to check validity of 'case'.") + "A function to be called when `,' is typed in minibuffer. +This function can be used to check validity of `case'.") (defun mew-input-comma () "Ensure the input meets a condition." diff --git a/elpa/mew-20230415.633/mew-mule.el b/elpa/mew-20240911.749/mew-mule.el similarity index 100% rename from elpa/mew-20230415.633/mew-mule.el rename to elpa/mew-20240911.749/mew-mule.el diff --git a/elpa/mew-20230415.633/mew-mule3.el b/elpa/mew-20240911.749/mew-mule3.el similarity index 100% rename from elpa/mew-20230415.633/mew-mule3.el rename to elpa/mew-20240911.749/mew-mule3.el diff --git a/elpa/mew-20230415.633/mew-net.el b/elpa/mew-20240911.749/mew-net.el similarity index 97% rename from elpa/mew-20230415.633/mew-net.el rename to elpa/mew-20240911.749/mew-net.el index 453d866b..e315fadd 100644 --- a/elpa/mew-20230415.633/mew-net.el +++ b/elpa/mew-20240911.749/mew-net.el @@ -474,11 +474,11 @@ (defun mew-summary-retrieve (&optional no-flush) "In local folders, retrieve messages to +inbox asynchronously -according to 'mew-mailbox-type' and 'mew-case'. -If 'mew-auto-flush-queue' is non-nil, +queue is flushed. -If called with '\\[universal-argument]', +queue is not flushed. +according to `mew-mailbox-type' and `mew-case'. +If `mew-auto-flush-queue' is non-nil, +queue is flushed. +If called with `\\[universal-argument]', +queue is not flushed. -In remote folders, visit an inbox folder and scan with 'update." +In remote folders, visit an inbox folder and scan with `update'." (interactive "P") (let (case proto inbox case:inbox mailbox) (mew-set '(case proto) (mew-summary-case-proto)) @@ -631,10 +631,10 @@ In remote folders, visit an inbox folder and scan with 'update." "Retrieve the rest of a truncated('T') message. In a LOCAL folder: a method to retrieve the message is determined -by 'mew-case' and 'mew-mailbox-type'. -If 'mew-pop-delete'/'mew-imap-delete' is non-nil, delete the message -from the mailbox. When executed with '\\[universal-argument]', -'mew-pop-delete'/'mew-imap-delete' is considered reversed. +by `mew-case' and `mew-mailbox-type'. +If `mew-pop-delete'/`mew-imap-delete' is non-nil, delete the message +from the mailbox. When executed with `\\[universal-argument]', +`mew-pop-delete'/`mew-imap-delete' is considered reversed. In a REMOTE folder: case and protocol are determined by the folder. The message in the server side is always retained." @@ -740,13 +740,13 @@ The message in the server side is always retained." (mew-summary-unlock)))) (defun mew-summary-mark-retrieve-message (&optional rev-del) - "Retrieve the rest of truncated('T') messages marked with '*'. + "Retrieve the rest of truncated(`T') messages marked with `*'. In a LOCAL folder: a method to retrieve the messages is determined by -'mew-case' and 'mew-mailbox-type'. -If 'mew-pop-delete'/'mew-imap-delete' is non-nil, delete the messages -from the mailbox. When executed with '\\[universal-argument]', -'mew-pop-delete'/'mew-imap-delete' is considered reversed. +`mew-case' and `mew-mailbox-type'. +If `mew-pop-delete'/`mew-imap-delete' is non-nil, delete the messages +from the mailbox. When executed with `\\[universal-argument]', +`mew-pop-delete'/`mew-imap-delete' is considered reversed. In a REMOTE folder: case and protocol are determined by the folder. The messages in the server side is always retained." diff --git a/elpa/mew-20230415.633/mew-nntp.el b/elpa/mew-20240911.749/mew-nntp.el similarity index 100% rename from elpa/mew-20230415.633/mew-nntp.el rename to elpa/mew-20240911.749/mew-nntp.el diff --git a/elpa/mew-20230415.633/mew-nntp2.el b/elpa/mew-20240911.749/mew-nntp2.el similarity index 100% rename from elpa/mew-20230415.633/mew-nntp2.el rename to elpa/mew-20240911.749/mew-nntp2.el diff --git a/elpa/mew-20240911.749/mew-oauth2.el b/elpa/mew-20240911.749/mew-oauth2.el new file mode 100644 index 00000000..34501644 --- /dev/null +++ b/elpa/mew-20240911.749/mew-oauth2.el @@ -0,0 +1,296 @@ +;;; mew-oauth2.el -- OAuth for Mew + +;; Author: Mew developing team +;; Created: Apri 28, 2024 + +;;; Code: + +(require 'mew) +(require 'json) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; Variables +;;; +(defvar mew-oauth2-info-list + '("code" + "client-id" "client-secret" + "redirect-url" "redirect-port" + "auth-url" "token-url" "resource-url" + )) + +(mew-info-defun "mew-oauth2-" mew-oauth2-info-list) + +(defvar mew-oauth2-client-id nil) + +(defvar mew-oauth2-client-secret nil) + +;;; + +(defvar mew-oauth2-redirect-url "http://localhost:8080") + +(defvar mew-oauth2-redirect-port 8080) + +;;; gmail + +(defvar mew-oauth2-auth-url "https://accounts.google.com/o/oauth2/auth" + "OAuth2 auth server URL.") + +(defvar mew-oauth2-token-url "https://accounts.google.com/o/oauth2/token" + "OAuth2 token server URL.") + +(defvar mew-oauth2-resource-url "https://mail.google.com/" + "URL used to request access to Mail Resources.") + +(defun mew-oauth2-debug (label string) + (when (mew-debug 'oauth2) + (with-current-buffer (get-buffer-create mew-buffer-debug) + (goto-char (point-max)) + (let ((start (point))) + (insert (format "\n<%s>\n%s\n" label string)) + (goto-char start) + (mew-crlf-to-lf)) + (goto-char (point-max))))) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; HTTP/1.1 server to get "code" +;;; + +(defvar mew-oauth2-code nil) + +(defun mew-oauth2-setup-redirect-handler (port) + "Setup OAuth2 redirect server bound to PORT. +It serves http://localhost:PORT" + (setq mew-oauth2-code nil) + (let ((proc-name (format "oauth2-redirect-handler:%d" port))) + (unless (process-status proc-name) + (make-network-process + :name proc-name + :buffer nil + :host 'local + :service port + :sentinel 'mew-oauth2-redirect-handler-sentinel + :filter 'mew-oauth2-redirect-handler-filter + :server t)))) + +(defun mew-oauth2-cleanup-redirect-handler (port) + "Clean up OAuth2 redirect servers both LISTEN and ACCEPT." + (let ((proc-name (format "oauth2-redirect-handler:%d" port))) + (mapcar (lambda (p) + (if (string= (process-contact p :name) proc-name) + (delete-process p))) + (process-list)))) + +(defun mew-oauth2-redirect-handler-sentinel (proc event) + ) + +(defun mew-oauth2-redirect-handler-filter (proc string) + (if (string-match "^GET .*[?&]code=\\([^& ]+\\)" string) + (let ((code (match-string 1 string))) + (process-send-string + proc + (concat "HTTP/1.1 200 OK\r\n" + "Content-Type: text/plain\r\n" + "\r\n" + "Mew gets the following authorization code:\n" + code "\n")) + (setq mew-oauth2-code code) + (delete-process proc)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; Getting authorization code +;;; + +(defun mew-oauth2-get-auth-code (url client-id resource-url redirect-url challenge port) + (let ((url-params + (concat + url + "?response_type=code" + "&client_id=" client-id + "&scope=" (url-hexify-string resource-url) + "&redirect_uri=" (url-hexify-string redirect-url) + "&code_challenge=" challenge + "&code_challenge_method=S256"))) + (mew-oauth2-cleanup-redirect-handler port) + (condition-case nil + (progn + (mew-oauth2-setup-redirect-handler port) + (browse-url url-params) + (mew-rendezvous (null mew-oauth2-code)) + ;; fixme condition-case + (mew-oauth2-cleanup-redirect-handler port) + mew-oauth2-code) + (error "") + (quit "")))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; Getting access_token with authorization code +;;; + +(defun mew-oauth2-get-access-token (url client-id client-secret redirect-url code verifier) + (let ((params (concat + "grant_type=authorization_code" + "&code=" code + "&code_verifier=" verifier + "&client_id=" client-id + "&client_secret=" client-secret + "&redirect_uri=" (url-hexify-string redirect-url)))) + (with-temp-buffer + (call-process "curl" nil t nil "-XPOST" url "--data" params "--silent") + (goto-char (point-min)) + (json-parse-buffer)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; Getting access_token with refresh_token +;;; + +(defun mew-oauth2-refresh-access-token (url client-id client-secret refresh-token) + (let ((params (concat + "grant_type=refresh_token" + "&client_id=" client-id + "&client_secret=" client-secret + "&refresh_token=" refresh-token))) + (with-temp-buffer + (call-process "curl" nil t nil "-XPOST" url "--data" params "--silent") + (goto-char (point-min)) + (json-parse-buffer)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; +;;; Interface +;;; + +(defun mew-xoauth2-json-status (status-string) + ;; https://developers.google.com/gmail/imap/xoauth2-protocol#error_response_2 + (let ((json-status + (ignore-errors + (json-read-from-string + (base64-decode-string status-string))))) + (if json-status + (if (string-match "^2" (cdr (assoc 'status json-status))) + "OK" ;; 2XX + "NO") ;; XXX: Anyway NO? + "OK"))) ;; XXX: Maybe OK if not JSON. + +(defun mew-xoauth2-auth-string (user tag case) + (mew-passwd-setup-master) + (let* ((tk (mew-passwd-get-passwd tag)) + (token (if (hash-table-p tk) tk (make-hash-table))) + (access-token (mew-xoauth2-get-access-token token case))) + (mew-passwd-set-passwd tag token) + ;; base64(user=user@example.com^Aauth=Bearer ya29vF9dft4...^A^A) + (base64-encode-string (format "user=%s\1auth=Bearer %s\1\1" user access-token) t))) + +(defun mew-xoauth2-get-access-token (token case) + (let* ((expire (gethash :expire token)) + (access-token (gethash :access_token token)) + (refresh-token (gethash :refresh_token token))) + (cond + ((and access-token (time-less-p (current-time) expire)) + access-token) + (refresh-token + (let* ((json (mew-oauth2-refresh-access-token + (mew-oauth2-token-url case) + (mew-oauth2-client-id case) + (mew-oauth2-client-secret case) + refresh-token)) + (expires-in (gethash "expires_in" json)) + (refresh-token (gethash "refresh_token" json))) + (setq access-token (gethash "access_token" json)) + (setq expire (if expires-in (time-add (- expires-in 100) (current-time)) nil)) + (puthash :access_token access-token token) + (if refresh-token (puthash :refresh_token refresh-token token)) + (puthash :expire expire token) + access-token)) + (t + (let* ((verifier (mew-oauth2-pkce-code-verifier)) + (challenge (mew-oauth2-pkce-code-challenge verifier)) + (auth-code (mew-oauth2-get-auth-code + (mew-oauth2-auth-url case) + (mew-oauth2-client-id case) + (mew-oauth2-resource-url case) + (mew-oauth2-redirect-url case) + challenge + (mew-oauth2-redirect-port case))) + (json (mew-oauth2-get-access-token + (mew-oauth2-token-url case) + (mew-oauth2-client-id case) + (mew-oauth2-client-secret case) + (mew-oauth2-redirect-url case) + auth-code + verifier)) + (expires-in (gethash "expires_in" json))) + (setq access-token (gethash "access_token" json)) + (setq refresh-token (gethash "refresh_token" json)) + (setq expire (if expires-in (time-add (- expires-in 100) (current-time)) nil)) + (puthash :access_token access-token token) + (puthash :refresh_token refresh-token token) + (puthash :expire expire token) + access-token))))) +;;; + +;; RFC 7636 Appendix A + +(defun mew-numlist-to-string (nums) + (apply 'concat (seq-map 'unibyte-string nums))) + +;; (mew-base64-url-without-padding-encode +;; (mew-numlist-to-string '(3 236 255 224 193))) +;; "A-z_4ME" +(defun mew-base64-url-without-padding-encode (str) + (base64url-encode-string str t)) + +;; RFC 7636 Appendix B + +;; (setq rfc7636-random32 '(116 24 223 180 151 153 224 37 79 250 96 125 216 173 187 186 22 212 37 77 105 214 191 240 91 88 5 88 83 132 141 121)) +;; (setq rfc7636-verifier (mew-base64-url-without-padding-encode +;; (mew-numlist-to-string rfc7636-random32))) +;; "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk" +(defun mew-oauth2-pkce-code-verifier () + (mew-base64-url-without-padding-encode (mew-random-binary-string 32))) +;; (>= (length (mew-oauth2-pkce-code-verifier)) 43) + +;; (mew-oauth2-pkce-code-challenge rfc7636-verifier) +;; "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM" +(defun mew-oauth2-pkce-code-challenge (verifier) + (mew-base64-url-without-padding-encode + (secure-hash 'sha256 verifier nil nil t))) + +(provide 'mew-oauth2) + +;;; Copyright Notice: + +;; Copyright (C) 1996-2023 Mew developing team. +;; All rights reserved. + +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following conditions +;; are met: +;; +;; 1. Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; 2. Redistributions in binary form must reproduce the above copyright +;; notice, this list of conditions and the following disclaimer in the +;; documentation and/or other materials provided with the distribution. +;; 3. Neither the name of the team nor the names of its contributors +;; may be used to endorse or promote products derived from this software +;; without specific prior written permission. +;; +;; THIS SOFTWARE IS PROVIDED BY THE TEAM AND CONTRIBUTORS ``AS IS'' AND +;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +;; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE TEAM OR CONTRIBUTORS BE +;; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +;; BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +;; OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +;; IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +;;; mew-summary.el ends here diff --git a/elpa/mew-20230415.633/mew-passwd.el b/elpa/mew-20240911.749/mew-passwd.el similarity index 99% rename from elpa/mew-20230415.633/mew-passwd.el rename to elpa/mew-20240911.749/mew-passwd.el index 592ccbd3..62c00c22 100644 --- a/elpa/mew-20230415.633/mew-passwd.el +++ b/elpa/mew-20240911.749/mew-passwd.el @@ -230,7 +230,7 @@ (if (and key (or mew-use-cached-passwd mew-use-master-passwd)) (progn (mew-passwd-setup-master) - (if (mew-passwd-get-passwd key) + (if (stringp (mew-passwd-get-passwd key)) (progn (mew-timing) (if mew-passwd-reset-timer (mew-passwd-set-counter key 0)) diff --git a/elpa/mew-20230415.633/mew-pgp.el b/elpa/mew-20240911.749/mew-pgp.el similarity index 99% rename from elpa/mew-20230415.633/mew-pgp.el rename to elpa/mew-20240911.749/mew-pgp.el index a3ac252b..1190831c 100644 --- a/elpa/mew-20230415.633/mew-pgp.el +++ b/elpa/mew-20240911.749/mew-pgp.el @@ -1172,10 +1172,10 @@ public keyring." A PGP public key is fetch from one of the PGP PKS servers with a key ID which is extracted from the X-Mew: field. The list of the -PGP PKS servers is specified by 'mew-pgp-pks-servers'. +PGP PKS servers is specified by `mew-pgp-pks-servers'. If called with \\[universal-argument], a PGP public key is fetched -according to a URL in a field specified by 'mew-x-pgp-key-list'." +according to a URL in a field specified by `mew-x-pgp-key-list'." (interactive "P") (if arg (mew-pgp-fetch-key-by-xuri) diff --git a/elpa/mew-20230415.633/mew-pick.el b/elpa/mew-20240911.749/mew-pick.el similarity index 99% rename from elpa/mew-20230415.633/mew-pick.el rename to elpa/mew-20240911.749/mew-pick.el index 504911ef..14a1a4dc 100644 --- a/elpa/mew-20230415.633/mew-pick.el +++ b/elpa/mew-20240911.749/mew-pick.el @@ -37,8 +37,8 @@ (defun mew-summary-pick (&optional regionp) "Pick messages according to a specified pick pattern. -Then put the '*' mark onto them. 'mewl' or 'grep' is called as a -picking command. If called with '\\[universal-argument]', the +Then put the `*' mark onto them. `mewl' or `grep' is called as a +picking command. If called with `\\[universal-argument]', the target is the region." (interactive "P") (mew-pickable @@ -165,7 +165,7 @@ target is the region." (format "%d-%d" min max)))) (defun mew-summary-pick-with-mewl (pattern folder src-msgs) - "A function to pick messages matching PATTERN with 'mewl'" + "A function to pick messages matching PATTERN with `mewl'" (let ((pfolder (mew-scan-mewl-folder (mew-expand-folder2 folder))) (range (mew-summary-pick-range src-msgs)) (opts (list "-b" mew-mail-path diff --git a/elpa/mew-20240911.749/mew-pkg.el b/elpa/mew-20240911.749/mew-pkg.el new file mode 100644 index 00000000..fec8ec77 --- /dev/null +++ b/elpa/mew-20240911.749/mew-pkg.el @@ -0,0 +1,7 @@ +;; -*- no-byte-compile: t; lexical-binding: nil -*- +(define-package "mew" "20240911.749" + "Messaging in the Emacs World." + () + :url "https://github.com/kazu-yamamoto/Mew" + :commit "c46d8ee784d098244abaf162660073d1d4787b60" + :revdesc "c46d8ee784d0") diff --git a/elpa/mew-20230415.633/mew-pop.el b/elpa/mew-20240911.749/mew-pop.el similarity index 98% rename from elpa/mew-20230415.633/mew-pop.el rename to elpa/mew-20240911.749/mew-pop.el index 951aa69c..a5415aa1 100644 --- a/elpa/mew-20230415.633/mew-pop.el +++ b/elpa/mew-20240911.749/mew-pop.el @@ -7,6 +7,8 @@ (require 'mew) +(declare-function string-replace "subr") + (defvar mew-pop-msgid-file ".mew-msgid") (defvar mew-pop-folder-alist (list (mew-folder-func mew-pop-inbox-folder))) (defun mew-pop-folder-alist () @@ -512,8 +514,8 @@ (defun mew-pop-command-auth-xoauth2 (pro pnm) (let* ((user (mew-pop-get-user pnm)) - (token (mew-auth-oauth2-token-access-token)) - (auth-string (mew-auth-xoauth2-auth-string user token))) + (tag (mew-pop-passtag pnm)) + (auth-string (mew-xoauth2-auth-string user tag (mew-pop-get-case pnm)))) (mew-pop-process-send-string pro "AUTH XOAUTH2 %s" auth-string) (mew-smtp-set-status pnm "auth-xoauth2"))) @@ -655,6 +657,8 @@ ;;; Launcher ;;; +(defvar mew--gnutls-pop-greeting nil) + (defun mew-pop-retrieve (case directive bnm &rest args) ;; in +inbox (let* ((server (mew-pop-server case)) @@ -771,10 +775,13 @@ (set-process-filter process 'mew-pop-filter) (set-process-buffer process buf) (when sslnp - ;; GnuTLS requires a client-initiated command after the - ;; session is established or upgraded to use TLS because - ;; no additional greeting from the server. - (mew-pop-command-capa process pnm)) + ;; GnuTLS receives POP greeting in its internals + ;; and passes it as a return value. + ;; We store the value in the variable mew--gnutls-pop-greeting + ;; and pass it to the filter to process the greeting. + (mew-pop-filter process + (string-replace "\r\n" "\n" + mew--gnutls-pop-greeting))) )))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/elpa/mew-20230415.633/mew-refile.el b/elpa/mew-20240911.749/mew-refile.el similarity index 98% rename from elpa/mew-20230415.633/mew-refile.el rename to elpa/mew-20240911.749/mew-refile.el index d2f12a88..22bb8e6f 100644 --- a/elpa/mew-20230415.633/mew-refile.el +++ b/elpa/mew-20240911.749/mew-refile.el @@ -575,7 +575,7 @@ Return t if exists or created. Otherwise, return nil." ;;; (defun mew-summary-copy () - "Put the refile mark(default is 'o') on this message with + "Put the refile mark(default is `o') on this message with the current folder as a candidate in addition to guessed folders." (interactive) (mew-summary-msg-or-part @@ -592,11 +592,11 @@ the current folder as a candidate in addition to guessed folders." (concat mew-buffer-prefix "refile " fld)) (defun mew-summary-refile (&optional report) - "Put the refile mark(default is 'o') on this message. If already -marked with 'o', it prints where this message will be refiled. This + "Put the refile mark(default is `o') on this message. If already +marked with `o', it prints where this message will be refiled. This can overlay other marks. When it overlays, the cursor stays on the message. If it marks newly, displays the next message. If executed -with '\\[universal-argument]', it displays how the refile rules work in Message mode." +with `\\[universal-argument]', it displays how the refile rules work in Message mode." (interactive "P") (mew-summary-msg-or-part (mew-summary-refilable @@ -826,10 +826,10 @@ refile folder." (defun mew-summary-auto-refile (&optional mew-mark-review-only) "Refile each message in the folder automatically. If -'mew-refile-auto-refile-skip-any-mark' is non-nil, +`mew-refile-auto-refile-skip-any-mark' is non-nil, any previously marked message will be skipped. -If '\\[universal-argument]' is specified, only messages marked with -'mew-mark-review' will be concerned." +If `\\[universal-argument]' is specified, only messages marked with +`mew-mark-review' will be concerned." (interactive "P") (mew-summary-refilable (mew-decode-syntax-delete) diff --git a/elpa/mew-20230415.633/mew-scan.el b/elpa/mew-20240911.749/mew-scan.el similarity index 97% rename from elpa/mew-20230415.633/mew-scan.el rename to elpa/mew-20240911.749/mew-scan.el index cee49f47..7d9633fc 100644 --- a/elpa/mew-20230415.633/mew-scan.el +++ b/elpa/mew-20240911.749/mew-scan.el @@ -34,7 +34,7 @@ ;;; (defun mew-scan-setup () - "Define functions (MEW-FOO) according 'mew-scan-fields-alias'." + "Define functions (MEW-FOO) according `mew-scan-fields-alias'." (dotimes (i (length mew-scan-fields-alias)) (fset (intern (concat "MEW-" (nth i mew-scan-fields-alias))) `(lambda () (aref mew-vec ,i))))) @@ -46,7 +46,7 @@ (defun mew-summary-form-mark () "A function to return a mark. -'mew-summary-form-mark-delete' and 'mew-summary-form-mark-review' +`mew-summary-form-mark-delete' and `mew-summary-form-mark-review' effect to this function." (let ((mark-delete mew-mark-delete) (mark-review mew-mark-review) @@ -168,7 +168,7 @@ effect to this function." (defun mew-summary-form-size () "A function to return the size of the message. Should be used -with -4. See also 'mew-summary-form-size-0k' and 'mew-summary-form-size-huge'." +with -4. See also `mew-summary-form-size-0k' and `mew-summary-form-size-huge'." (let ((len-1 (1- (length mew-summary-form-size-unit))) (SIZE (mew-scan-uid-size (MEW-UID))) (i 0) size unit) @@ -190,7 +190,7 @@ with -4. See also 'mew-summary-form-size-0k' and 'mew-summary-form-size-huge'." unit))))) (defun mew-summary-form-extract-addr (addr) - "Extract addr according to 'mew-summary-form-extract-rule'." + "Extract addr according to `mew-summary-form-extract-rule'." (condition-case nil (let* ((func (if mew-addrbook-for-summary (mew-addrbook-func mew-addrbook-for-summary))) @@ -223,14 +223,14 @@ with -4. See also 'mew-summary-form-size-0k' and 'mew-summary-form-size-huge'." (defun mew-summary-form-from () "A function to return an address. -If the message is destined to me AND 'mew-summary-form-from-me-prefix' +If the message is destined to me AND `mew-summary-form-from-me-prefix' is a string, an address on To:, is returned. In this -case, 'mew-summary-form-from-me-prefix' is prepended to the address. +case, `mew-summary-form-from-me-prefix' is prepended to the address. Otherwise, an address on From: is returned. -Address is converted by 'mew-summary-form-extract-addr'. See also -'mew-summary-form-extract-rule'." +Address is converted by `mew-summary-form-extract-addr'. See also +`mew-summary-form-extract-rule'." (let* ((FROM (MEW-FROM)) (TO (MEW-TO)) (from (or (mew-addrstr-parse-address FROM) ""))) (cond @@ -270,9 +270,9 @@ Address is converted by 'mew-summary-form-extract-addr'. See also mew-summary-form-list-list-type)) (defun mew-get-summary-form (folder) - "Get summary-form from 'mew-summary-form-list', -'mew-summary-form-list-string-type, and 'mew-summary-form-list-list-type'. -'mew-summary-form-header' is prepended. " + "Get summary-form from `mew-summary-form-list', +`mew-summary-form-list-string-type, and `mew-summary-form-list-list-type'. +`mew-summary-form-header' is prepended. " (let* ((form-col (mew-decide-summary-form folder)) (form (or (nth 0 form-col) mew-summary-form))) (append mew-summary-form-header form))) @@ -704,11 +704,11 @@ Address is converted by 'mew-summary-form-extract-addr'. See also In a LOCAL folder: messages in the local folder are scanned according to the range which you specify. -In a REMOTE folder: messages in the server's folder are cached +In a REMOTE folder: messages in the server\\='s folder are cached according to the range which you specify. If -'mew-pop-header-only'/'mew-imap-header-only'/'mew-nntp-header-only' is +`mew-pop-header-only'/`mew-imap-header-only'/`mew-nntp-header-only' is non-nil, only headers of messages are cached. If executed with -'\\[universal-argument]', these variables are considered reversed." +`\\[universal-argument]', these variables are considered reversed." (interactive "P") (mew-summary-only (when (mew-summary-exclusive-p) diff --git a/elpa/mew-20230415.633/mew-search.el b/elpa/mew-20240911.749/mew-search.el similarity index 100% rename from elpa/mew-20230415.633/mew-search.el rename to elpa/mew-20240911.749/mew-search.el diff --git a/elpa/mew-20230415.633/mew-smime.el b/elpa/mew-20240911.749/mew-smime.el similarity index 100% rename from elpa/mew-20230415.633/mew-smime.el rename to elpa/mew-20240911.749/mew-smime.el diff --git a/elpa/mew-20230415.633/mew-smtp.el b/elpa/mew-20240911.749/mew-smtp.el similarity index 99% rename from elpa/mew-20230415.633/mew-smtp.el rename to elpa/mew-20240911.749/mew-smtp.el index 2e0747a6..09ef290b 100644 --- a/elpa/mew-20230415.633/mew-smtp.el +++ b/elpa/mew-20240911.749/mew-smtp.el @@ -320,8 +320,8 @@ (defun mew-smtp-command-auth-xoauth2 (pro pnm) (let* ((user (mew-smtp-get-auth-user pnm)) - (token (mew-auth-oauth2-token-access-token)) - (auth-string (mew-auth-xoauth2-auth-string user token))) + (tag (mew-smtp-passtag pnm)) + (auth-string (mew-xoauth2-auth-string user tag (mew-smtp-get-case pnm)))) (mew-smtp-process-send-string pro "AUTH XOAUTH2 %s" auth-string) (mew-smtp-set-status pnm "auth-xoauth2"))) @@ -586,6 +586,7 @@ ;; When a validation error occurs, (car pro) will be nil. ;; (let ((plainp (eq 'plain (plist-get (cdr pro) :type))) + (greeting (plist-get (cdr pro) :greeting)) (openp (and (car pro) (eq 'open (process-status (car pro))))) ;; Falling back to a plain connection is allowed @@ -608,7 +609,12 @@ (t (setq pro (list (car pro) - :error nil))))))))) + :error nil)) + (cond + ((eq proto 'pop) + (setq mew--gnutls-pop-greeting greeting)) + ((eq proto 'imap) + (setq mew--gnutls-imap-greeting greeting)))))))))) (t (with-temp-message status-msg (let ((params (list :name name :buffer buf diff --git a/elpa/mew-20230415.633/mew-sort.el b/elpa/mew-20240911.749/mew-sort.el similarity index 100% rename from elpa/mew-20230415.633/mew-sort.el rename to elpa/mew-20240911.749/mew-sort.el diff --git a/elpa/mew-20230415.633/mew-ssh.el b/elpa/mew-20240911.749/mew-ssh.el similarity index 100% rename from elpa/mew-20230415.633/mew-ssh.el rename to elpa/mew-20240911.749/mew-ssh.el diff --git a/elpa/mew-20230415.633/mew-ssl.el b/elpa/mew-20240911.749/mew-ssl.el similarity index 97% rename from elpa/mew-20230415.633/mew-ssl.el rename to elpa/mew-20240911.749/mew-ssl.el index 9531420a..ac0340b9 100644 --- a/elpa/mew-20230415.633/mew-ssl.el +++ b/elpa/mew-20240911.749/mew-ssl.el @@ -85,8 +85,8 @@ keep this as nil.") (defvar mew-prog-ssl "stunnel") (defvar mew-ssl-cert-directory "~/.certs" "The directory where certificates of root servers are stored. -A file name of a certificate should be 'cert-hash.0'. -'cert-hash' can be extracted by 'openssl x509 -hash -noout -in cert.pem'.") +A file name of a certificate should be `cert-hash.0'. +`cert-hash' can be extracted by `openssl x509 -hash -noout -in cert.pem'.") (defvar mew-ssl-verify-level 1 "Verification level of server's certificate. @@ -209,12 +209,12 @@ no extra text.") (list file)))) (defun mew-open-ssl-stream (case server serv tls) - "Open an SSL/TLS stream for SERVER's SERV. + "Open an SSL/TLS stream for SERVER\\='s SERV. This function returns a process when an SSL/TLS connection is created successfully. If TLS is nil, an SSL connection is created. -If TLS is a magic word for 'stunnel', a TLS connection is created. -A local port number can be obtained the process name after ':'. " +If TLS is a magic word for `stunnel', a TLS connection is created. +A local port number can be obtained the process name after `:'. " (cond ((or (null mew-ssl-ver) (not (mew-which-exec mew-prog-ssl))) (message "'%s' is not found" mew-prog-ssl) diff --git a/elpa/mew-20230415.633/mew-summary.el b/elpa/mew-20240911.749/mew-summary.el similarity index 99% rename from elpa/mew-20230415.633/mew-summary.el rename to elpa/mew-20240911.749/mew-summary.el index 5999a256..f5193e42 100644 --- a/elpa/mew-20230415.633/mew-summary.el +++ b/elpa/mew-20240911.749/mew-summary.el @@ -220,7 +220,7 @@ This macro is used to prohibit using a command in Summary mode." ;;; (defun mew-summary-get-region () - "Get a region according to 'mew-summary-region-include-cursor-line' + "Get a region according to `mew-summary-region-include-cursor-line' and return (beg . end)." (save-excursion (let ((beg (region-beginning)) diff --git a/elpa/mew-20230415.633/mew-summary2.el b/elpa/mew-20240911.749/mew-summary2.el similarity index 95% rename from elpa/mew-20230415.633/mew-summary2.el rename to elpa/mew-20240911.749/mew-summary2.el index 65b5269c..fd2b1e29 100644 --- a/elpa/mew-20230415.633/mew-summary2.el +++ b/elpa/mew-20240911.749/mew-summary2.el @@ -166,13 +166,13 @@ If nodisplay is non-nil, displays the cached message." through messages. That is, display a message, scroll it, and move-then-display another message or part. -See 'mew-summary-show-direction' to set the direction that the -cursor moves. You can select a value out of 'up, 'down, -'next(current direction) or 'stop. Default is -'down. 'mew-summary-show-direction' is valid in this case only +See `mew-summary-show-direction' to set the direction that the +cursor moves. You can select a value out of `up', `down', +`next'(current direction) or `stop'. Default is +`down'. `mew-summary-show-direction' is valid in this case only because the cursor stays in the other cases. - (2) If called interactively with '\\[universal-argument]' (i.e. + (2) If called interactively with `\\[universal-argument]' (i.e. REDISPLAY is non-nil), this command displays the current message or part again. This is a convenient way to get back to the beginning of the current message or part. @@ -180,7 +180,7 @@ beginning of the current message or part. (3) If called internally, this function displays the current message or part. If it is already displayed, nothing changes. - (4) If called internally and REDISPLAY is 'non-nil', this + (4) If called internally and REDISPLAY is `non-nil', this function displays the current message or part. Even if it is already displayed, this function displays it again getting back to the beginning." @@ -350,7 +350,7 @@ This function does not create a cache." (defun mew-summary-analyze-again-alternative (&optional arg) "This command analyzes the message again with -'mew-use-alternative' and 'mew-use-text-body' reversed." +`mew-use-alternative' and `mew-use-text-body' reversed." (interactive "P") (mew-summary-goto-message) (let ((mew-use-alternative (not mew-use-alternative)) @@ -362,29 +362,29 @@ This function does not create a cache." message is removed and the message is analyzed then displayed. 1a) If the size of the current message exceeds -'mew-file-max-size', MIME analysis is skipped then the beginning +`mew-file-max-size', MIME analysis is skipped then the beginning of the raw message is displayed. In this situation, this command analyzes the current message without the limitation then displays it. -1b) If the length of a header exceeds 'mew-header-max-length', a +1b) If the length of a header exceeds `mew-header-max-length', a broken message is displayed. In this situation, this command analyzes the current message without the limitation then displays it. -1c) If the current message is displayed by '\\\\[mew-summary-analyze-again-alternative]', this command gets it back to +1c) If the current message is displayed by `\\\\[mew-summary-analyze-again-alternative]', this command gets it back to the normal display. -1d) If 'mew-use-text/html' is nil, its HTML body is displayed as +1d) If `mew-use-text/html' is nil, its HTML body is displayed as is. In this situation, this command analyzes the HTML body and displays it. -1e) If called with '\\[universal-argument]', analyze the message -with 'mew-decode-broken' reversed. +1e) If called with `\\[universal-argument]', analyze the message +with `mew-decode-broken' reversed. 2) If this command is called on a part, the part is displayed again. -2a) If 'mew-use-text/html' is nil, its HTML part is displayed as +2a) If `mew-use-text/html' is nil, its HTML part is displayed as is. In this situation, this command analyzes the HTML part and displays it." (interactive "P") @@ -497,7 +497,7 @@ a decrypted/verified body is displayed." (defun mew-summary-find-file (&optional arg) "Open this message and makes it read-only. -If called with '\\[universal-argument]', it stays writable." +If called with `\\[universal-argument]', it stays writable." (interactive "P") (mew-summary-msg-or-part (let* ((fld (mew-summary-folder-name)) @@ -650,7 +650,7 @@ ad-hoc solution for putting the review mark on a thread.") (defun mew-summary-display-up (&optional arg) "Move to above then display. Targets includes parts, messages -marked with '*', and non-marked messages. When called with '\\[universal-argument]', +marked with `*', and non-marked messages. When called with `\\[universal-argument]', parts are skipped." (interactive "P") (beginning-of-line) @@ -661,7 +661,7 @@ parts are skipped." (defun mew-summary-display-down (&optional arg) "Move to below then display. Targets includes parts, messages -marked with '*', and non-marked messages. When called with '\\[universal-argument]', +marked with `*', and non-marked messages. When called with `\\[universal-argument]', parts are skipped." (interactive "P") (when arg @@ -676,7 +676,7 @@ parts are skipped." (defun mew-summary-prev-page () "\\Back-scroll this message. Unnecessary header fields are hidden -over the window. Type '\\[mew-summary-prev-page]' to see them when a message is displayed." +over the window. Type `\\[mew-summary-prev-page]' to see them when a message is displayed." (interactive) (mew-summary-scroll-down 'fullpage)) @@ -780,7 +780,7 @@ over the window. Type '\\[mew-summary-prev-page]' to see them when a message is ;;; (defun mew-summary-mouse-show (e) - "Mouse version of 'mew-summary-display'." + "Mouse version of `mew-summary-display'." (interactive "e") (mouse-set-point e) (beginning-of-line) diff --git a/elpa/mew-20230415.633/mew-summary3.el b/elpa/mew-20240911.749/mew-summary3.el similarity index 95% rename from elpa/mew-20230415.633/mew-summary3.el rename to elpa/mew-20240911.749/mew-summary3.el index b99dc599..77cea80c 100644 --- a/elpa/mew-20230415.633/mew-summary3.el +++ b/elpa/mew-20240911.749/mew-summary3.el @@ -118,7 +118,7 @@ the current message is copied to To: in a draft." (defun mew-subject-simplify (str &optional act-lst no-replace) "A function to simplify a value of Subject: according to -'mew-subject-simplify-replace-alist'." +`mew-subject-simplify-replace-alist'." (let ((case-fold-search t) (action-list (or act-lst mew-subject-simplify-replace-alist)) (ret str) @@ -208,18 +208,18 @@ the current message is copied to To: in a draft." Values of To:, Cc:, and Newsgroups: are prepared according to three alists. -\(1) If called with '\\[universal-argument]', replying to the - sender/poster only. In this case, 'mew-reply-sender-alist' is used. +\(1) If called with `\\[universal-argument]', replying to the + sender/poster only. In this case, `mew-reply-sender-alist' is used. \(2) If this message is sent by ME, you probably intend to reply with - the original header. In this case, 'mew-reply-fromme-alist' is used. + the original header. In this case, `mew-reply-fromme-alist' is used. \(3) Otherwise, replying to all people listed. In this case, - 'mew-reply-all-alist' is used. + `mew-reply-all-alist' is used. -The default value of 'mew-reply-sender-alist' is as follows: +The default value of `mew-reply-sender-alist' is as follows: - '((\"Reply-To:\" + \\='((\"Reply-To:\" (\"To:\" \"Reply-To:\" \"From:\")) (t (\"To:\" \"From:\"))) @@ -231,16 +231,16 @@ This is read as follows: (1.2) Otherwise, copy the value of From: to To:. If you would like to reply only to the address on Reply-To: (if any), -set 'mew-reply-sender-alist' to: +set `mew-reply-sender-alist' to: - '((\"Reply-To:\" + \\='((\"Reply-To:\" (\"To:\" \"Reply-To:\")) (t (\"To:\" \"From:\"))) -The default value of 'mew-reply-fromme-alist' is as follows: +The default value of `mew-reply-fromme-alist' is as follows: - '((t + \\='((t (\"To:\" \"To:\") (\"Cc:\" \"Cc:\") (\"Newsgroups:\" \"Newsgroups:\")))) @@ -251,9 +251,9 @@ This is read as follows: copying the value of Cc: to new Cc: and copying the value of Newsgroups: to new Newsgroups:. -The default value of 'mew-reply-all-alist' is as follows: +The default value of `mew-reply-all-alist' is as follows: - '(((\"Followup-To:\" \"poster\") + \\='(((\"Followup-To:\" \"poster\") (\"To:\" \"From:\")) (\"Followup-To:\" (\"Newsgroups:\" \"Followup-To:\" \"Newsgroups:\")) @@ -282,9 +282,9 @@ This is read as follows: copying the values of To:, Cc: and Apparently-To: to new Cc:. -You may want to set 'mew-reply-all-alist' to: +You may want to set `mew-reply-all-alist' to: - '(((\"Followup-To:\" \"poster\") + \\='(((\"Followup-To:\" \"poster\") (\"To:\" \"From:\")) (\"Followup-To:\" (\"Newsgroups:\" \"Followup-To:\")) @@ -364,7 +364,7 @@ You may want to set 'mew-reply-all-alist' to: (defun mew-summary-reply-with-citation (&optional replysender) "Answer to this message. A new draft is prepared in Draft mode. -And this message is automatically cited. See also 'mew-summary-reply'." +And this message is automatically cited. See also `mew-summary-reply'." (interactive "P") (mew-summary-msg-or-part (mew-summary-not-in-draft @@ -432,7 +432,7 @@ Draft mode and this message is automatically attached." ;;; (defun mew-summary-multi-forward () - "Forward messages marked with '*' to a third person. A new draft + "Forward messages marked with `*' to a third person. A new draft is prepared in Draft mode and this message is automatically attached." (interactive) diff --git a/elpa/mew-20230415.633/mew-summary4.el b/elpa/mew-20240911.749/mew-summary4.el similarity index 95% rename from elpa/mew-20230415.633/mew-summary4.el rename to elpa/mew-20240911.749/mew-summary4.el index 6ad7ea03..c82ac5ae 100644 --- a/elpa/mew-20230415.633/mew-summary4.el +++ b/elpa/mew-20240911.749/mew-summary4.el @@ -56,7 +56,7 @@ (defun mew-summary-goto-folder (&optional goend) "Go to the folder which you specify. If executed with -'\\[universal-argument]', the cursor always goes to the bottom of +`\\[universal-argument]', the cursor always goes to the bottom of Summary mode." (interactive "P") (let* ((proto (mew-proto-to-go (mew-summary-folder-name 'ext))) @@ -139,7 +139,7 @@ Summary mode." (defun mew-summary-goto-line (&optional arg) "Jump to a line according to the number which you input. -If 'mew-summary-goto-line-then-display' is non-nil, +If `mew-summary-goto-line-then-display' is non-nil, the message is then displayed." (interactive "P") (if arg @@ -220,7 +220,7 @@ the message is then displayed." (defun mew-summary-jump-top () "Go to the beginning of this Summary mode. -If 'mew-summary-jump-top-then-display' is non-nil, +If `mew-summary-jump-top-then-display' is non-nil, the top message is then displayed." (interactive) (if mew-use-push-mark (mew-push-mark)) @@ -230,7 +230,7 @@ the top message is then displayed." (defun mew-summary-jump-bottom () "Go to the end of this Summary mode. -If 'mew-summary-jump-bottom-then-display' is non-nil, +If `mew-summary-jump-bottom-then-display' is non-nil, the top message is then displayed." (interactive) (if mew-use-push-mark (mew-push-mark)) @@ -248,7 +248,7 @@ the top message is then displayed." ;;; (defun mew-summary-exchange-point () - "\\Get back to the position before typing '\\[mew-summary-retrieve]' or '\\[mew-summary-ls]'." + "\\Get back to the position before typing `\\[mew-summary-retrieve]' or `\\[mew-summary-ls]'." (interactive) (mew-summary-only (let ((pos (mew-sinfo-get-ret-pos))) @@ -296,7 +296,7 @@ the top message is then displayed." (defun mew-summary-pipe-message (prefix command) "Send the content of Message buffer to a command via pipe. -If called with '\\[universal-argument]', the body of the message +If called with `\\[universal-argument]', the body of the message \(excluding its header) is sent." (interactive (list current-prefix-arg @@ -320,8 +320,8 @@ If called with '\\[universal-argument]', the body of the message ;;; (defun mew-summary-print (&optional arg) - "Print the content of Message mode according to 'mew-print-function'. -If called with '\\[universal-argument]', you can specify a printer name." + "Print the content of Message mode according to `mew-print-function'. +If called with `\\[universal-argument]', you can specify a printer name." (interactive "P") (mew-summary-display 'redisplay) (let ((printer-name (if arg @@ -347,7 +347,7 @@ If called with '\\[universal-argument]', you can specify a printer name." (defun mew-summary-store (&optional askcs) "Saving a buffer of Message mode to a file. -If executed with '\\[universal-argument]', coding-system is asked." +If executed with `\\[universal-argument]', coding-system is asked." (interactive "P") (mew-summary-display 'redisplay) (let* ((file (mew-summary-input-file-name)) @@ -408,7 +408,7 @@ argument." (defun mew-summary-cmd-msgs () "Executing an external command specifying messages -marked with '*' as arguments." +marked with `*' as arguments." (interactive) (mew-summary-multi-msgs (let* ((cmd-args (mew-input-command)) @@ -445,7 +445,7 @@ marked with '*' as arguments." If in +postq, post the messages in +postq. If in %queue, process the jobs in %queue. Otherwise, flush the default queue. -If executed with '\\[universal-argument]', you can set the sending case." +If executed with `\\[universal-argument]', you can set the sending case." (interactive "P") (if (mew-folder-imap-queuep) (progn @@ -490,10 +490,10 @@ If executed with '\\[universal-argument]', you can set the sending case." "\\ Kill a process in Summary mode. Sometime a process accidentally remains in Summary mode. -In this situation, you cannot execute '\\[mew-summary-retrieve]', '\\[mew-summary-ls]', nor '\\[mew-summary-exec]'. +In this situation, you cannot execute `\\[mew-summary-retrieve]', `\\[mew-summary-ls]', nor `\\[mew-summary-exec]'. Use this command to solve this problem. -If called with '\\[universal-argument]', all SSH processes, if +If called with `\\[universal-argument]', all SSH processes, if any, are killed." (interactive "P") (let ((process mew-summary-buffer-process) @@ -535,7 +535,7 @@ any, are killed." ;;; (defun mew-summary-unshar () - "Apply 'unshar' on messages marked with '*'." + "Apply `unshar' on messages marked with `*'." (interactive) (mew-summary-multi-msgs (if (y-or-n-p (format "Execute %s for these messages? " mew-prog-unshar)) @@ -545,7 +545,7 @@ any, are killed." (message "Executing %s...done" mew-prog-unshar))))) (defun mew-summary-uudecode () - "Apply 'uudecode' on messages marked with '*'." + "Apply `uudecode' on messages marked with `*'." (interactive) (mew-summary-multi-msgs (cond @@ -607,7 +607,7 @@ any, are killed." ;;; (defun mew-summary-join () - "Concat Message/Partial fragments marked with '*' to an original + "Concat Message/Partial fragments marked with `*' to an original message." (interactive) (mew-summary-only @@ -807,8 +807,8 @@ message." (message "Copied to %s/%s" dstfld dstmsg))))))) (defun mew-summary-mark-local-copy (&optional arg) - "Copy messages marked with '*' to a local folder. If called -with '\\[universal-argument]', only messages marked with '*' in + "Copy messages marked with `*' to a local folder. If called +with `\\[universal-argument]', only messages marked with `*' in the region are handled." (interactive "P") (mew-summary-not-in-draft @@ -975,9 +975,9 @@ the region are handled." ;;; (defun mew-summary-toggle-disp-msg (&optional arg) - "Toggle 'Summary mode only' and 'Summary & Message mode'. If -you choose 'Summary mode only', you can quickly put the delete - marks since the next message is not displayed." + "Toggle `Summary mode only' and `Summary & Message mode'. If +you choose `Summary mode only', you can quickly put the delete +marks since the next message is not displayed." (interactive) (cond ((eq arg 'on) @@ -1000,7 +1000,7 @@ you choose 'Summary mode only', you can quickly put the delete ;;; (defun mew-summary-toggle-8bit () - "Toggle 8bit mode(i.e. 'mew-use-8bit')." + "Toggle 8bit mode(i.e. `mew-use-8bit')." (interactive) (setq mew-use-8bit (not mew-use-8bit)) (if mew-use-8bit @@ -1025,8 +1025,8 @@ you choose 'Summary mode only', you can quickly put the delete (defun mew-summary-toggle-warning () "Toggle warning level. -If 'mew-warning-field-level' is 2, set it to 1. -If 'mew-warning-field-level' is 1, set it to 2." +If `mew-warning-field-level' is 2, set it to 1. +If `mew-warning-field-level' is 1, set it to 2." (interactive) (if (= mew-warning-field-level 2) (setq mew-warning-field-level 1) @@ -1041,7 +1041,7 @@ If 'mew-warning-field-level' is 1, set it to 2." ;;; (defun mew-summary-toggle-policy (&optional arg) - "Toggle decode policy(i.e. 'mew-decode-broken')." + "Toggle decode policy(i.e. `mew-decode-broken')." (interactive "P") (if arg (setq mew-decode-broken nil @@ -1058,7 +1058,7 @@ If 'mew-warning-field-level' is 1, set it to 2." ;;; (defun mew-summary-toggle-debug () - "Toggle 'mew-debug'." + "Toggle `mew-debug'." (interactive) (setq mew-debug (not mew-debug)) (if mew-debug @@ -1071,7 +1071,7 @@ If 'mew-warning-field-level' is 1, set it to 2." ;;; (defun mew-summary-toggle-pgp () - "Toggle PGP/MIME and old PGP (i.e. 'mew-use-old-pgp')." + "Toggle PGP/MIME and old PGP (i.e. `mew-use-old-pgp')." (interactive) (setq mew-use-old-pgp (not mew-use-old-pgp)) (if mew-use-old-pgp @@ -1085,7 +1085,7 @@ If 'mew-warning-field-level' is 1, set it to 2." (defun mew-summary-learn-spam () "Learn that this message is a spam. -See also 'mew-spam-prog' and 'mew-spam-prog-args." +See also `mew-spam-prog' and `mew-spam-prog-args." (interactive) (mew-summary-msg (let* ((fld (mew-summary-folder-name)) @@ -1109,7 +1109,7 @@ See also 'mew-spam-prog' and 'mew-spam-prog-args." (defun mew-summary-learn-ham () "Learn that this message is a ham. -See also 'mew-ham-prog' and 'mew-ham-prog-args." +See also `mew-ham-prog' and `mew-ham-prog-args." (interactive) (mew-summary-msg (let* ((fld (mew-summary-folder-name)) diff --git a/elpa/mew-20230415.633/mew-syntax.el b/elpa/mew-20240911.749/mew-syntax.el similarity index 99% rename from elpa/mew-20230415.633/mew-syntax.el rename to elpa/mew-20240911.749/mew-syntax.el index abb88e03..7decf4c0 100644 --- a/elpa/mew-20230415.633/mew-syntax.el +++ b/elpa/mew-20240911.749/mew-syntax.el @@ -45,6 +45,9 @@ (defun mew-syntax-get-key (syntax) (aref syntax 0)) +(defun mew-syntax-from-alternative (syntax) + (listp (aref syntax 1))) + (defun mew-syntax-get-begin (syntax) (let ((beg (aref syntax 1))) (if (listp beg) (car beg) beg))) @@ -350,8 +353,8 @@ "Display the folder name of this message, its number, its size and its unique id. If this is a cache message, both the unique id and the size are also shown. If called with -'\\[universal-argument]', its Message-Id: and its parent's -Message-Id: are displayed instead. If 'mew-use-cut-file-name' is +`\\[universal-argument]', its Message-Id: and its parent\\='s +Message-Id: are displayed instead. If `mew-use-cut-file-name' is non-nil, the file path is pushed to the cut buffer of your window system." (interactive "P") diff --git a/elpa/mew-20230415.633/mew-thread.el b/elpa/mew-20240911.749/mew-thread.el similarity index 98% rename from elpa/mew-20230415.633/mew-thread.el rename to elpa/mew-20240911.749/mew-thread.el index 70ef785f..96a92694 100644 --- a/elpa/mew-20230415.633/mew-thread.el +++ b/elpa/mew-20240911.749/mew-thread.el @@ -28,7 +28,7 @@ First pass - Repeat the following procedure in numerical order: Here we have pretty good threads. However, if the messages are not sorted by Date:, it is possible that some top nodes can be -connected to other threads. If 'mew-use-complete-thread' is non-nil, +connected to other threads. If `mew-use-complete-thread' is non-nil, the second pass is carried out. Second pass - Repeat the following procedure for top nodes linearly: @@ -341,7 +341,7 @@ mode or Selection." (defun mew-summary-thread-region (beg end &optional mark disp-msg iter) "Make threads for messages in a region. If you want to know how -threads are created, see 'mew-use-complete-thread'." +threads are created, see `mew-use-complete-thread'." (interactive "r") (when (mew-summary-exclusive-p) (let* ((column (or (mew-sinfo-get-summary-column) ;; scanned @@ -472,28 +472,28 @@ threads are created, see 'mew-use-complete-thread'." ;;; (defun mew-thread-mark-review () - "Put the '*' mark on all messages of the current sub-thread." + "Put the `*' mark on all messages of the current sub-thread." (interactive) (mew-thread-mark mew-mark-review)) (defun mew-thread-mark-delete () - "Put the 'D' mark on all messages of the current sub-thread." + "Put the `D' mark on all messages of the current sub-thread." (interactive) (mew-summary-not-in-nntp (mew-thread-mark mew-mark-delete 'valid-only))) (defun mew-thread-mark-unlink () - "Put the 'X' mark on all messages of the current sub-thread." + "Put the `X' mark on all messages of the current sub-thread." (interactive) (mew-thread-mark mew-mark-unlink 'valid-only)) (defun mew-thread-mark-escape () - "Put the '$' mark on all messages of the current sub-thread." + "Put the `$' mark on all messages of the current sub-thread." (interactive) (mew-thread-mark mew-mark-escape)) (defun mew-thread-mark-refile () - "Put the 'o' mark on all messages of the current sub-thread." + "Put the `o' mark on all messages of the current sub-thread." (interactive) (mew-thread-only (let* ((fld (mew-folder-basename (mew-summary-folder-name 'ext))) @@ -509,7 +509,7 @@ threads are created, see 'mew-use-complete-thread'." (mew-refile-set-from-alist alist folders))))) (defun mew-thread-mark-copy () - "Put the 'o' mark on all messages of the current sub-thread + "Put the `o' mark on all messages of the current sub-thread with the current folder as a candidate in addition to guessed folders." (interactive) (mew-thread-only diff --git a/elpa/mew-20230415.633/mew-unix.el b/elpa/mew-20240911.749/mew-unix.el similarity index 100% rename from elpa/mew-20230415.633/mew-unix.el rename to elpa/mew-20240911.749/mew-unix.el diff --git a/elpa/mew-20230415.633/mew-vars.el b/elpa/mew-20240911.749/mew-vars.el similarity index 87% rename from elpa/mew-20230415.633/mew-vars.el rename to elpa/mew-20240911.749/mew-vars.el index a6dc23d6..6c873409 100644 --- a/elpa/mew-20230415.633/mew-vars.el +++ b/elpa/mew-20240911.749/mew-vars.el @@ -115,7 +115,7 @@ :type 'directory) (defcustom mew-conf-path mew-mail-path - "*A directory where Mew's configuration files locate." + "*A directory where Mew\\='s configuration files locate." :group 'mew-env :type 'directory) @@ -148,7 +148,7 @@ really deleted." :type '(choice string (const nil))) (defcustom mew-imap-trash-folder-list nil - "*A list of IMAP folders whose messages marked with 'D' are really deleted." + "*A list of IMAP folders whose messages marked with `D' are really deleted." :group 'mew-summary :type '(choice (const nil) (repeat string))) @@ -199,9 +199,9 @@ really deleted." (defcustom mew-imap-spam-field nil "*The field name of anti spam information to be used for IMAP spam filter. -If both 'mew-imap-spam-field' and 'mew-imap-spam-word' are defined, +If both `mew-imap-spam-field' and `mew-imap-spam-word' are defined, messages whose the field contains the word are automatically -removed or refiled to 'mew-imap-spam-folder' or 'mew-imap-trash-folder' +removed or refiled to `mew-imap-spam-folder' or `mew-imap-trash-folder' \(if defined) while scanning %inbox." :group 'mew-imap :type '(choice (const :tag "Not use" nil) @@ -209,22 +209,22 @@ removed or refiled to 'mew-imap-spam-folder' or 'mew-imap-trash-folder' (defcustom mew-imap-spam-word nil "*The word of anti spam information to be used for IMAP spam filter. -See 'mew-imap-spam-field'." +See `mew-imap-spam-field'." :group 'mew-imap :type '(choice (const :tag "Not use" nil) (string :tag "Spam word"))) (defcustom mew-imap-spam-pattern nil "*IMAP SEARCH pattern to filter spams. -If non-nil, 'mew-imap-spam-field' and 'mew-imap-spam-field' -treated as 'nil'." +If non-nil, `mew-imap-spam-field' and `mew-imap-spam-field' +treated as `nil'." :group 'mew-imap :type '(choice (const :tag "Not use" nil) (string :tag "Spam word"))) (defcustom mew-imap-spam-folder nil "*A folder to be used for IMAP spam filter. -See 'mew-imap-spam-field'." +See `mew-imap-spam-field'." :group 'mew-imap :type '(choice (const :tag "Not use" nil) (string :tag "Spam folder"))) @@ -314,7 +314,7 @@ is edited again." (defcustom mew-make-message-hook nil "*Hook called before making a message in Draft mode. A good example is as follows: - (add-hook 'mew-make-message-hook 'ispell-message)" + (add-hook \\='mew-make-message-hook \\='ispell-message)" :group 'mew-draft :type 'hook) @@ -463,7 +463,7 @@ folder as the argument." (defcustom mew-mail-address-list nil "*The addresses included in this list never appear on the Cc: field on a draft buffer. If nil, this value is automatically generated from -'mew-config-alist'." +`mew-config-alist'." :group 'mew-draft :type '(choice (const nil) (repeat string))) @@ -471,14 +471,14 @@ on a draft buffer. If nil, this value is automatically generated from "*Your e-mail address domain list like \(\"example.org\" \"example.jp\"). They are used for mail-domain completion in Draft mode(C-cTAB). If -nil, this value is automatically generated from 'mew-config-alist'." +nil, this value is automatically generated from `mew-config-alist'." :group 'mew-draft :type '(choice (const nil) (repeat string))) (defcustom mew-from-list nil "*A list of From: for circular completion in Draft mode. If nil, -this value is automatically generated from 'mew-config-alist'. See -also 'mew-from'." +this value is automatically generated from `mew-config-alist'. See +also `mew-from'." :group 'mew-draft :type '(choice (const nil) (repeat string))) @@ -549,8 +549,8 @@ For more infomation, see the document of '\\\\[mew-summary (t ("To:" "From:"))) "*Alist to be used to prepare To:/Cc:/Newsgroups: in a reply draft. -When '\\[universal-argument]' is specified for '\\\\[mew-summary-reply]' and '\\[mew-summary-reply-with-citation]', this alist is used. -For more infomation, see the document of '\\[mew-summary-reply]'") +When `\\[universal-argument]' is specified for `\\\\[mew-summary-reply]' and `\\[mew-summary-reply-with-citation]', this alist is used. +For more infomation, see the document of `\\[mew-summary-reply]'") (defvar mew-reply-fromme-alist '((t @@ -559,7 +559,7 @@ For more infomation, see the document of '\\[mew-summary-reply]'") ("Newsgroups:" "Newsgroups:"))) "*Alist to be used to prepare To:/Cc:/Newsgroups: in a reply draft. When the message to be replied is sent/posted by ME, this alist is used. -For more infomation, see the document of '\\\\[mew-summary-reply]'") +For more infomation, see the document of `\\\\[mew-summary-reply]'") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; @@ -568,18 +568,18 @@ For more infomation, see the document of '\\\\[mew-summary (defcustom mew-ssh-keep-connection t "*If non-nil, an SSH process for each service (POP, IMAP, NNTP, SMTP) -is kept for further connections. This must be 't' for IMAP and NNTP." +is kept for further connections. This must be `t' for IMAP and NNTP." :group 'mew-net :type 'boolean) (defcustom mew-ssl-keep-connection t "*If non-nil, an SSL/TLS process for each service (POP, IMAP, NNTP, SMTP) -is kept for further connections. This must be 't' for IMAP and NNTP." +is kept for further connections. This must be `t' for IMAP and NNTP." :group 'mew-net :type 'boolean) (defcustom mew-ssl-default 'tunnel - "*Default SSL/TLS type when mew-{imap,nntp,pop,smtp}-ssl is 't'." + "*Default SSL/TLS type when mew-{imap,nntp,pop,smtp}-ssl is `t'." :group 'mew-net :type '(choice (const :tag "Native (GnuTLS)" native) (const :tag "External (stunnel)" tunnel))) @@ -602,7 +602,7 @@ nil - use the default specified by Emacs Network Security Manager." (defcustom mew-ssl-client-keycert-list nil "The client-side certificate used for TLS connection. -'((\"keyfile\" \"certfile\")) - A list of key/cert pairs." +\\='((\"keyfile\" \"certfile\")) - A list of key/cert pairs." :group 'mew-net :type '(choice (const :tag "None" nil) (repeat string))) @@ -654,7 +654,7 @@ your e-mail address is automatically set" :group 'mew-smtp :type '(choice string (const nil))) -(defcustom mew-smtp-auth-list '("CRAM-MD5" "PLAIN" "LOGIN") +(defcustom mew-smtp-auth-list '("XOAUTH2" "CRAM-MD5" "PLAIN" "LOGIN") "*A list of SMTP AUTH methods in the preferred order. Currently, \"CRAM-MD5\", \"PLAIN\", \"LOGIN\", and \"XOAUTH2\" can be used." :group 'mew-smtp @@ -673,13 +673,13 @@ If nil, an address specified by the From: field is used." (defcustom mew-smtp-msgid-user nil "*A user part for creation of Message-Id: for SMTP. If nil, the -value of 'mew-user' is used." +value of `mew-user' is used." :group 'mew-smtp :type '(choice string (const nil))) (defcustom mew-smtp-msgid-domain nil "*A domain name for creation of Message-Id: for SMTP. If nil, the -value of 'mew-mail-domain' is used." +value of `mew-mail-domain' is used." :group 'mew-smtp :type '(choice string (const nil))) @@ -691,7 +691,7 @@ value of 'mew-mail-domain' is used." ;;; (defcustom mew-mailbox-type 'pop - "'pop, 'imap or 'mbox" + "`pop', `imap' or `mbox'" :group 'mew-net :type '(choice (const pop) (const imap) (const mbox))) @@ -701,13 +701,13 @@ value of 'mew-mail-domain' is used." ;;; (defcustom mew-mbox-command "incm" - "*A command to be execute if 'mew-mailbox-type' is 'mbox." + "*A command to be execute if `mew-mailbox-type' is `mbox'." :group 'mew-pop :type '(choice string (const nil))) (defcustom mew-mbox-command-arg "-u" - "*Arguments for 'mew-mbox-command'. -For maildir, set this to '-u -d /path/to/mbox'." + "*Arguments for `mew-mbox-command'. +For maildir, set this to `-u -d /path/to/mbox'." :group 'mew-pop :type '(choice string (const nil))) @@ -718,7 +718,7 @@ For maildir, set this to '-u -d /path/to/mbox'." (defcustom mew-biff-interval 5 "*Minutes of biff interval. This should be smaller than -'mew-passwd-timer-unit' * 'mew-passwd-lifetime'." +`mew-passwd-timer-unit' * `mew-passwd-lifetime'." :group 'mew-net :type 'integer) @@ -773,13 +773,13 @@ tunnel - Use an external program to establish a TLS tunnel. (defcustom mew-pop-auth 'apop "*The authentication method for POP3. -'pass means the authentication with USER/PASS (i.e. plain password). -'apop means the authentication with APOP. -t means SASL according to 'mew-pop-auth-list'." +`pass' means the authentication with USER/PASS (i.e. plain password). +`apop' means the authentication with APOP. +t means SASL according to `mew-pop-auth-list'." :group 'mew-pop :type '(choice (const apop) (const pass) (const t))) -(defcustom mew-pop-auth-list '("CRAM-MD5" "PLAIN") +(defcustom mew-pop-auth-list '("XOAUTH2" "CRAM-MD5" "PLAIN") "*A list of SASL methods in the preferred order. Currently, \"CRAM-MD5\", \"PLAIN\", and \"XOAUTH2\" can be used." :group 'mew-pop @@ -805,7 +805,7 @@ POP server." (defcustom mew-pop-body-lines 40 "*The limit of body lines to get when the size of message -exceeds 'mew-pop-size'." +exceeds `mew-pop-size'." :group 'mew-pop :type 'integer) @@ -875,11 +875,11 @@ tunnel - Use an external program to establish a TLS tunnel. (defcustom mew-imap-auth t "*The authentication method for IMAP4. nil means the authentication with LOGIN (i.e. plain password). -t means SASL according to 'mew-imap-auth-list'." +t means SASL according to `mew-imap-auth-list'." :group 'mew-imap :type 'boolean) -(defcustom mew-imap-auth-list '("CRAM-MD5" "LOGIN") +(defcustom mew-imap-auth-list '("XOAUTH2" "CRAM-MD5" "LOGIN") "*A list of SASL methods in the preferred order. Currently, \"CRAM-MD5\", \"LOGIN\", and \"XOAUTH2\" can be used." :group 'mew-imap @@ -912,7 +912,9 @@ If non-nil, only header is retrieved." For example, the WU IMAP server returns the following value for the NAMESPACE command. - ((\"\" \"/\")(\"#mhinbox\" NIL)(\"#mh/\" \"/\")) ((\"/\" \"/\")) ((\"#shared/\" \"/\")(\"#ftp/\" \"/\")(\"#news.\" \".\")(\"#public/\" \"/\")) + ((\"\" \"/\")(\"#mhinbox\" NIL)(\"#mh/\" \"/\")) + ((\"/\" \"/\")) + ((\"#shared/\" \"/\")(\"#ftp/\" \"/\")(\"#news.\" \".\")(\"#public/\" \"/\")) The first list is prefixes of user mailboxes. Each element consists of a prefix and a separator. @@ -927,12 +929,12 @@ is nil, the prefix is added to mailbox alist as a mailbox. If you want to used your home directory with WU, configure as follows: - (setq mew-imap-prefix-list '(\"\")) + (setq mew-imap-prefix-list \\='(\"\")) If you want to used the MH directory with WU, configure as follows: - (setq mew-imap-prefix-list '(\"#mh/\" \"#mhinbox\")) + (setq mew-imap-prefix-list \\='(\"#mh/\" \"#mhinbox\")) Note that %inbox means /var/mail/ while %#mhinbox refers to Mail/inbox. @@ -1019,13 +1021,13 @@ If non-nil, only header is retrieved." (defcustom mew-nntp-msgid-user nil "*A user part for creation of Message-Id: for NNTP. If nil, the -value of 'mew-user' is used." +value of `mew-user' is used." :group 'mew-nntp :type '(choice string (const nil))) (defcustom mew-nntp-msgid-domain nil "*A domain name for creation of Message-Id: for NNTP. If nil, the -value of 'mew-mail-domain' is used." +value of `mew-mail-domain' is used." :group 'mew-nntp :type '(choice string (const nil))) @@ -1043,24 +1045,24 @@ If KEY is t, all folders matches it. The corresponding RANGE is returned always. If KEY is a string, match-function is applied according to -'mew-range-list-string-type'. If matched, the corresponding RANGE is +`mew-range-list-string-type'. If matched, the corresponding RANGE is returned. If KEY is a list of strings, match-function is applied according to -'mew-range-list-list-type'. If a match found out of the strings, +`mew-range-list-list-type'. If a match found out of the strings, the corresponding RANGE is returned. -Candidate values for 'mew-rage-list-string-type' and -'mew-range-list-list-type' are as follows: +Candidate values for `mew-rage-list-string-type' and +`mew-range-list-list-type' are as follows: - 'regex Regular expression. - 'recursive Initial substring match. That is, + \\='regex Regular expression. + \\='recursive Initial substring match. That is, not only a folder specified but all so all sub-folders are matched. - 'string String comparison. + \\='string String comparison. An example is as follows: - '(((\"+queue\" \"+postq\" \"+draft\") \"all\") + \\='(((\"+queue\" \"+postq\" \"+draft\") \"all\") ((\"$inbox\") \"sync\") (t \"update\")) @@ -1077,13 +1079,13 @@ If this value is nil, an appropriate value is set when Mew is booting. (defcustom mew-range-list-string-type 'regex "*A value to specify an action if the key is a string in -'mew-range-list'. Candidates are 'regex, 'recursive, and 'string." +`mew-range-list'. Candidates are `regex', `recursive', and `string'." :group 'mew-summary :type '(choice (const regex) (const recursive) (const string))) (defcustom mew-range-list-list-type 'recursive "*A value to specify an action if the key is a list of strings in -'mew-range-list'. Candidates are 'regex, 'recursive, and 'string." +`mew-range-list'. Candidates are `regex', `recursive', and `string'." :group 'mew-summary :type '(choice (const regex) (const recursive) (const string))) @@ -1104,31 +1106,31 @@ If KEY is t, all folders matches it. The corresponding VALUE is returned always. If KEY is a string, match-function is applied according to -'mew-unread-mark-list-string-type'. If matched, the corresponding +`mew-unread-mark-list-string-type'. If matched, the corresponding VALUE is returned. If KEY is a list of strings, match-function is applied according to -'mew-unread-mark-list-list-type'. If a match found out of the strings, +`mew-unread-mark-list-list-type'. If a match found out of the strings, the corresponding VALUE is returned. -Candidate values for 'mew-rage-list-string-type' and -'mew-unread-mark-list-list-type' are as follows: +Candidate values for `mew-rage-list-string-type' and +`mew-unread-mark-list-list-type' are as follows: - 'regex Regular expression. - 'recursive Initial substring match. That is, + \\='regex Regular expression. + \\='recursive Initial substring match. That is, not only a folder specified but all so all sub-folders are matched. - 'string String comparison. + \\='string String comparison. The default value is: - '(((\"+inbox\" \"$inbox\" \"%inbox\" \"-\") t) + \\='(((\"+inbox\" \"$inbox\" \"%inbox\" \"-\") t) (t nil)) An example for the case where messages are marked as unread in any folders: - '((t t)) + \\='((t t)) -Note that this variable is effective only when 'mew-use-unread-mark' +Note that this variable is effective only when `mew-use-unread-mark' is non-nil. " :group 'mew-summary @@ -1142,13 +1144,13 @@ is non-nil. (defcustom mew-unread-mark-list-string-type 'regex "*A value to specify an action if the key is a string in -'mew-unread-mark-list'. Candidates are 'regex, 'recursive, and 'string." +`mew-unread-mark-list'. Candidates are `regex', `recursive', and `string'." :group 'mew-summary :type '(choice (const regex) (const recursive) (const string))) (defcustom mew-unread-mark-list-list-type 'recursive "*A value to specify an action if the key is a list of strings in -'mew-unread-mark-list'. Candidates are 'regex, 'recursive, and 'string." +`mew-unread-mark-list'. Candidates are `regex', `recursive', and `string'." :group 'mew-summary :type '(choice (const regex) (const recursive) (const string))) @@ -1161,7 +1163,7 @@ is non-nil. "*A list to be appended to summary-form if the first element of summary-form is not an integer. Since Mew assumes that each line of Summary mode begins with one mark, this variable -MUST be '(mark).") +MUST be \\='(mark).") (defconst mew-custom-type-of-summary-form '(choice @@ -1216,12 +1218,12 @@ of list, symbol, and string. \(b) A list consists of an integer and a symbol. The symbol specifies a function to be called. The name of the function is produced by -concatenating 'mew-summary-form-func-prefix' and the symbol name. -\(e.g. 'mew-summary-form-date' for the symbol 'date'). +concatenating `mew-summary-form-func-prefix' and the symbol name. +\(e.g. `mew-summary-form-date' for the symbol `date'). -Pre-defined symbols are 'type, 'time, 'date, 'year, 'size, 'from, -'subj and 'body. For more details, see the explanation of the -functions called 'mew-summary-form-'. +Pre-defined symbols are `type', `time', `date', `year', `size', `from', +`subj' and `body'. For more details, see the explanation of the +functions called `mew-summary-form-'. The integer specifies the width of field which will be filled with a return string of the function. @@ -1234,48 +1236,48 @@ ASCII string. 0 means the remaining width and is treated as a positive value. -\(c) A symbol except 't' is equivalent to (1 symbol). +\(c) A symbol except `t' is equivalent to (1 symbol). \(d) The value of mew-summary-form-header (mark) is appended to -summary-form when used. See also 'mew-summary-form-header'. +summary-form when used. See also `mew-summary-form-header'. -\(e) 't' means the position where thread indentation is inserted. +\(e) `t' means the position where thread indentation is inserted. An example is as follows: - '(type (5 date) \" \" (-4 size) \" \" (14 from) \" \" t (30 subj) \"|\" (0 body)) + \\='(type (5 date) \" \" (-4 size) \" \" (14 from) \" \" t (30 subj) \"|\" (0 body)) -You can also set this value in 'mew-summary-form-list'." +You can also set this value in `mew-summary-form-list'." :group 'mew-summary :type mew-custom-type-of-summary-form) (defcustom mew-summary-form-list nil - "*A list of (KEY VALUE) to define 'mew-summary-form' for each + "*A list of (KEY VALUE) to define `mew-summary-form' for each folder. Each component is (key summary-form). If KEY is t, all folders matches it. The corresponding SUMMARY-FORM is returned always. If KEY is a string, match-function is applied according to -'mew-summary-form-list-string-type'. If matched, the corresponding +`mew-summary-form-list-string-type'. If matched, the corresponding SUMMARY-FORM is returned. If KEY is a list of strings, match-function is applied according to -'mew-summary-form-list-list-type'. If a match found out of the strings, +`mew-summary-form-list-list-type'. If a match found out of the strings, the corresponding SUMMARY-FORM is returned. -Candidate values for 'mew-summary-form-list-string-type' and -'mew-summary-form-list-list-type' are as follows: +Candidate values for `mew-summary-form-list-string-type' and +`mew-summary-form-list-list-type' are as follows: - 'regex Regular expression. - 'recursive Initial substring match. That is, + \\='regex Regular expression. + \\='recursive Initial substring match. That is, not only a folder specified but all so all sub-folders are matched. - 'string String comparison. + \\='string String comparison. -SUMMARY-FORM is a list. See 'mew-summary-form' for more information. +SUMMARY-FORM is a list. See `mew-summary-form' for more information. An example is as follows: - '(((\"+inbox\") + \\='(((\"+inbox\") (type (5 date) \" \" (-4 size) \" \" (14 from) \" \" t (30 subj) \"|\" (0 body))) (t (type (5 date) \" \" (14 from) \" \" t (30 subj) \"|\" (0 body)))) @@ -1293,13 +1295,13 @@ An example is as follows: (defcustom mew-summary-form-list-string-type 'regex "*A value to specify an action if the key is a string in -'mew-summary-form-list'. Candidates are 'regex, 'recursive, and 'string." +`mew-summary-form-list'. Candidates are `regex', `recursive', and `string'." :group 'mew-summary :type '(choice (const regex) (const recursive) (const string))) (defcustom mew-summary-form-list-list-type 'recursive "*A value to specify an action if the key is a list of strings in -'mew-summary-form-list'. Candidates are 'regex, 'recursive, and 'string." +`mew-summary-form-list'. Candidates are `regex', `recursive', and `string'." :group 'mew-summary :type '(choice (const regex) (const recursive) (const string))) @@ -1311,7 +1313,7 @@ if the message is originated by me." (defcustom mew-summary-form-extract-rule '(nickname) "*A list to specify what part to extract from the From: field. Each -element must be 'name, 'comment, 'address, 'nickname, or appropriate +element must be `name', `comment', `address', `nickname', or appropriate \"regex\". Consider the following examples: @@ -1322,25 +1324,25 @@ Consider the following examples: Each element returns the following value: - 'name Name part, if any + \\='name Name part, if any A: Kazu Yamamoto B: (No match) C: Kazuhiko Yamamoto (Kazu) - 'comment Comment part, if any + \\='comment Comment part, if any A: (No match) B: Kazu Yamamoto C: (Kazu) - 'address Address part + \\='address Address part A: kazu@example.org B: kazu@example.org C: kazu@example.org - 'nickname One element of personal information in - Addrbook according to 'mew-addrbook-for-summary'. - The default value of 'mew-addrbook-for-summary' - is 'nickname. So, From: is converted a nickname + \\='nickname One element of personal information in + Addrbook according to `mew-addrbook-for-summary'. + The default value of `mew-addrbook-for-summary' + is `nickname'. So, From: is converted a nickname by default. For more information, see - 'mew-addrbook-switch'. + `mew-addrbook-switch'. (regex) The substring first matched @@ -1361,42 +1363,42 @@ instead of the 'D' mark." (character :tag "Use another character"))) (defcustom mew-summary-form-mark-spam nil - "*If non-nil, the 'D' mark automatically is put onto + "*If non-nil, the `D' mark automatically is put onto SPAM messages. A message is considered a SPAM message if the MD5 checksum of its body is duplicated in a scan. -If a character, use it as a mark instead of the 'D' mark." +If a character, use it as a mark instead of the `D' mark." :group 'mew-summary :type '(choice (const :tag "Use mew-mark-delete" t) (const :tag "Not use" nil) (character :tag "Use another character"))) (defcustom mew-summary-form-mark-review nil - "*If non-nil, the '*' mark automatically is put onto + "*If non-nil, the `*' mark automatically is put onto messages destined to me. If a character, use it as a mark -instead of the '*' mark." +instead of the `*' mark." :group 'mew-summary :type '(choice (const :tag "Use mew-mark-review" t) (const :tag "Not use" nil) (character :tag "Use another character"))) (defcustom mew-summary-form-size-0k nil - "*If non-nil, the size of message is displayed as '0k' + "*If non-nil, the size of message is displayed as `0k' if the size is less than 1k byte." :group 'mew-summary :type 'boolean) (defcustom mew-summary-form-size-huge t - "*If non-nil, the size of message is displayed as 'HUGE' + "*If non-nil, the size of message is displayed as `HUGE' when the size is greater than or equal to 1000 after maximum -quantization by 'mew-summary-form-size-unit'." +quantization by `mew-summary-form-size-unit'." :group 'mew-summary :type 'boolean) (defcustom mew-spam: "X-Bogosity:" "*The field name which your spam filter inserts. E.g. - \"X-Spam-Flag:\" for 'spamassassin' - \"X-Bogosity:\" for 'bogofilter'" + \"X-Spam-Flag:\" for `spamassassin' + \"X-Bogosity:\" for `bogofilter'" :group 'mew-summary :type 'string) @@ -1412,11 +1414,11 @@ The last MUST be \"Body\"." (repeat string)))) (defvar mew-scan-fields-alias nil - "*A list of aliases for 'mew-scan-fields'. + "*A list of aliases for `mew-scan-fields'. Functions called MEW-FOO will be defined according to this variable.") (defvar mew-summary-form-func-prefix "mew-summary-form-" - "The prefix for symbol used in 'mew-summary-form'.") + "The prefix for symbol used in `mew-summary-form'.") (defvar mew-scan-decode-fields (list mew-subj: mew-from: mew-to:)) @@ -1429,7 +1431,7 @@ Functions called MEW-FOO will be defined according to this variable.") (defcustom mew-thread-column 28 "A position where thread indentation is inserted for indentation of thread. This valuable is for backward compatibility -only. Use 't' in 'mew-summary-form instead." +only. Use `t' in `mew-summary-form instead'." :group 'mew-summary :type 'integer) @@ -1473,14 +1475,14 @@ obtain any fields." (defcustom mew-header-max-length 400 "*If the length of a header exceeds this value, it is not arranged nor MIME decoded. -See also 'mew-header-max-depth'." +See also `mew-header-max-depth'." :group 'mew-message :type 'integer) (defcustom mew-header-max-depth 50 "*A value to decide loop depth for header field syntax analysis. It was known as mew-loop-depth. -See also 'mew-header-max-length'." +See also `mew-header-max-length'." :group 'mew-message :type 'integer) @@ -1513,19 +1515,19 @@ to this file." :type 'integer) (defcustom mew-scan-max-field-length 5 - "*Max field length which 'mewl' treats." + "*Max field length which `mewl' treats." :group 'mew-env :type 'integer) (defcustom mew-scan-max-body-length 20 - "*Max body length which 'mewl' treats." + "*Max body length which `mewl' treats." :group 'mew-env :type 'integer) (defcustom mew-scan-body-length 10 "*Body length which Mew treats. -Increase this value if 'mew-summary-form-mark-spam' put -the 'D' mark onto different messages." +Increase this value if `mew-summary-form-mark-spam' put +the `D' mark onto different messages." :group 'mew-env :type 'integer) @@ -1541,6 +1543,12 @@ threshold, the format=flowed encoding is used." :group 'mew-draft :type 'integer) +(defcustom mew-flowed-delsp-threshold 8 + "*A threshold percent to decide to DelSp. +If the percent of SPC is less than this threshold, DelSp is used." + :group 'mew-draft + :type 'integer) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Ask? @@ -1575,7 +1583,7 @@ any query." (defcustom mew-ask-range nil "*If *non-nil*, Mew asks range if the cache in Summary mode seems -invalid. Otherwise, 'update is used for range in the case." +invalid. Otherwise, `update' is used for range in the case." :group 'mew-summary :type 'boolean) @@ -1614,7 +1622,7 @@ invalid. Otherwise, 'update is used for range in the case." is appropriate. nil: not ask A list of charset: ask if the charset is not a member of the list - t: ask if 'mew-charset-m17n' is used." + t: ask if `mew-charset-m17n' is used." :group 'mew-draft :type '(choice (const nil) (const t) (repeat string))) @@ -1663,7 +1671,7 @@ Otherwise, windows are configured dynamically." (defcustom mew-use-text/html nil "*If non-nil, Mew parses text/html messages. -If you want to use 'mew-use-text/html-list', this value should be 'nil'." +If you want to use `mew-use-text/html-list', this value should be `nil'." :group 'mew-message :type 'boolean) @@ -1675,21 +1683,21 @@ If KEY is t, all folders matches it. The corresponding boolean is returned always. If KEY is a string, match-function is applied according to -'mew-use-text/html-string-type'. If matched, the corresponding +`mew-use-text/html-string-type'. If matched, the corresponding boolean is returned. If KEY is a list of strings, match-function is applied according -to 'mew-use-text/html-list-type'. If a match found out of the +to `mew-use-text/html-list-type'. If a match found out of the strings, the corresponding boolean is returned. -Candidate values for 'mew-use-text/html-string-type' and -'mew-use-text/html-list-type' are as follows: +Candidate values for `mew-use-text/html-string-type' and +`mew-use-text/html-list-type' are as follows: - 'regex Regular expression. - 'recursive Initial substring match. That is, + \\='regex Regular expression. + \\='recursive Initial substring match. That is, not only a folder specified but all so all sub-folders are matched. - 'string String comparison. + \\='string String comparison. " :group 'mew-summary :type '(choice @@ -1702,13 +1710,13 @@ Candidate values for 'mew-use-text/html-string-type' and (defcustom mew-use-text/html-string-type 'regex "*A value to specify an action if the key is a string in -'mew-use-text/html-list'. Candidates are 'regex, 'recursive, and 'string." +`mew-use-text/html-list'. Candidates are `regex', `recursive', and `string'." :group 'mew-summary :type '(choice (const regex) (const recursive) (const string))) (defcustom mew-use-text/html-list-type 'recursive "*A value to specify an action if the key is a list of strings in -'mew-use-text/html-list'. Candidates are 'regex, 'recursive, and 'string." +`mew-use-text/html-list'. Candidates are `regex', `recursive', and `string'." :group 'mew-summary :type '(choice (const regex) (const recursive) (const string))) @@ -1720,7 +1728,7 @@ Candidate values for 'mew-use-text/html-string-type' and (defcustom mew-use-symbolic-link-for-forwarding nil "*If nil, messages to be forwarded is copied to +draft when -'\\\\[mew-summary-forward]' and '\\[mew-summary-multi-forward]' are used. Otherwise, symbolic links are +`\\\\[mew-summary-forward]' and `\\[mew-summary-multi-forward]' are used. Otherwise, symbolic links are created (if the feature is provided)." :group 'mew-draft :type 'boolean) @@ -1739,8 +1747,8 @@ created (if the feature is provided)." "*Type of the password manager when mew-use-master-passwd is non-nil." :group 'mew-privacy :type '(choice - (const :tag "Master Password" 'master) - (const :tag "auth-source" 'auth-source))) + (const :tag "Master Password" master) + (const :tag "auth-source" auth-source))) (defcustom mew-use-8bit nil "*If non-nil, the 8bit-clean charset mechanism is used for 8bit @@ -1758,7 +1766,7 @@ composing." :type 'boolean) (defcustom mew-use-autoconv-when-unknown t - "*If non-nil, Mew uses 'mew-cs-autoconv' for an unknown coding system." + "*If non-nil, Mew uses `mew-cs-autoconv' for an unknown coding system." :group 'mew-message :type 'boolean) @@ -1771,26 +1779,26 @@ is used as a folder candidate instead of inbox." (defcustom mew-use-biff nil "*If non-nil, Mew displays \"Mail(n)\" in the mode line if your message server receives messages. This is confirmed by POP or IMAP -every 'mew-biff-interval' minutes. +every `mew-biff-interval' minutes. -To use this feature, 'mew-use-cached-passwd' should be 't'. +To use this feature, `mew-use-cached-passwd' should be `t'. If you want to use the biff functionality against a local mailbox, use -'display-time-mode' instead." +`display-time-mode' instead." :group 'mew-env :type 'boolean) (defcustom mew-use-biff-bell nil "*If non-nil, Mew beeps when the number of messages in your POP server becomes non-zero. To use this feature, -'mew-use-biff' should be 't'." +`mew-use-biff' should be `t'." :group 'mew-env :type 'boolean) (defcustom mew-use-sender nil "*If From: contains multiple addresses, Mew adds Sender: anyway. If From: contains one address and SMTP MAIL FROM -\('mew-smtp-mail-from') is different from it, this variable effects. +\(`mew-smtp-mail-from') is different from it, this variable effects. If non-nil, Mew adds Sender: and specifies SMTP MAIL FROM to its value. Otherwise, Mew does not add Sender:." :group 'mew-draft @@ -1803,7 +1811,7 @@ Otherwise, Mew does not add Sender:." (defcustom mew-use-alternative t "*If non-nil, Multipart/Alternative is treated as a singlepart -according to 'mew-mime-multipart-alternative-list'." +according to `mew-mime-multipart-alternative-list'." :group 'mew-summary :type 'boolean) @@ -1813,7 +1821,7 @@ If one of them matches, Multiprat/Alternative is treated as Multipart/Mixed. An example: - (setq mew-disable-alternative-regex-list '(\"Apple Mail\"))" + (setq mew-disable-alternative-regex-list \\='(\"Apple Mail\"))" :group 'mew-summary :type '(list regexp)) @@ -1839,27 +1847,27 @@ multipart is displayed with its header." :type 'boolean) (defcustom mew-use-fast-refile nil - "*If non-nil, 'rassoc' is used to look up the alist of + "*If non-nil, `rassoc' is used to look up the alist of folders. Since it is a built-in function, it makes marking for refile much faster especially when the alist is long. But the fast method -is not case-sensitive. So, you should set this variable to 't' only when +is not case-sensitive. So, you should set this variable to `t' only when you does not use capital letters for your folders. If nil, the old slow method, which is case-sensitive, is used." :group 'mew-refile :type 'boolean) (defcustom mew-use-node-folder t - "*If non-nil, candidate folders chosen by 'mew-refile-guess-by-folder' + "*If non-nil, candidate folders chosen by `mew-refile-guess-by-folder' includes node folders as well as leaf folders. Otherwise, candidates are selected out of leaf folders only." :group 'mew-refile :type 'boolean) (defcustom mew-use-case-completion t - "*If non-nil, 'mew-case' is automatically completed when you + "*If non-nil, `mew-case' is automatically completed when you input a folder. For example, consider that you input a folder in a -local folder after typing '\\\\[mew-summary-goto-folder]'. -Typing '%' automatically inserts 'mew-case' before '%'." +local folder after typing `\\\\[mew-summary-goto-folder]'. +Typing `%' automatically inserts `mew-case' before `%'." :group 'mew-summary :type 'boolean) @@ -1959,8 +1967,8 @@ If you cite a message, the citation style of format=flowed is used. " (defcustom mew-multipart-icon-position 'right "*Position where multipart icons are displayed. -If 'left, displayed at the left size of the default toolbar. -If 'right, displayed at the right size of the default toolbar. +If `left', displayed at the left size of the default toolbar. +If `right', displayed at the right size of the default toolbar. Otherwise, not displayed." :group 'mew-summary :type 'symbol) @@ -1987,34 +1995,34 @@ Otherwise, not displayed." (defcustom mew-summary-show-direction 'next "*Direction for SPC at end of message. -'up 'down 'next(current direction) 'stop. -Other values are considered as 'stop. -See also 'mew-summary-mark-direction'." +`up' `down' `next'(current direction) `stop'. +Other values are considered as `stop'. +See also `mew-summary-mark-direction'." :group 'mew-summary :type '(choice (const next) (const up) (const down) (const stop))) (defcustom mew-summary-mark-direction 'next "*Direction after marking a message -'up 'down 'next(current direction) 'stop. -Other values are considered as 'stop. -See also 'mew-summary-show-direction'." +`up' `down' `next'(current direction) `stop'. +Other values are considered as `stop'. +See also `mew-summary-show-direction'." :group 'mew-summary :type '(choice (const next) (const up) (const down) (const stop))) (defcustom mew-summary-show-pause nil "*Pause on going to next message if *non-nil*. -See also 'mew-summary-show-direction' and 'mew-summary-mark-direction'." +See also `mew-summary-show-direction' and `mew-summary-mark-direction'." :group 'mew-summary :type 'boolean) (defcustom mew-summary-mark-duplicated-skip 'first "*This value decides which duplicated message should not be -marked with 'mew-mark-duplicated' when 'mew-summary-mark-duplicated' +marked with `mew-mark-duplicated' when `mew-summary-mark-duplicated' is executed. -Possible value is 'first, 'last, or nil. +Possible value is `first', `last', or nil. nil means to mark all duplicated messages. -Other values are considered as 'first." +Other values are considered as `first'." :group 'mew-summary :type '(choice (const first) (const last) (const nil))) @@ -2030,19 +2038,19 @@ displayed." :type '(choice integer (const nil))) (defcustom mew-summary-goto-line-then-display t - "*If non-nil 'mew-summary-goto-line' displays the message + "*If non-nil `mew-summary-goto-line' displays the message where the cursor jumped." :group 'mew-summary :type 'boolean) (defcustom mew-summary-jump-top-then-display t - "*If non-nil 'mew-summary-jump-top' displays the top message + "*If non-nil `mew-summary-jump-top' displays the top message where the cursor jumped to the top." :group 'mew-summary :type 'boolean) (defcustom mew-summary-jump-bottom-then-display t - "*If non-nil 'mew-summary-jump-bottom' displays the bottom message + "*If non-nil `mew-summary-jump-bottom' displays the bottom message where the cursor jumped to the bottom." :group 'mew-summary :type 'boolean) @@ -2090,7 +2098,7 @@ insert a newline at the end of buffer. " :type 'boolean) (defcustom mew-field-other-visible t - "*If *non-nil*, fields which are not found in 'mew-field-spec' + "*If *non-nil*, fields which are not found in `mew-field-spec' are displayed after visible fields. Otherwise they are hidden before visible fields (and after invisible fields)." :group 'mew-message @@ -2098,7 +2106,7 @@ hidden before visible fields (and after invisible fields)." (defcustom mew-use-header-veil t "*If *non-nil*, field lines of To: and Cc: -over 'mew-header-veil-count' are covered with invisible veils." +over `mew-header-veil-count' are covered with invisible veils." :group 'mew-message :type 'boolean) @@ -2118,16 +2126,16 @@ over 'mew-header-veil-count' are covered with invisible veils." ;;; (defcustom mew-draft-mode-auto-save t - "*If t, a draft is repeatedly saved to 'buffer-auto-save-file-name' -by 'do-auto-save'. If automatic saving is enabled and Emacs is crashed, -the '.save-' file remains. If this value is nil, automatic saving does + "*If t, a draft is repeatedly saved to `buffer-auto-save-file-name' +by `do-auto-save'. If automatic saving is enabled and Emacs is crashed, +the `.save-' file remains. If this value is nil, automatic saving does not work resulting that no garbage file remains." :group 'mew-draft :type 'boolean) (defcustom mew-header-alist nil "*List of (key value) for header field to be inserted on draft. -'((\"X-fingerprint:\" \"6B 63 38 88 67 5E 96 8E CE A4 62 73 3F 11 64 94\") +\\='((\"X-fingerprint:\" \"6B 63 38 88 67 5E 96 8E CE A4 62 73 3F 11 64 94\") (\"X-URL:\" \"http://www.example.org/\"))" :group 'mew-draft :type '(list (list string string))) @@ -2155,46 +2163,46 @@ line." (defcustom mew-reply-to nil "*A value inserted into Reply-To: field in Draft mode if *non-nil*. -See also 'mew-config-alist'." +See also `mew-config-alist'." :group 'mew-draft :type '(choice string (const nil))) (defcustom mew-fcc "+backup" "*A value inserted into Fcc: field in Draft mode if *non-nil*. -See also 'mew-config-alist'." +See also `mew-config-alist'." :group 'mew-draft :type '(choice string (const nil))) (defcustom mew-cc nil "*A value inserted into Cc: field in Draft mode if *non-nil*. -See also 'mew-config-alist'." +See also `mew-config-alist'." :group 'mew-draft :type '(choice string (const nil))) (defcustom mew-bcc nil "*A value inserted into Bcc: field in Draft mode if *non-nil*. -See also 'mew-config-alist'." +See also `mew-config-alist'." :group 'mew-draft :type '(choice string (const nil))) (defcustom mew-dcc nil "*A value inserted into Dcc: field in Draft mode if *non-nil*. -If the value is 'me, your address is automatically inserted +If the value is `me', your address is automatically inserted according to the case. -See also 'mew-config-alist'." +See also `mew-config-alist'." :group 'mew-draft :type '(choice string (const nil))) (defcustom mew-from nil "*A value inserted into From: field in Draft mode if *non-nil*. -For backward-compatibility. See also 'mew-name', 'mew-user', and -'mew-mail-domain'." +For backward-compatibility. See also `mew-name', `mew-user', and +`mew-mail-domain'." :group 'mew-draft :type '(choice string (const nil))) (defcustom mew-organization nil "*A value inserted into Organization: field in Draft mode if *non-nil*. -See also 'mew-config-alist'." +See also `mew-config-alist'." :group 'mew-draft :type '(choice string (const nil))) @@ -2210,13 +2218,13 @@ See also 'mew-config-alist'." (defcustom mew-cite-hook nil "*Hook for an external cite mechanism. If you want to use -super-cite, (setq mew-cite-hook 'sc-cite-original)." +super-cite, (setq mew-cite-hook \\='sc-cite-original)." :group 'mew-cite :type 'hook) (defcustom mew-cite-strings-function 'mew-cite-strings "*Function called from mew-cite-original which to create cite labels -according to 'mew-cite-format' and 'mew-cite-fields'." +according to `mew-cite-format' and `mew-cite-fields'." :group 'mew-cite :type '(choice function (const nil))) @@ -2227,12 +2235,12 @@ according to 'mew-cite-format' and 'mew-cite-fields'." (defcustom mew-cite-prefix-function nil "*Function called on citations. A good candidate is -'mew-cite-prefix-username" +`mew-cite-prefix-username'" :group 'mew-cite :type '(choice function (const nil))) (defcustom mew-cite-prefix-confirmp nil - "*If *non-nil*, citation prefix (such as 'kazu> ') is + "*If *non-nil*, citation prefix (such as `kazu> ') is confirmed to be used." :group 'mew-cite :type 'boolean) @@ -2255,8 +2263,8 @@ If this is nil, label is not generated." (defcustom mew-draft-cite-fill-mode nil "*A method to format a citation header. -If 'wrap, format with fill-region. -If 'truncate, cut over fill-column and insert 'mew-draft-cite-ellipses'." +If `wrap', format with fill-region. +If `truncate', cut over fill-column and insert `mew-draft-cite-ellipses'." :group 'mew-draft :type '(choice (symbol :tag "Wrap" wrap) (symbol :tag "Truncate" truncate) @@ -2264,25 +2272,25 @@ If 'truncate, cut over fill-column and insert 'mew-draft-cite-ellipses'." (defcustom mew-draft-cite-ellipses " .." "String that is inserted a truncated line when -'mew-draft-cite-fill-mode' is 'truncate." +`mew-draft-cite-fill-mode' is `truncate'." :group 'mew-cite :type 'string) (defcustom mew-draft-cite-label-fill-column nil - "If *non-nil*, this value is used for 'mew-draft-cite-fill-mode' -instead of 'fill-column'." + "If *non-nil*, this value is used for `mew-draft-cite-fill-mode' +instead of `fill-column'." :group 'mew-cite :type '(choice integer (const nil))) (defcustom mew-summary-reply-position 'body - "If 'body, the cursor locates in the beginning of the body. + "If `body', the cursor locates in the beginning of the body. Otherwise, the cursor is after To:." :group 'mew-cite :type 'symbol) (defcustom mew-summary-reply-with-citation-position 'end - "If 'body, the cursor locates in the beginning of the body. -If 'end, the cursor locates after the citation. + "If `body', the cursor locates in the beginning of the body. +If `end', the cursor locates after the citation. Otherwise, the cursor is after To:." :group 'mew-cite :type 'symbol) @@ -2298,12 +2306,12 @@ Otherwise, the cursor is after To:." :type 'boolean) (defcustom mew-visit-queue-after-sending nil - "*If *non-nil*, visit to +queue after '\\\\[mew-draft-make-message]' in Draft mode." + "*If *non-nil*, visit to +queue after `\\\\[mew-draft-make-message]' in Draft mode." :group 'mew-draft :type 'boolean) (defcustom mew-visit-inbox-after-setting-case nil - "*If *non-nil*, visit to an appropriate inbox after setting a case with '\\\\[mew-summary-set-case]'." + "*If *non-nil*, visit to an appropriate inbox after setting a case with `\\\\[mew-summary-set-case]'." :group 'mew-summary :type 'boolean) @@ -2319,7 +2327,7 @@ variable, the corresponding input-method is automatically selected. An example configuration is as follows: \(setq mew-charset-input-method-alist - '((\"iso-8859-1\" \"latin-1-postfix\") + \\='((\"iso-8859-1\" \"latin-1-postfix\") (\"iso-8859-2\" \"latin-2-postfix\"))) " :group 'mew-draft @@ -2343,13 +2351,13 @@ an appropriate charset cannot be chosen. Possible candidates are If characters of both Latin 1 and Lain 9 exist in a draft, Mew takes the following step to decide a charset. -1. If 'unify-8859-on-decoding-mode' is used: +1. If `unify-8859-on-decoding-mode' is used: 1.1. Use \"iso-8859-1\" if no loss. 1.2. Otherwise, use \"utf-8\". -2. If 'unify-8859-on-decoding-mode' is not used: +2. If `unify-8859-on-decoding-mode' is not used: 2.1. If both ISO-8859-1 and ISO-8859-15 can be used with no - loss, 'mew-charset-latin' is used. + loss, `mew-charset-latin' is used. 2.2. Use \"iso-8859-1\" if no loss. 2.3. Use \"iso-8859-15\" if no loss. 2.3. Otherwise, use \"utf-8\". @@ -2364,7 +2372,7 @@ the following step to decide a charset. (defcustom mew-signature-file "~/.signature" "*A signature file to be inserted in Draft mode. To support multiple -signature files, use 'c-sig.el'." +signature files, use `c-sig.el'." :group 'mew-draft :type 'file) @@ -2398,7 +2406,7 @@ as the final part." :type 'boolean) (defcustom mew-use-samba-encoding-type 'cap - "*A type of SAMBA encoding. Either 'cap or 'hex." + "*A type of SAMBA encoding. Either `cap' or `hex'." :group 'mew-summary :type '(choice (const cap) (const hex))) @@ -2413,7 +2421,7 @@ as the final part." ;;; (defcustom mew-attach-move-by-line nil - "*If non-nil, 'mew-attach-{next,previous}' move the cursor line by line." + "*If non-nil, `mew-attach-{next,previous}' move the cursor line by line." :group 'mew-draft :type 'boolean) @@ -2574,31 +2582,31 @@ mew-summary-goto-folder." (defcustom mew-save-dir mew-home "*The default directory to save messages or parts in Summary mode. -See also 'mew-copy-dir'." +See also `mew-copy-dir'." :group 'mew-summary :type 'directory) (defcustom mew-summary-preserve-dir nil "*If non-nil, the previous directory is used as the default -directory for save, etc. See also 'mew-draft-preserve-dir'." +directory for save, etc. See also `mew-draft-preserve-dir'." :group 'mew-summary :type 'boolean) (defcustom mew-copy-dir mew-home "*The default directory from which attachments are copied in Draft mode. -See also 'mew-save-dir'." +See also `mew-save-dir'." :group 'mew-draft :type 'directory) (defcustom mew-draft-preserve-dir nil "*If non-nil, the previous directory is used as the default -directory for copy, etc. See also 'mew-summary-preserve-dir'." +directory for copy, etc. See also `mew-summary-preserve-dir'." :group 'mew-draft :type 'boolean) (defcustom mew-file-append-p nil "*If *non-nil*, a message or a part is appended to the existing file -on '\\\\[mew-summary-save]'. Otherwise overwrote." +on `\\\\[mew-summary-save]'. Otherwise overwrote." :group 'mew-summary :type 'boolean) @@ -2608,8 +2616,8 @@ on '\\\\[mew-summary-save]'. Otherwise overwrote." ;;; (defcustom mew-regex-folder-candidate "^[^.#0-9]\\|^[0-9].*[^0-9]" - "*Regular expression used in 'mew-dir-list-with-link-count' -and 'mew-dir-list-without-link-count' to list up folder + "*Regular expression used in `mew-dir-list-with-link-count' +and `mew-dir-list-without-link-count' to list up folder candidates. The default value \"^[^.#0-9]\\\\|^[0-9].*[^0-9]\" lists up folders whose name is alphabet only." :group 'mew-env @@ -2628,7 +2636,7 @@ folders whose name is alphabet only." The format is like this: (setq mew-refile-guess-alist - '((\"To:\" + \\='((\"To:\" (\"wide@wide\" \"+wide/wide\") (\"adam\" \"+labo/adam\")) (\"Newsgroups:\" @@ -2669,24 +2677,24 @@ The format is like this: mew-refile-guess-by-default)) (defcustom mew-refile-auto-refile-skip-any-mark nil - "*If *non-nil*, 'mew-summary-auto-refile' does not touch + "*If *non-nil*, `mew-summary-auto-refile' does not touch any already marked message." :group 'mew-refile :type 'boolean) (defcustom mew-refile-auto-refile-confirm nil - "*If *non-nil*, 'mew-summary-auto-refile' prompts the user for + "*If *non-nil*, `mew-summary-auto-refile' prompts the user for confirmation before refiling." :group 'mew-refile :type 'boolean) (defcustom mew-refile-guess-strip-domainpart t - "*If *non-nil*, 'mew-refile-guess-by-default' strips domainpart of from" + "*If *non-nil*, `mew-refile-guess-by-default' strips domainpart of from" :group 'mew-refile :type 'boolean) (defcustom mew-refile-guess-from-me-is-special nil - "*If *non-nil*, 'mew-refile-guess-by-from-*' think the messages from + "*If *non-nil*, `mew-refile-guess-by-from-*' think the messages from yourself as special. They use To: or Cc: instead of From:" :group 'mew-refile :type 'boolean) @@ -2699,13 +2707,13 @@ yourself as special. They use To: or Cc: instead of From:" (defcustom mew-case-guess-alist nil "*If *non-nil*, this value is used to guess cases when prepared or composed. -The syntax is exactly the same as 'mew-refile-guess-alist'." +The syntax is exactly the same as `mew-refile-guess-alist'." :group 'mew-draft :type mew-custom-type-of-guess-alist) (defcustom mew-case-guess-when-replied-alist nil "*If *non-nil*, this value is used to guess cases when replied. -The syntax is exactly the same as 'mew-refile-guess-alist'." +The syntax is exactly the same as `mew-refile-guess-alist'." :group 'mew-draft :type mew-custom-type-of-guess-alist) @@ -2747,8 +2755,8 @@ mew-temp-file a file name prefix contained the directory name. The directory must be unreadable from others, otherwise it might become a big security hole. And this directory must not be gained access through network to prevent tire-tapping. Mew never uses -'call-process-region' rather does use 'call-process' creating a -temporary file with mew-temp-file by itself. If 'call-process-region' +`call-process-region' rather does use `call-process' creating a +temporary file with mew-temp-file by itself. If `call-process-region' is used, Emacs creates a temporary file (probably in /tmp). So bad guys can wiretap the temporary file." :group 'mew-privacy @@ -2766,7 +2774,7 @@ guys can wiretap the temporary file." (defcustom mew-auto-get t "If *non-nil*, Mew gets messages from your mailbox automatically. -'\\[universal-argument] \\[mew]' equals to '\\[mew]' with 'mew-auto-get' +`\\[universal-argument] \\[mew]' equals to `\\[mew]' with `mew-auto-get' reversed." :group 'mew-summary :type 'boolean) @@ -2774,7 +2782,7 @@ reversed." (defcustom mew-auto-flush-queue t "If *non-nil* and if there are queued messages in +queue, they are flushed after getting -message (i.e. '\\\\[mew-summary-retrieve]'). This +message (i.e. `\\\\[mew-summary-retrieve]'). This idea saves money in dial up environment." :group 'mew-draft :type 'boolean) @@ -2785,7 +2793,7 @@ idea saves money in dial up environment." ;;; (defcustom mew-pick-pattern-list nil - "*A list of pick pattern which can be circular completed with '\\\\[mew-circular-complete-switch]' + "*A list of pick pattern which can be circular completed with `\\\\[mew-circular-complete-switch]' The first member is displayed as a default value." :group 'mew-summary :type '(choice (const nil) (repeat string))) @@ -2799,7 +2807,7 @@ The first member is displayed as a default value." (defcustom mew-sort-default-key "date" "*Default sort key when inputting a sort key. -Its format is key:mode where more is found in 'mew-sort-mode'." +Its format is key:mode where more is found in `mew-sort-mode'." :group 'mew-summary :type 'string) @@ -2807,7 +2815,7 @@ Its format is key:mode where more is found in 'mew-sort-mode'." "*List of (folder sort-key) to decide a default sort-key of a specific folder. An example is follows: \(setq mew-sort-default-key-alist - '((\"+tmp/beginners\" \"x-sequence\") + \\='((\"+tmp/beginners\" \"x-sequence\") (\"+tmp/elips\" \"x-mail-count\")))" :group 'mew-summary :type '(list (list string string))) @@ -2816,7 +2824,7 @@ of a specific folder. An example is follows: '(("date" "date") ("subject") ("from") ("to") ("newsgroups") ("posted" "date") ("x-sequence" "postnum") ("x-mail-count" "num") ("x-ml-count" "num")) - "*List of fields for 'mew-summary-sort'. + "*List of fields for `mew-summary-sort'. Each element is (FIELD-NAME) or (FIELD-NAME . MODE). MODE is one of \"date\" (by chronological order) or \"num\" (by numerical order) or @@ -2882,20 +2890,20 @@ MODE is one of \"date\" (by chronological order) or :type 'boolean) (defcustom mew-use-cursor-mark nil - "*If *non-nil*, show 'mew-cursor-mark' in the beginning of the -cursor line. This is convenient if 'mew-use-highlight-cursor-line' is + "*If *non-nil*, show `mew-cursor-mark' in the beginning of the +cursor line. This is convenient if `mew-use-highlight-cursor-line' is not available." :group 'mew-highlight :type 'boolean) (defcustom mew-use-highlight-cursor-line t - "*Put the 'mew-highlight-cursor-line-face' face on the current line + "*Put the `mew-highlight-cursor-line-face' face on the current line in Summary/Virtual mode." :group 'mew-highlight :type 'boolean) (defcustom mew-use-highlight-mouse-line nil - "*Put the 'mew-highlight-mouse-line-face' face on the mouse location + "*Put the `mew-highlight-mouse-line-face' face on the mouse location in Summary/Virtual mode." :group 'mew-highlight :type 'boolean) @@ -2916,7 +2924,7 @@ in Summary/Virtual mode." (defcustom mew-cursor-mark ">" "*The mark in the beginning of the cursor line if -'mew-use-cursor-mark' is *non-nil*." +`mew-use-cursor-mark' is *non-nil*." :group 'mew-highlight :type '(choice string (const nil))) @@ -2938,7 +2946,7 @@ in Summary/Virtual mode." "\\(\\(s?https?\\|ftp\\|gopher\\|telnet\\|wais\\)://\\)" "\\)" "[^ \t\n>)\"]*" - "[^] \t\n>.,:)\"]") + "[^] \t\n>,:)\"]") "*Regular expression to find URL." :group 'mew-highlight :type 'regexp) @@ -2971,41 +2979,41 @@ will be appended (mew-mail-domain) when composing." :type 'boolean) (defcustom mew-addrbook-override-by-newone t - "If non-nil, the 'user' entry in 'mew-alias-auto-alist' + "If non-nil, the `user' entry in `mew-alias-auto-alist' is override by a new entry of (user different-address). This means that addresses in To: and Cc: in Draft mode are -always learned with an exception 'user' is defined in Addrbook. -If nil, the old 'user' entry remains." +always learned with an exception `user' is defined in Addrbook. +If nil, the old `user' entry remains." :group 'mew-addrbook :type 'boolean) (defcustom mew-addrbook-for-cite-label nil "*How to replace the From: value in cite label -with Addrbook. See 'mew-addrbook-switch'." +with Addrbook. See `mew-addrbook-switch'." :group 'mew-addrbook :type 'symbol) (defcustom mew-addrbook-for-cite-prefix 'username "*How to replace the From: value in cite prefix -with Addrbook. See 'mew-addrbook-switch'." +with Addrbook. See `mew-addrbook-switch'." :group 'mew-addrbook :type 'symbol) (defcustom mew-addrbook-for-address-expansion 'name "*How to replace an address in address fields -with Addrbook. See 'mew-addrbook-switch'." +with Addrbook. See `mew-addrbook-switch'." :group 'mew-addrbook :type 'symbol) (defcustom mew-addrbook-for-summary 'nickname "*How to replace a From: address in summary-form with Addrbook. -See 'mew-addrbook-switch' and 'mew-summary-form-extract-rule'." +See `mew-addrbook-switch' and `mew-summary-form-extract-rule'." :group 'mew-addrbook :type 'symbol) (defcustom mew-addrbook-strip-domainpart t "*If *non-nil*, a shortname is created by stripping its domain part -when '\\\\[mew-summary-addrbook-add]' in Summary mode." +when `\\\\[mew-summary-addrbook-add]' in Summary mode." :group 'mew-addrbook :type 'boolean) @@ -3032,21 +3040,21 @@ list. the address is not registered to Addrbook." (defcustom mew-draft-privacy-method 'pgp "Privacy method to create messages in Draft mode. -You should choose 'pgp or 'smime." +You should choose `pgp' or `smime'." :group 'mew-privacy :type '(choice (const pgp) (const smime))) (defcustom mew-protect-privacy-always nil "*If non-nil, a draft is to be protected according to -'mew-protect-privacy-always-type'." +`mew-protect-privacy-always-type'." :group 'mew-privacy :type 'boolean) (defcustom mew-protect-privacy-always-type 'pgp-signature "*A type of privacy protection for all drafts. -Currently, 'pgp-signature, 'pgp-encryption, 'pgp-signature-encryption, -'pgp-encryption-signature, and nil are available. Since signature -does not require receiver's public key, signature service may be +Currently, `pgp-signature', `pgp-encryption', `pgp-signature-encryption', +`pgp-encryption-signatur'e, and nil are available. Since signature +does not require receiver\\='s public key, signature service may be appropriate for this value." :group 'mew-privacy :type '(choice (const pgp-signature) @@ -3061,14 +3069,14 @@ appropriate for this value." (defcustom mew-protect-privacy-encrypted nil "*If non-nil, a draft replying a encrypted message is to be protected -according to 'mew-protect-privacy-encrypted-type'." +according to `mew-protect-privacy-encrypted-type'." :group 'mew-privacy :type 'boolean) (defcustom mew-protect-privacy-encrypted-type 'pgp-encryption "*A type of privacy protection for drafts replying encrypted -messages. Currently, 'pgp-signature, 'pgp-encryption, -'pgp-signature-encryption, 'pgp-encryption-signature, +messages. Currently, `pgp-signature', `pgp-encryption', +`pgp-signature-encryption', `pgp-encryption-signature', and nil are available." :group 'mew-privacy :type '(choice (const pgp-signature) @@ -3082,7 +3090,7 @@ and nil are available." (other :tag "nil" nil))) (defcustom mew-protect-privacy-with-old-pgp-signature nil - "*If non-nil and 'mew-use-old-pgp' is non-nil, + "*If non-nil and `mew-use-old-pgp' is non-nil, the old fashioned PGP message are used when composing." :group 'mew-privacy :type 'boolean) @@ -3093,7 +3101,7 @@ the old fashioned PGP message are used when composing." :type 'integer) (defcustom mew-passwd-lifetime 2 - "*Number of 'mew-passwd-timer-unit' to cancel the cached passwords." + "*Number of `mew-passwd-timer-unit' to cancel the cached passwords." :group 'mew-privacy :type 'integer) @@ -3105,7 +3113,7 @@ the password is used." (defcustom mew-encrypt-to-myself t "*if non-nil, any message/part to be encrypted is encrypted with -your public key as well as receivers' one." +your public key as well as receivers\\=' one." :group 'mew-privacy :type 'boolean) @@ -3284,7 +3292,7 @@ Bad example: Good example: Content-Disposition: attachment; - filename*=iso-2022-jp''%1B%24B%24F%249%24H%1B%28B + filename*=iso-2022-jp\\='\\='%1B%24B%24F%249%24H%1B%28B Bad example Content-Disposition: attachment; diff --git a/elpa/mew-20230415.633/mew-vars2.el b/elpa/mew-20240911.749/mew-vars2.el similarity index 95% rename from elpa/mew-20230415.633/mew-vars2.el rename to elpa/mew-20240911.749/mew-vars2.el index 1c9268a8..77738ef2 100644 --- a/elpa/mew-20230415.633/mew-vars2.el +++ b/elpa/mew-20240911.749/mew-vars2.el @@ -176,7 +176,7 @@ for privacy reasons.") (nickname mew-addrbook-nickname-get) (name mew-addrbook-name-get)) "Function database to get each field of Addrbook. -'shortname, 'address, 'username, 'nickname, and 'name is defined.") +`shortname', `address', `username', `nickname', and `name' is defined.") (defun mew-addrbook-func (key) (mew-alist-get-value (assq key mew-addrbook-switch))) @@ -300,8 +300,8 @@ its . When composing, content-type is selected according to the suffix of the file to be attached with . -For , 'nil', 'mew-b64', or 'mew-qp' -should be specified. 'mew-b64' and 'mew-qp' means Base64 and +For , `nil', `mew-b64', or `mew-qp' +should be specified. `mew-b64' and `mew-qp' means Base64 and Quoted-Printable, respectively. This is used as an appropriate content-transfer-encoding when composing. @@ -329,7 +329,7 @@ whose format is one of followings: - (nil (\"prog\" args async)) Equivalent to (\"prog\" args async). - (nil func2) - (1) Displayed 'type \\[mew-summary-execute-external]'. + (1) Displayed `type \\[mew-summary-execute-external]'. (2) is called. - (func1 func2) (1) is called. @@ -347,8 +347,8 @@ whose format is one of followings: If the original content-type is Application/Octet-Stream, you are asked to choose or \"prog\". -Note that (1) indicates the action for '\\[mew-summary-display]' and -\(2) indicates the action for '\\[mew-summary-execute-external]'. +Note that (1) indicates the action for `\\[mew-summary-display]' and +\(2) indicates the action for `\\[mew-summary-execute-external]'. If you want to add an entry for new content-type, please let the author know. Such an entry should be shared by all users and be included in @@ -383,7 +383,7 @@ the next version of Mew.") (defvar mew-mime-content-type-for-ooffice nil "A list of (content-type suffix) for OpenOffice.org to be prepended -'mew-mime-content-type'") +`mew-mime-content-type'") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; @@ -575,8 +575,8 @@ and face-for-value. Fields whose visible-p is t are displayed in Message mode in the defined order. Fields whose visible-p is nil are hidden in Message mode. Type DEL to see them. Fields not matched to field-regular-expressions are operated by the value of -'mew-field-other-visible'. If face-for-key is omitted, -'mew-face-header-key' is used. If face-for-value is not +`mew-field-other-visible'. If face-for-key is omitted, +`mew-face-header-key' is used. If face-for-value is not present, mew-face-header-marginal is used." :group 'mew-highlight :type '(alist :key-type regexp @@ -785,12 +785,12 @@ undo-func, exec-func, and sanity-fucn.") (defvar mew-inbox-action-alist nil "*This variable controls actions when retrieving messages. -Currently this works when '\\\\[mew-summary-retrieve]'. -You can put any marks, typically 'o' and 'D' according to message +Currently this works when `\\\\[mew-summary-retrieve]'. +You can put any marks, typically `o' and `D' according to message headers. This value must be a list of entries. An entry is a list whose first -element is a field defined in 'mew-scan-fields'. +element is a field defined in `mew-scan-fields'. If the second element is a list, the first element of the list must be a mark (e.g. ?D) or a string which is a comma separated folders (e.g @@ -798,12 +798,12 @@ a mark (e.g. ?D) or a string which is a comma separated folders (e.g expressions to be matched to the value of the field. With the following configuration, Mew marks messages whose Subject: -matches \"adult\" or \"money\" with 'D'. And Mew marks messages whose -Subject is \"daily log\" with 'o' to be refiled \"+log\". Also Mew -marks messages whose Content-Type: contains \"gb2312\" with 'D'. +matches \"adult\" or \"money\" with `D'. And Mew marks messages whose +Subject is \"daily log\" with `o' to be refiled \"+log\". Also Mew +marks messages whose Content-Type: contains \"gb2312\" with `D'. \(setq mew-inbox-action-alist - '((\"Subject:\" + \\='((\"Subject:\" (?D \"adult\" \"money\") (\"+log\" \"daily log\")) (\"Content-Type:\" @@ -812,7 +812,7 @@ marks messages whose Content-Type: contains \"gb2312\" with 'D'. If the second element of the entry is a symbol, it will be called as a function which returns nil or a mark or a string. -If you are using 'spamassassin' which adds the \"X-Spam-Flag:\" field +If you are using `spamassassin' which adds the \"X-Spam-Flag:\" field to messages and puts them in your mailbox, configure as follows: \(setq mew-spam: \"X-Spam-Flag:\") @@ -822,14 +822,14 @@ to messages and puts them in your mailbox, configure as follows: (if (string-match \"yes\" val) ?D))) \(setq mew-inbox-action-alist - '((\"X-Spam-Flag:\" mew-spam-assassin))) + \\='((\"X-Spam-Flag:\" mew-spam-assassin))) With this configuration, messages with the \"X-Spam-Flag:\" whose -value is \"Yes\" are automatically marked with 'D' since the -'mew-spam-assassin' function returns 'D' marks when the value is +value is \"Yes\" are automatically marked with `D' since the +`mew-spam-assassin' function returns `D' marks when the value is \"Yes\". -If you are using 'bogofilter' which adds the \"X-Bogosity:\" field +If you are using `bogofilter' which adds the \"X-Bogosity:\" field to messages and puts them to your mailbox, configure as follows: \(setq mew-spam: \"X-Bogosity:\") @@ -839,7 +839,7 @@ to messages and puts them to your mailbox, configure as follows: (if (string-match \"yes\" val) ?D))) \(setq mew-inbox-action-alist - '((\"X-Bogosity:\" mew-spam-bogofilter))) + \\='((\"X-Bogosity:\" mew-spam-bogofilter))) ") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -919,7 +919,7 @@ to messages and puts them to your mailbox, configure as follows: "*Alist of config. This is a list of ( ( ) ( ) ...). - is a string of case. - - is a symbol of Mew value with the 'mew-' prefix removed. + - is a symbol of Mew value with the `mew-' prefix removed. - is a string. Currently, the following keys are supported: @@ -958,7 +958,7 @@ message-id = *random*.nntp-msgid-user@nntp-msgid-domain An example is as follows: \(setq mew-config-alist - '((mew + \\='((mew (mail-domain \"example.org\") (inbox-folder \"+inbox-mew\")) (keio diff --git a/elpa/mew-20230415.633/mew-vars3.el b/elpa/mew-20240911.749/mew-vars3.el similarity index 98% rename from elpa/mew-20230415.633/mew-vars3.el rename to elpa/mew-20240911.749/mew-vars3.el index f13c750f..3b3b7fa0 100644 --- a/elpa/mew-20230415.633/mew-vars3.el +++ b/elpa/mew-20240911.749/mew-vars3.el @@ -186,11 +186,11 @@ ;;; (mew-defface-bold eof-message - "Face to highlight the 'end of message' string" + "Face to highlight the `end of message' string" :tty "green" :light "ForestGreen" :dark "LimeGreen") (mew-defface-bold eof-part - "Face to highlight the 'end of part' string" + "Face to highlight the `end of part' string" :tty "yellow" :light "DarkOrange4" :dark "Gold") (provide 'mew-vars3) diff --git a/elpa/mew-20230415.633/mew-varsx.el b/elpa/mew-20240911.749/mew-varsx.el similarity index 100% rename from elpa/mew-20230415.633/mew-varsx.el rename to elpa/mew-20240911.749/mew-varsx.el diff --git a/elpa/mew-20230415.633/mew-virtual.el b/elpa/mew-20240911.749/mew-virtual.el similarity index 96% rename from elpa/mew-20230415.633/mew-virtual.el rename to elpa/mew-20240911.749/mew-virtual.el index 8301c9b3..47e27ec3 100644 --- a/elpa/mew-20230415.633/mew-virtual.el +++ b/elpa/mew-20240911.749/mew-virtual.el @@ -58,8 +58,8 @@ (defun mew-summary-selection-by-pick (&optional regionp) "Making selection according to a specified pick pattern. -'mewl' or 'grep' is called as a picking command. If called with -'\\[universal-argument]', the target is the region." +`mewl' or `grep' is called as a picking command. If called with +`\\[universal-argument]', the target is the region." (interactive "P") (mew-pickable (mew-summary-with-mewl @@ -104,7 +104,7 @@ (mew-summary-selection-by-pick-with-mewl pattern pfolder msgs rfolder lra)))))))))) (defun mew-summary-selection-by-pick-with-mewl (pattern _folder src-msgs rfolder lra) - "Create selection with 'mewl'" + "Create selection with `mewl'" (let ((opts (list "-a" "-p" pattern "-b" mew-mail-path)) (range (mew-summary-pick-range src-msgs))) (setq rfolder (mew-scan-mewl-folder rfolder)) @@ -114,7 +114,7 @@ (mew-local-retrieve 'vir opts nil lra))) (defun mew-summary-selection-by-pick-with-grep (prog opts pattern _folder msgs rfolder lra) - "Create selection with 'grep'" + "Create selection with `grep'" (interactive) (let ((file-rttl (mew-summary-selection-by-pick-with-grep1 prog opts pattern rfolder msgs)) file rttl func args) @@ -164,8 +164,8 @@ ;;; (defun mew-summary-selection-by-mark (&optional ask-mark) - "Making selection for messages marked with '*'. -If called with '\\[universal-argument]', you can specify a target mark." + "Making selection for messages marked with `*'. +If called with `\\[universal-argument]', you can specify a target mark." (interactive "P") (if (not (mew-pickable)) (message "This command cannot be used in this folder") diff --git a/elpa/mew-20230415.633/mew-win32.el b/elpa/mew-20240911.749/mew-win32.el similarity index 100% rename from elpa/mew-20230415.633/mew-win32.el rename to elpa/mew-20240911.749/mew-win32.el diff --git a/elpa/mew-20230415.633/mew.el b/elpa/mew-20240911.749/mew.el similarity index 97% rename from elpa/mew-20230415.633/mew.el rename to elpa/mew-20240911.749/mew.el index 5d82ea1c..7dbdd6a2 100644 --- a/elpa/mew-20230415.633/mew.el +++ b/elpa/mew-20240911.749/mew.el @@ -4,6 +4,9 @@ ;; Created: Mar 23, 1994 ;; Revised: Feb 10, 2023 +;; Package-Version: 20240911.749 +;; Package-Revision: c46d8ee784d0 + ;;; Commentary: ;; The updated version is available from: @@ -43,7 +46,7 @@ ;;; (defvar mew-debug nil - "'decode, 'encode, 'net, 'pgp, 'thread, 'sort, t for all.") + "'`ecode', `encode', `net', `pgp', `thread', `sort', `t' for all.") (defun mew-debug (category) (or (eq mew-debug t) (eq mew-debug category))) @@ -59,20 +62,20 @@ "Execute Mew first unless Mew is running. And retrieve arrived messages or just visit to the default folder. -'proto' is determined by 'mew-proto' and 'mew-case'. +`proto' is determined by `mew-proto' and `mew-case'. -If 'proto' is '+' (ie a local folder), a mailbox is determined -according to 'mew-mailbox-type'. Otherwise (ie a remote folder), an +If `proto' is `+' (ie a local folder), a mailbox is determined +according to `mew-mailbox-type'. Otherwise (ie a remote folder), an appropriate protocol to retrieve messages is chosen according to -'proto'. +`proto'. -If 'mew-auto-get' is 't', arrived messages are asynchronously fetched +If `mew-auto-get' is `t', arrived messages are asynchronously fetched and listed up in Summary mode. -'mew-auto-get' is 'nil', just visit to the folder determined by -'proto'. +`mew-auto-get' is `nil', just visit to the folder determined by +`proto'. -When executed with '\\[universal-argument]', 'mew-auto-get' is +When executed with `\\[universal-argument]', `mew-auto-get' is considered reversed." (interactive "P") (mew-window-push) @@ -104,7 +107,7 @@ function." _send-actions &rest _dummy) "Set up message composition draft with Mew. -This is 'mail-user-agent' entry point to Mew. +This is `mail-user-agent' entry point to Mew. The optional arguments TO and SUBJECT specify recipients and the initial Subject field, respectively. @@ -361,8 +364,8 @@ of the current world is also updated." (defun mew-window-configure (action) "Configure windows according to ACTION. ACTION should be symbol or a list of two numbers. -Predefined symbol is 'summary, 'message, and 'draft. -They are used as a key of 'mew-window-configuration to get +Predefined symbol is `summary', `message', and `draft'. +They are used as a key of `mew-window-configuration' to get a list of two numbers. Two numbers means the ratio of the upper window and @@ -739,6 +742,7 @@ Mew remain, so you can resume with buffer operations." (require 'mew-imap2) (require 'mew-config) (require 'mew-auth) +(require 'mew-oauth2) (eval-when-compile (if (mew-which-el "timer") diff --git a/elpa/mew-20230415.633/mew.info b/elpa/mew-20240911.749/mew.info similarity index 92% rename from elpa/mew-20230415.633/mew.info rename to elpa/mew-20240911.749/mew.info index 407f1da6..796a4500 100644 --- a/elpa/mew-20230415.633/mew.info +++ b/elpa/mew-20240911.749/mew.info @@ -42,6 +42,7 @@ may find useful information about Mew from Mew's official home page * Implementation:: Implementation Issues * Avail:: Availability and mailing-list * Copyright:: Copyright +* Privacy Policy:: Privacy Policy * Variable Index:: Variable Index * Key Index:: Key Index @@ -55,7 +56,7 @@ Read me first Mew is a user interface for text messages, multimedia messages (MIME), news articles and security functionality including PGP, S/MIME, SSH, -and SSL. Also, Mew can work with the recent search services. +and TLS. Also, Mew can work with the recent search services. Mew is an acronym for "Messaging in the Emacs World". You should spell it with the first letter capitalized and pronounce it as it is @@ -208,7 +209,7 @@ about the "case", see *Note config::. To specify a remote folder corresponding to a "case", you should write "case:folder". You can omit "case:" if a case is "default". -A combination of "case" and proto organized a world to which a message +A combination of "case" and proto organizes a world to which a message belongs. A message can move within its world. To make it easy to search received messages afterward, they should be moved to proper folders. To know how to refile received messages, see *Note Refile::. @@ -376,6 +377,42 @@ Feature 1. or Feature 2., you should take care so that nobody can touch your Emacs. If you leave your PC and an Emacs expert happens to check your configuration, your passwords could be stolen. +While the master password feature is one of the feature of Mew, Emacs +supports "auth-source" password manager. Auth-source is similar to +Mew's master password but supports variety of platform-dependent +password stores including .netrc-style plain text, GNOME Keyring, and +macOS Keychain. + +Note that support for auth-source is still experimental. To try +auth-source, configure the following variable: + + (setq mew-master-passwd-type 'auth-source) + (setq auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc")) + +Which password store is used can be set by `auth-sources' +variable. In this example, one of the three files which was found +first is used. By default .netrc-style text file named +"~/.authinfo" is used. You can encrypt this file by using GnuPG and +put the encrypted file as "~/.authinfo.gpg" and remove the original +file. Mew will use the encrypted version seamlessly. It is strongly +recommended to use an encrypted file to store your passwords because +there is no protection in a plain text file. For more details, see +*Note (auth)Top::. + +If you use encrypted version of the .netrc-style text file as your +password store, Mew will ask you passphrase of the decryption key to +retrieve passwords from the file. For encryption and decryption, an +Emacs package named EasyPG Assistant, which calls GnuPG from Emacs, is +used. While it works with no specific configuration in most cases, +you can find several configuration knobs. For more details, see +*Note (epa)Top::. + +Note that the current version of auth-source has a big problem that it +cannot delete or update the password entry in the password store. If +you want to change or remove a password, you have to edit the +~/.authinfo file manually. This will be fixed in the future version +of Emacs. +  @@ -541,7 +578,7 @@ Each line of multipart consists of - description (Content-Description:) - file name (Content-Disposition:). -Content-Description can be considered Subject: for each part. This +Content-Description: can be considered Subject: for each part. This format is very similar to that of the attachment region in Draft mode. If you type `SPC' or `n', the cursor moves onto part 2 and the content @@ -1176,7 +1213,7 @@ are treated as is. Therefore, the string between "=?" and "?=" in the example will not be decoded into Japanese. Several mailers are careless about the spec and regularly violate -these rules. The right way to do is ask the programmers of such +these rules. The right way to do is to ask the programmers of such mailers to make the programs conformant to the spec. However, since there are so many mailers of this kind around the world, Mew tries to decode as many different formats as possible. In these cases Mew @@ -1484,7 +1521,7 @@ strings between `#' and the end of the line are ignored. Also, Summary mode includes the feature of directly registering the -information of the current message into Addrbook. To register a +information of the current message into Addrbook. To register an expansion rule, type `C-cC-a'. #If you want to register this entry, type 'C-c C-c'. @@ -1545,9 +1582,9 @@ entries in the alphabetical order are removed. This information is automatically saved to the file "~/Mail/.mew-alias". The automatic registration would register unnecessary short names. If -you want to remove these entry, take the following steps. First, type -`M-a' to open "~/Mail/.mew-alias". Then edit it as you do against a -text file. Lastly, type `C-xC-s' to save it. When saving it, the +you want to remove these entries, take the following steps. First, +type `M-a' to open "~/Mail/.mew-alias". Then edit it as you do against +a text file. Lastly, type `C-xC-s' to save it. When saving it, the modifications are automatically reflected to Mew. The formats of Address Completion (1) and (2) are different. When you @@ -2475,13 +2512,13 @@ pgp-signature-encryption (PSPE) Sign then encrypt with PGP pgp-encryption-signature (PEPS) Encrypt then sign with PGP -pgp-signature (SS) +smime-signature (SS) Sign with S/MIME -pgp-encryption (sE) +smime-encryption (SE) Encrypt with S/MIME -pgp-signature-encryption (SSSE) +smime-signature-encryption (SSSE) Sign then encrypt with S/MIME -pgp-encryption-signature (SESS) +smime-encryption-signature (SESS) Encrypt then sign with S/MIME The following example works for signing all drafts. @@ -2656,7 +2693,7 @@ look at the following example. Here, there is a colon (":") after the explanatory comment "party". This is followed by some addresses that are delimited by "," and terminated by ";". If you write addresses in this format, Mew -sends the message to the addresses with them removed form the +sends the message to the addresses with them removed from the header. In this example, Piglet and Roo will receive the following message. @@ -2800,7 +2837,7 @@ Exactly speaking, the following rule is applied for local folders. trash. (This is default.) For IMAP, the same rule is applied according to both -`mew-imap-trash-folder' and `mew-imap-trash-folder-list' +`mew-imap-trash-folder' and `mew-imap-trash-folder-list'. It is convenient if you can change the `*' mark to the `D' mark since you can put many the `D' marks at once. To achieve this, use `md'. @@ -2847,7 +2884,7 @@ Refile `o' To refile a message, type `o' and input a folder name, then `o' is put. A folder is guessed neatly, so most time what you -should to is just type `RET'. For more information, refer to +should do is just type `RET'. For more information, refer to *Note Refile::. If you type `o' on a message marked with `o', the refile folder is @@ -3105,7 +3142,7 @@ Suppose you refile a message in folder A to folder B off-line. It is very inconvenient for you to retrieve a corresponding message in folder B from your IMAP server , in order to read it, after refile jobs are done online. You may want to read the messages refiled to -folder B by just going to the folder B, without retrieval form the +folder B by just going to the folder B, without retrieval from the IMAP server. Mew implements delayed jobs processing and viewing refiled messages @@ -3273,7 +3310,7 @@ staff@example.jp and another message whose To: is staff@example.net, the same folder would be selected with guess by folders (e.g. "+net/staff"). So, Mew allows you to define your own rules explicitly. (You must use the new format for -`mew-refile-guess-alist'. For more information, see +`mew-refile-guess-alist'. For more information, see *Note config2::. Let's look at an example. @@ -3297,7 +3334,7 @@ The whole is a list of ( ). A field name is specified for is a field value for . means a folder to be chosen if matched. You can write recursively instead of -. (*Note config2::.) +. There are two special s: `nil' and `t'. `nil' is used to specify to be returned when nothing is guessed. `t' can specify @@ -3340,7 +3377,7 @@ refiled to +project/honey. Information that which folder was chosen for messages is stored to "~/Mail/.mew-refile-msgid-alist". `mew-lisp-max-length' controls the amount of this information. The default value is 2000 -messages. If you want limits it to 3000 messages, put the following to +messages. If you want to limit it to 3000 messages, put the following to "~/.mew.el". (setq mew-lisp-max-length 3000) @@ -3372,7 +3409,7 @@ name instead of the user part.) The function to provide this feature is `mew-refile-guess-by-from-folder'. -Next, let's consider a care where Pooh replied to Piglet. Since Pooh +Next, let's consider a case where Pooh replied to Piglet. Since Pooh Cc:ed the message to himself, the message was also delivered to him. To: piglet@example.org @@ -3410,7 +3447,7 @@ be implemented if Pooh specifies rules explicitly as follows: But such a work may bother you. So, first refile a message whose From: is piglet@example.org to +from/piglet. At this time, +from/piglet is created. Next, refile a message whose From: is p-p-p@example.org to -+from/piglet. Here Mews learns that p-p-p@example.org was refiled to ++from/piglet. Here Mew learns that p-p-p@example.org was refiled to +from/piglet. After this, when messages whose From: is p-p-p@example.org are refiled, +from/piglet is chosen. @@ -3465,8 +3502,8 @@ Controlling rules Mew controls guess rules by two variables, `mew-refile-guess-control' and `mew-refile-ctrl-multi'. If you -want multiple candidates, set `mew-refile-ctrl-multi' -`t'. Otherwise, set it `nil'. +want multiple candidates, set `mew-refile-ctrl-multi' to +`t'. Otherwise, set it to `nil'. By default, `mew-refile-guess-control' is declared as follows (since it is a declaration, `defvar' is used): @@ -3499,12 +3536,12 @@ Let's see the following example of `mew-refile-guess-control' action. guessed +eee. If you want to provide all candidates, +aaa - +eee, set -`mew-refile-ctrl-multi' `t'. If you want to provide +aaa only, set it -`nil'. +`mew-refile-ctrl-multi' to `t'. If you want to provide +aaa only, set +it to `nil'. If you want +aaa - +ddd but do not want left candidates, in other words, you want +eee only when no candidate is guessed by functions -executed before, set `mew-refile-ctrl-multi' `t' and insert +executed before, set `mew-refile-ctrl-multi' to `t' and insert `mew-refile-ctrl-throw' between `mew-refile-guess-by-folder' and `mew-refile-guess-by-default'. @@ -3586,7 +3623,7 @@ related to the remote folder from the cached message and copy it to a local folder. (You can use `lc' in a local folder, too. In this case, a message is moved in the same world.) -To opy a message in a folder to an IMAP folder (the server side), type +To copy a message in a folder to an IMAP folder (the server side), type `li'. To copy messages marked with `*' to a local folder, use `mlc'. To @@ -3662,11 +3699,10 @@ Selection is a virtual folder collecting necessary messages from several folders. There are five ways to create selection: `m/' - Listing messages marked with `*' on a folder. see *Note - sorting::. + Listing messages marked with `*' on a folder. `S' Sorting messages on a folder and display them. (No effect to the - original folder.) see *Note dialog::. + original folder.) See *Note sorting::. `V' Listing messages which have relationship with the current message. See *Note dialog::. @@ -3747,14 +3783,14 @@ message. Let's call this "dialog". This is different from thread described later in the following points: - Thread can be made from one folder or one virtual - folder. Messages relating to dialog can ubiquitously exists in + folder. Messages relating to dialog can ubiquitously exist in several folders. - - Thread visualizes tree structres with indentation. while dialog + - Thread visualizes tree structures with indentation while dialog lists up messages in order of time. -To use the feature of dialog, execute `kI' to create database. New -messages are not automatically registered in to the database, you +To use the feature of dialog, execute `kI' to create database. Since +new messages are not automatically registered into the database, you should periodically execute `kI'. `kI' updates the database incrementally by default. This method is fast but garbages are left. So, sometime you should type `C-ukI' to update the database @@ -3800,7 +3836,7 @@ following commands. `C-uk/' Make selection with messages in specified folders, which are matched to a specified pattern. If you want to specify multiple - folders, separate them with ",". You can also use a wildcar "*". + folders, separate them with ",". You can also use a wildcard "*".  @@ -3828,11 +3864,11 @@ Here is a list of expression elements. (In the strong order) (case-sensitive). If you specify "head", it means the entire header. `field!=string' - Match if the "field" field does not the "string" string + Match if the "field" field does not contain the "string" string (case-insensitive). If you specify "head", it means the entire header. `field!==string' - Match if the "field" field does not the "string" string + Match if the "field" field does not contain the "string" string (case-sensitive). If you specify "head", it means the entire header. `( )' @@ -3925,7 +3961,7 @@ File: mew.info, Node: keyword, Next: thread, Prev: dbsearch, Up: Virtual Highlighting a keyword ====================== -The keyword which you specified on search is shorted in a buffer. You +The keyword which you specified on search is stored in a buffer. You can display messages with the keyword highlighted. The commands to enable this functionality are as follows: @@ -3989,7 +4025,7 @@ Here are the commands used for moving to thread presentation. `tp' Move to the top of the current thread. If the current message is - a top node, move to the top of the next thread. + a top node, move to the top of the previous thread. `tn' Move to the top of the next thread. `^' @@ -4138,7 +4174,7 @@ An example is as follows: (setq mew-summary-form '(type (5 date) " " (-4 size) " " (14 from) " " t (30 subj) "|" (0 body))) -`mew-summary-form-from-me-prefix' is the prefix to be prepend to an +`mew-summary-form-from-me-prefix' is the prefix to be prepend to a destination address if the message is originated by me. The default is "To:". @@ -4175,7 +4211,7 @@ Each element returns the following value: refer to *Note draft-mode::. 5. (regex):: The substring first matched. -If a element does not match, the next element is applied. If no +If an element does not match, the next element is applied. If no element matches to the From: field, or this value is `nil', the whole of the From: field is used. @@ -4200,7 +4236,7 @@ If you want to use Mew with full Emacs frame, set like this. (setq mew-use-full-window t) -`SPC' in Summary mode decide the next action to view a message +`SPC' in Summary mode decides the next action to view a message according to `mew-summary-show-direction'. Likewise, you can specify the cursor direction after putting a strong mark by `mew-summary-mark-direction'. You can select one from the following @@ -4264,8 +4300,12 @@ be displayed in Message mode as if it were text. You can display the file with an external application itself instead of displaying it in the Message buffer. For this, type `C-cC-e'. -You can visualize an image file into the Message buffer. Also, you can -display it with an external application by typing `C-cC-e', of course. +You can visualize an image file into the Message buffer. +If you want to enlarge or reduce the image in the Message buffer, +you switch to a window of the Message buffer with e.g. `C-xo'/`h' +and type `i+' or `i-' (`+' or `-' up to emacs 28), respectively. +Also, you can display it with an external application by typing +`C-cC-e', of course. You can display an HTML file to a browser with `C-cC-e'. A default browser is used on Windows and Mac. On Unix, "mozilla" is set to a @@ -4304,7 +4344,7 @@ If you want to specify an application instead of the pre-defined application, type `C-uC-cC-e'. Recently there are many message whose have Multipart/Alternative, -which consists of Text/Plain and Text/Html. By default, Mew selects +which consists of Text/Plain and Text/Html (so-called HTML email). By default, Mew selects Text/Plain. If you prefer to choose Text/Html, add the following to "~/.mew.el". (Now, it's a good idea to get back to *Note multipart:: to review how to use @@ -4480,7 +4520,7 @@ File: mew.info, Node: highlight, Next: hooks, Prev: charset, Up: Customize Highlighting ============ -If `mew-use-highlight-mark' is `t', marked message are +If `mew-use-highlight-mark' is `t', marked messages are highlighted. The default is `t'. If `mew-use-highlight-header' is `t', the header of a message is @@ -4524,7 +4564,7 @@ configuration. The symbol `header-subject' means the value of the "Subject:" field in a header. :tty is the case where Emacs is executed on a terminal while -:light and :dark indicates the case where the background of Emacs +:light and :dark indicate the case where the background of Emacs executed with a window is white and black, respectively. If you wish green for a terminal, ForestGreen for the white @@ -4625,8 +4665,6 @@ Here is a summary of hooks used in Mew. Hook called when a POP process finished. `mew-pop-sentinel-non-biff-hook' Hook called when a non-Biff POP process finished. -`mew-imap-sentinel-hook' - Hook called when a NNTP process to post messages finished. `mew-imap-sentinel-hook' Hook called when an IMAP process finished. `mew-imap-sentinel-non-biff-hook' @@ -4650,23 +4688,23 @@ Here is a summary of hooks used in Mew. `mew-summary-toggle-disp-msg-hook' Hook called when `v' in Summary finished. `mew-syntax-format-hook' - Hook called when mew-syntax-format is called. + Hook called when `mew-syntax-format' is called. `mew-addrbook-mode-hook' Hook called in Addrbook mode. `mew-cite-hook' Hook for an external cite mechanism. If you want to use super-cite, (setq mew-cite-hook 'sc-cite-original). `mew-before-cite-hook' - Called in mew-summary-reply-with-citation before citation. + Called in `mew-summary-reply-with-citation' before citation. `mew-suspend-hook' Hook called on suspend. `mew-quit-hook' Hook called on quit. -Here are some example configurations of hook +Here are some example configurations of hook. Draft mode evaluates `text-mode-hook' and `mew-draft-mode-hook' in -order. If you do not set `auto-fill-mode' to `text-mode-hook', It +order. If you do not set `auto-fill-mode' to `text-mode-hook', it would be useful to define `mew-draft-mode-hook' as follows: (add-hook 'mew-draft-mode-hook @@ -4691,16 +4729,18 @@ variables to control POP. `mew-pop-ssh-server' The name of SSH server which forwards the POP3 port. `mew-pop-ssl' - If non-nil, POP connections are made over SSL. + If non-nil, POP connections are made over TLS. `'native' enables + GnuTLS for native TLS connection and `'tunnel' uses stunnel to + establish a TLS tunnel. `mew-pop-ssl-port' - The port for POP over SSL. + The port for POP over TLS. `mew-pop-user' The user name on your POP server. The default is your login name. `mew-pop-auth' - The authentication method for POP3. 'pass means the - authentication with USER/PASS (i.e. plain password). 'apop means - the authentication with APOP. `t' means SASL according to - `mew-pop-auth-list'. The default is 'apop. + The authentication method for POP3. `'pass' means the + authentication with USER/PASS (i.e. plain password). `'apop' + means the authentication with APOP. `t' means SASL according to + `mew-pop-auth-list'. The default is `'apop'. `mew-pop-auth-list' A list of SASL methods in the preferred order. Currently, "CRAM-MD5" can be used. @@ -4711,11 +4751,11 @@ variables to control POP. access. The default is `t'. `mew-pop-size' The limit size of messages to be retrieved by POP. The default is - 55296 byte. 0 means unlimited, so you can get all messages from + 55296 bytes. 0 means unlimited, so you can get all messages from the POP server. To know how to retrieve the rest of a truncated message, please refer to *Note retrieving::. `mew-pop-body-lines' - *The limit of body lines to get when the size of message exceeds + The limit of body lines to get when the size of message exceeds `mew-pop-size'. The default is 40. `mew-pop-header-only' Whether or not the body of a message is retrieved by POP. If @@ -4736,9 +4776,11 @@ following variables to control IMAP. `mew-imap-ssh-server' The name of SSH server which forwards the IMAP4 port. `mew-imap-ssl' - If non-nil, IMAP connections are made over SSL. + If non-nil, IMAP connections are made over TLS. `'native' + enables GnuTLS for native TLS connection and `'tunnel' uses + stunnel to establish a TLS tunnel. `mew-imap-ssl-port' - The port for IMAP over SSL. + The port for IMAP over TLS. `mew-imap-user' The user name on the IMAP server. The default is your login name. `mew-imap-auth' @@ -4755,7 +4797,7 @@ following variables to control IMAP. access. Otherwise they are not deleted. The default is `t'. `mew-imap-size' The limit size of messages to be retrieved by IMAP. The default - is 55296 byte. 0 means unlimited, so you can get all messages + is 55296 bytes. 0 means unlimited, so you can get all messages from the IMAP server. To know how to retrieve the rest of a truncated message, please refer to *Note retrieving::. `mew-imap-header-only' @@ -4777,9 +4819,11 @@ following variables to control NNTP. `mew-nntp-ssh-server' The name of SSH server which forwards the NNTP port. `mew-nntp-ssl' - If non-nil, NNTP connections are made over SSL. + If non-nil, NNTP connections are made over TLS. `'native' + enables GnuTLS for native TLS connection and `'tunnel' uses + stunnel to establish a TLS tunnel. `mew-nntp-ssl-port' - The port for NNTP over SSL. + The port for NNTP over TLS. `mew-nntp-user' The user name on the NNTP server. If non-nil, authentication is used. (Note that mew-nntp-auth does not exist.) @@ -4787,11 +4831,11 @@ following variables to control NNTP. The name of default Newsgroup. `mew-nntp-size' The limit size of messages to be retrieved by NNTP. The default - is 55296 byte. 0 means unlimited, so you can get all messages + is 55296 bytes. 0 means unlimited, so you can get all messages from the NNTP server. `mew-nntp-header-only' Whether or not the body of a message is retrieved by NNTP. If - non-nil, only header is retrieved. + non-nil, only header is retrieved. The default is `nil'. `mew-nntp-msgid-user' A user name for creation of Message-Id:. If `nil', the value of `mew-user' is used. The default is `nil'. @@ -4825,9 +4869,11 @@ password. This section describes following variables to control SMTP. `mew-smtp-ssh-server' The name of SSH server which forwards the SMTP port. `mew-smtp-ssl' - If non-nil, SMTP connections are made over SSL. + If non-nil, SMTP connections are made over TLS. `'native' + enables GnuTLS for native TLS connection and `'tunnel' uses + stunnel to establish a TLS tunnel. `mew-smtp-ssl-port' - The port for SMTP over SSL. + The port for SMTP over TLS. `mew-smtp-user' The user name on your SMTP server. If not configured, your e-mail address is automatically set. @@ -4838,9 +4884,9 @@ password. This section describes following variables to control SMTP. An e-mail domain to tell a SMTP server with HELO/EHLO. The default is "localhost". `mew-smtp-mail-from' - The default is `nil'. An e-mail address to tell a SMTP server - with MAIL FROM:. If `nil', an address specified by the From: - field is used. + An e-mail address to tell a SMTP server with MAIL FROM:. If + `nil', an address specified by the From: field is used. The + default is `nil'. `mew-smtp-msgid-user' A user name for creation of Message-Id:. If `nil', the value of `mew-user' is used. The default is `nil'. @@ -4870,7 +4916,7 @@ configure as follows: (setq mew-smtp-submission-family 'ipv6) -Please refer also to SSL (*Note SSL::) and TLS (*Note TLS::). +Please refer also to TLS/SSL (*Note TLS/SSL::). Some SMTP servers are mis-configured. They requests authentication though errors occur if passwords are received. Mew automatically ask a @@ -4930,7 +4976,7 @@ executed, ""proto" for the "default" "case" is used. If you type `M-x mew' when Mew is running, "proto" is chosen according to the value of the "case". -Candidates of the value are "+", "$", "%", and "-". These means +Candidates of the value are "+", "$", "%", and "-". These mean "+inbox", "$inbox", "%inbox", and "-fj.mail.reader.mew" without any special configuration. @@ -4992,7 +5038,7 @@ in mode line. The following is an example that the "case" is "home". (Draft home) To change the "case" of a draft in Draft mode, use `C-cC-o'. Its -header is dynamically modified according to the value of the +header is dynamically modified according to the values of the 'mail-domain' key and the 'header-alist' key. Note that the "case" is a local variable of the Draft mode. @@ -5119,8 +5165,10 @@ Advanced usage * region:: Region * visiting:: Visiting another buffer * SSH:: Secure SHell -* SSL:: Secure Socket Layer -* TLS:: Transport Layer Security +* TLS/SSL:: Transport Layer Security / Secure Socket Layer +* Stunnel:: TLS by Stunnel +* GnuTLS:: TLS by GnuTLS library +* TLS/SSL2:: Configuration Variables for TLS * spam:: Spam messages * spam2:: Spam messages (2) * addr-warn:: Warning addresses @@ -5171,7 +5219,7 @@ name is the smallest number, type `C-cC-o'.  -File: mew.info, Node: SSH, Next: SSL, Prev: visiting, Up: Tips +File: mew.info, Node: SSH, Next: TLS/SSL, Prev: visiting, Up: Tips Secure SHell ============ @@ -5180,8 +5228,8 @@ Mew supports SSH version 1 and version 2 and OpenSSH for SSH. You must execute "ssh" on the command and obtain server's public key before you use Mew with SSH. That is, you should set up so that you can login the server with your user password or with the password to decrypt the -secret key of the local machine. Of source, you can omit the password -to decrypt the secret key if you use "ssh-agent". +secret key of the local machine. In addition, you can omit the +password to decrypt the secret key if you use "ssh-agent". After that, you should configure SSH variables relating to each protocol. For example, if you want to use POP over SSH, set @@ -5190,29 +5238,53 @@ protocol. For example, if you want to use POP over SSH, set While a connection is protected by SSH, a picture of a lock is shown in the mode line. -The implementation of Mew does not allow to use both SSH and SSL/TLS -at the same time. If you need to use SSL/TLS over an SSH tunnel, -please configure SSL/TLS only with Mew and set up an SSH tunnel on a -command line. +The implementation of Mew does not allow to use both SSH and TLS at +the same time. If you need to use TLS over an SSH tunnel, please +configure TLS only with Mew and set up an SSH tunnel on a command +line.  -File: mew.info, Node: SSL, Next: TLS, Prev: SSH, Up: Tips +File: mew.info, Node: TLS/SSL, Next: Stunnel, Prev: SSH, Up: Tips -Secure Socket Layer -=================== +Transport Layer Security / Secure Socket Layer +============================================== + +Mew supports TLS (Transport Layer Security) for confidentiality and +integrity of TCP transport. To use this feature, Emacs built with +GnuTLS library or a "stunnel" program version 5.15 or later is +required. -Before you use SSL, you should understand the trust model of -certificate authorities (CA). Currently, Mew supports "stunnel" -version 3, 4 and 5 for SSL. +SSL (Secure Socket Layer) was developed by Netscape Communications, +Inc. back in 1990s and TLS has been developed as the successor. While +these two protocols are compatible with each other in some degree, and +GnuTLS and "stunnel" support the both, as of 2020, SSL is considered +as a "should not use" protocol because a lot of security flaws were +found in the protocol. -Before you use Mew with SSL, you must be sure that an SSL connection -can be established to your SSL server. Since "stunnel" is linked to -the "openssl" library, you should understand "openssl". +For this histrical reason, there are still variables and functions for +TLS functionality with "ssl" keyword in Mew. + +To enable TLS functionality, you have to configure variables for +"stunnel" program or GnuTLS library, and then ones for enabling TLS of +each supported protocols. + + + +File: mew.info, Node: Stunnel, Next: GnuTLS, Prev: TLS/SSL, Up: Tips + +TLS by Stunnel +============== + +Before you use Mew with TLS, you must be sure that an TLS connection +can be established to your TLS server. Since "stunnel" is linked to +the "openssl" library, you should understand "openssl". Before you +use TLS, you should understand the trust model of certificate +authorities (CA). Suppose we use "~/.certs" as a directory where certificates of trusted CAs are contained. You need to copy PEM-format certificates embedded -in the source of "openssl" to this director. Each name should be +in the source of "openssl" to this directory. Each name should be ".0". Here we call a sample CA certificate "ca.pem". You can calculate @@ -5225,15 +5297,16 @@ To copy the certificate, do as follows: % cp ca.pem ~/.certs/`openssl x509 -hash -noout -in ca.pem`.0 The certificates in the source of "openssl" do not cover all CAs. If -the certificate of your SSL server is signed by another CA, you must -copy the certificate of the CA to the directory. You may be able to -find appropriate certificate from the following page: +the certificate of your TLS server is signed by another CA, you must +copy the certificate of the CA to the directory. You can find trusted +CA certificates on Internet from the following URLs: - http://www.columbia.edu/~ariel/good-certs/ns45/ + https://www.ccadb.org + https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/ There are two important Mew variables to control "stunnel". `mew-ssl-cert-directory' is the directory where you install -certificates of trusted CAs. It's default value if "~/.certs". Also, +certificates of trusted CAs. Its default value is "~/.certs". Also, you can set the verification level with `mew-ssl-verify-level'. It's default to 1. The meanings of the values are as follows: @@ -5241,52 +5314,119 @@ default to 1. The meanings of the values are as follows: No verification. 1 Verify server's certificate if present. If verification failed, - an SSL/TLS connection is not created. If not present, an SSL/TLS + an TLS connection is not created. If not present, a TLS connection is created. 2 - Verify server's certificate. If verification failed, an SSL/TLS - connection is not created. If not present, an SSL/TLS connection - is not created. + Verify server's certificate. If verification failed, a TLS + connection is not created. If not present, a TLS connection is + not created. 3 Verify server's certificate which locally installed (not one from the server). -Then configure SSL-related variables of each protocol. For example, if -you want to use POP over SSL, set `mew-pop-ssl' to `t'. +You can get started with using stunnel after configuring the +variables. + + + +File: mew.info, Node: GnuTLS, Next: TLS/SSL2, Prev: Stunnel, Up: Tips + +TLS by GnuTLS Library +===================== + +Mew requires no specific configuration to support TLS if you are using +an Emacs built with GnuTLS library. You can configure the certificate +verification level and trusted root CAs by using the following +variables. + +The policy for verification of the server certificates is handled by +Emacs Network Security Manager (NSM). It is configured by +`network-security-level', and the default value is `'medium'. If it +is set to `'low', no verification is performed. If `'medium', NSM +will check whether the certificate used to establish the identity of +the server we're connecting to can be verified by using the specified +root CA list. A dialog for choosing whether the certificate should be +accepted or not will be displayed if it is an invalid certificate +including self-signed one. Also, if the connection is unencrypted, +but it was encrypted in previous sessions, a similar dialog will be +displayed. `'high' will perform additional checks such as a validated +certificate which changes the public key and weak cipher/protocols. +For more details, see *Note (emacs)Network Security::. + +It is recommended to use `network-security-level' to specify the +verification level when using GnuTLS. However, Mew traditionally used +`mew-ssl-verify-level' variable to specify the verification level +for Stunnel program. To keep backward compatibility with it, +`network-security-level' will be temporarily set to `'low' +if and only if `mew-ssl-verify-level' is `0'. Note that the +default value of `mew-ssl-verify-level' is `1' and there +will be no change with `network-security-level' when +`mew-ssl-verify-level' is not `0'. + +GnuTLS has own variable, `gnutls-verify-error', to configure the +verification level. This variable controls if the TCP connection must +be disconnected or not if verification of the server certificates +failed upon the connection established. The default value is `nil', +which means connection will not be closed immediately even when the +verification fails. In this case, NSM will perform the verification +and decides whether the connection should be disconnected or not. You +might think it is a bit odd that the default value of this variable is +set to `nil'. This is because Emacs itself will check more details of +the certificates and the connection than GnuTLS does. For this +reason, establishing a TCP connection and decision on disconnect are +separated. + +If you set `gnutls-verify-error' manually, GnuTLS will terminate the +TCP session when the verification of the server certificates fails. +In this case, no further verification by NSM will be performed. Note +that configurations by using `network-security-level' or +`mew-ssl-verify-level' will be ignored in this case. It is +recommended to use `network-security-level' over `gnutls-verify-error' +unless you have a specific reason. + +The trusted root CA list can be specified in `mew-ssl-trustfiles'. +However, GnuTLS has the default list of the trusted files and they are +always used first on Emacs version 26.3 and prior. Note that you +cannot disable them even if you set an empty list to the variable. + + + +File: mew.info, Node: TLS/SSL2, Next: spam, Prev: GnuTLS, Up: Tips + +Configuration Variables for TLS +=============================== + +Then configure TLS-related variables of each protocol. For example, if +you want to use POP over TLS, set `mew-pop-ssl' to `t'. +To specify the TLS implementation, `'tunnel' or `'native' +can be used instead of `t' for stunnel or GnuTLS, respectively. +For protocols with `t', the value of `mew-ssl-default' +is used as the default TLS implementation. Also, if its port is not a standard one, configure `mew-pop-ssl-port'. (setq mew-pop-ssl t) -To use SSL for SMTP, configure as follows: +To use TLS for SMTP, configure as follows: (setq mew-smtp-ssl t) -While a connection is protected by SSL, a picture of a lock is shown +While a connection is protected by TLS, a picture of a lock is shown in the mode line. +Mew can upgrade a plain TCP connection to a TLS connection by using +STARTTLS extension in each supported protocols. Before using this, +you have to configure variables according to *Note TLS/SSL::. - -File: mew.info, Node: TLS, Next: spam, Prev: SSL, Up: Tips - -Transport Layer Security -======================== - -Mew can use TLS instead of SSL. To enable TLS, Mew relies on -"stunnel", too. So, before using TLS, you should configure -according to the explanations in *Note SSL::. +STARTTLS will be enabled when the port number for normal TCP +connections of the protocol is set to the same as the port number for +TLS connections. Configure as follows for POP, for instance: -Then, set the SSL port to the same one of the protocol to be -protected. For instance, configure as follows for POP: - - ;; mew-pop-port is default to "pop3" (110) + ;; A default value of mew-pop-port is "pop3" (110) (setq mew-pop-ssl t) (setq mew-pop-ssl-port mew-pop-port) ;; The default is "pop3s" (995) -That is, if the SSL port is the same as the port of the protocol to be -protected, TLS is used. Otherwise, SSL is used. - -The following is an example to protect Message Submission with TLS. +The following is an example to enable STARTTLS for Message Submission. (setq mew-smtp-port "submission") ;; The default is "smtp" (25) (setq mew-smtp-ssl t) @@ -5294,7 +5434,7 @@ The following is an example to protect Message Submission with TLS.  -File: mew.info, Node: spam, Next: spam2, Prev: TLS, Up: Tips +File: mew.info, Node: spam, Next: spam2, Prev: TLS/SSL2, Up: Tips Spam messages ============= @@ -5315,7 +5455,7 @@ If you use "bogofilter", put the following to your "~/.mew.el". '(("X-Bogosity:" mew-spam-bogofilter))) If you want to put the `o' mark so as to be refiled to the +spam -folder, instead of putting to th `D' mark, you should program the +folder, instead of putting to the `D' mark, you should program the function as follows: (defun mew-spam-bogofilter (val) @@ -5359,7 +5499,7 @@ Type `?' and `RET', then specify "bogo", and spam messages are marked with `*'. After that, you may want to process them with `md' + `x'. (4) In the case where you use POP and a spam filter does not run on -the POP server but you want to mark spam messages when retrieving +the POP server but you want to mark spam messages when retrieving. Since bsfilter can be a POP proxy server, you can implement your policy. See a document in the bsfilter package. @@ -5378,19 +5518,19 @@ ham (non-spam). To use these commands, you need to configure four variables in advance. We consider bogofilter as an example and see three cases. -(2) To let your local filter learn: +(1) To let your local filter learn: (setq mew-spam-prog "bogofilter") (setq mew-spam-prog-args '("-s" "-N" "-v")) (setq mew-ham-prog "bogofilter") - (setq mew-ham-prog-args '("-n" "-S" "-v"))) + (setq mew-ham-prog-args '("-n" "-S" "-v")) (2) To let your filter on your learn via SSH: (setq mew-spam-prog "ssh") (setq mew-spam-prog-args '("" "bogofilter" "-s" "-N" "-v")) (setq mew-ham-prog "ssh") - (setq mew-ham-prog-args '("" "bogofilter" "-n" "-S" "-v"))) + (setq mew-ham-prog-args '("" "bogofilter" "-n" "-S" "-v")) (3) To pass through your with SSH and to let your filter on your learn via SSH: @@ -5398,7 +5538,7 @@ your learn via SSH: (setq mew-spam-prog "ssh") (setq mew-spam-prog-args '("-A" "" "ssh" "" "bogofilter" "-s" "-N" "-v")) (setq mew-ham-prog "ssh") - (setq mew-ham-prog-args '("-A" "" "ssh" "" "bogofilter" "-n" "-S" "-v"))) + (setq mew-ham-prog-args '("-A" "" "ssh" "" "bogofilter" "-n" "-S" "-v")) If you use SSH, you need to configure related hosts so that you can login them without passwords. @@ -5504,7 +5644,7 @@ The following is a summary of commands in Edit mode. `C-cC-m' The same as `C-cC-c' `Other commands' - The same as the other commands in Edit mode + The same as the other commands in Draft mode @@ -5646,12 +5786,12 @@ Mailing list If you want to receive release announcements, ask questions, and/or discuss features in English, please subscribe yourself to mew-en. - https://groups.google.com/forum/#!forum/mew-en + https://groups.google.com/g/mew-en  -File: mew.info, Node: Copyright, Next: Variable Index, Prev: ml, Up: Top +File: mew.info, Node: Copyright, Next: Privacy Policy, Prev: ml, Up: Top Copyright ********* @@ -5697,7 +5837,19 @@ granted to copy, modify, redistribute this manual but no warranty.  -File: mew.info, Node: Variable Index, Next: Key Index, Prev: Copyright, Up: Top +File: mew.info, Node: Privacy Policy, Next: Variable Index, Prev: ml, Up: Top + +Privacy Policy +************** + + +Users need to configure their e-mail addresses and e-mail servers but +such information is not sent anywhere. Users are not trucked at all. + + + + +File: mew.info, Node: Variable Index, Next: Key Index, Prev: Privacy Policy, Up: Top Variable Index ************** @@ -5705,6 +5857,7 @@ Variable Index * Menu: +* gnutls-verify-error: GnuTLS. (line 5) * mail-user-agent: Composing. (line 5) * mail-user-agent: configuration. (line 5) * mail-user-agent: start. (line 5) @@ -5774,7 +5927,6 @@ Variable Index * mew-imap-header-only: imap. * mew-imap-header-only: retrieving. (line 5) * mew-imap-sentinel-hook: hooks. -* mew-imap-sentinel-hook: hooks. * mew-imap-sentinel-non-biff-hook: hooks. * mew-imap-server: configuration. (line 5) * mew-imap-server: imap. @@ -5800,6 +5952,7 @@ Variable Index * mew-mailbox-type: retrieving. (line 5) * mew-mailbox-type: start. (line 5) * mew-make-message-hook: hooks. +* mew-master-passwd-type: password. (line 5) * mew-mbox-command-arg: configuration. (line 5) * mew-mbox-command: configuration. (line 5) * mew-message-hook: hooks. @@ -5816,7 +5969,9 @@ Variable Index * mew-nntp-server: nntp. * mew-nntp-size: nntp. * mew-nntp-ssh-server: nntp. +* mew-nntp-ssl: TLS/SSL2. (line 5) * mew-nntp-ssl: nntp. +* mew-nntp-ssl-port: TLS/SSL2. (line 5) * mew-nntp-ssl-port: nntp. * mew-nntp-user: nntp. * mew-nntp2-flush-hook: hooks. @@ -5836,9 +5991,9 @@ Variable Index * mew-pop-size: pop. * mew-pop-ssh-server: SSH. (line 5) * mew-pop-ssh-server: pop. -* mew-pop-ssl: SSL. (line 5) +* mew-pop-ssl: TLS/SSL2. (line 5) * mew-pop-ssl: pop. -* mew-pop-ssl-port: SSL. (line 5) +* mew-pop-ssl-port: TLS/SSL2. (line 5) * mew-pop-ssl-port: pop. * mew-pop-user: configuration. (line 5) * mew-pop-user: pop. @@ -5899,7 +6054,8 @@ Variable Index * mew-smtp-server: configuration. (line 5) * mew-smtp-server: smtp. * mew-smtp-ssh-server: smtp. -* mew-smtp-ssl: SSL. (line 5) +* mew-smtp-ssl: TLS/SSL2. (line 5) +* mew-smtp-ssl-port: TLS/SSL2. (line 5) * mew-smtp-ssl-port: smtp. * mew-smtp-ssl: smtp. * mew-smtp-submission-family: smtp. @@ -5911,8 +6067,11 @@ Variable Index * mew-spam-prog-args: spam2. (line 5) * mew-spam-prog: spam2. (line 5) * mew-spam: spam. (line 5) -* mew-ssl-cert-directory: SSL. (line 5) -* mew-ssl-verify-level: SSL. (line 5) +* mew-ssl-cert-directory: Stunnel. (line 5) +* mew-ssl-default: TLS/SSL2. (line 5) +* mew-ssl-trustfiles: GnuTLS. (line 5) +* mew-ssl-verify-level: GnuTLS. (line 5) +* mew-ssl-verify-level: Stunnel. (line 5) * mew-status-update-hook: hooks. * mew-summary-delete-folder-hook: hooks. * mew-summary-exec-hook: hooks. @@ -5973,6 +6132,7 @@ Variable Index * mew-warn-domains: addr-warn. (line 5) * mew-warning-field-level: status-update. (line 5) * mew-x-pgp-key-list: cipher-viewing. (line 5) +* network-security-level: GnuTLS. (line 5) * read-mail-command: configuration. (line 5) @@ -6161,6 +6321,7 @@ Key Index * f (Summary): forward. (line 5) * f (Summary): sum-write. (line 5) * g (Summary): moving. (line 5) +* h (Summary): message-mode. (line 5) * i (Attach): mime-comp. (line 5) * i (Summary): retrieving. (line 5) * i (Summary): send. (line 5) @@ -6242,110 +6403,113 @@ Key Index  Tag table: Node: Top285 -Node: Overview1499 -Node: characteristic2392 -Node: Emacsen4118 -Node: modes4335 -Node: folder convention5102 -Node: configuration8154 -Node: password10927 -Node: start13450 -Node: Viewing14618 -Node: singlepart15914 -Node: multipart17403 -Node: analysis20633 -Node: cipher-viewing24582 -Node: retrieving29608 -Node: moving33617 -Node: sum-write36265 -Node: features38642 -Node: status-update41122 -Node: invalid42147 -Node: Composing44344 -Node: header46392 -Node: cheader47392 -Node: addr-comp49194 -Node: addrbook51072 -Node: auto-alias54264 -Node: addr-comp155983 -Node: addr-comp258405 -Node: send60622 -Node: cite63713 -Node: mime-comp65959 -Node: charset-guess73306 -Node: longline76993 -Node: reply78821 -Node: forward82639 -Node: resend83512 -Node: shortcut85585 -Node: mark-b-comp91019 -Node: pgp-key93984 -Node: anonymous94865 -Node: Marks96432 -Node: unread mark98076 -Node: delete mark99577 -Node: refile mark101819 -Node: target mark103430 -Node: escape mark105061 -Node: unmark105916 -Node: mark change106895 -Node: sync108339 -Node: off-line109517 -Node: mew-mark111367 -Node: Refile112089 -Node: by-folder113949 -Node: by-alist115846 -Node: by-thread117929 -Node: by-from-folder118783 -Node: by-from120140 -Node: by-newsgroups121719 -Node: by-default122054 -Node: guess-rule122508 -Node: auto-refile124279 -Node: copy-msg126491 -Node: Virtual127758 -Node: selection129418 -Node: sorting130138 -Node: dialog131981 -Node: search133108 -Node: condition134272 -Node: dbsearch136511 -Node: keyword137735 -Node: thread138593 -Node: thread-op139853 -Node: Quit142019 -Node: Customize142568 -Node: summary-mode143383 -Node: message-mode147542 -Node: draft-mode151076 -Node: charset154043 -Node: highlight156249 -Node: hooks159225 -Node: pop163774 -Node: imap165453 -Node: nntp167021 -Node: smtp168382 -Node: config171334 -Node: config2177278 -Node: custom-misc178794 -Node: Tips179815 -Node: region180403 -Node: visiting181093 -Node: SSH181623 -Node: SSL182595 -Node: TLS184968 -Node: spam185867 -Node: spam2188156 -Node: addr-warn189490 -Node: biff190618 -Node: edit191376 -Node: Convention192651 -Node: Implementation194719 -Node: Avail197082 -Node: obtain197389 -Node: ml197681 -Node: Copyright197969 -Node: Variable Index199918 -Node: Key Index215267 +Node: Overview1546 +Node: characteristic2439 +Node: Emacsen4165 +Node: modes4382 +Node: folder convention5149 +Node: configuration8201 +Node: password10974 +Node: start15276 +Node: Viewing16444 +Node: singlepart17740 +Node: multipart19229 +Node: analysis22460 +Node: cipher-viewing26409 +Node: retrieving31435 +Node: moving35444 +Node: sum-write38092 +Node: features40469 +Node: status-update42949 +Node: invalid43974 +Node: Composing46174 +Node: header48222 +Node: cheader49222 +Node: addr-comp51024 +Node: addrbook52902 +Node: auto-alias56095 +Node: addr-comp157816 +Node: addr-comp260238 +Node: send62455 +Node: cite65546 +Node: mime-comp67792 +Node: charset-guess75139 +Node: longline78826 +Node: reply80654 +Node: forward84472 +Node: resend85345 +Node: shortcut87418 +Node: mark-b-comp92860 +Node: pgp-key95825 +Node: anonymous96706 +Node: Marks98273 +Node: unread mark99917 +Node: delete mark101418 +Node: refile mark103661 +Node: target mark105272 +Node: escape mark106903 +Node: unmark107758 +Node: mark change108737 +Node: sync110181 +Node: off-line111359 +Node: mew-mark113209 +Node: Refile113931 +Node: by-folder115791 +Node: by-alist117688 +Node: by-thread119768 +Node: by-from-folder120624 +Node: by-from121981 +Node: by-newsgroups123559 +Node: by-default123894 +Node: guess-rule124348 +Node: auto-refile126134 +Node: copy-msg128346 +Node: Virtual129614 +Node: selection131274 +Node: sorting131969 +Node: dialog133812 +Node: search134943 +Node: condition136108 +Node: dbsearch138363 +Node: keyword139587 +Node: thread140444 +Node: thread-op141704 +Node: Quit143874 +Node: Customize144423 +Node: summary-mode145238 +Node: message-mode149398 +Node: draft-mode153152 +Node: charset156119 +Node: highlight158325 +Node: hooks161301 +Node: pop165766 +Node: imap167567 +Node: nntp169252 +Node: smtp170752 +Node: config173807 +Node: config2179751 +Node: custom-misc181267 +Node: Tips182288 +Node: region183011 +Node: visiting183701 +Node: SSH184231 +Node: TLS/SSL185197 +Node: Stunnel186222 +Node: GnuTLS188260 +Node: TLS/SSL2191466 +Node: spam192993 +Node: spam2195289 +Node: addr-warn196620 +Node: biff197748 +Node: edit198506 +Node: Convention199782 +Node: Implementation201850 +Node: Avail204213 +Node: obtain204520 +Node: ml204812 +Node: Copyright205088 +Node: Privacy Policy207037 +Node: Variable Index207292 +Node: Key Index223210  End tag table diff --git a/elpa/mew-20230415.633/mew.ja.info b/elpa/mew-20240911.749/mew.ja.info similarity index 93% rename from elpa/mew-20230415.633/mew.ja.info rename to elpa/mew-20240911.749/mew.ja.info index d6b4aeda..637d0657 100644 --- a/elpa/mew-20230415.633/mew.ja.info +++ b/elpa/mew-20240911.749/mew.ja.info @@ -42,6 +42,7 @@ Mew 6.9 マニュアル * Implementation:: 実装について * Avail:: 入手方法とメーリングリスト * Copyright:: 著作権について +* Privacy Policy:: プライバシポリシー * Variable Index:: 変数索引 * Key Index:: キー索引 @@ -54,7 +55,7 @@ File: mew.ja.info, Node: Overview, Next: characteristic, Prev: Top, Up: Top **************** Mew とは、テキスト・メールやマルチメディア・メール(MIME)、ニュース、セ -キュリティ機能(PGP、S/MIME、SSH、SSL)を便利に利用するためのユーザイン +キュリティ機能(PGP、S/MIME、SSH、TLS)を便利に利用するためのユーザイン ターフェイスです。最新の検索サービスとも連動します。 Mew は 「Messaging in the Emacs World」 の略です。先頭の M は大文字で @@ -182,13 +183,13 @@ Mew のフォルダには、「ローカル・フォルダ」と「リモート `+draft' 書きかけのメッセージを保存しておくローカル・フォルダ。 `+queue' - 書き終ってメールの配送に適した書式に変換されたメッセージが溜るロー - カル・フォルダ。"+queue" のメッセージは、いずれ SMTP によって送信 - さる。 + 書き終わってメールの配送に適した書式に変換されたメッセージが溜る + ローカル・フォルダ。"+queue" のメッセージは、いずれ SMTP によって + 送信される。 `+postq' - 書き終ってニュースに投稿するのに適した書式に変換されたメッセージ - が溜るローカル・フォルダ。"+postq" のメッセージは、いずれ NNTP に - よって送信される。 + 書き終わってニュースに投稿するのに適した書式に変換されたメッセー + ジが溜るローカル・フォルダ。"+postq" のメッセージは、いずれ NNTP + によって送信される。 リモート・フォルダとは、サーバ側にあるフォルダをローカルにコピーしたも のです。本物のメッセージはあくまでサーバ側にあり、ローカルにはメッセー @@ -377,6 +378,39 @@ File: mew.ja.info, Node: password, Next: start, Prev: configuration, Up: Overvie ないように気をつけて下さい。もし席を空け、Emacs をよく知っている他の人 にEmacs を操作された場合、パスワードを盗み取られる可能性があります。 +Mew のマスターパスワード機能は Mew 独自のものですが、Emacs には +auth-source と呼ばれるパスワードマネージャが含まれています。 +auth-source は .netrc 形式のテキストファイル、GNOME Keyring, macOS +Keychain といった、プラットフォームが提供するパスワード保存機能にも対 +応しています。 + +Mew の auth-source 対応は、まだ実験的なものです。auth-source を試すに +は、マスターパスワードを使用する設定に加えて、次のように設定します。 + + (setq mew-master-passwd-type 'auth-source) + (setq auth-sources '("~/.authinfo.gpg" "~/.authinfo" "~/.netrc")) + +どのパスワード保存機能を使用するかは、`auth-sources' 変数で設定できま +す。上記設定では 3 個のファイルを探し、一番最初に見つかったものを使用 +します。`auth-sources' を指定しなかった場合、デフォルトでは .netrc 形 +式のテキストファイルとして、~/.authinfoというファイルが使われます。 +GnuPG を使って暗号化し、~/.authinfo.gpg という名前で用意すれば、暗号化 +した状態で維持することも可能です。平文のファイルにパスワードを保存する +のは危険ですので、暗号化しておくことを強くお勧めします。詳しくは、 +*Note (auth)Top:: を参照してください。 + +.netrc 形式のテキストファイルを GnuPG で暗号化した場合、Mew は保存され +たパスワードの使用時に、復号用の鍵にアクセスするためのパスフレーズを尋 +ねます。この復号処理には、EasyPG Assistant と呼ばれる Emacs パッケージ +が使われます。このパッケージは GnuPG を呼び出して暗号の処理をします。 +多くの場合、デフォルトの設定で問題なく動作しますが、設定可能な項目がい +くつかあります。詳しくは、*Note (epa)Top:: を参照してください。 + +現在の auth-source には、記録したパスワードを上書き・消去できないとい +う大きな欠点があることに注意してください。サーバのパスワードを変更した +場合は、~/.authinfo.gpg ファイルを手動で編集してください。これは、将来 +のEmacs で修正される見込みです。 +  @@ -397,7 +431,7 @@ Mew を起動するには、以下の方法があります。 「修飾子」が `+'(ローカル・フォルダ)なら、`mew-mailbox-type' から メールボックスが決定される。(*Note retrieving:: を参照) その他、 すなわちリモート・フォルダなら、メッセージを取得するためのプロト - コルが修飾子に応じて決る。 + コルが修飾子に応じて決まる。 `mew-auto-get' が `t' なら、到着したメッセージが非同期に取得され、 Summary モードへ一覧表示される。 @@ -572,11 +606,11 @@ Mew は、MIME を再帰的に処理します。以下は転送されたマル くことで高速性を実現しています。解析されたメッセージは、しばらくの間保 存されます。 -メッセージの終りの部分がはっきりと分かるように、Mew はメッセージの最後 -に "[End of message]" という文字列を表示します。また、パートの終りでは、 -"[Message is continued]" という文字列を表示します。これらの文字列はそ -れぞれ、`mew-end-of-message-string' と `mew-end-of-part-string'で指定 -できます。 +メッセージの終わりの部分がはっきりと分かるように、Mew はメッセージの最 +後に "[End of message]" という文字列を表示します。また、パートの終わり +では、"[Message is continued]" という文字列を表示します。これらの文字 +列はそれぞれ、`mew-end-of-message-string' と `mew-end-of-part-string' +で指定できます。  @@ -777,7 +811,7 @@ File: mew.ja.info, Node: retrieving, Next: moving, Prev: cipher-viewing, Up: Vie メールボックスへ到着したメッセージを +inbox へコピーし一覧表示するには、 `i' を使います。コピー元のメールボックスは `mew-mailbox-type' によって -決ります。(`M-x mew' を実行した際に、`mew-proto' が `+' の場合も、 +決まります。(`M-x mew' を実行した際に、`mew-proto' が `+' の場合も、 `mew-mailbox-type' に従ってメッセージがコピーされます。) 以下に取りう る値を示します。 @@ -855,11 +889,11 @@ POP、IMAP、NNTP に対し、それぞれ `mew-pop-header-only'、 する。 ローカル・フォルダで実行した場合、ケースと `mew-mailbox-type' に - より取得方法が決る。`mew-pop-delete' または `mew-imap-delete'の値 - が `t' なら、メールボックスのメッセージを削除する。 + より取得方法が決まる。`mew-pop-delete' または `mew-imap-delete'の + 値が `t' なら、メールボックスのメッセージを削除する。 リモート・フォルダで実行した場合、ケースと取得方法はそのフォルダ - から決る。サーバ側のメッセージは常に保存される。 + から決まる。サーバ側のメッセージは常に保存される。 `C-uI' `mew-pop-delete' または `mew-imap-delete' を逆転させて `I' を実行 する。 @@ -1238,7 +1272,7 @@ File: mew.ja.info, Node: header, Next: cheader, Prev: Composing, Up: Composing <フィールド名の補完> -行頭の単語中で、しかも、上の行の最後が "," で終る継続行でなければ、 +行頭の単語中で、しかも、上の行の最後が "," で終わる継続行でなければ、 `TAB' で `mew-fields' に定義されているフィールド名を補完できます。 To: kazu@example.org @@ -1530,8 +1564,8 @@ Draft モードのヘッダ内で、かつ、アドレスを書くべきフィ To: piglet@example.org, winnie-the-pooh@example.net -"@" で終る文字列は強制的に展開します。たとえば、以下のように似たような -短縮名があった場合を考えて下さい。 +"@" で終わる文字列は強制的に展開します。たとえば、以下のように似たよう +な 短縮名があった場合を考えて下さい。 pooh: winnie-the-pooh@example.net pooh-pooh: pooh-pooh@example.org @@ -2218,7 +2252,7 @@ Summary モードで `a' や `A' を使うと、新しい草稿が Draft modeに ("Cc:" "To:" "Cc:" "Apparently-To:")))) あるアドレスが複数ある場合は、自動的に 1 つになります。また、匿名の宛 -先を表す ":;" で終るアドレスも、自動的に消去されます。 +先を表す ":;" で終わるアドレスも、自動的に消去されます。 自分のアドレスは自動的に消去されます。自分のアドレスは、 `mew-config-alist' などから `mew-mail-address-list' に自動設定されます。 @@ -4112,10 +4146,8 @@ Emacs がサポートしてないデータ型のファイルは、Message バッ 示できません。そのデータをテキストに整形する外部コマンドをインストール すれば、Message バッファに表示可能になります。 -"w3m" と "emacs-w3m" をインストールすると、Text/Html を Message バッ -ファに表示できるようになります。(以下で説明する "wvHtml"、"xlhtml"、 -"ppthtml" は、単なる "w3m" ではなく、国際化された "w3m-m17n" が必要で -す。) 両者をインストールしたら、"~/.mew.el" に以下の設定を加えて下さい。 +以下の設定を "~/mew.el"に加えれば、Text/Html を Message バッファに表示 +できるようになります。 (setq mew-use-text/html t) ; decode HTML for all folders @@ -4123,6 +4155,14 @@ Emacs がサポートしてないデータ型のファイルは、Message バッ ファに表示できるようになります。この際も、以下で説明する `C-cC-e'の操 作は有効です。 +デフォルトでは Text/Html の表示は Emacs の組み込みブラウザを使います。 + +そのほか、w3m ブラウザを使って表示させることもできます。 +そのためには、まず "w3m" と "emacs-w3m" をインストールします。 +(以下で説明する "wvHtml"、"xlhtml"、 +"ppthtml" は、単なる "w3m" ではなく、国際化された "w3m-m17n" が必要で +す。) 両者をインストールしたら、"~/.mew.el" に以下の設定を加えて下さい。 + (condition-case nil (require 'mew-w3m) (file-error nil)) @@ -4137,8 +4177,11 @@ Text/Html の設定を完了させて下さい。これで、たとえば WORD プログラム自身にそのデータを表示させることもできます。これには `C-cC-e' を使います。 -Message バッファに画像を表示することもできます。また `C-cC-e' を使い、 -外部のプログラムに表示させることも可能です。 +Message バッファに画像を表示することもできます。Message バッファに表示 +している画像の拡大や縮小は `C-xo' や `h'等でカーソルを画像が表示されて +いるウィンドウに移動し、`i+' や `i-' (emacs 28 までは `+' や `-') を使 +います。また `C-cC-e' を使い、外部のプログラムに表示させることも可能で +す。 HTML は `C-cC-e' を使って外部のブラウザに表示できます。Windows やMac ではデフォルトのブラウザが利用されます。Unix では、以下のように @@ -4178,11 +4221,11 @@ Office 関連のファイルも、`C-cC-e' を使えば、それぞれのアプ たい場合は、`C-uC-cC-e' と入力して下さい。 最近、Multipart/Alternative の中に Text/Plain と Text/Html の両方が入っ -ており、どちらかを選ぶようになっているメッセージを多く見掛けます。Mew -は、標準では Text/Plain の方を優先して表示します。"emacs-w3m" をインス -トールすれば、Text/Html の方を優先したくなるかもしれません。その場合、 -以下の設定を "~/.mew.el" に加えて下さい。(ここで *Note multipart:: を -読み、`:' の使い方も思い出しておきましょう。) +ており、どちらかを選ぶようになっているメッセージ(いわゆる HTML メール) +を多く見掛けます。Mewは、標準では Text/Plain の方を優先して表示します。 +"emacs-w3m" をインストールすれば、Text/Html の方を優先したくなるかもし +れません。その場合、以下の設定を "~/.mew.el" に加えて下さい。(ここで +*Note multipart:: を読み、`:' の使い方も思い出しておきましょう。) (setq mew-mime-multipart-alternative-list '("Text/Html" "Text/Plain" ".*")) @@ -4557,9 +4600,10 @@ Mew では、メッセージを受信する際に POP を利用できます。 `mew-pop-ssh-server' POP を SSH 経由で取得する場合の SSH サーバの名前。 `mew-pop-ssl' - POP over SSL を使うか否か。 + POP over TLS を使うか否か。`'native' は GnuTLSを使った TLS 接続、 + `'tunnel' は stunnelを使った TLS トンネル接続を意味する。 `mew-pop-ssl-port' - POP over SSL のポート番号。 + POP over TLS のポート番号。 `mew-pop-user' POP のアカウント名。初期値はログイン名。 `mew-pop-auth' @@ -4600,9 +4644,10 @@ Mew では、メッセージを受信する際に IMAP を利用できます。 `mew-imap-ssh-server' IMAP を SSH 経由で取得する場合の SSH サーバの名前。 `mew-imap-ssl' - IMAP over SSL を使うか否か。 + IMAP over TLS を使うか否か。`'native' は GnuTLSを使った TLS 接続、 + `'tunnel' は stunnelを使った TLS トンネル接続を意味する。 `mew-imap-ssl-port' - IMAP over SSL のポート番号。 + IMAP over TLS のポート番号。 `mew-imap-user' IMAP のアカウント名。初期値はログイン名。 `mew-imap-auth' @@ -4639,9 +4684,10 @@ Mew では、ニュースを読み書きする際に NNTP を利用します。 `mew-nntp-ssh-server' NNTP を SSH 経由で取得する場合の SSH サーバの名前。 `mew-nntp-ssl' - NNTP over SSL を使うか否か。 + NNTP over TLS を使うか否か。`'native' は GnuTLSを使った TLS 接続、 + `'tunnel' は stunnelを使った TLS トンネル接続を意味する。 `mew-nntp-ssl-port' - NNTP over SSL のポート番号。 + NNTP over TLS のポート番号。 `mew-nntp-user' NNTP のアカウント名。もし `nil' でなければ、認証の手続きが実行さ れる。(mew-nntp-auth という変数はないことに注意。) @@ -4688,9 +4734,10 @@ Mew では、メッセージを送信する際に SMTP を利用します。SMTP `mew-smtp-ssh-server' SSH 経由でメッセージを送る際の SSH サーバの名前。 `mew-smtp-ssl' - SMTP over SSL を使うか否か。 + SMTP over TLS を使うか否か。`'native' は GnuTLSを使った TLS 接続、 + `'tunnel' は stunnelを使った TLS トンネル接続を意味する。 `mew-smtp-ssl-port' - SMTP over SSL のポート番号。 + SMTP over TLS のポート番号。 `mew-smtp-user' SMTP AUTH で利用されるアカウント名。設定されない場合は、自動的に メールアドレスに設定される。 @@ -4732,7 +4779,7 @@ Message Submission (ポート番号が 587 である送信用の SMTP)を使い (setq mew-smtp-submission-family 'ipv6) -SSL (*Note SSL::)や TLS (*Note TLS::) の章も参考にして下さい。 +TLS/SSL (*Note TLS/SSL::) の章も参考にして下さい。 SMTP サーバの中には、認証なし、つまりパスワードを送られるとエラーと見 なす設定であるにも関わらず、認証を要求してくるものがあります。Mew は、 @@ -4970,8 +5017,10 @@ File: mew.ja.info, Node: Tips, Next: region, Prev: custom-misc, Up: Top * region:: リージョン * visiting:: 移動 * SSH:: Secure SHell -* SSL:: Secure Socket Layer -* TLS:: Transport Layer Security +* TLS/SSL:: Transport Layer Security / Secure Socket Layer +* Stunnel:: Stunnel を使った TLS 接続 +* GnuTLS:: GnuTLS ライブラリを使った TLS 接続 +* TLS/SSL2:: TLS 接続のための変数設定 * spam:: スパム * spam2:: スパム(2) * addr-warn:: アドレスの警告 @@ -5022,7 +5071,7 @@ Summary モードから、一番数字の小さい草稿(Draft モード)に移  -File: mew.ja.info, Node: SSH, Next: SSL, Prev: visiting, Up: Tips +File: mew.ja.info, Node: SSH, Next: TLS/SSL, Prev: visiting, Up: Tips Secure SHell ============ @@ -5040,24 +5089,47 @@ over SSH を利用する場合は、`mew-pop-ssh-server' に SSH サーバの名 SSH で通信が保護されている場合、モードラインに錠前の絵が表示されます。 -Mew の実装では、SSH と SSL/TLS を同時には使えません。SSH トンネルの中 -でSSL/TLS を使う必要がある場合、Mew では SSL/TLS だけを設定し、SSH ト -ンネルはコマンドラインから張るようにして下さい。 +Mew の実装では、SSH と TLS を同時には使えません。SSH トンネルの中でTLS +を使う必要がある場合、Mew では TLS だけを設定し、SSH トンネルはコマン +ドラインから張るようにして下さい。  -File: mew.ja.info, Node: SSL, Next: TLS, Prev: SSH, Up: Tips +File: mew.ja.info, Node: TLS/SSL, Next: Stunnel, Prev: SSH, Up: Tips -Secure Socket Layer -=================== +Transport Layer Security / Secure Socket Layer +============================================== -SSL を使うには、認証局方式の信用モデルを理解している必要があります。現 -在、Mew は SSL のために "stunnel" バージョン 3、4、5 をサポートしてい -ます。 +Mew は、通信の秘匿性と完全性を保証するために、TCP 通信路を暗号化する +TLS (Transport Layer Security) に対応しています。この機能を使うには、 +Emacs に GnuTLS ライブラリが組み込まれているか、外部プログラムとして +"stunnel" バージョン 5.15以降が必要です。 + +TLS プロトコルは、Netscape Communications 社が 1990 年代に開発した SSL +(Secure Socket Layer) の後継として規格化されたものです。2 つのプロトコ +ルには互換性があり、GnuTLS や "stunnel" プログラムは TLS と SSL の両方 +に対応しています。しかし、2020 年の時点で SSL には多数の脆弱性が発見さ +れており、SSL の使用は避けて TLS のみを使用すべきだと考えられています。 + +TLS 機能の設定に用いる Mew の設定変数や関数の名前には、 "ssl" が含まれ +ているものがあります。混乱しやすいですが、このような歴史的な理由による +ものです。 + +TLS を有効にするには、stunnel もしくは GnuTLS ライブラリのための変数を +設定し、次に各プロトコルについて TLS を有効にするかどうかの設定をしま +す。 + + + +File: mew.ja.info, Node: Stunnel, Next: GnuTLS, Prev: TLS/SSL, Up: Tips + +Stunnel を使った TLS 接続 +========================= -Mew で利用する前に、SSL サーバに対して "stunnel" で SSL のコネクション +Mew で利用する前に、TLS サーバに対して "stunnel" で TLS のコネクション が張れるか確かめて下さい。"stunnel" は、"openssl" のライブラリをリンク -しているので、"openssl" の知識が必要です。 +しているので、"openssl" の知識が必要です。また、TLS を使うには、認証局 +方式の信用モデルを理解している必要があります。 信用する証明書を保存しておくディレクトリを "~/.certs" だとしましょう。 ここに "openssl" の "certs" ディレクトリに付いてくる PEM 形式の証明書 @@ -5074,10 +5146,12 @@ Mew で利用する前に、SSL サーバに対して "stunnel" で SSL のコ "openssl" に付いてくる証明書は、世の中で使われている CA すべてを網羅で きていません。あなたが利用するサーバの証明書が、他の CA から発行された -場合、その CA の証明書を同様にコピーしておく必要があります。以下のペー -ジに CA の証明書がたくさん置いてあります。 +場合、その CA の証明書を同様にコピーしておく必要があります。インターネッ +トにおいて信頼されている CA の証明書は、次の URLで管理・公開されていま +す。 - http://www.columbia.edu/~ariel/good-certs/ns45/ + https://www.ccadb.org + https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/ Mew で "stunnel" を制御する重要な変数は 2 つです。 `mew-ssl-cert-directory' は、信用する CA の証明書を置いておくディレク @@ -5088,51 +5162,106 @@ Mew で "stunnel" を制御する重要な変数は 2 つです。 0 検証しない 1 - サーバの証明書があれば検証する。検証結果が失敗なら、SSL/TSL コネ - クションは作られない。証明書がなければ、SSL/TLS コネクションを作 - 成する。 + サーバの証明書があれば検証する。検証結果が失敗なら、TLS コネクショ + ンは作られない。証明書がなければ、TLS コネクションを作成する。 2 - サーバの証明書を検証する。検証結果が失敗なら、SSL/TSL コネクショ - ンは作られない。証明書がなければ、SSL/TLS コネクションを作成しな - い。 + サーバの証明書を検証する。検証結果が失敗なら、TLS コネクションは + 作られない。証明書がなければ、TLS コネクションを作成しない。 3 サーバが送ってきたものではなく、ローカルにインストールされている 証明書で検証する。 -後は各プロトコルの SSL に関する変数を設定して下しさい。たとえば、POP -over SSL を利用するには、`mew-pop-ssl' を `t' にします。また、ポート番 -号が標準と異なる場合には、`mew-pop-ssl-port' を設定して下さい。 +変数を設定したら、stunnel を使う準備は完了です。 - (setq mew-pop-ssl t) -SMTP で SSL を利用する場合は、以下のようにします。 + +File: mew.ja.info, Node: GnuTLS, Next: TLS/SSL2, Prev: Stunnel, Up: Tips + +GnuTLS ライブラリを使った TLS 接続 +================================== + +GnuTLS が組み込まれた Emacs を使っている場合、TLS 機能を有効にするため +の特別な設定は不要です。次の変数を設定することで、証明書の検証レベルと +信頼するルート CA を変更することができます。 + +証明書の検証レベルは、Emacs の Network Security Manager(NSM) によって +管理されているポリシーに従います。ポリシーを設定するには、 +`network-security-level' という変数を使います。デフォルト値は`'medium' +です。`'low' の場合、証明書を検証しません。`'medium' の場合、ルート CA +の証明書リストを使って証明書を検証します。検証ができなかった場合、もし +くは自己署名証明書だった場合、その証明書を受け入れるかどうかのダイアロ +グが表示されます。また、今まで証明書を使って暗号路で通信していたサーバ +に対して、暗号化なしで接続しようとした場合にも、警告を表示します。 +`'high' とすると、`'medium' のチェックに加えて、サーバ証明書の鍵の変更 +や弱い暗号スイートの使用に関して警告が表示されます。詳しくは、*Note +(emacs)Network Security:: を参照して下さい。 + +GnuTLS を使う場合は前述のとおり `network-security-level' を設定するこ +とが推奨されます。一方で Mew は、Stunnel を用いた TLS 接続について、 +`mew-ssl-verify-level' という変数を用いて証明書の検証レベルを設定して +いました。この変数で設定した場合との後方互換性を保つため、Mew は +`mew-ssl-verify-level' が `0' の場合のみ、`network-security-level' を +`'low' に自動設定します。この自動設定は、 Mew による接続のみに影響しま +す。`mew-ssl-verify-level' のデフォルト値は `1' となっています。`0' 以 +外の値の場合は、`network-security-level' の設定に変更が加えられること +はありません。 + +GnuTLS には、証明書の検証方法を制御するための`gnutls-verify-error' と +いう変数もあります。GnuTLS は TCP 接続の確立時に証明書を検証します、こ +の変数は、検証に失敗した時に切断するかどうかを制御します。デフォルトで +は `nil' に設定されており、検証に失敗してもすぐには切断しません。前述 +の Network Security Managerが、TCP接続の確立後に検証し、切断するかどう +かを決定します。すぐに切断しない設定がデフォルトとなっていることは奇妙 +に思われるかも知れませんが、Emacsで GnuTLS が標準的な検証よりも多くの +項目を検査できるようにするため、TCP 接続と検証処理を分離しています。 - (setq mew-smtp-ssl t) +`gnutls-verify-error' を手動で設定した場合、TCP 接続の確立時に証明書の +検証に失敗すると、すぐに接続が切断されます。NSM は検証しません。この場 +合、`network-security-level' や`mew-ssl-verify-level'による設定は無効 +になりますので注意して下さい。特別な理由がない限り、 +`gnutls-verify-error' ではなく`network-security-level' を使って設定す +ることをお勧めします。 -SSL で通信が保護されている場合、モードラインに錠前の絵が表示されます。 +信頼するルート CA は、`mew-ssl-trustfiles' の設定に従います。ただし、 +GnuTLS には通常、デフォルトのルート CA リストが設定されており、Emacs +26.3 とそれより前のバージョンでは、それが常に先頭に追加されます。リス +トを空にしても、デフォルトのリストを無視できないことに注意してください。  -File: mew.ja.info, Node: TLS, Next: spam, Prev: SSL, Up: Tips +File: mew.ja.info, Node: TLS/SSL2, Next: spam, Prev: GnuTLS, Up: Tips -Transport Layer Security +TLS 接続のための変数設定 ======================== -Mew では SSL の代りに TLS を利用することもできます。TLS の実現は、SSL -と同様 "stunnel" に頼っています。ですので、TLS を利用する際には、 -*Note SSL:: の説明に従って設定して下さい。 +次に各プロトコルの TLS に関する変数を設定して下さい。たとえば、POP +over TLS を利用するには、`mew-pop-ssl' を `t' にします。TLS の実装とし +て stunnel もしくは GnuTLS を明示的に指定したい場合は、それぞれ +`'tunnel', `'native' を指定します。`t' を設定したプロトコルについては、 +`mew-ssl-default' を使って使用する実装を選択することが可能です。また、 +ポート番号が標準と異なる場合には、`mew-pop-ssl-port' を設定して下さい。 + + (setq mew-pop-ssl t) + +SMTP で TLS を利用する場合は、以下のようにします。 + + (setq mew-smtp-ssl t) + +TLS で通信が保護されている場合、モードラインに錠前の絵が表示されます。 -次に、SSL のポート番号を守りたいプロトコルと同じポート番号に設定します。 -たとえば、POP では以下のようにします。 +Mew では、各プロトコルの STARTTLS 拡張を使い、TCP 接続の確立後に +TLS を有効にすることもできます。STARTTLS を利用したい場合、ますは +*Note TLS/SSL:: の説明に従って設定して下さい。 - ;; mew-pop-port is default to "pop3" (110) +STARTTLS は、プロトコルの通常のポート番号と TLS 用のポート番号とを一致 +するように設定することで有効になります。たとえば、POP では以下のように +します。 + + ;; A default value of mew-pop-port is "pop3" (110) (setq mew-pop-ssl t) (setq mew-pop-ssl-port mew-pop-port) ;; The default is "pop3s" (995) -すなわち、SSL のポート番号と保護したいプロトコルのポートが同じであれば -TLS、異なれば SSL が利用されます。 - -以下は、Message Submission を TLS で守るための設定例です。 +以下は、Message Submission で STARTTLS を有効にするための設定例です。 (setq mew-smtp-port "submission") ;; The default is "smtp" (25) (setq mew-smtp-ssl t) @@ -5140,7 +5269,7 @@ TLS、異なれば SSL が利用されます。  -File: mew.ja.info, Node: spam, Next: spam2, Prev: TLS, Up: Tips +File: mew.ja.info, Node: spam, Next: spam2, Prev: TLS/SSL2, Up: Tips スパム ====== @@ -5231,14 +5360,14 @@ Summary モードで読んでいる現在のメッセージを、フィルター (setq mew-spam-prog "bogofilter") (setq mew-spam-prog-args '("-s" "-N" "-v")) (setq mew-ham-prog "bogofilter") - (setq mew-ham-prog-args '("-n" "-S" "-v"))) + (setq mew-ham-prog-args '("-n" "-S" "-v")) (2) サーバ()側のフィルターに SSH 経由で学習させる場合: (setq mew-spam-prog "ssh") (setq mew-spam-prog-args '("" "bogofilter" "-s" "-N" "-v")) (setq mew-ham-prog "ssh") - (setq mew-ham-prog-args '("" "bogofilter" "-n" "-S" "-v"))) + (setq mew-ham-prog-args '("" "bogofilter" "-n" "-S" "-v")) (3) ファイアウォール()の先のサーバ()のフィルターに多 段の SSH 経由で学習させる場合: @@ -5246,7 +5375,7 @@ Summary モードで読んでいる現在のメッセージを、フィルター (setq mew-spam-prog "ssh") (setq mew-spam-prog-args '("-A" "" "ssh" "" "bogofilter" "-s" "-N" "-v")) (setq mew-ham-prog "ssh") - (setq mew-ham-prog-args '("-A" "" "ssh" "" "bogofilter" "-n" "-S" "-v"))) + (setq mew-ham-prog-args '("-A" "" "ssh" "" "bogofilter" "-n" "-S" "-v")) なお SSH を利用する場合、関連するホストには、パスワードなしでログイン できるように設定しておく必要があります。 @@ -5484,13 +5613,13 @@ File: mew.ja.info, Node: ml, Next: Copyright, Prev: obtain, Up: Avail Mew に関するメーリングリストについては、以下を参照して下さい。 - https://groups.google.com/forum/#!forum/mew-ja + https://groups.google.com/g/mew-ja  -File: mew.ja.info, Node: Copyright, Next: Variable Index, Prev: ml, Up: Top +File: mew.ja.info, Node: Copyright, Next: Privacy Policy, Prev: ml, Up: Top 著作権について ************** @@ -5534,7 +5663,20 @@ CD ROM に入れて配布したいという方は、できるだけ教えて下  -File: mew.ja.info, Node: Variable Index, Next: Key Index, Prev: Copyright, Up: Top +File: mew.ja.info, Node: Privacy Policy, Next: Variable Index, Prev: ml, Up: Top + +プライバシポリシー +****************** + +ユーザは、各自のメールアドレスやメールサーバの情報を設定しなければなら +ないが、そのような情報はどこにも送信されない。ユーザはまったくトラッキ +ングされない。 + + + + + +File: mew.ja.info, Node: Variable Index, Next: Key Index, Prev: Privacy Policy, Up: Top 変数索引 ******** @@ -5542,6 +5684,7 @@ File: mew.ja.info, Node: Variable Index, Next: Key Index, Prev: Copyright, Up: T * Menu: +* gnutls-verify-error: GnuTLS. (line 5) * mail-user-agent: Composing. (line 5) * mail-user-agent: configuration. (line 5) * mail-user-agent: start. (line 5) @@ -5636,6 +5779,7 @@ File: mew.ja.info, Node: Variable Index, Next: Key Index, Prev: Copyright, Up: T * mew-mailbox-type: retrieving. (line 5) * mew-mailbox-type: start. (line 5) * mew-make-message-hook: hooks. +* mew-master-passwd-type: password. (line 5) * mew-mbox-command-arg: configuration. (line 5) * mew-mbox-command: configuration. (line 5) * mew-message-hook: hooks. @@ -5652,7 +5796,9 @@ File: mew.ja.info, Node: Variable Index, Next: Key Index, Prev: Copyright, Up: T * mew-nntp-server: nntp. * mew-nntp-size: nntp. * mew-nntp-ssh-server: nntp. +* mew-nntp-ssl: TLS/SSL2. (line 5) * mew-nntp-ssl: nntp. +* mew-nntp-ssl-port: TLS/SSL2. (line 5) * mew-nntp-ssl-port: nntp. * mew-nntp-user: nntp. * mew-nntp2-flush-hook: hooks. @@ -5672,9 +5818,9 @@ File: mew.ja.info, Node: Variable Index, Next: Key Index, Prev: Copyright, Up: T * mew-pop-size: pop. * mew-pop-ssh-server: SSH. (line 5) * mew-pop-ssh-server: pop. -* mew-pop-ssl: SSL. (line 5) +* mew-pop-ssl: TLS/SSL2. (line 5) * mew-pop-ssl: pop. -* mew-pop-ssl-port: SSL. (line 5) +* mew-pop-ssl-port: TLS/SSL2. (line 5) * mew-pop-ssl-port: pop. * mew-pop-user: configuration. (line 5) * mew-pop-user: pop. @@ -5735,7 +5881,8 @@ File: mew.ja.info, Node: Variable Index, Next: Key Index, Prev: Copyright, Up: T * mew-smtp-server: configuration. (line 5) * mew-smtp-server: smtp. * mew-smtp-ssh-server: smtp. -* mew-smtp-ssl: SSL. (line 5) +* mew-smtp-ssl: TLS/SSL2. (line 5) +* mew-smtp-ssl-port: TLS/SSL2. (line 5) * mew-smtp-ssl-port: smtp. * mew-smtp-ssl: smtp. * mew-smtp-submission-family: smtp. @@ -5747,8 +5894,11 @@ File: mew.ja.info, Node: Variable Index, Next: Key Index, Prev: Copyright, Up: T * mew-spam-prog-args: spam2. (line 5) * mew-spam-prog: spam2. (line 5) * mew-spam: spam. (line 5) -* mew-ssl-cert-directory: SSL. (line 5) -* mew-ssl-verify-level: SSL. (line 5) +* mew-ssl-cert-directory: Stunnel. (line 5) +* mew-ssl-default: TLS/SSL2. (line 5) +* mew-ssl-trustfiles: GnuTLS. (line 5) +* mew-ssl-verify-level: GnuTLS. (line 5) +* mew-ssl-verify-level: Stunnel. (line 5) * mew-status-update-hook: hooks. * mew-summary-delete-folder-hook: hooks. * mew-summary-exec-hook: hooks. @@ -5809,6 +5959,7 @@ File: mew.ja.info, Node: Variable Index, Next: Key Index, Prev: Copyright, Up: T * mew-warn-domains: addr-warn. (line 5) * mew-warning-field-level: status-update. (line 5) * mew-x-pgp-key-list: cipher-viewing. (line 5) +* network-security-level: GnuTLS. (line 5) * read-mail-command: configuration. (line 5) @@ -5997,6 +6148,7 @@ File: mew.ja.info, Node: Key Index, Prev: Variable Index, Up: Top * f (Summary): forward. (line 5) * f (Summary): sum-write. (line 5) * g (Summary): moving. (line 5) +* h (Summary): message-mode. (line 5) * i (Attach): mime-comp. (line 5) * i (Summary): retrieving. (line 5) * i (Summary): send. (line 5) @@ -6078,110 +6230,113 @@ File: mew.ja.info, Node: Key Index, Prev: Variable Index, Up: Top  Tag table: Node: Top289 -Node: Overview1326 -Node: characteristic1969 -Node: Emacsen2981 -Node: modes3159 -Node: folder convention3669 -Node: configuration5542 -Node: password7871 -Node: start9450 -Node: Viewing10215 -Node: singlepart11194 -Node: multipart12098 -Node: analysis14363 -Node: cipher-viewing16624 -Node: retrieving19503 -Node: moving22066 -Node: sum-write23631 -Node: features25095 -Node: status-update26669 -Node: invalid27370 -Node: Composing28666 -Node: header30174 -Node: cheader30848 -Node: addr-comp32053 -Node: addrbook33048 -Node: auto-alias35187 -Node: addr-comp136197 -Node: addr-comp237890 -Node: send39251 -Node: cite41361 -Node: mime-comp42762 -Node: charset-guess48341 -Node: longline50561 -Node: reply51697 -Node: forward54702 -Node: resend55294 -Node: shortcut56475 -Node: mark-b-comp59887 -Node: pgp-key62301 -Node: anonymous62876 -Node: Marks63851 -Node: unread mark64994 -Node: delete mark65866 -Node: refile mark67451 -Node: target mark68444 -Node: escape mark69505 -Node: unmark70020 -Node: mark change70637 -Node: sync71502 -Node: off-line72195 -Node: mew-mark73462 -Node: Refile73990 -Node: by-folder75138 -Node: by-alist76319 -Node: by-thread77973 -Node: by-from-folder78589 -Node: by-from79542 -Node: by-newsgroups80753 -Node: by-default80988 -Node: guess-rule81345 -Node: auto-refile82873 -Node: copy-msg84574 -Node: Virtual85443 -Node: selection86561 -Node: sorting87067 -Node: dialog88345 -Node: search89011 -Node: condition89648 -Node: dbsearch91386 -Node: keyword92268 -Node: thread92767 -Node: thread-op93572 -Node: Quit94888 -Node: Customize95311 -Node: summary-mode95999 -Node: message-mode98788 -Node: draft-mode101381 -Node: charset103476 -Node: highlight105102 -Node: hooks107154 -Node: pop110560 -Node: imap111642 -Node: nntp112653 -Node: smtp113772 -Node: config115865 -Node: config2120393 -Node: custom-misc121549 -Node: Tips122266 -Node: region122793 -Node: visiting123302 -Node: SSH123664 -Node: SSL124261 -Node: TLS125812 -Node: spam126523 -Node: spam2128274 -Node: addr-warn129393 -Node: biff130166 -Node: edit130648 -Node: Convention131408 -Node: Implementation132448 -Node: Avail133907 -Node: obtain134156 -Node: ml134380 -Node: Copyright134571 -Node: Variable Index135579 -Node: Key Index150876 +Node: Overview1368 +Node: characteristic2011 +Node: Emacsen3023 +Node: modes3201 +Node: folder convention3711 +Node: configuration5586 +Node: password7915 +Node: start10583 +Node: Viewing11349 +Node: singlepart12328 +Node: multipart13232 +Node: analysis15499 +Node: cipher-viewing17760 +Node: retrieving20639 +Node: moving23205 +Node: sum-write24770 +Node: features26234 +Node: status-update27808 +Node: invalid28509 +Node: Composing29805 +Node: header31313 +Node: cheader31988 +Node: addr-comp33193 +Node: addrbook34188 +Node: auto-alias36327 +Node: addr-comp137337 +Node: addr-comp239032 +Node: send40393 +Node: cite42503 +Node: mime-comp43904 +Node: charset-guess49483 +Node: longline51703 +Node: reply52839 +Node: forward55845 +Node: resend56437 +Node: shortcut57618 +Node: mark-b-comp61030 +Node: pgp-key63444 +Node: anonymous64019 +Node: Marks64994 +Node: unread mark66137 +Node: delete mark67009 +Node: refile mark68594 +Node: target mark69587 +Node: escape mark70648 +Node: unmark71163 +Node: mark change71780 +Node: sync72645 +Node: off-line73338 +Node: mew-mark74605 +Node: Refile75133 +Node: by-folder76281 +Node: by-alist77462 +Node: by-thread79116 +Node: by-from-folder79732 +Node: by-from80685 +Node: by-newsgroups81896 +Node: by-default82131 +Node: guess-rule82488 +Node: auto-refile84016 +Node: copy-msg85717 +Node: Virtual86586 +Node: selection87704 +Node: sorting88210 +Node: dialog89488 +Node: search90154 +Node: condition90791 +Node: dbsearch92529 +Node: keyword93411 +Node: thread93910 +Node: thread-op94715 +Node: Quit96031 +Node: Customize96454 +Node: summary-mode97142 +Node: message-mode99931 +Node: draft-mode102765 +Node: charset104860 +Node: highlight106486 +Node: hooks108538 +Node: pop111944 +Node: imap113102 +Node: nntp114189 +Node: smtp115384 +Node: config117542 +Node: config2122070 +Node: custom-misc123226 +Node: Tips123943 +Node: region124595 +Node: visiting125104 +Node: SSH125466 +Node: TLS/SSL126054 +Node: Stunnel126795 +Node: GnuTLS128133 +Node: TLS/SSL2129957 +Node: spam131043 +Node: spam2132799 +Node: addr-warn133915 +Node: biff134688 +Node: edit135170 +Node: Convention135930 +Node: Implementation136970 +Node: Avail138429 +Node: obtain138678 +Node: ml138902 +Node: Copyright139081 +Node: Privacy Policy140089 +Node: Variable Index140287 +Node: Key Index156192  End tag table diff --git a/elpa/mew-readme.txt b/elpa/mew-readme.txt deleted file mode 100644 index 866278c7..00000000 --- a/elpa/mew-readme.txt +++ /dev/null @@ -1,4 +0,0 @@ -The updated version is available from: - http://www.Mew.org/ - -See info for configuring a site file/.emacs/.mew.el. -- 2.47.3