mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 18:40:39 -08:00
mh-junk: replace color-based terms with descriptive words
* lisp/mh-e/*.el: "whitelist" -> "allowlist" and "blacklist" -> "blocklist". * doc/misc/mh-e.texi: update manual to match. * lisp/mh-e/folder.el: Change the binding of 'mh-junk-allowlist' to 'J a'. Add a compatibility binding for the old 'J w'. * lisp/mh-e/mh-scan.el (mh-note-allowlisted): Change char from 'W' to 'A'. * lisp/mh-e/junk.el: Rename 'mh-blacklist-a-msg' to 'mh-junk-blocklist-a-msg', adding the missing "junk-" to the function name.
This commit is contained in:
parent
7e8d1b08e3
commit
5fb8b20fa3
9 changed files with 276 additions and 235 deletions
|
|
@ -229,7 +229,7 @@ User's mail folder directory.")
|
|||
(defvar mh-arrow-marker nil
|
||||
"Marker for arrow display in fringe.")
|
||||
|
||||
(defvar mh-blacklist nil
|
||||
(defvar mh-blocklist nil
|
||||
"List of messages to use to train the junk filter.
|
||||
This variable can be used by
|
||||
`mh-before-commands-processed-hook'.")
|
||||
|
|
@ -295,7 +295,7 @@ Elements have the form (SEQUENCE . MESSAGES).")
|
|||
"Stack of operations that change the folder view.
|
||||
These operations include narrowing or threading.")
|
||||
|
||||
(defvar mh-whitelist nil
|
||||
(defvar mh-allowlist nil
|
||||
"List of messages to use to train the junk filter.
|
||||
This variable can be used by
|
||||
`mh-before-commands-processed-hook'.")
|
||||
|
|
@ -1687,13 +1687,13 @@ fashion."
|
|||
|
||||
;; Available spam filter interfaces
|
||||
(defvar mh-junk-function-alist
|
||||
'((spamassassin mh-spamassassin-blacklist mh-spamassassin-whitelist)
|
||||
(bogofilter mh-bogofilter-blacklist mh-bogofilter-whitelist)
|
||||
(spamprobe mh-spamprobe-blacklist mh-spamprobe-whitelist))
|
||||
'((spamassassin mh-spamassassin-blocklist mh-spamassassin-allowlist)
|
||||
(bogofilter mh-bogofilter-blocklist mh-bogofilter-allowlist)
|
||||
(spamprobe mh-spamprobe-blocklist mh-spamprobe-allowlist))
|
||||
"Available choices of spam programs to use.
|
||||
|
||||
This is an alist. For each element there are functions that
|
||||
blacklist a message as spam and whitelist a message incorrectly
|
||||
blocklist a message as spam and allowlist a message incorrectly
|
||||
classified as spam.")
|
||||
|
||||
(defun mh-junk-choose (symbol value)
|
||||
|
|
@ -2236,11 +2236,11 @@ commands."
|
|||
:group 'mh-sequences
|
||||
:package-version '(MH-E . "7.0"))
|
||||
|
||||
(defcustom-mh mh-whitelist-preserves-sequences-flag t
|
||||
"Non-nil means that sequences are preserved when messages are whitelisted.
|
||||
(defcustom-mh mh-allowlist-preserves-sequences-flag t
|
||||
"Non-nil means that sequences are preserved when messages are allowlisted.
|
||||
|
||||
If a message is in any sequence (except \"Previous-Sequence:\"
|
||||
and \"cur\") when it is whitelisted, then it will still be in
|
||||
and \"cur\") when it is allowlisted, then it will still be in
|
||||
those sequences in the destination folder. If this behavior is
|
||||
not desired, then turn off this option."
|
||||
:type 'boolean
|
||||
|
|
@ -3195,7 +3195,7 @@ annotated messages with `mh-annotate-list'."
|
|||
"Hook run by \\<mh-folder-mode-map>\\[mh-execute-commands] before performing outstanding refile and delete requests.
|
||||
|
||||
Variables that are useful in this hook include `mh-delete-list',
|
||||
`mh-refile-list', `mh-blacklist', and `mh-whitelist' which can be
|
||||
`mh-refile-list', `mh-blocklist', and `mh-allowlist' which can be
|
||||
used to see which changes will be made to the current folder,
|
||||
`mh-current-folder'."
|
||||
:type 'hook
|
||||
|
|
@ -3227,8 +3227,8 @@ before sending, add the `ispell-message' function."
|
|||
:group 'mh-letter
|
||||
:package-version '(MH-E . "6.0"))
|
||||
|
||||
(defcustom-mh mh-blacklist-msg-hook nil
|
||||
"Hook run by \\<mh-letter-mode-map>\\[mh-junk-blacklist] after marking each message for blacklisting."
|
||||
(defcustom-mh mh-blocklist-msg-hook nil
|
||||
"Hook run by \\<mh-letter-mode-map>\\[mh-junk-blocklist] after marking each message for blocklisting."
|
||||
:type 'hook
|
||||
:group 'mh-hooks
|
||||
:group 'mh-show
|
||||
|
|
@ -3400,8 +3400,8 @@ sequence."
|
|||
:group 'mh-sequences
|
||||
:package-version '(MH-E . "6.0"))
|
||||
|
||||
(defcustom-mh mh-whitelist-msg-hook nil
|
||||
"Hook run by \\<mh-letter-mode-map>\\[mh-junk-whitelist] after marking each message for whitelisting."
|
||||
(defcustom-mh mh-allowlist-msg-hook nil
|
||||
"Hook run by \\<mh-letter-mode-map>\\[mh-junk-allowlist] after marking each message for allowlisting."
|
||||
:type 'hook
|
||||
:group 'mh-hooks
|
||||
:group 'mh-show
|
||||
|
|
@ -3627,9 +3627,9 @@ specified colors."
|
|||
:group 'mh-folder
|
||||
:package-version '(MH-E . "8.0"))
|
||||
|
||||
(defface-mh mh-folder-blacklisted
|
||||
(defface-mh mh-folder-blocklisted
|
||||
(mh-face-data 'mh-folder-msg-number '((t (:inherit mh-folder-msg-number))))
|
||||
"Blacklisted message face."
|
||||
"Blocklisted message face."
|
||||
:group 'mh-faces
|
||||
:group 'mh-folder
|
||||
:package-version '(MH-E . "8.4"))
|
||||
|
|
@ -3723,9 +3723,9 @@ format `mh-scan-format-nmh' and the regular expression
|
|||
:group 'mh-folder
|
||||
:package-version '(MH-E . "8.0"))
|
||||
|
||||
(defface-mh mh-folder-whitelisted
|
||||
(defface-mh mh-folder-allowlisted
|
||||
(mh-face-data 'mh-folder-refiled '((t (:inherit mh-folder-refiled))))
|
||||
"Whitelisted message face."
|
||||
"Allowlisted message face."
|
||||
:group 'mh-faces
|
||||
:group 'mh-folder
|
||||
:package-version '(MH-E . "8.4"))
|
||||
|
|
|
|||
|
|
@ -278,7 +278,8 @@ annotation.")
|
|||
|
||||
(gnus-define-keys (mh-junk-map "J" mh-folder-mode-map)
|
||||
"?" mh-prefix-help
|
||||
"b" mh-junk-blacklist
|
||||
"a" mh-junk-allowlist
|
||||
"b" mh-junk-blocklist
|
||||
"w" mh-junk-whitelist)
|
||||
|
||||
(gnus-define-keys (mh-ps-print-map "P" mh-folder-mode-map)
|
||||
|
|
@ -386,7 +387,7 @@ annotation.")
|
|||
(?K "[v]iew, [i]nline, with [e]xternal viewer; \n"
|
||||
"[o]utput/save MIME part; save [a]ll parts; \n"
|
||||
"[t]oggle buttons; [TAB] next; [SHIFT-TAB] previous")
|
||||
(?J "[b]lacklist, [w]hitelist message"))
|
||||
(?J "[b]locklist, [a]llowlist message"))
|
||||
"Key binding cheat sheet.
|
||||
See `mh-set-help'.")
|
||||
|
||||
|
|
@ -405,12 +406,12 @@ See `mh-set-help'.")
|
|||
;; Marked for deletion
|
||||
(list (concat mh-scan-deleted-msg-regexp ".*")
|
||||
'(0 'mh-folder-deleted))
|
||||
;; Marked for blacklisting
|
||||
(list (concat mh-scan-blacklisted-msg-regexp ".*")
|
||||
'(0 'mh-folder-blacklisted))
|
||||
;; Marked for whitelisting
|
||||
(list (concat mh-scan-whitelisted-msg-regexp ".*")
|
||||
'(0 'mh-folder-whitelisted))
|
||||
;; Marked for blocklisting
|
||||
(list (concat mh-scan-blocklisted-msg-regexp ".*")
|
||||
'(0 'mh-folder-blocklisted))
|
||||
;; Marked for allowlisting
|
||||
(list (concat mh-scan-allowlisted-msg-regexp ".*")
|
||||
'(0 'mh-folder-allowlisted))
|
||||
;; After subject
|
||||
(list mh-scan-body-regexp
|
||||
'(1 'mh-folder-body nil t))
|
||||
|
|
@ -616,8 +617,8 @@ perform the operation on all messages in that region.
|
|||
'mh-showing-mode nil ; Show message also?
|
||||
'mh-refile-list nil ; List of folder names in mh-seq-list
|
||||
'mh-delete-list nil ; List of msgs nums to delete
|
||||
'mh-blacklist nil ; List of messages to process as spam
|
||||
'mh-whitelist nil ; List of messages to process as ham
|
||||
'mh-blocklist nil ; List of messages to process as spam
|
||||
'mh-allowlist nil ; List of messages to process as ham
|
||||
'mh-seq-list nil ; Alist of (seq . msgs) nums
|
||||
'mh-seen-list nil ; List of displayed messages
|
||||
'mh-next-direction 'forward ; Direction to move to next message
|
||||
|
|
@ -714,8 +715,8 @@ RANGE is read in interactive use."
|
|||
(defun mh-execute-commands ()
|
||||
"Perform outstanding operations\\<mh-folder-mode-map>.
|
||||
|
||||
If you've marked messages to be refiled, deleted, blacklisted, or
|
||||
whitelisted and you want to go ahead and perform these operations
|
||||
If you've marked messages to be refiled, deleted, blocklisted, or
|
||||
allowlisted and you want to go ahead and perform these operations
|
||||
on these messages, use this command. Many MH-E commands that may
|
||||
affect the numbering of the messages (such as
|
||||
\\[mh-rescan-folder] or \\[mh-pack-folder]) will ask if you want
|
||||
|
|
@ -1188,16 +1189,16 @@ RANGE is read in interactive use."
|
|||
(beginning-of-line)
|
||||
(while (not (or (looking-at mh-scan-refiled-msg-regexp)
|
||||
(looking-at mh-scan-deleted-msg-regexp)
|
||||
(looking-at mh-scan-blacklisted-msg-regexp)
|
||||
(looking-at mh-scan-whitelisted-msg-regexp)
|
||||
(looking-at mh-scan-blocklisted-msg-regexp)
|
||||
(looking-at mh-scan-allowlisted-msg-regexp)
|
||||
(and (eq mh-next-direction 'forward) (bobp))
|
||||
(and (eq mh-next-direction 'backward)
|
||||
(save-excursion (forward-line) (eobp)))))
|
||||
(forward-line (if (eq mh-next-direction 'forward) -1 1)))
|
||||
(if (or (looking-at mh-scan-refiled-msg-regexp)
|
||||
(looking-at mh-scan-deleted-msg-regexp)
|
||||
(looking-at mh-scan-blacklisted-msg-regexp)
|
||||
(looking-at mh-scan-whitelisted-msg-regexp))
|
||||
(looking-at mh-scan-blocklisted-msg-regexp)
|
||||
(looking-at mh-scan-allowlisted-msg-regexp))
|
||||
(progn
|
||||
(mh-undo-msg (mh-get-msg-num t))
|
||||
(mh-maybe-show))
|
||||
|
|
@ -1529,7 +1530,7 @@ is updated."
|
|||
(save-excursion
|
||||
(when (eq major-mode 'mh-show-mode)
|
||||
(set-buffer mh-show-folder-buffer))
|
||||
(or mh-delete-list mh-refile-list mh-blacklist mh-whitelist)))
|
||||
(or mh-delete-list mh-refile-list mh-blocklist mh-allowlist)))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-set-folder-modified-p (flag)
|
||||
|
|
@ -1555,12 +1556,12 @@ after the commands are processed."
|
|||
(folders-changed (list mh-current-folder))
|
||||
(seq-map (and
|
||||
(or (and mh-refile-list mh-refile-preserves-sequences-flag)
|
||||
(and mh-whitelist
|
||||
mh-whitelist-preserves-sequences-flag))
|
||||
(and mh-allowlist
|
||||
mh-allowlist-preserves-sequences-flag))
|
||||
(mh-create-sequence-map mh-seq-list)))
|
||||
(dest-map (and mh-refile-list mh-refile-preserves-sequences-flag
|
||||
(make-hash-table)))
|
||||
(white-map (and mh-whitelist mh-whitelist-preserves-sequences-flag
|
||||
(allow-map (and mh-allowlist mh-allowlist-preserves-sequences-flag
|
||||
(make-hash-table))))
|
||||
;; Remove invalid scan lines if we are in an index folder and then remove
|
||||
;; the real messages
|
||||
|
|
@ -1609,11 +1610,11 @@ after the commands are processed."
|
|||
(mh-delete-scan-msgs mh-delete-list)
|
||||
(setq mh-delete-list nil)))
|
||||
|
||||
;; Blacklist messages.
|
||||
(when mh-blacklist
|
||||
(let ((msg-list (mh-coalesce-msg-list mh-blacklist))
|
||||
(dest (mh-junk-blacklist-disposition)))
|
||||
(mh-junk-process-blacklist mh-blacklist)
|
||||
;; Blocklist messages.
|
||||
(when mh-blocklist
|
||||
(let ((msg-list (mh-coalesce-msg-list mh-blocklist))
|
||||
(dest (mh-junk-blocklist-disposition)))
|
||||
(mh-junk-process-blocklist mh-blocklist)
|
||||
;; TODO I wonder why mh-exec-cmd is used instead of the following:
|
||||
;; (mh-refile-a-msg nil (intern dest))
|
||||
;; (mh-delete-a-msg nil)))
|
||||
|
|
@ -1622,35 +1623,35 @@ after the commands are processed."
|
|||
(apply #'mh-exec-cmd "refile" "-src" folder dest msg-list)
|
||||
(push dest folders-changed))
|
||||
(setq redraw-needed-flag t)
|
||||
(mh-delete-scan-msgs mh-blacklist)
|
||||
(setq mh-blacklist nil)))
|
||||
(mh-delete-scan-msgs mh-blocklist)
|
||||
(setq mh-blocklist nil)))
|
||||
|
||||
;; Whitelist messages.
|
||||
(when mh-whitelist
|
||||
(let ((msg-list (mh-coalesce-msg-list mh-whitelist))
|
||||
;; Allowlist messages.
|
||||
(when mh-allowlist
|
||||
(let ((msg-list (mh-coalesce-msg-list mh-allowlist))
|
||||
(last (car (mh-translate-range mh-inbox "last"))))
|
||||
(mh-junk-process-whitelist mh-whitelist)
|
||||
(mh-junk-process-allowlist mh-allowlist)
|
||||
(apply #'mh-exec-cmd "refile" "-src" folder mh-inbox msg-list)
|
||||
(push mh-inbox folders-changed)
|
||||
(setq redraw-needed-flag t)
|
||||
(mh-delete-scan-msgs mh-whitelist)
|
||||
(when mh-whitelist-preserves-sequences-flag
|
||||
(clrhash white-map)
|
||||
(mh-delete-scan-msgs mh-allowlist)
|
||||
(when mh-allowlist-preserves-sequences-flag
|
||||
(clrhash allow-map)
|
||||
(cl-loop for i from (1+ (or last 0))
|
||||
for msg in (sort (copy-sequence mh-whitelist) #'<)
|
||||
for msg in (sort (copy-sequence mh-allowlist) #'<)
|
||||
do (cl-loop for seq-name in (gethash msg seq-map)
|
||||
do (push i (gethash seq-name white-map))))
|
||||
do (push i (gethash seq-name allow-map))))
|
||||
(maphash
|
||||
#'(lambda (seq msgs)
|
||||
;; Can't be run in background, since the current
|
||||
;; folder is changed by mark this could lead to a
|
||||
;; race condition with the next refile/whitelist.
|
||||
;; race condition with the next refile/allowlist.
|
||||
(apply #'mh-exec-cmd "mark"
|
||||
"-sequence" (symbol-name seq) mh-inbox
|
||||
"-add" (mapcar #'(lambda(x) (format "%s" x))
|
||||
(mh-coalesce-msg-list msgs))))
|
||||
white-map))
|
||||
(setq mh-whitelist nil)))
|
||||
allow-map))
|
||||
(setq mh-allowlist nil)))
|
||||
|
||||
;; Don't need to remove sequences since delete and refile do so.
|
||||
;; Mark cur message
|
||||
|
|
@ -1961,10 +1962,10 @@ once when he kept statistics on his mail usage."
|
|||
(setq message (mh-get-msg-num t)))
|
||||
(if (looking-at mh-scan-refiled-msg-regexp)
|
||||
(error "Message %d is refiled; undo refile before deleting" message))
|
||||
(if (looking-at mh-scan-blacklisted-msg-regexp)
|
||||
(error "Message %d is blacklisted; undo before deleting" message))
|
||||
(if (looking-at mh-scan-whitelisted-msg-regexp)
|
||||
(error "Message %d is whitelisted; undo before deleting" message))
|
||||
(if (looking-at mh-scan-blocklisted-msg-regexp)
|
||||
(error "Message %d is blocklisted; undo before deleting" message))
|
||||
(if (looking-at mh-scan-allowlisted-msg-regexp)
|
||||
(error "Message %d is allowlisted; undo before deleting" message))
|
||||
(if (looking-at mh-scan-deleted-msg-regexp)
|
||||
nil
|
||||
(mh-set-folder-modified-p t)
|
||||
|
|
@ -1986,10 +1987,10 @@ be refiled."
|
|||
(setq message (mh-get-msg-num t)))
|
||||
(cond ((looking-at mh-scan-deleted-msg-regexp)
|
||||
(error "Message %d is deleted; undo delete before moving" message))
|
||||
((looking-at mh-scan-blacklisted-msg-regexp)
|
||||
(error "Message %d is blacklisted; undo before moving" message))
|
||||
((looking-at mh-scan-whitelisted-msg-regexp)
|
||||
(error "Message %d is whitelisted; undo before moving" message))
|
||||
((looking-at mh-scan-blocklisted-msg-regexp)
|
||||
(error "Message %d is blocklisted; undo before moving" message))
|
||||
((looking-at mh-scan-allowlisted-msg-regexp)
|
||||
(error "Message %d is allowlisted; undo before moving" message))
|
||||
((looking-at mh-scan-refiled-msg-regexp)
|
||||
(if (y-or-n-p
|
||||
(format "Message %d already refiled; copy to %s as well? "
|
||||
|
|
@ -2008,7 +2009,7 @@ be refiled."
|
|||
(run-hooks 'mh-refile-msg-hook)))))
|
||||
|
||||
(defun mh-undo-msg (msg)
|
||||
"Undo the deletion, refile, black- or whitelisting of one MSG.
|
||||
"Undo the deletion, refile, block- or allowlisting of one MSG.
|
||||
If MSG is nil then act on the message at point"
|
||||
(save-excursion
|
||||
(if (numberp msg)
|
||||
|
|
@ -2017,10 +2018,10 @@ If MSG is nil then act on the message at point"
|
|||
(setq msg (mh-get-msg-num t)))
|
||||
(cond ((memq msg mh-delete-list)
|
||||
(setq mh-delete-list (delq msg mh-delete-list)))
|
||||
((memq msg mh-blacklist)
|
||||
(setq mh-blacklist (delq msg mh-blacklist)))
|
||||
((memq msg mh-whitelist)
|
||||
(setq mh-whitelist (delq msg mh-whitelist)))
|
||||
((memq msg mh-blocklist)
|
||||
(setq mh-blocklist (delq msg mh-blocklist)))
|
||||
((memq msg mh-allowlist)
|
||||
(setq mh-allowlist (delq msg mh-allowlist)))
|
||||
(t
|
||||
(dolist (folder-msg-list mh-refile-list)
|
||||
(setf (cdr folder-msg-list) (remove msg (cdr folder-msg-list))))
|
||||
|
|
|
|||
|
|
@ -354,8 +354,8 @@ Arguments are IGNORED (for `revert-buffer')."
|
|||
(yes-or-no-p "Undo all commands in folder? "))
|
||||
(setq mh-delete-list nil
|
||||
mh-refile-list nil
|
||||
mh-blacklist nil
|
||||
mh-whitelist nil
|
||||
mh-blocklist nil
|
||||
mh-allowlist nil
|
||||
mh-seq-list nil
|
||||
mh-next-direction 'forward)
|
||||
(with-mh-folder-updating (nil)
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@
|
|||
(require 'mh-scan)
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-junk-blacklist (range)
|
||||
"Blacklist RANGE as spam.
|
||||
(defun mh-junk-blocklist (range)
|
||||
"Blocklist RANGE as spam.
|
||||
|
||||
This command trains the spam program in use (see the option
|
||||
`mh-junk-program') with the content of RANGE and then handles the
|
||||
|
|
@ -45,44 +45,44 @@ read in interactive use.
|
|||
For more information about using your particular spam fighting
|
||||
program, see:
|
||||
|
||||
- `mh-spamassassin-blacklist'
|
||||
- `mh-bogofilter-blacklist'
|
||||
- `mh-spamprobe-blacklist'"
|
||||
(interactive (list (mh-interactive-range "Blacklist")))
|
||||
(mh-iterate-on-range () range (mh-blacklist-a-msg nil))
|
||||
(if (looking-at mh-scan-blacklisted-msg-regexp)
|
||||
- `mh-spamassassin-blocklist'
|
||||
- `mh-bogofilter-blocklist'
|
||||
- `mh-spamprobe-blocklist'"
|
||||
(interactive (list (mh-interactive-range "Blocklist")))
|
||||
(mh-iterate-on-range () range (mh-junk-blocklist-a-msg nil))
|
||||
(if (looking-at mh-scan-blocklisted-msg-regexp)
|
||||
(mh-next-msg)))
|
||||
|
||||
(defun mh-blacklist-a-msg (message)
|
||||
"Blacklist MESSAGE.
|
||||
If MESSAGE is nil then the message at point is blacklisted.
|
||||
The hook `mh-blacklist-msg-hook' is called after you mark a message
|
||||
for blacklisting."
|
||||
(defun mh-junk-blocklist-a-msg (message)
|
||||
"Blocklist MESSAGE.
|
||||
If MESSAGE is nil then the message at point is blocklisted.
|
||||
The hook `mh-blocklist-msg-hook' is called after you mark a message
|
||||
for blocklisting."
|
||||
(save-excursion
|
||||
(if (numberp message)
|
||||
(mh-goto-msg message nil t)
|
||||
(beginning-of-line)
|
||||
(setq message (mh-get-msg-num t)))
|
||||
(cond ((looking-at mh-scan-refiled-msg-regexp)
|
||||
(error "Message %d is refiled; undo refile before blacklisting"
|
||||
(error "Message %d is refiled; undo refile before blocklisting"
|
||||
message))
|
||||
((looking-at mh-scan-deleted-msg-regexp)
|
||||
(error "Message %d is deleted; undo delete before blacklisting"
|
||||
(error "Message %d is deleted; undo delete before blocklisting"
|
||||
message))
|
||||
((looking-at mh-scan-whitelisted-msg-regexp)
|
||||
(error "Message %d is whitelisted; undo before blacklisting"
|
||||
((looking-at mh-scan-allowlisted-msg-regexp)
|
||||
(error "Message %d is allowlisted; undo before blocklisting"
|
||||
message))
|
||||
((looking-at mh-scan-blacklisted-msg-regexp) nil)
|
||||
((looking-at mh-scan-blocklisted-msg-regexp) nil)
|
||||
(t
|
||||
(mh-set-folder-modified-p t)
|
||||
(setq mh-blacklist (cons message mh-blacklist))
|
||||
(setq mh-blocklist (cons message mh-blocklist))
|
||||
(if (not (memq message mh-seen-list))
|
||||
(setq mh-seen-list (cons message mh-seen-list)))
|
||||
(mh-notate nil mh-note-blacklisted mh-cmd-note)
|
||||
(run-hooks 'mh-blacklist-msg-hook)))))
|
||||
(mh-notate nil mh-note-blocklisted mh-cmd-note)
|
||||
(run-hooks 'mh-blocklist-msg-hook)))))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-junk-blacklist-disposition ()
|
||||
(defun mh-junk-blocklist-disposition ()
|
||||
"Determines the fate of the selected spam."
|
||||
(cond ((null mh-junk-disposition) nil)
|
||||
((equal mh-junk-disposition "") "+")
|
||||
|
|
@ -94,22 +94,29 @@ for blacklisting."
|
|||
(t (concat "+" mh-junk-disposition))))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-junk-process-blacklist (range)
|
||||
"Blacklist RANGE as spam.
|
||||
(defun mh-junk-process-blocklist (range)
|
||||
"Blocklist RANGE as spam.
|
||||
This command trains the spam program in use (see the option
|
||||
`mh-junk-program') with the content of RANGE and then handles the
|
||||
message(s) as specified by the option `mh-junk-disposition'."
|
||||
(let ((blacklist-func (nth 1 (assoc mh-junk-choice mh-junk-function-alist))))
|
||||
(unless blacklist-func
|
||||
(let ((blocklist-func (nth 1 (assoc mh-junk-choice mh-junk-function-alist))))
|
||||
(unless blocklist-func
|
||||
(error "Customize `mh-junk-program' appropriately"))
|
||||
(mh-iterate-on-range msg range
|
||||
(message "Blacklisting message %d..." msg)
|
||||
(funcall (symbol-function blacklist-func) msg)
|
||||
(message "Blacklisting message %d...done" msg))))
|
||||
(message "Blocklisting message %d..." msg)
|
||||
(funcall (symbol-function blocklist-func) msg)
|
||||
(message "Blocklisting message %d...done" msg))))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-junk-whitelist (range)
|
||||
"Whitelist RANGE as ham.
|
||||
"Old name for `mh-junk-allowlist'; use \\[mh-junk-allowlist] instead."
|
||||
(declare (obsolete mh-junk-allowlist "28.1"))
|
||||
(interactive (list (mh-interactive-range "Allowlist")))
|
||||
(mh-junk-allowlist range))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-junk-allowlist (range)
|
||||
"Allowlist RANGE as ham.
|
||||
|
||||
This command reclassifies the RANGE as ham if it were incorrectly
|
||||
classified as spam (see the option `mh-junk-program'). It then
|
||||
|
|
@ -117,50 +124,50 @@ refiles the message into the \"+inbox\" folder.
|
|||
|
||||
Check the documentation of `mh-interactive-range' to see how
|
||||
RANGE is read in interactive use."
|
||||
(interactive (list (mh-interactive-range "Whitelist")))
|
||||
(mh-iterate-on-range () range (mh-junk-whitelist-a-msg nil))
|
||||
(if (looking-at mh-scan-whitelisted-msg-regexp)
|
||||
(interactive (list (mh-interactive-range "Allowlist")))
|
||||
(mh-iterate-on-range () range (mh-junk-allowlist-a-msg nil))
|
||||
(if (looking-at mh-scan-allowlisted-msg-regexp)
|
||||
(mh-next-msg)))
|
||||
|
||||
(defun mh-junk-whitelist-a-msg (message)
|
||||
"Whitelist MESSAGE.
|
||||
If MESSAGE is nil then the message at point is whitelisted. The
|
||||
hook `mh-whitelist-msg-hook' is called after you mark a message
|
||||
for whitelisting."
|
||||
(defun mh-junk-allowlist-a-msg (message)
|
||||
"Allowlist MESSAGE.
|
||||
If MESSAGE is nil then the message at point is allowlisted. The
|
||||
hook `mh-allowlist-msg-hook' is called after you mark a message
|
||||
for allowlisting."
|
||||
(save-excursion
|
||||
(if (numberp message)
|
||||
(mh-goto-msg message nil t)
|
||||
(beginning-of-line)
|
||||
(setq message (mh-get-msg-num t)))
|
||||
(cond ((looking-at mh-scan-refiled-msg-regexp)
|
||||
(error "Message %d is refiled; undo refile before whitelisting"
|
||||
(error "Message %d is refiled; undo refile before allowlisting"
|
||||
message))
|
||||
((looking-at mh-scan-deleted-msg-regexp)
|
||||
(error "Message %d is deleted; undo delete before whitelisting"
|
||||
(error "Message %d is deleted; undo delete before allowlisting"
|
||||
message))
|
||||
((looking-at mh-scan-blacklisted-msg-regexp)
|
||||
(error "Message %d is blacklisted; undo before whitelisting"
|
||||
((looking-at mh-scan-blocklisted-msg-regexp)
|
||||
(error "Message %d is blocklisted; undo before allowlisting"
|
||||
message))
|
||||
((looking-at mh-scan-whitelisted-msg-regexp) nil)
|
||||
((looking-at mh-scan-allowlisted-msg-regexp) nil)
|
||||
(t
|
||||
(mh-set-folder-modified-p t)
|
||||
(setq mh-whitelist (cons message mh-whitelist))
|
||||
(mh-notate nil mh-note-whitelisted mh-cmd-note)
|
||||
(run-hooks 'mh-whitelist-msg-hook)))))
|
||||
(setq mh-allowlist (cons message mh-allowlist))
|
||||
(mh-notate nil mh-note-allowlisted mh-cmd-note)
|
||||
(run-hooks 'mh-allowlist-msg-hook)))))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-junk-process-whitelist (range)
|
||||
"Whitelist RANGE as ham.
|
||||
(defun mh-junk-process-allowlist (range)
|
||||
"Allowlist RANGE as ham.
|
||||
|
||||
This command reclassifies the RANGE as ham if it were incorrectly
|
||||
classified as spam (see the option `mh-junk-program')."
|
||||
(let ((whitelist-func (nth 2 (assoc mh-junk-choice mh-junk-function-alist))))
|
||||
(unless whitelist-func
|
||||
(let ((allowlist-func (nth 2 (assoc mh-junk-choice mh-junk-function-alist))))
|
||||
(unless allowlist-func
|
||||
(error "Customize `mh-junk-program' appropriately"))
|
||||
(mh-iterate-on-range msg range
|
||||
(message "Whitelisting message %d..." msg)
|
||||
(funcall (symbol-function whitelist-func) msg)
|
||||
(message "Whitelisting message %d...done" msg))))
|
||||
(message "Allowlisting message %d..." msg)
|
||||
(funcall (symbol-function allowlist-func) msg)
|
||||
(message "Allowlisting message %d...done" msg))))
|
||||
|
||||
|
||||
|
||||
|
|
@ -170,8 +177,8 @@ classified as spam (see the option `mh-junk-program')."
|
|||
(defvar mh-sa-learn-executable (executable-find "sa-learn"))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-spamassassin-blacklist (msg)
|
||||
"Blacklist MSG with SpamAssassin.
|
||||
(defun mh-spamassassin-blocklist (msg)
|
||||
"Blocklist MSG with SpamAssassin.
|
||||
|
||||
SpamAssassin is one of the more popular spam filtering programs.
|
||||
Get it from your local distribution or from the SpamAssassin web
|
||||
|
|
@ -219,22 +226,22 @@ rules-based filters is a plethora of false positives so it is
|
|||
worthwhile to check.
|
||||
|
||||
If SpamAssassin classifies a message incorrectly, or is unsure,
|
||||
you can use the MH-E commands \\[mh-junk-blacklist] and
|
||||
\\[mh-junk-whitelist].
|
||||
you can use the MH-E commands \\[mh-junk-blocklist] and
|
||||
\\[mh-junk-allowlist].
|
||||
|
||||
The command \\[mh-junk-blacklist] adds a \"blacklist_from\" entry
|
||||
The command \\[mh-junk-blocklist] adds a \"blacklist_from\" entry
|
||||
to \"~/spamassassin/user_prefs\", deletes the message, and sends
|
||||
the message to the Razor, so that others might not see this spam.
|
||||
If the \"sa-learn\" command is available, the message is also
|
||||
recategorized as spam.
|
||||
|
||||
The command \\[mh-junk-whitelist] adds a \"whitelist_from\" rule
|
||||
The command \\[mh-junk-allowlist] adds a \"whitelist_from\" rule
|
||||
to the \"~/.spamassassin/user_prefs\" file. If the \"sa-learn\"
|
||||
command is available, the message is also recategorized as ham.
|
||||
|
||||
Over time, you'll observe that the same host or domain occurs
|
||||
repeatedly in the \"blacklist_from\" entries, so you might think
|
||||
that you could avoid future spam by blacklisting all mail from a
|
||||
that you could avoid future spam by blocklisting all mail from a
|
||||
particular domain. The utility function
|
||||
`mh-spamassassin-identify-spammers' helps you do precisely that.
|
||||
This function displays a frequency count of the hosts and domains
|
||||
|
|
@ -262,7 +269,7 @@ information can be used so that you can replace multiple
|
|||
(mh-truncate-log-buffer)
|
||||
(call-process mh-sa-learn-executable msg-file mh-junk-background nil
|
||||
"--spam" "--local" "--no-sync")))
|
||||
(message "Blacklisting sender of message %d..." msg)
|
||||
(message "Blocklisting sender of message %d..." msg)
|
||||
(with-current-buffer (get-buffer-create mh-temp-buffer)
|
||||
(erase-buffer)
|
||||
(call-process (expand-file-name mh-scan-prog mh-progs)
|
||||
|
|
@ -274,18 +281,18 @@ information can be used so that you can replace multiple
|
|||
(progn
|
||||
(setq sender (match-string 0))
|
||||
(mh-spamassassin-add-rule "blacklist_from" sender)
|
||||
(message "Blacklisting sender of message %d...done" msg))
|
||||
(message "Blacklisting sender of message %d...not done (from my address)" msg)))))
|
||||
(message "Blocklisting sender of message %d...done" msg))
|
||||
(message "Blocklisting sender of message %d...not done (from my address)" msg)))))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-spamassassin-whitelist (msg)
|
||||
"Whitelist MSG with SpamAssassin.
|
||||
(defun mh-spamassassin-allowlist (msg)
|
||||
"Allowlist MSG with SpamAssassin.
|
||||
|
||||
The \\[mh-junk-whitelist] command adds a \"whitelist_from\" rule to
|
||||
The \\[mh-junk-allowlist] command adds a \"whitelist_from\" rule to
|
||||
the \"~/.spamassassin/user_prefs\" file. If the \"sa-learn\" command
|
||||
is available, the message is also recategorized as ham.
|
||||
|
||||
See `mh-spamassassin-blacklist' for more information."
|
||||
See `mh-spamassassin-blocklist' for more information."
|
||||
(unless mh-spamassassin-executable
|
||||
(error "Unable to find the spamassassin executable"))
|
||||
(let ((msg-file (mh-msg-filename msg mh-current-folder))
|
||||
|
|
@ -307,14 +314,14 @@ See `mh-spamassassin-blacklist' for more information."
|
|||
(with-current-buffer mh-log-buffer
|
||||
(call-process mh-sa-learn-executable msg-file mh-junk-background nil
|
||||
"--ham" "--local" "--no-sync")))
|
||||
(message "Whitelisting sender of message %d..." msg)
|
||||
(message "Allowlisting sender of message %d..." msg)
|
||||
(setq from
|
||||
(car (mh-funcall-if-exists
|
||||
ietf-drums-parse-address (mh-get-header-field "From:"))))
|
||||
(kill-buffer nil)
|
||||
(unless (or (null from) (equal from ""))
|
||||
(mh-spamassassin-add-rule "whitelist_from" from))
|
||||
(message "Whitelisting sender of message %d...done" msg))))
|
||||
(message "Allowlisting sender of message %d...done" msg))))
|
||||
|
||||
(defun mh-spamassassin-add-rule (rule body)
|
||||
"Add a new rule to \"~/.spamassassin/user_prefs\".
|
||||
|
|
@ -384,8 +391,8 @@ information can be used so that you can replace multiple
|
|||
(defvar mh-bogofilter-executable (executable-find "bogofilter"))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-bogofilter-blacklist (msg)
|
||||
"Blacklist MSG with bogofilter.
|
||||
(defun mh-bogofilter-blocklist (msg)
|
||||
"Blocklist MSG with bogofilter.
|
||||
|
||||
Bogofilter is a Bayesian spam filtering program. Get it from your
|
||||
local distribution or from the bogofilter web site at URL
|
||||
|
|
@ -422,7 +429,7 @@ To use bogofilter, add the following recipes to \".procmailrc\":
|
|||
spam/unsure/.
|
||||
|
||||
If bogofilter classifies a message incorrectly, or is unsure, you can
|
||||
use the MH-E commands \\[mh-junk-blacklist] and \\[mh-junk-whitelist]
|
||||
use the MH-E commands \\[mh-junk-blocklist] and \\[mh-junk-allowlist]
|
||||
to update bogofilter's training.
|
||||
|
||||
The \"Bogofilter FAQ\" suggests that you run the following
|
||||
|
|
@ -444,10 +451,10 @@ The \"Bogofilter tuning HOWTO\" describes how you can fine-tune Bogofilter."
|
|||
nil "-s"))))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-bogofilter-whitelist (msg)
|
||||
"Whitelist MSG with bogofilter.
|
||||
(defun mh-bogofilter-allowlist (msg)
|
||||
"Allowlist MSG with bogofilter.
|
||||
|
||||
See `mh-bogofilter-blacklist' for more information."
|
||||
See `mh-bogofilter-blocklist' for more information."
|
||||
(unless mh-bogofilter-executable
|
||||
(error "Unable to find the bogofilter executable"))
|
||||
(let ((msg-file (mh-msg-filename msg mh-current-folder)))
|
||||
|
|
@ -465,8 +472,8 @@ See `mh-bogofilter-blacklist' for more information."
|
|||
(defvar mh-spamprobe-executable (executable-find "spamprobe"))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-spamprobe-blacklist (msg)
|
||||
"Blacklist MSG with SpamProbe.
|
||||
(defun mh-spamprobe-blocklist (msg)
|
||||
"Blocklist MSG with SpamProbe.
|
||||
|
||||
SpamProbe is a Bayesian spam filtering program. Get it from your
|
||||
local distribution or from the SpamProbe web site at URL
|
||||
|
|
@ -489,7 +496,7 @@ To use SpamProbe, add the following recipes to \".procmailrc\":
|
|||
spam/.
|
||||
|
||||
If SpamProbe classifies a message incorrectly, you can use the
|
||||
MH-E commands \\[mh-junk-blacklist] and \\[mh-junk-whitelist] to
|
||||
MH-E commands \\[mh-junk-blocklist] and \\[mh-junk-allowlist] to
|
||||
update SpamProbe's training."
|
||||
(unless mh-spamprobe-executable
|
||||
(error "Unable to find the spamprobe executable"))
|
||||
|
|
@ -502,10 +509,10 @@ update SpamProbe's training."
|
|||
nil "spam"))))
|
||||
|
||||
;;;###mh-autoload
|
||||
(defun mh-spamprobe-whitelist (msg)
|
||||
"Whitelist MSG with SpamProbe.
|
||||
(defun mh-spamprobe-allowlist (msg)
|
||||
"Allowlist MSG with SpamProbe.
|
||||
|
||||
See `mh-spamprobe-blacklist' for more information."
|
||||
See `mh-spamprobe-blocklist' for more information."
|
||||
(unless mh-spamprobe-executable
|
||||
(error "Unable to find the spamprobe executable"))
|
||||
(let ((msg-file (mh-msg-filename msg mh-current-folder)))
|
||||
|
|
|
|||
|
|
@ -113,8 +113,8 @@ expression which matches the body text as in the default of
|
|||
not correct, the body fragment will not be highlighted with the
|
||||
face `mh-folder-body'.")
|
||||
|
||||
(defvar mh-scan-blacklisted-msg-regexp "^\\( *[0-9]+\\)B"
|
||||
"This regular expression matches blacklisted (spam) messages.
|
||||
(defvar mh-scan-blocklisted-msg-regexp "^\\( *[0-9]+\\)B"
|
||||
"This regular expression matches blocklisted (spam) messages.
|
||||
|
||||
It must match from the beginning of the line. Note that the
|
||||
default setting of `mh-folder-font-lock-keywords' expects this
|
||||
|
|
@ -125,9 +125,9 @@ matches the message number as in the default of
|
|||
|
||||
This expression includes the leading space within parenthesis
|
||||
since it looks better to highlight it as well. The highlighting
|
||||
is done with the face `mh-folder-blacklisted'. This regular
|
||||
is done with the face `mh-folder-blocklisted'. This regular
|
||||
expression should be correct as it is needed by non-fontification
|
||||
functions. See also `mh-note-blacklisted'.")
|
||||
functions. See also `mh-note-blocklisted'.")
|
||||
|
||||
(defvar mh-scan-cur-msg-number-regexp "^\\( *[0-9]+\\+\\).*"
|
||||
"This regular expression matches the current message.
|
||||
|
|
@ -295,21 +295,21 @@ non-fontification functions.")
|
|||
This is used to eliminate error messages that are occasionally
|
||||
produced by \"inc\".")
|
||||
|
||||
(defvar mh-scan-whitelisted-msg-regexp "^\\( *[0-9]+\\)W"
|
||||
"This regular expression matches whitelisted (non-spam) messages.
|
||||
(defvar mh-scan-allowlisted-msg-regexp "^\\( *[0-9]+\\)A"
|
||||
"This regular expression matches allowlisted (non-spam) messages.
|
||||
|
||||
It must match from the beginning of the line. Note that the
|
||||
default setting of `mh-folder-font-lock-keywords' expects this
|
||||
expression to contain at least one parenthesized expression which
|
||||
matches the message number as in the default of
|
||||
|
||||
\"^\\\\( *[0-9]+\\\\)W\".
|
||||
\"^\\\\( *[0-9]+\\\\)A\".
|
||||
|
||||
This expression includes the leading space within parenthesis
|
||||
since it looks better to highlight it as well. The highlighting
|
||||
is done with the face `mh-folder-whitelisted'. This regular
|
||||
is done with the face `mh-folder-allowlisted'. This regular
|
||||
expression should be correct as it is needed by non-fontification
|
||||
functions. See also `mh-note-whitelisted'.")
|
||||
functions. See also `mh-note-allowlisted'.")
|
||||
|
||||
|
||||
|
||||
|
|
@ -333,8 +333,8 @@ This column will have one of the values: \" \", \"^\", \"D\", \"B\", \"W\", \"+\
|
|||
\" \" is the default value,
|
||||
\"^\" is the `mh-note-refiled' character,
|
||||
\"D\" is the `mh-note-deleted' character,
|
||||
\"B\" is the `mh-note-blacklisted' character,
|
||||
\"W\" is the `mh-note-whitelisted' character, and
|
||||
\"B\" is the `mh-note-blocklisted' character,
|
||||
\"A\" is the `mh-note-allowlisted' character, and
|
||||
\"+\" is the `mh-note-cur' character.")
|
||||
|
||||
(defvar mh-scan-destination-width 1
|
||||
|
|
@ -399,9 +399,9 @@ This column will only ever have spaces in it.")
|
|||
|
||||
;; Alphabetical.
|
||||
|
||||
(defvar mh-note-blacklisted ?B
|
||||
"Messages that have been blacklisted are marked by this character.
|
||||
See also `mh-scan-blacklisted-msg-regexp'.")
|
||||
(defvar mh-note-blocklisted ?B
|
||||
"Messages that have been blocklisted are marked by this character.
|
||||
See also `mh-scan-blocklisted-msg-regexp'.")
|
||||
|
||||
(defvar mh-note-cur ?+
|
||||
"The current message (in MH, not in MH-E) is marked by this character.
|
||||
|
|
@ -436,9 +436,9 @@ See also `mh-scan-refiled-msg-regexp'.")
|
|||
Messages in the \"search\" sequence are marked by this character as
|
||||
well.")
|
||||
|
||||
(defvar mh-note-whitelisted ?W
|
||||
"Messages that have been whitelisted are marked by this character.
|
||||
See also `mh-scan-whitelisted-msg-regexp'.")
|
||||
(defvar mh-note-allowlisted ?A
|
||||
"Messages that have been allowlisted are marked by this character.
|
||||
See also `mh-scan-allowlisted-msg-regexp'.")
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1448,7 +1448,7 @@ being the list of messages originally from that folder."
|
|||
(defun mh-index-execute-commands ()
|
||||
"Perform the outstanding operations on the actual messages.
|
||||
The copies in the searched folder are then deleted, refiled,
|
||||
blacklisted and whitelisted to get the desired result. Before
|
||||
blocklisted and allowlisted to get the desired result. Before
|
||||
processing the messages we make sure that the message is
|
||||
identical to the one that the user has marked in the index
|
||||
buffer."
|
||||
|
|
@ -1465,12 +1465,12 @@ buffer."
|
|||
(with-current-buffer folder
|
||||
(let ((old-refile-list mh-refile-list)
|
||||
(old-delete-list mh-delete-list)
|
||||
(old-blacklist mh-blacklist)
|
||||
(old-whitelist mh-whitelist))
|
||||
(old-blocklist mh-blocklist)
|
||||
(old-allowlist mh-allowlist))
|
||||
(setq mh-refile-list nil
|
||||
mh-delete-list msgs
|
||||
mh-blacklist nil
|
||||
mh-whitelist nil)
|
||||
mh-blocklist nil
|
||||
mh-allowlist nil)
|
||||
(unwind-protect (mh-execute-commands)
|
||||
(setq mh-refile-list
|
||||
(mapcar (lambda (x)
|
||||
|
|
@ -1482,11 +1482,11 @@ buffer."
|
|||
mh-delete-list
|
||||
(cl-loop for x in old-delete-list
|
||||
unless (memq x msgs) collect x)
|
||||
mh-blacklist
|
||||
(cl-loop for x in old-blacklist
|
||||
mh-blocklist
|
||||
(cl-loop for x in old-blocklist
|
||||
unless (memq x msgs) collect x)
|
||||
mh-whitelist
|
||||
(cl-loop for x in old-whitelist
|
||||
mh-allowlist
|
||||
(cl-loop for x in old-allowlist
|
||||
unless (memq x msgs) collect x))
|
||||
(mh-set-folder-modified-p (mh-outstanding-commands-p))
|
||||
(when (mh-outstanding-commands-p)
|
||||
|
|
@ -1494,8 +1494,8 @@ buffer."
|
|||
(mh-index-matching-source-msgs (append (cl-loop for x in mh-refile-list
|
||||
append (cdr x))
|
||||
mh-delete-list
|
||||
mh-blacklist
|
||||
mh-whitelist)
|
||||
mh-blocklist
|
||||
mh-allowlist)
|
||||
t))
|
||||
folders)))
|
||||
|
||||
|
|
|
|||
|
|
@ -463,8 +463,10 @@ still visible.\n")
|
|||
(mh-defun-show-buffer mh-show-index-visit-folder mh-index-visit-folder t)
|
||||
(mh-defun-show-buffer mh-show-toggle-tick mh-toggle-tick)
|
||||
(mh-defun-show-buffer mh-show-narrow-to-tick mh-narrow-to-tick)
|
||||
(mh-defun-show-buffer mh-show-junk-blacklist mh-junk-blacklist)
|
||||
(mh-defun-show-buffer mh-show-junk-whitelist mh-junk-whitelist)
|
||||
(mh-defun-show-buffer mh-show-junk-allowlist mh-junk-allowlist)
|
||||
(mh-defun-show-buffer mh-show-junk-whitelist mh-junk-allowlist)
|
||||
(make-obsolete 'mh-show-junk-whitelist 'mh-show-junk-allowlist "28.1")
|
||||
(mh-defun-show-buffer mh-show-junk-blocklist mh-junk-blocklist)
|
||||
(mh-defun-show-buffer mh-show-index-new-messages mh-index-new-messages)
|
||||
(mh-defun-show-buffer mh-show-index-ticked-messages mh-index-ticked-messages)
|
||||
(mh-defun-show-buffer mh-show-index-sequenced-messages
|
||||
|
|
@ -633,7 +635,8 @@ still visible.\n")
|
|||
|
||||
(gnus-define-keys (mh-show-junk-map "J" mh-show-mode-map)
|
||||
"?" mh-prefix-help
|
||||
"b" mh-show-junk-blacklist
|
||||
"a" mh-show-junk-allowlist
|
||||
"b" mh-show-junk-blocklist
|
||||
"w" mh-show-junk-whitelist)
|
||||
|
||||
(gnus-define-keys (mh-show-ps-print-map "P" mh-show-mode-map)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue