From 0832490d4431f3952c0c45de0d9c30ce0f8cc5c2 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Mon, 31 Jan 2011 04:41:38 +0000 Subject: [PATCH] nnimap.el (nnimap-wait-for-response): Wait for results in a more secure manner. gnus-art.el (article-update-date-lapsed): Try to avoid having point move around by not using save-window-excursion. It seems to work... --- lisp/gnus/ChangeLog | 8 +++++++ lisp/gnus/gnus-art.el | 50 +++++++++++++++++++++---------------------- lisp/gnus/nnimap.el | 19 +++++++--------- 3 files changed, 41 insertions(+), 36 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index c1f687e3798..8e3db59710c 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,11 @@ +2011-01-31 Lars Ingebrigtsen + + * nnimap.el (nnimap-wait-for-response): Wait for results in a more + secure manner. + + * gnus-art.el (article-update-date-lapsed): Try to avoid having point + move around by not using save-window-excursion. It seems to work... + 2011-01-31 Katsumi Yamaoka * gnus-art.el (article-make-date-line): Work for user-defined format. diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 71e9e18e682..0fdd6bd2880 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -3646,31 +3646,31 @@ function and want to see what the date was before converting." (defun article-update-date-lapsed () "Function to be run from a timer to update the lapsed time line." (save-match-data - (let (deactivate-mark) - (save-window-excursion - (ignore-errors - (walk-windows - (lambda (w) - (set-buffer (window-buffer w)) - (when (eq major-mode 'gnus-article-mode) - (let ((old-line (count-lines (point-min) (point))) - (old-column (current-column))) - (goto-char (point-min)) - (while (re-search-forward "^Date:" nil t) - (let ((type (get-text-property (match-beginning 0) 'gnus-date-type))) - (when (memq type '(lapsed combined-lapsed user-format)) - (save-excursion - (article-date-ut type t (match-beginning 0))) - (forward-line 1)))) - (goto-char (point-min)) - (when (> old-column 0) - (setq old-line (1- old-line))) - (forward-line old-line) - (end-of-line) - (when (> (current-column) old-column) - (beginning-of-line) - (forward-char old-column))))) - nil 'visible)))))) + (let ((buffer (current-buffer))) + (ignore-errors + (walk-windows + (lambda (w) + (set-buffer (window-buffer w)) + (when (eq major-mode 'gnus-article-mode) + (let ((old-line (count-lines (point-min) (point))) + (old-column (current-column))) + (goto-char (point-min)) + (while (re-search-forward "^Date:" nil t) + (let ((type (get-text-property (match-beginning 0) 'gnus-date-type))) + (when (memq type '(lapsed combined-lapsed user-format)) + (save-excursion + (article-date-ut type t (match-beginning 0))) + (forward-line 1)))) + (goto-char (point-min)) + (when (> old-column 0) + (setq old-line (1- old-line))) + (forward-line old-line) + (end-of-line) + (when (> (current-column) old-column) + (beginning-of-line) + (forward-char old-column))))) + nil 'visible)) + (set-buffer buffer)))) (defun gnus-start-date-timer (&optional n) "Start a timer to update the Date headers in the article buffers. diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index 04e4bd6c9a2..005f60b5c7d 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -1589,17 +1589,14 @@ textual parts.") (goto-char (point-max)) (while (and (setq openp (memq (process-status process) '(open run))) - (not (re-search-backward - (format "^%d .*\n" sequence) - (if nnimap-streaming - (max (point-min) - (min - (- (point) 500) - (save-excursion - (forward-line -3) - (point)))) - (point-min)) - t))) + (progn + ;; Skip past any "*" lines that the server has + ;; output. + (while (and (not (bobp)) + (progn + (forward-line -1) + (looking-at "\\*")))) + (not (looking-at (format "%d " sequence))))) (when messagep (nnheader-message 7 "nnimap read %dk" (/ (buffer-size) 1000))) (nnheader-accept-process-output process) -- 2.39.5