diff options
author | Eric Abrahamsen <eric@ericabrahamsen.net> | 2021-01-16 18:37:57 -0800 |
---|---|---|
committer | Eric Abrahamsen <eric@ericabrahamsen.net> | 2021-01-16 18:37:57 -0800 |
commit | 943011de8e1fe0337a7b4b9a643fd647f00e0a84 (patch) | |
tree | aa8df42d02a91641fefb84e15aa656203849aad4 | |
parent | 84e80376424b7da9731ac3a2d0223833544fb63b (diff) | |
download | emacs-girzel/gnus-headers.tar.gz |
Fixes to gnus-agent-retrieve-headersgirzel/gnus-headers
* lisp/gnus/gnus-agent.el (gnus-agent-retrieve-headers): The
sort->append call was altering fetched-headers in-place. Also, we
should explicitly sort-numeric-fields in this
function. gnus-agent-check-overview-buffer will do this, but treats it
as a failure mode and will make a backup of the overview file.
-rw-r--r-- | lisp/gnus/gnus-agent.el | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el index 97df48b4608..32d0a85d004 100644 --- a/lisp/gnus/gnus-agent.el +++ b/lisp/gnus/gnus-agent.el @@ -3627,7 +3627,7 @@ has been fetched." (when fetched-headers (setq headers (delete-dups - (sort (append headers fetched-headers) + (sort (append headers (copy-sequence fetched-headers)) (lambda (l r) (< (mail-header-number l) (mail-header-number r)))))) @@ -3636,8 +3636,14 @@ has been fetched." (let ((coding-system-for-write gnus-agent-file-coding-system)) (with-current-buffer gnus-agent-overview-buffer + ;; We stick the new headers in at the end, then + ;; re-sort the whole buffer with + ;; `sort-numeric-fields'. If this turns out to be + ;; slow, we could consider a loop to add the headers + ;; in sorted order to begin with. (goto-char (point-max)) (mapc #'nnheader-insert-nov fetched-headers) + (sort-numeric-fields 1 (point-min) (point-max)) (gnus-agent-check-overview-buffer) (write-region (point-min) (point-max) file nil 'silent) (gnus-agent-update-view-total-fetched-for group t) |