From: Katsumi Yamaoka Date: Tue, 14 Aug 2007 09:02:15 +0000 (+0000) Subject: * gnus-art.el (gnus-sticky-article): Don't perform gnus-configure-windows here; X-Git-Url: https://cgit.sxemacs.org/?a=commitdiff_plain;h=f36c13a4496221d19c999537a44144c4ef1a1dd8;p=gnus * gnus-art.el (gnus-sticky-article): Don't perform gnus-configure-windows here; reuse existing sticky article buffer. * gnus-sum.el (gnus-summary-display-article): Setup article buffer if it doesn't exist in gnus-article-mode. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 95f2ba032..99f0e355a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2007-08-14 Tassilo Horn + + * gnus-art.el (gnus-sticky-article): Fixed problems described in + on ding. Thanks to Katsumi. + Don't perform gnus-configure-windows here; reuse existing sticky + article buffer. + + * gnus-sum.el (gnus-summary-display-article): Setup article buffer if + it doesn't exist in gnus-article-mode. + 2007-08-13 Katsumi Yamaoka * gnus-agent.el (gnus-agent-decoded-group-names): New variable. diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 372b66c63..da17dd8e1 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -4371,46 +4371,46 @@ If ALL-HEADERS is non-nil, no headers are hidden." (defun gnus-sticky-article (arg) "Make the current article sticky. -If a prefix ARG is given, ask for a name for this sticky article -buffer." +If a prefix ARG is given, ask for a name for this sticky article buffer." (interactive "P") - (gnus-configure-windows 'article) (gnus-summary-show-thread) (gnus-summary-select-article nil nil 'pseudo) (let (new-art-buf-name) (gnus-eval-in-buffer-window gnus-article-buffer (setq new-art-buf-name - (rename-buffer - (concat - "*Sticky Article: " - (if arg - (read-from-minibuffer "Sticky article buffer name: ") - (gnus-with-article-headers - (gnus-article-goto-header "subject") - (setq new-art-buf-name - (buffer-substring-no-properties - (line-beginning-position) (line-end-position))) - (goto-char (point-min)) - (gnus-article-goto-header "from") - (setq new-art-buf-name - (concat - new-art-buf-name ", " - (buffer-substring-no-properties - (line-beginning-position) (line-end-position)))) - (goto-char (point-min)) - (gnus-article-goto-header "date") - (setq new-art-buf-name - (concat - new-art-buf-name ", " - (buffer-substring-no-properties - (line-beginning-position) (line-end-position)))))) - "*") - t))) + (concat + "*Sticky Article: " + (if arg + (read-from-minibuffer "Sticky article buffer name: ") + (gnus-with-article-headers + (gnus-article-goto-header "subject") + (setq new-art-buf-name + (buffer-substring-no-properties + (line-beginning-position) (line-end-position))) + (goto-char (point-min)) + (gnus-article-goto-header "from") + (setq new-art-buf-name + (concat + new-art-buf-name ", " + (buffer-substring-no-properties + (line-beginning-position) (line-end-position)))) + (goto-char (point-min)) + (gnus-article-goto-header "date") + (setq new-art-buf-name + (concat + new-art-buf-name ", " + (buffer-substring-no-properties + (line-beginning-position) (line-end-position)))))) + "*")) + (if (and (gnus-buffer-live-p new-art-buf-name) + (with-current-buffer new-art-buf-name + (eq major-mode 'gnus-sticky-article-mode))) + (switch-to-buffer new-art-buf-name) + (setq new-art-buf-name (rename-buffer new-art-buf-name t))) + (gnus-sticky-article-mode)) (setq gnus-article-buffer new-art-buf-name)) (gnus-summary-recenter) - (gnus-summary-position-point) - (set-buffer gnus-article-buffer) - (gnus-sticky-article-mode)) + (gnus-summary-position-point)) (defun gnus-kill-sticky-article-buffer (&optional buffer) "Kill the given sticky article BUFFER. diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index baae58eaa..a3e2c9a09 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -7413,15 +7413,15 @@ Given a prefix, will force an `article' buffer configuration." (defun gnus-summary-display-article (article &optional all-header) "Display ARTICLE in article buffer." - (when (gnus-buffer-live-p gnus-article-buffer) - (with-current-buffer gnus-article-buffer - (mm-enable-multibyte))) + (unless (and (gnus-buffer-live-p gnus-article-buffer) + (with-current-buffer gnus-article-buffer + (eq major-mode 'gnus-article-mode))) + (gnus-article-setup-buffer)) (gnus-set-global-variables) - (when (gnus-buffer-live-p gnus-article-buffer) - (with-current-buffer gnus-article-buffer - (setq gnus-article-charset gnus-newsgroup-charset) - (setq gnus-article-ignored-charsets gnus-newsgroup-ignored-charsets) - (mm-enable-multibyte))) + (with-current-buffer gnus-article-buffer + (setq gnus-article-charset gnus-newsgroup-charset) + (setq gnus-article-ignored-charsets gnus-newsgroup-ignored-charsets) + (mm-enable-multibyte)) (if (null article) nil (prog1