diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2019-11-29 12:26:31 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2019-11-29 12:26:31 -0500 |
commit | b1a69505843c593a3a757a614dea16e2a7185579 (patch) | |
tree | 043919f98b2980e39924c5a52858da57f8cbb7bf /lisp/gnus/gnus-agent.el | |
parent | 7fff418edf56244a1fcf54718523aa9b5cb3a854 (diff) | |
download | emacs-b1a69505843c593a3a757a614dea16e2a7185579.tar.gz emacs-b1a69505843c593a3a757a614dea16e2a7185579.tar.bz2 emacs-b1a69505843c593a3a757a614dea16e2a7185579.zip |
* lisp/gnus/gnus.el (gnus-info): Define with `cl-defstruct`
This makes the accessors into (inlined) functions (instead of macros),
which simplifies some uses, and it makes the gnus-info-set-<foo>
macros redundant since we can use `setf` instead. Remove them and
update all users.
(gnus-info-group, gnus-info-rank, gnus-info-read, gnus-info-marks)
(gnus-info-method, gnus-info-params): Auto-defined by defstruct.
(gnus-info-level, gnus-info-score): Define as a function. Add gv-setter.
(gnus-info-set-group, gnus-info-set-rank, gnus-info-set-read): Remove,
use `setf` instead.
(gnus-info-set-marks, gnus-info-set-method, gnus-info-set-params):
Define as a function.
(gnus-info-set-entry): Delete function.
(gnus-info--grow-entry): New function, extracted from it.
(gnus-info--set-level, gnus-info--set-score): New functions, extracted
from the `gnus-info-set-level` and `gnus-info-set-score` which they replace.
(gnus-get-info): Define as a function.
* lisp/gnus/gnus-group.el (gnus-group-edit-group-done):
Use the `extend` arg of `gnus-info-set-method`.
(gnus-group-sort-selected-flat): eta-reduce.
Diffstat (limited to 'lisp/gnus/gnus-agent.el')
-rw-r--r-- | lisp/gnus/gnus-agent.el | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el index 1f252552784..afe1997378d 100644 --- a/lisp/gnus/gnus-agent.el +++ b/lisp/gnus/gnus-agent.el @@ -1212,26 +1212,24 @@ This can be added to `gnus-select-article-hook' or (marks (nth 2 action))) (dolist (mark marks) (cond ((eq mark 'read) - (gnus-info-set-read - info - (funcall (if (eq what 'add) - 'gnus-range-add - 'gnus-remove-from-range) - (gnus-info-read info) - range)) + (setf (gnus-info-read info) + (funcall (if (eq what 'add) + #'gnus-range-add + #'gnus-remove-from-range) + (gnus-info-read info) + range)) (gnus-get-unread-articles-in-group info (gnus-active (gnus-info-group info)))) ((memq mark '(tick)) (let ((info-marks (assoc mark (gnus-info-marks info)))) (unless info-marks - (gnus-info-set-marks - info (cons (setq info-marks (list mark)) - (gnus-info-marks info)))) + (push (setq info-marks (list mark)) + (gnus-info-marks info))) (setcdr info-marks (funcall (if (eq what 'add) - 'gnus-range-add - 'gnus-remove-from-range) + #'gnus-range-add + #'gnus-remove-from-range) (cdr info-marks) range)))))))) @@ -1303,12 +1301,11 @@ downloaded into the agent." ;; file. (let ((read (gnus-info-read info))) - (gnus-info-set-read - info - (gnus-range-add - read - (list (cons (1+ agent-max) - (1- active-min)))))) + (setf (gnus-info-read info) + (gnus-range-add + read + (list (cons (1+ agent-max) + (1- active-min)))))) ;; Lie about the agent's local range for this group to ;; disable the set read each time this server is opened. @@ -2533,13 +2530,14 @@ modified) original contents, they are first saved to their own file." (assq mark (gnus-info-marks (setq info (gnus-get-info group)))))) (when (cdr marked-arts) + ;; FIXME: Use `cl-callf'? (setq marks (delq marked-arts (gnus-info-marks info))) - (gnus-info-set-marks info marks))))) + (setf (gnus-info-marks info) marks))))) (let ((read (gnus-info-read (or info (setq info (gnus-get-info group)))))) - (gnus-info-set-read - info (gnus-add-to-range read unfetched-articles))) + (setf (gnus-info-read info) + (gnus-add-to-range read unfetched-articles))) (gnus-group-update-group group t) (sit-for 0) |