diff options
author | Philip Kaludercic <philipk@posteo.net> | 2022-02-14 11:51:06 +0100 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2022-02-14 11:51:48 +0100 |
commit | 35bb4c1c3c64d09d9dea0ed7ba0314893e8f5f3c (patch) | |
tree | 1f1eeddb63fad6267418dea022dedf19148ae0a5 /lisp/gnus/message.el | |
parent | 9844b152a5c96d7aa0203a0573767241a1bbd043 (diff) | |
download | emacs-35bb4c1c3c64d09d9dea0ed7ba0314893e8f5f3c.tar.gz |
Improve stability of message-hide-headers
* message.el (message-hide-headers): Use a pointer instead of tracking
the "end-of-headers" point manually (bug#53991).
Diffstat (limited to 'lisp/gnus/message.el')
-rw-r--r-- | lisp/gnus/message.el | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 869ab3f82b7..800c7dcea03 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -8625,26 +8625,23 @@ From headers in the original article." message-hidden-headers)) (inhibit-point-motion-hooks t) (inhibit-modification-hooks t) - (end-of-headers (point-min))) + end-of-headers) (when regexps (save-excursion (save-restriction (message-narrow-to-headers) + (setq end-of-headers (point-min-marker)) (goto-char (point-min)) (while (not (eobp)) (if (not (message-hide-header-p regexps)) (message-next-header) - (let ((begin (point)) - header header-len) + (let ((begin (point))) (message-next-header) - (setq header (buffer-substring begin (point)) - header-len (- (point) begin)) - (delete-region begin (point)) - (goto-char end-of-headers) - (insert header) - (setq end-of-headers - (+ end-of-headers header-len)))))))) - (narrow-to-region end-of-headers (point-max)))) + (let ((header (delete-and-extract-region begin (point)))) + (save-excursion + (goto-char end-of-headers) + (insert-before-markers header)))))))) + (narrow-to-region end-of-headers (point-max))))) (defun message-hide-header-p (regexps) (let ((result nil) |