From 0faa85a7d606b33a6d7c8e0c87ea489291c873b8 Mon Sep 17 00:00:00 2001 From: morioka Date: Wed, 24 Jun 1998 05:33:58 +0000 Subject: [PATCH] Merge gnus-6_6-tomo. --- ChangeLog | 47 ++++++++++++- lisp/gnus-art.el | 198 +++++++++++++++++++++++++++++++++++++++++++++-------- lisp/gnus-sum.el | 8 +-- lisp/gnus.el | 4 +- texi/gnus-ja.texi | 14 ++-- texi/gnus.texi | 13 ++-- 6 files changed, 236 insertions(+), 48 deletions(-) diff --git a/ChangeLog b/ChangeLog index 25d53e2..ca110b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,51 @@ 1998-06-24 MORIOKA Tomohiko - * lisp/gnus-sum.el (gnus-request-partial-message): Fix typo. + * lisp/gnus-art.el (gnus-article-display-mime-message): Don't + `save-excursion'. + (gnus-article-prepare): Use `mime-fetch-field' instead of + `mime-entity-fetch-field'. + +1998-06-19 MORIOKA Tomohiko + + * lisp/gnus-art.el (gnus-article-display-mime-message): Use + `mime-display-message' instead of `mime-view-buffer'. + (gnus-article-display-traditional-message): Set + `gnus-article-buffer'. + (gnus-article-display-message-with-encoded-word): Modify for + `gnus-article-display-traditional-message'. + (gnus-article-prepare): Use `mime-parse-buffer' and + `mime-entity-fetch-field'; don't set gnus-article-buffer. + +1998-06-19 MORIOKA Tomohiko + + * lisp/gnus-sum.el (gnus-summary-move-article): Use + `gnus-request-original-article' instead of + `gnus-request-article-this-buffer'. + +1998-06-19 MORIOKA Tomohiko + + * texi/gnus-ja.texi, texi/gnus.texi (Using MIME): Modify + description about new display mechanism. + +1998-06-19 MORIOKA Tomohiko + + * lisp/gnus.el (gnus-version-number): Update to 6.6.0. + (gnus-version): Modify for this branch. + + * lisp/gnus-art.el (gnus-article-display-method-for-mime): New + variable; abolish `gnus-show-mime-method'. + (gnus-article-display-method-for-encoded-word): New variable; + abolish `gnus-decode-encoded-word-method'. + (gnus-article-display-method-for-traditional): New variable. + (gnus-article-display-mime-message): New function; abolish + `gnus-article-preview-mime-message'. + (gnus-article-display-traditional-message): New function. + (gnus-article-display-message-with-encoded-word): New function; + abolish `gnus-article-decode-encoded-word'. + (gnus-article-prepare): Change display mechanism; use + `gnus-request-original-article' instead of + `gnus-request-article-this-buffer'. + (gnus-request-original-article): New function. 1998-06-22 MORIOKA Tomohiko diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 0508d68..6cc3b15 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -368,14 +368,23 @@ be used as possible file names." :group 'gnus-article-mime :type 'boolean) -(defcustom gnus-show-mime-method 'gnus-article-preview-mime-message - "Function to process a MIME message. +(defcustom gnus-article-display-method-for-mime + 'gnus-article-display-mime-message + "Function to display a MIME message. The function is called from the article buffer." :group 'gnus-article-mime :type 'function) -(defcustom gnus-decode-encoded-word-method 'gnus-article-decode-encoded-word - "*Function to decode MIME encoded words. +(defcustom gnus-article-display-method-for-encoded-word + 'gnus-article-display-message-with-encoded-word + "*Function to display a message with MIME encoded-words. +The function is called from the article buffer." + :group 'gnus-article-mime + :type 'function) + +(defcustom gnus-article-display-method-for-traditional + 'gnus-article-display-traditional-message + "*Function to display a traditional message. The function is called from the article buffer." :group 'gnus-article-mime :type 'function) @@ -1948,7 +1957,8 @@ commands: ;;; @@ article filters ;;; -(defun gnus-article-preview-mime-message () +(defun gnus-article-display-mime-message () + "Article display method for MIME message." (make-local-variable 'mime-button-mother-dispatcher) (setq mime-button-mother-dispatcher (function gnus-article-push-button)) @@ -1957,22 +1967,32 @@ commands: (set-buffer gnus-summary-buffer) default-mime-charset)) ) - (save-excursion - (mime-view-buffer gnus-original-article-buffer gnus-article-buffer - nil gnus-article-mode-map) - )) + (mime-display-message mime-message-structure + gnus-article-buffer nil gnus-article-mode-map) + ) (run-hooks 'gnus-mime-article-prepare-hook) ) -(defun gnus-article-decode-encoded-word () - "Header filter for gnus-article-mode." +(defun gnus-article-display-traditional-message () + "Article display method for traditional message." + (set-buffer gnus-article-buffer) + (let (buffer-read-only) + (erase-buffer) + (insert-buffer-substring gnus-original-article-buffer) + )) + +(defun gnus-article-display-message-with-encoded-word () + "Article display method for message with encoded-words." (let ((charset (save-excursion (set-buffer gnus-summary-buffer) default-mime-charset))) - (eword-decode-header charset) - (goto-char (point-min)) - (if (search-forward "\n\n" nil t) - (decode-mime-charset-region (match-end 0) (point-max) charset)) + (gnus-article-display-traditional-message) + (let (buffer-read-only) + (eword-decode-header charset) + (goto-char (point-min)) + (if (search-forward "\n\n" nil t) + (decode-mime-charset-region (match-end 0) (point-max) charset)) + ) (mime-maybe-hide-echo-buffer) ) (gnus-run-hooks 'gnus-mime-article-prepare-hook) @@ -2000,14 +2020,14 @@ If ALL-HEADERS is non-nil, no headers are hidden." result) (save-excursion (gnus-article-setup-buffer) - (set-buffer gnus-article-buffer) + (set-buffer gnus-original-article-buffer) ;; Deactivate active regions. (when (and (boundp 'transient-mark-mode) transient-mark-mode) (setq mark-active nil)) - (if (not (setq result (let ((buffer-read-only nil)) - (gnus-request-article-this-buffer - article group)))) + (if (not (setq result + (let ((buffer-read-only nil)) + (gnus-request-original-article article group)))) ;; There is no such article. (save-excursion (when (and (numberp article) @@ -2070,17 +2090,21 @@ If ALL-HEADERS is non-nil, no headers are hidden." (or all-headers gnus-show-all-headers)))) (when (or (numberp article) (stringp article)) - ;; Hooks for getting information from the article. - ;; This hook must be called before being narrowed. - (let (buffer-read-only) + (let ((method + (if gnus-show-mime + (progn + (mime-parse-buffer) + (if (or (not gnus-strict-mime) + (mime-fetch-field "MIME-Version")) + gnus-article-display-method-for-mime + gnus-article-display-method-for-encoded-word)) + gnus-article-display-method-for-traditional))) + ;; Hooks for getting information from the article. + ;; This hook must be called before being narrowed. (gnus-run-hooks 'internal-hook) (gnus-run-hooks 'gnus-article-prepare-hook) - ;; Decode MIME message. - (when gnus-show-mime - (if (or (not gnus-strict-mime) - (gnus-fetch-field "Mime-Version")) - (funcall gnus-show-mime-method) - (funcall gnus-decode-encoded-word-method))) + ;; Display message. + (funcall method) ;; Perform the article display hooks. (gnus-run-hooks 'gnus-article-display-hook)) ;; Do page break. @@ -2513,6 +2537,124 @@ If given a prefix, show the hidden text instead." (point)) (set-buffer buf)))))) +(defun gnus-request-original-article (article group) + "Get an article and insert it into original article buffer." + (let (do-update-line) + (prog1 + (save-excursion + (erase-buffer) + (gnus-kill-all-overlays) + (setq group (or group gnus-newsgroup-name)) + + ;; Open server if it has closed. + (gnus-check-server (gnus-find-method-for-group group)) + + ;; Using `gnus-request-article' directly will insert the article into + ;; `nntp-server-buffer' - so we'll save some time by not having to + ;; copy it from the server buffer into the article buffer. + + ;; We only request an article by message-id when we do not have the + ;; headers for it, so we'll have to get those. + (when (stringp article) + (let ((gnus-override-method gnus-refer-article-method)) + (gnus-read-header article))) + + ;; If the article number is negative, that means that this article + ;; doesn't belong in this newsgroup (possibly), so we find its + ;; message-id and request it by id instead of number. + (when (and (numberp article) + gnus-summary-buffer + (get-buffer gnus-summary-buffer) + (gnus-buffer-exists-p gnus-summary-buffer)) + (save-excursion + (set-buffer gnus-summary-buffer) + (let ((header (gnus-summary-article-header article))) + (when (< article 0) + (cond + ((memq article gnus-newsgroup-sparse) + ;; This is a sparse gap article. + (setq do-update-line article) + (setq article (mail-header-id header)) + (let ((gnus-override-method gnus-refer-article-method)) + (gnus-read-header article)) + (setq gnus-newsgroup-sparse + (delq article gnus-newsgroup-sparse))) + ((vectorp header) + ;; It's a real article. + (setq article (mail-header-id header))) + (t + ;; It is an extracted pseudo-article. + (setq article 'pseudo) + (gnus-request-pseudo-article header)))) + + (let ((method (gnus-find-method-for-group + gnus-newsgroup-name))) + (when (and (eq (car method) 'nneething) + (vectorp header)) + (let ((dir (concat (file-name-as-directory (nth 1 method)) + (mail-header-subject header)))) + (when (file-directory-p dir) + (setq article 'nneething) + (gnus-group-enter-directory dir)))))))) + + (cond + ;; Refuse to select canceled articles. + ((and (numberp article) + gnus-summary-buffer + (get-buffer gnus-summary-buffer) + (gnus-buffer-exists-p gnus-summary-buffer) + (eq (cdr (save-excursion + (set-buffer gnus-summary-buffer) + (assq article gnus-newsgroup-reads))) + gnus-canceled-mark)) + nil) + ;; Check the backlog. + ((and gnus-keep-backlog + (gnus-backlog-request-article group article (current-buffer))) + 'article) + ;; Check asynchronous pre-fetch. + ((gnus-async-request-fetched-article group article (current-buffer)) + (gnus-async-prefetch-next group article gnus-summary-buffer) + (when (and (numberp article) gnus-keep-backlog) + (gnus-backlog-enter-article group article (current-buffer))) + 'article) + ;; Check the cache. + ((and gnus-use-cache + (numberp article) + (gnus-cache-request-article article group)) + 'article) + ;; Get the article and put into the article buffer. + ((or (stringp article) (numberp article)) + (let ((gnus-override-method + (and (stringp article) gnus-refer-article-method)) + (buffer-read-only nil)) + (erase-buffer) + (gnus-kill-all-overlays) + (when (gnus-request-article article group (current-buffer)) + (when (numberp article) + (gnus-async-prefetch-next group article gnus-summary-buffer) + (when gnus-keep-backlog + (gnus-backlog-enter-article + group article (current-buffer)))) + 'article))) + ;; It was a pseudo. + (t article))) + + ;; Associate this article with the current summary buffer. + (setq gnus-article-current-summary gnus-summary-buffer) + + ;; Update sparse articles. + (when (and do-update-line + (or (numberp article) + (stringp article))) + (let ((buf (current-buffer))) + (set-buffer gnus-summary-buffer) + (gnus-summary-update-article do-update-line) + (gnus-summary-goto-subject do-update-line nil t) + (set-window-point (get-buffer-window (current-buffer) t) + (point)) + (set-buffer buf)))))) + ;;; ;;; Article editing ;;; diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index f1837ac..b086438 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -6907,7 +6907,7 @@ and `request-accept' functions." ((eq action 'copy) (save-excursion (set-buffer copy-buf) - (when (gnus-request-article-this-buffer article gnus-newsgroup-name) + (when (gnus-request-original-article article gnus-newsgroup-name) (gnus-request-accept-article to-newsgroup select-method (not articles))))) ;; Crosspost the article. @@ -6928,7 +6928,7 @@ and `request-accept' functions." (save-excursion (set-buffer copy-buf) ;; First put the article in the destination group. - (gnus-request-article-this-buffer article gnus-newsgroup-name) + (gnus-request-original-article article gnus-newsgroup-name) (when (consp (setq art-group (gnus-request-accept-article to-newsgroup select-method (not articles)))) @@ -7021,7 +7021,7 @@ and `request-accept' functions." (when (eq action 'crosspost) (save-excursion (set-buffer copy-buf) - (gnus-request-article-this-buffer article gnus-newsgroup-name) + (gnus-request-original-article article gnus-newsgroup-name) (nnheader-replace-header "Xref" new-xref) (gnus-request-replace-article article gnus-newsgroup-name (current-buffer))))) @@ -8931,7 +8931,7 @@ save those articles instead." (set-buffer (get-buffer-create " *Partial Article*")) (erase-buffer) (setq mime-preview-buffer mother) - (gnus-request-article-this-buffer number group) + (gnus-request-original-article number group) (mime-parse-buffer) ))) diff --git a/lisp/gnus.el b/lisp/gnus.el index a41ad38..5e52472 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -250,11 +250,11 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "6.6.0" +(defconst gnus-version-number "6.7.0" "Version number for this version of gnus.") (defconst gnus-version - (format "Semi-gnus %s (based on Gnus 5.6.11; for SEMI 1.8)" + (format "Chao-gnus %s (based on Gnus 5.6.11; for SEMI 1.8)" gnus-version-number) "Version string for this version of gnus.") diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index 811c94e..d06b99c 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -7718,14 +7718,14 @@ Gnus $B$O%X%C%@!<$NJB$YBX$((B(sort)$B$b9T$$$^$9!J$3$l$O%G%#%U%)%k%H$G9T$o$l$^ $B3J9%$N5-;v$GKd$a9~$`$3$H$5$(2DG=$K$7$^$9!#(B @vindex gnus-show-mime -@vindex gnus-show-mime-method +@vindex gnus-article-display-method-for-mime @vindex gnus-strict-mime -@findex metamail-buffer -Gnus $B$O(B @code{gnus-show-mime-method} $B$K5-;v$r2!$7IU$1$k$3$H$G(B @sc{mime} $B$r(B -$B07$$$^$9!#$3$l$O%G%#%U%)%k%H$G$O(B @code{gnus-show-mime-method} $B$G$9!#$3$N4X(B -$B?t$O(B SEMI MIME-View $B%W%m%0%i%`$r8F$S=P$7$F\$7$$>pJs$O!"%^%K%e%"%k$r;2>H$7$F$/$@$5$$!J$^$@$J$$$1$I(B -(;_;)$B!K!#(B +@findex gnus-article-display-mime-message +Gnus $B$O(B @code{gnus-article-display-method-for-mime} $B$K5-;v$r2!$7IU$1$k$3(B +$B$H$G(B @sc{mime} $B$r07$$$^$9!#$3$N=i4|CM$O(B +@code{gnus-article-display-mime-message} $B$G$9!#$3$N4X?t$O(B SEMI MIME-View +$B%W%m%0%i%`$r8F$S=P$7$F\$7(B +$B$$>pJs$O!"%^%K%e%"%k$r;2>H$7$F$/$@$5$$!J$^$@$J$$$1$I(B(;_;)$B!K!#(B @sc{mime} $B$r>o$K;HMQ$7$?$1$l$P!"(B@code{gnus-show-mime} $B$r(B @code{t} $B$K@_Dj$7$F$/$@$5$$!#$7$+$7!"(B@code{gnus-strict-mime} $B$,(B diff --git a/texi/gnus.texi b/texi/gnus.texi index 1c66d0d..42638fb 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -7817,14 +7817,15 @@ of the characters, and it also makes it possible to embed pictures and other naughty stuff in innocent-looking articles. @vindex gnus-show-mime -@vindex gnus-show-mime-method +@vindex gnus-article-display-method-for-mime @vindex gnus-strict-mime -@findex metamail-buffer +@findex gnus-article-display-mime-message Gnus handles @sc{mime} by pushing the articles through -@code{gnus-show-mime-method}, which is @code{gnus-show-mime-method} by -default. This function calls the SEMI MIME-View program to actually do -the work. For more information on SEMI MIME-View, see its manual page -(however it is not existed yet, sorry). +@code{gnus-article-display-method-for-mime}, which is +@code{gnus-article-display-mime-message} by default. This function +calls the SEMI MIME-View program to actually do the work. For more +information on SEMI MIME-View, see its manual page (however it is not +existed yet, sorry). Set @code{gnus-show-mime} to @code{t} if you want to use @sc{mime} all the time. However, if @code{gnus-strict-mime} is -- 1.7.10.4