From 2ae065a564fc13c5fe890a40557e280d2aec06f4 Mon Sep 17 00:00:00 2001 From: ichikawa Date: Thu, 24 Sep 1998 14:23:02 +0000 Subject: [PATCH] Importing pgnus-0.32 --- lisp/ChangeLog | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++ lisp/gnus-agent.el | 17 ++++---- lisp/gnus-art.el | 106 ++++++++++++++++++++++++++-------------------- lisp/gnus-bcklg.el | 2 +- lisp/gnus-ems.el | 1 + lisp/gnus-group.el | 4 +- lisp/gnus-int.el | 11 ++--- lisp/gnus-kill.el | 8 ++-- lisp/gnus-salt.el | 7 ++-- lisp/gnus-score.el | 6 +-- lisp/gnus-soup.el | 4 +- lisp/gnus-srvr.el | 6 +-- lisp/gnus-start.el | 8 ++-- lisp/gnus-sum.el | 23 ++++++---- lisp/gnus-util.el | 55 ++++++++++++++++++++++++ lisp/gnus-uu.el | 4 +- lisp/gnus-xmas.el | 2 + lisp/gnus.el | 5 +-- lisp/lpath.el | 11 +++-- lisp/mailcap.el | 29 +++++++++---- lisp/message.el | 46 ++++++++++---------- lisp/mm-bodies.el | 7 ++-- lisp/mm-decode.el | 38 ++++++++++++++--- lisp/mm-util.el | 7 +++- lisp/nnbabyl.el | 2 +- lisp/nndoc.el | 1 + lisp/nneething.el | 2 +- lisp/nnfolder.el | 2 +- lisp/nnheader.el | 2 +- lisp/nnmail.el | 4 +- lisp/nnmbox.el | 6 ++- lisp/nnml.el | 2 +- lisp/nnsoup.el | 2 +- lisp/rfc2047.el | 6 ++- make.bat | 114 +++++++++++++++++++++++++------------------------- 35 files changed, 464 insertions(+), 204 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7a63038..0b45042 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,121 @@ +Thu Sep 24 02:29:57 1998 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.32 is released. + +1998-09-24 00:27:11 Lars Magne Ingebrigtsen + + * gnus-kill.el (gnus-batch-score): Protect against errors. + + * gnus-art.el: Protect against broken headers. + + * mm-decode.el (mm-display-external): Respect needsterm. + (mm-display-external): Create buffer for external commands. + +1998-09-23 22:04:05 Lars Magne Ingebrigtsen + + * mailcap.el (mailcap-mime-info): Return the proper viewer. + + * mm-decode.el (mm-display-external): Use file name. + +1998-09-22 Markus Rost + + * gnus-util.el (gnus-output-to-rmail): adjust to + `rmail-output-to-rmail-file' + +1998-09-23 20:07:00 Lars Magne Ingebrigtsen + + * gnus-util.el (gnus-output-to-rmail): Reinstated function. + + * gnus-sum.el (gnus-select-newsgroup): Set global variables before + headers. + + * gnus-art.el (article-decode-charset): Fold case. + +1998-09-17 15:49:10 Simon Josefsson + + * mailcap.el (mailcap-save-binary-file): Goto point-min. + +1998-09-23 19:48:52 Aaron M. Ucko + + * nnmail.el (nnmail-check-duplication): Enter into duplicate list + after being stored. + +Tue Sep 15 16:15:16 1998 Kurt Swanson + + * gnus-salt.el (gnus-pick-setup-message): Return from whence ye + come. + +1998-09-23 19:42:03 Lars Magne Ingebrigtsen + + * gnus-xmas.el (wid-edit): Required. + + * gnus-ems.el (gnus-widget-button-keymap): New variable. + +Sun Sep 20 00:27:55 1998 ZHU Shenghuo + + * gnus-art.el (gnus-mime-inline-part): remove part if necessary + +1998-09-23 19:30:52 Matt Armstrong + + * gnus-art.el (article-decode-charset): Narrow to the correct + region. + + * mm-bodies.el: Fix autoload. + +1998-09-22 18:35:12 Lee Willis + + * gnus-art.el (gnus-mime-button-line-format): Doc fix. + +1998-09-22 14:53:35 Lars Magne Ingebrigtsen + + * rfc2047.el (rfc2047-decode): Use rfc2047-default-charset. + +1998-09-19 13:58:35 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-insert-mime-button): Specify keymap. + (gnus-article-add-button): Ditto. + + * gnus-sum.el (gnus-summary-insert-pseudos): Use mm. + + * gnus-art.el (gnus-article-prepare-display): Make article mode. + (gnus-article-prepare-display): Bind url-standalone-mode. + + * mm-decode.el (mm-remove-part): Also delete directory. + (mm-display-external): Create a private sub-dir. + + * mailcap.el (mailcap-binary-suffixes): New variable. + (mailcap-command-p): Use it. + +1998-09-16 10:38:21 Lars Magne Ingebrigtsen + + * nnmbox.el (nnmbox-request-group): Change server. + (nnmbox-possibly-change-newsgroup): Enable multibyte. + + * message.el (message-encode-message-body): Don't stomp MIME + headers. + + * gnus-sum.el (gnus-summary-edit-article-done): Don't encode + unless useful. + (gnus-summary-exit): Check for a live article buffer. + (gnus-summary-exit-no-update): Ditto. + + * gnus-int.el (gnus-request-replace-article): Accept no-encode + param. + + * gnus-sum.el (gnus-article-decoded-p): New variable. + + * mm-decode.el (mm-display-external): Use no-conv. + + * rfc2047.el (rfc2047-q-encode-region): Bound properly. + (rfc2047-charset-encoding-alist): Use B encoding for koi8-r. + + * gnus-art.el (gnus-article-mode-map): Bind button2 to + mouse-click. + +1998-09-15 14:38:02 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-expire): Protect against nil infos. + Mon Sep 14 18:55:38 1998 Lars Magne Ingebrigtsen * gnus.el: Pterodactyl Gnus v0.31 is released. diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index 77ed4f6..0fe6d68 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -1073,7 +1073,7 @@ The following commands are available: (gnus-set-default-directory) (setq mode-line-process nil) (use-local-map gnus-category-mode-map) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq truncate-lines t) (setq buffer-read-only t) (gnus-run-hooks 'gnus-category-mode-hook)) @@ -1419,12 +1419,15 @@ The following commands are available: ;; Maybe everything has been expired from `gnus-article-alist' ;; and so the above marking as read could not be conducted, ;; or there are expired article within the range of the alist. - (when (or (not (caar gnus-agent-article-alist)) - (> (car expired) (caar gnus-agent-article-alist))) - (setcar (nthcdr 2 info) - (gnus-add-to-range - (nth 2 info) - (nreverse expired)))) + (when (and info + expired + (or (not (caar gnus-agent-article-alist)) + (> (car expired) + (caar gnus-agent-article-alist)))) + (setcar (nthcdr 2 info) + (gnus-add-to-range + (nth 2 info) + (nreverse expired)))) (gnus-dribble-enter (concat "(gnus-group-set-info '" (gnus-prin1-to-string info) diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 1538d9c..3fd48a1 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -965,6 +965,7 @@ If PROMPT (the prefix), prompt for a coding system to use." (save-restriction (message-narrow-to-head) (let* ((inhibit-point-motion-hooks t) + (case-fold-search t) (ct (message-fetch-field "Content-Type" t)) (cte (message-fetch-field "Content-Transfer-Encoding" t)) (ctl (and ct (condition-case () @@ -981,6 +982,7 @@ If PROMPT (the prefix), prompt for a coding system to use." buffer-read-only) (goto-char (point-max)) (widen) + (forward-line 1) (narrow-to-region (point) (point-max)) (when (or (not ct) (equal (car ctl) "text/plain")) @@ -1888,6 +1890,8 @@ If variable `gnus-use-long-file-name' is non-nil, it is "\C-c\C-i" gnus-info-find-node "\C-c\C-b" gnus-bug + gnus-mouse-2 'widget-button-click + "\C-d" gnus-article-read-summary-keys "\M-*" gnus-article-read-summary-keys "\M-#" gnus-article-read-summary-keys @@ -1957,8 +1961,9 @@ commands: (make-local-variable 'gnus-button-marker-list) (make-local-variable 'gnus-article-current-summary) (make-local-variable 'gnus-article-mime-handles) + (make-local-variable 'gnus-article-decoded-p) (gnus-set-default-directory) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq buffer-read-only t) (set-syntax-table gnus-article-mode-syntax-table) (mm-enable-multibyte) @@ -1990,7 +1995,7 @@ commands: (if (get-buffer name) (save-excursion (set-buffer name) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq buffer-read-only t) (unless (eq major-mode 'gnus-article-mode) (gnus-article-mode)) @@ -2129,10 +2134,13 @@ If ALL-HEADERS is non-nil, no headers are hidden." ;; This hook must be called before being narrowed. (let ((gnus-article-buffer (current-buffer)) buffer-read-only) + (unless (eq major-mode 'gnus-article-mode) + (gnus-article-mode)) (gnus-run-hooks 'gnus-tmp-internal-hook) (gnus-run-hooks 'gnus-article-prepare-hook) (when gnus-display-mime-function - (funcall gnus-display-mime-function)) + (let ((url-standalone-mode (not gnus-plugged))) + (funcall gnus-display-mime-function))) ;; Perform the article display hooks. (gnus-run-hooks 'gnus-article-display-hook))) @@ -2144,7 +2152,7 @@ If ALL-HEADERS is non-nil, no headers are hidden." "The following specs can be used: %t The MIME type %n The `name' parameter -%n The description, if any +%d The description, if any %l The length of the encoded part") (defvar gnus-mime-button-line-format-alist @@ -2180,7 +2188,8 @@ If ALL-HEADERS is non-nil, no headers are hidden." (defun gnus-mime-view-part () "Interactively choose a view method for the MIME part under point." (interactive) - (let ((data (get-text-property (point) 'gnus-data))) + (let ((data (get-text-property (point) 'gnus-data)) + (url-standalone-mode (not gnus-plugged))) (mm-interactively-view-part data))) (defun gnus-mime-copy-part () @@ -2197,28 +2206,30 @@ If ALL-HEADERS is non-nil, no headers are hidden." (interactive) (let* ((data (get-text-property (point) 'gnus-data)) (contents (mm-get-part data)) + (url-standalone-mode (not gnus-plugged)) (b (point)) buffer-read-only) - (forward-line 2) - (mm-insert-inline data contents) - (goto-char b))) + (if (mm-handle-undisplayer data) + (mm-remove-part data) + (forward-line 2) + (mm-insert-inline data contents) + (goto-char b)))) (defun gnus-insert-mime-button (handle) (let ((gnus-tmp-name (mail-content-type-get (mm-handle-type handle) 'name)) (gnus-tmp-type (car (mm-handle-type handle))) (gnus-tmp-description (mm-handle-description handle)) - (gnus-tmp-length (save-excursion - (set-buffer (mm-handle-buffer handle)) - (buffer-size))) + (gnus-tmp-length (with-temp-buffer (mm-handle-buffer handle) + (buffer-size))) b e) (setq gnus-tmp-name - (if gnus-tmp-name - (concat " (" gnus-tmp-name ")") - "")) + (if gnus-tmp-name + (concat " (" gnus-tmp-name ")") + "")) (setq gnus-tmp-description - (if gnus-tmp-description - (concat " (" gnus-tmp-description ")") - "")) + (if gnus-tmp-description + (concat " (" gnus-tmp-description ")") + "")) (setq b (point)) (gnus-eval-format gnus-mime-button-line-format gnus-mime-button-line-format-alist @@ -2227,11 +2238,13 @@ If ALL-HEADERS is non-nil, no headers are hidden." gnus-callback mm-display-part gnus-data ,handle)) (setq e (point)) - (widget-convert-button 'link b e :action 'gnus-widget-press-button))) + (widget-convert-button 'link b e :action 'gnus-widget-press-button + :button-keymap gnus-widget-button-keymap))) (defun gnus-widget-press-button (elems el) (goto-char (widget-get elems :from)) - (gnus-article-press-button)) + (let ((url-standalone-mode (not gnus-plugged))) + (gnus-article-press-button))) (defun gnus-display-mime () "Insert MIME buttons in the buffer." @@ -2239,28 +2252,30 @@ If ALL-HEADERS is non-nil, no headers are hidden." (save-restriction (mail-narrow-to-head) (when (setq ct (mail-fetch-field "content-type")) - (setq ctl (mail-header-parse-content-type ct)))) - (let* ((handles (mm-dissect-buffer)) - handle name type b e) - (mapcar 'mm-destroy-part gnus-article-mime-handles) - (setq gnus-article-mime-handles handles) - (when handles - (goto-char (point-min)) - (search-forward "\n\n" nil t) - (delete-region (point) (point-max)) - (if (not (equal (car ctl) "multipart/alternative")) - (while (setq handle (pop handles)) - (gnus-insert-mime-button handle) - (insert "\n\n") - (when (and (mm-automatic-display-p (car (mm-handle-type handle))) - (or (not (mm-handle-disposition handle)) - (equal (car (mm-handle-disposition handle)) - "inline"))) - (forward-line -2) - (mm-display-part handle t) - (goto-char (point-max)))) - ;; Here we have multipart/alternative - (gnus-mime-display-alternative handles)))))) + (setq ctl (condition-case () + (mail-header-parse-content-type ct) (error nil))) + (let* ((handles (mm-dissect-buffer)) + handle name type b e) + (mapcar 'mm-destroy-part gnus-article-mime-handles) + (setq gnus-article-mime-handles handles) + (when handles + (goto-char (point-min)) + (search-forward "\n\n" nil t) + (delete-region (point) (point-max)) + (if (not (equal (car ctl) "multipart/alternative")) + (while (setq handle (pop handles)) + (gnus-insert-mime-button handle) + (insert "\n\n") + (when (and (mm-automatic-display-p + (car (mm-handle-type handle))) + (or (not (mm-handle-disposition handle)) + (equal (car (mm-handle-disposition handle)) + "inline"))) + (forward-line -2) + (mm-display-part handle t) + (goto-char (point-max)))) + ;; Here we have multipart/alternative + (gnus-mime-display-alternative handles)))))))) (defun gnus-mime-display-alternative (handles &optional preferred) (let* ((preferred (mm-preferred-alternative handles preferred)) @@ -2698,7 +2713,7 @@ If given a prefix, show the hidden text instead." (if (get-buffer gnus-original-article-buffer) (set-buffer gnus-original-article-buffer) (set-buffer (gnus-get-buffer-create gnus-original-article-buffer)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq major-mode 'gnus-original-article-mode) (setq buffer-read-only t)) (let (buffer-read-only) @@ -2707,7 +2722,9 @@ If given a prefix, show the hidden text instead." (setq gnus-original-article (cons group article))) ;; Decode charsets. - (run-hooks 'gnus-article-decode-hook)) + (run-hooks 'gnus-article-decode-hook) + ;; Mark article as decoded or not. + (setq gnus-article-decoded-p gnus-article-decode-hook)) ;; Update sparse articles. (when (and do-update-line @@ -3164,7 +3181,8 @@ specified by `gnus-button-alist'." (list gnus-mouse-face-prop gnus-article-mouse-face)) (list 'gnus-callback fun) (and data (list 'gnus-data data)))) - (widget-convert-button 'link from to :action 'gnus-widget-press-button)) + (widget-convert-button 'link from to :action 'gnus-widget-press-button + :button-keymap gnus-widget-button-keymap)) ;;; Internal functions: diff --git a/lisp/gnus-bcklg.el b/lisp/gnus-bcklg.el index d370673..51c6e7f 100644 --- a/lisp/gnus-bcklg.el +++ b/lisp/gnus-bcklg.el @@ -42,7 +42,7 @@ (or (get-buffer gnus-backlog-buffer) (save-excursion (set-buffer (gnus-get-buffer-create gnus-backlog-buffer)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq buffer-read-only t) (get-buffer gnus-backlog-buffer)))) diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index f0e4362..af1f5e8 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -34,6 +34,7 @@ (defvar gnus-mouse-2 [mouse-2]) (defvar gnus-down-mouse-2 [down-mouse-2]) +(defvar gnus-widget-button-keymap nil) (defvar gnus-mode-line-modified (if (or gnus-xemacs (< emacs-major-version 20)) diff --git a/lisp/gnus-group.el b/lisp/gnus-group.el index 51ca68c..1ec6d40 100644 --- a/lisp/gnus-group.el +++ b/lisp/gnus-group.el @@ -764,7 +764,7 @@ The following commands are available: (gnus-group-set-mode-line) (setq mode-line-process nil) (use-local-map gnus-group-mode-map) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq truncate-lines t) (setq buffer-read-only t) (gnus-set-default-directory) @@ -3064,7 +3064,7 @@ to use." ;; Print out all the groups. (save-excursion (pop-to-buffer "*Gnus Help*") - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (erase-buffer) (setq groups (sort groups 'string<)) (while groups diff --git a/lisp/gnus-int.el b/lisp/gnus-int.el index 7ceb8d1..f94c202 100644 --- a/lisp/gnus-int.el +++ b/lisp/gnus-int.el @@ -447,11 +447,12 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned." (cadr gnus-command-method) last))) -(defun gnus-request-replace-article (article group buffer) - (save-restriction - (message-narrow-to-head) - (mail-encode-encoded-word-buffer)) - (message-encode-message-body) +(defun gnus-request-replace-article (article group buffer &optional no-encode) + (unless no-encode + (save-restriction + (message-narrow-to-head) + (mail-encode-encoded-word-buffer)) + (message-encode-message-body)) (let ((func (car (gnus-group-name-to-method group)))) (funcall (intern (format "%s-request-replace-article" func)) article (gnus-group-real-name group) buffer))) diff --git a/lisp/gnus-kill.el b/lisp/gnus-kill.el index 02ee66e..2e3b064 100644 --- a/lisp/gnus-kill.el +++ b/lisp/gnus-kill.el @@ -429,7 +429,7 @@ Returns the number of articles marked as read." (defun gnus-score-insert-help (string alist idx) (save-excursion (pop-to-buffer "*Score Help*") - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (erase-buffer) (insert string ":\n\n") (while alist @@ -566,7 +566,7 @@ COMMAND must be a lisp expression or a string representing a key sequence." (concat "\n" (gnus-prin1-to-string object)) (save-excursion (set-buffer (gnus-get-buffer-create "*Gnus PP*")) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (erase-buffer) (insert (format "\n(%S %S\n '(" (nth 0 object) (nth 1 object))) (let ((klist (cadr (nth 2 object))) @@ -702,7 +702,9 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score" (and (car entry) (or (eq (car entry) t) (not (zerop (car entry)))))) - (gnus-summary-read-group group nil t nil t) + (condition-case () + (gnus-summary-read-group group nil t nil t) + (error nil)) (when (eq (current-buffer) (get-buffer gnus-summary-buffer)) (gnus-summary-exit)))) ;; Exit Emacs. diff --git a/lisp/gnus-salt.el b/lisp/gnus-salt.el index 9a73698..68d0f3c 100644 --- a/lisp/gnus-salt.el +++ b/lisp/gnus-salt.el @@ -131,7 +131,8 @@ It accepts the same format specs that `gnus-summary-line-format' does." (set-buffer gnus-summary-buffer) gnus-pick-mode)) (message-add-action - '(gnus-configure-windows 'pick t) 'send 'exit 'postpone 'kill))) + '(gnus-configure-windows ,gnus-current-window-configuration t) + 'send 'exit 'postpone 'kill))) (defvar gnus-pick-line-number 1) (defun gnus-pick-line-number () @@ -468,7 +469,7 @@ Two predefined functions are available: (setq mode-name "Tree") (setq major-mode 'gnus-tree-mode) (use-local-map gnus-tree-mode-map) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq buffer-read-only t) (setq truncate-lines t) (save-excursion @@ -969,7 +970,7 @@ The following commands are available: (setq mode-name "Gnus Carpal") (setq mode-line-process nil) (use-local-map gnus-carpal-mode-map) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq buffer-read-only t) (make-local-variable 'gnus-carpal-attached-buffer) (gnus-run-hooks 'gnus-carpal-mode-hook)) diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index 23c041c..0ab923b 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -672,7 +672,7 @@ used as score." (setq gnus-score-help-winconf (current-window-configuration)) (save-excursion (set-buffer (gnus-get-buffer-create "*Score Help*")) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (delete-windows-on (current-buffer)) (erase-buffer) (insert string ":\n\n") @@ -1406,7 +1406,7 @@ SCORE is the score to add." (save-excursion (set-buffer (gnus-get-buffer-create "*Headers*")) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (when (gnus-buffer-live-p gnus-summary-buffer) (message-clone-locals gnus-summary-buffer)) @@ -2507,7 +2507,7 @@ GROUP using BNews sys file syntax." ofiles not-match regexp) (save-excursion (set-buffer (gnus-get-buffer-create "*gnus score files*")) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) ;; Go through all score file names and create regexp with them ;; as the source. (while sfiles diff --git a/lisp/gnus-soup.el b/lisp/gnus-soup.el index 71345c9..1c326cd 100644 --- a/lisp/gnus-soup.el +++ b/lisp/gnus-soup.el @@ -374,7 +374,7 @@ though the two last may be nil if they are missing." (when (file-exists-p file) (save-excursion (set-buffer (nnheader-find-file-noselect file 'force)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (goto-char (point-min)) (while (not (eobp)) (push (vector (gnus-soup-field) @@ -397,7 +397,7 @@ file. The vector contain three strings, [prefix name encoding]." (let (replies) (save-excursion (set-buffer (nnheader-find-file-noselect file)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (goto-char (point-min)) (while (not (eobp)) (push (vector (gnus-soup-field) (gnus-soup-field) diff --git a/lisp/gnus-srvr.el b/lisp/gnus-srvr.el index 21abf17..849a2da 100644 --- a/lisp/gnus-srvr.el +++ b/lisp/gnus-srvr.el @@ -161,7 +161,7 @@ The following commands are available: (gnus-set-default-directory) (setq mode-line-process nil) (use-local-map gnus-server-mode-map) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq truncate-lines t) (setq buffer-read-only t) (gnus-run-hooks 'gnus-server-mode-hook)) @@ -575,7 +575,7 @@ The following commands are available: (when gnus-carpal (gnus-carpal-setup-buffer 'browse)) (gnus-configure-windows 'browse) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (let ((buffer-read-only nil)) (erase-buffer)) (gnus-browse-mode) @@ -636,7 +636,7 @@ buffer. (setq mode-name "Browse Server") (setq mode-line-process nil) (use-local-map gnus-browse-mode-map) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq truncate-lines t) (gnus-set-default-directory) (setq buffer-read-only t) diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index cfe4f42..5b9d98a 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -785,7 +785,7 @@ prompt the user for the name of an NNTP server to use." (erase-buffer) (setq buffer-file-name dribble-file) (auto-save-mode t) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (bury-buffer (current-buffer)) (set-buffer-modified-p nil) (let ((auto (make-auto-save-file-name)) @@ -1877,7 +1877,7 @@ If FORCE is non-nil, the .newsrc file is read." (save-excursion (gnus-message 5 "Reading %s..." newsrc-file) (set-buffer (nnheader-find-file-noselect newsrc-file)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (gnus-newsrc-to-gnus-format) (kill-buffer (current-buffer)) (gnus-message 5 "Reading %s...done" newsrc-file))) @@ -2274,7 +2274,7 @@ If FORCE is non-nil, the .newsrc file is read." (setq buffer-file-name (concat gnus-current-startup-file ".eld")) (setq default-directory (file-name-directory buffer-file-name)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (erase-buffer) (gnus-message 5 "Saving %s.eld..." gnus-current-startup-file) (gnus-gnus-to-quick-newsrc-format) @@ -2338,7 +2338,7 @@ If FORCE is non-nil, the .newsrc file is read." info ranges range method) (setq buffer-file-name gnus-current-startup-file) (setq default-directory (file-name-directory buffer-file-name)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (erase-buffer) ;; Write options. (when gnus-newsrc-options diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index cfba4f4..3823afe 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -767,6 +767,7 @@ which it may alter in any way.") ;;; Internal variables (defvar gnus-article-mime-handles nil) +(defvar gnus-article-decoded-p nil) (defvar gnus-scores-exclude-files nil) (defvar gnus-page-broken nil) @@ -1878,7 +1879,7 @@ The following commands are available: (setq mode-name "Summary") (make-local-variable 'minor-mode-alist) (use-local-map gnus-summary-mode-map) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq buffer-read-only t) ;Disable modification (setq truncate-lines t) (setq selective-display t) @@ -3911,6 +3912,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." ;; Init the dependencies hash table. (setq gnus-newsgroup-dependencies (gnus-make-hashtable (length articles))) + (gnus-set-global-variables) ;; Retrieve the headers and read them in. (gnus-message 5 "Fetching headers for %s..." gnus-newsgroup-name) (setq gnus-newsgroup-headers @@ -5103,9 +5105,10 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil." (setq group-point (point)) (if temporary nil ;Nothing to do. - (save-excursion - (set-buffer gnus-article-buffer) - (mapcar 'mm-destroy-part gnus-article-mime-handles)) + (when (gnus-buffer-live-p gnus-article-buffer) + (save-excursion + (set-buffer gnus-article-buffer) + (mapcar 'mm-destroy-part gnus-article-mime-handles))) ;; If we have several article buffers, we kill them at exit. (unless gnus-single-article-buffer (gnus-kill-buffer gnus-article-buffer) @@ -5150,9 +5153,10 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil." (gnus-y-or-n-p "Discard changes to this group and exit? ")) (gnus-async-halt-prefetch) (gnus-run-hooks 'gnus-summary-prepare-exit-hook) - (save-excursion - (set-buffer gnus-article-buffer) - (mapcar 'mm-destroy-part gnus-article-mime-handles)) + (when (gnus-buffer-live-p gnus-article-buffer) + (save-excursion + (set-buffer gnus-article-buffer) + (mapcar 'mm-destroy-part gnus-article-mime-handles))) ;; If we have several article buffers, we kill them at exit. (unless gnus-single-article-buffer (gnus-kill-buffer gnus-article-buffer) @@ -7330,7 +7334,8 @@ groups." (if (and (not read-only) (not (gnus-request-replace-article (cdr gnus-article-current) (car gnus-article-current) - (current-buffer)))) + (current-buffer) + (not gnus-article-decoded-p)))) (error "Couldn't replace article") ;; Update the summary buffer. (if (and references @@ -8681,7 +8686,7 @@ save those articles instead." (lambda (f) (if (equal f " ") f - (gnus-quote-arg-for-sh-or-csh f))) + (mm-quote-arg f))) files " "))))) (setq ps (cdr ps))))) (if (and gnus-view-pseudos (not not-view)) diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 5b1ca77..80496f8 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -639,6 +639,61 @@ with potentially long computations." ;;; Functions for saving to babyl/mail files. +(defvar rmail-default-rmail-file) +(defun gnus-output-to-rmail (filename &optional ask) + "Append the current article to an Rmail file named FILENAME." + (require 'rmail) + ;; Most of these codes are borrowed from rmailout.el. + (setq filename (expand-file-name filename)) + (setq rmail-default-rmail-file filename) + (let ((artbuf (current-buffer)) + (tmpbuf (gnus-get-buffer-create " *Gnus-output*"))) + (save-excursion + (or (get-file-buffer filename) + (file-exists-p filename) + (if (or (not ask) + (gnus-yes-or-no-p + (concat "\"" filename "\" does not exist, create it? "))) + (let ((file-buffer (create-file-buffer filename))) + (save-excursion + (set-buffer file-buffer) + (rmail-insert-rmail-file-header) + (let ((require-final-newline nil)) + (gnus-write-buffer filename))) + (kill-buffer file-buffer)) + (error "Output file does not exist"))) + (set-buffer tmpbuf) + (erase-buffer) + (insert-buffer-substring artbuf) + (gnus-convert-article-to-rmail) + ;; Decide whether to append to a file or to an Emacs buffer. + (let ((outbuf (get-file-buffer filename))) + (if (not outbuf) + (append-to-file (point-min) (point-max) filename) + ;; File has been visited, in buffer OUTBUF. + (set-buffer outbuf) + (let ((buffer-read-only nil) + (msg (and (boundp 'rmail-current-message) + (symbol-value 'rmail-current-message)))) + ;; If MSG is non-nil, buffer is in RMAIL mode. + (when msg + (widen) + (narrow-to-region (point-max) (point-max))) + (insert-buffer-substring tmpbuf) + (when msg + (goto-char (point-min)) + (widen) + (search-backward "\n\^_") + (narrow-to-region (point) (point-max)) + (rmail-count-new-messages t) + (when (rmail-summary-exists) + (rmail-select-summary + (rmail-update-summary))) + (rmail-count-new-messages t) + (rmail-show-message msg)) + (save-buffer))))) + (kill-buffer tmpbuf))) + (defun gnus-output-to-mail (filename &optional ask) "Append the current article to a mail file named FILENAME." (setq filename (expand-file-name filename)) diff --git a/lisp/gnus-uu.el b/lisp/gnus-uu.el index 776de0a..9db71ae 100644 --- a/lisp/gnus-uu.el +++ b/lisp/gnus-uu.el @@ -1025,7 +1025,7 @@ didn't work, and overwrite existing files. Otherwise, ask each time." ;; finally just replaces the next to last number with "[0-9]+". (save-excursion (set-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (erase-buffer) (insert (regexp-quote string)) @@ -1125,7 +1125,7 @@ didn't work, and overwrite existing files. Otherwise, ask each time." string) (save-excursion (set-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (while string-list (erase-buffer) (insert (caar string-list)) diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el index 5624d4d..6eb65fe 100644 --- a/lisp/gnus-xmas.el +++ b/lisp/gnus-xmas.el @@ -28,6 +28,7 @@ (require 'text-props) (defvar menu-bar-mode (featurep 'menubar)) (require 'messagexmas) +(require 'wid-edit) (defgroup gnus-xmas nil "XEmacsoid support for Gnus" @@ -400,6 +401,7 @@ call it with the value of the `gnus-data' text property." (defun gnus-xmas-define () (setq gnus-mouse-2 [button2]) + (setq gnus-widget-button-keymap widget-button-keymap) (unless (memq 'underline (face-list)) (and (fboundp 'make-face) diff --git a/lisp/gnus.el b/lisp/gnus.el index ef8958b..1322cd0 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -250,7 +250,7 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "0.31" +(defconst gnus-version-number "0.32" "Version number for this version of Gnus.") (defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number) @@ -1648,8 +1648,7 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view gnus-uu-decode-binhex-view gnus-uu-unmark-thread gnus-uu-mark-over) - ("gnus-uu" gnus-uu-delete-work-dir gnus-quote-arg-for-sh-or-csh - gnus-uu-unmark-thread) + ("gnus-uu" gnus-uu-delete-work-dir gnus-uu-unmark-thread) ("gnus-msg" (gnus-summary-send-map keymap) gnus-article-mail gnus-copy-article-buffer gnus-extended-version) ("gnus-msg" :interactive t diff --git a/lisp/lpath.el b/lisp/lpath.el index c16939a..1b3af0a 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -36,7 +36,10 @@ mule-write-region-no-coding-system find-charset-region base64-decode-string find-coding-systems-region get-charset-property - coding-system-get w3-region)) + coding-system-get w3-region + rmail-summary-exists rmail-select-summary + rmail-update-summary + )) (maybe-bind '(global-face-data mark-active transient-mark-mode mouse-selection-click-count mouse-selection-click-count-buffer buffer-display-table @@ -66,8 +69,10 @@ mm-copy-tree url-view-url w3-prepare-buffer mule-write-region-no-coding-system char-int annotationp delete-annotation make-image-specifier - make-annotation base64-decode-string - w3-do-setup w3-region))) + make-annotation base64-decode-string base64-encode-region + w3-do-setup w3-region + rmail-summary-exists rmail-select-summary rmail-update-summary + ))) (setq load-path (cons "." load-path)) (require 'custom) diff --git a/lisp/mailcap.el b/lisp/mailcap.el index 0cf68b2..c5249f3 100644 --- a/lisp/mailcap.el +++ b/lisp/mailcap.el @@ -271,6 +271,7 @@ not.") (expand-file-name fname mailcap-temporary-directory)))) (defun mailcap-save-binary-file () + (goto-char (point-min)) (let ((file (read-file-name "Filename to save as: " (or mailcap-download-directory "~/"))) @@ -299,7 +300,7 @@ not.") (defun mailcap-parse-mailcaps (&optional path force) "Parse out all the mailcaps specified in a unix-style path string PATH. If FORCE, re-parse even if already parsed." - (interactive) + (interactive (list nil t)) (when (or (not mailcap-parsed-p) force) (cond @@ -631,7 +632,7 @@ this type is returned." (if (mailcap-viewer-passes-test (car viewers) info) (setq passed (cons (car viewers) passed))) (setq viewers (cdr viewers))) - (setq passed (sort (nreverse passed) 'mailcap-viewer-lessp)) + (setq passed (sort passed 'mailcap-viewer-lessp)) (setq viewer (car passed)))) (when (and (stringp (cdr (assq 'viewer viewer))) passed) @@ -820,16 +821,26 @@ correspond to.") (setq extn (concat "." extn))) (cdr (assoc (downcase extn) mailcap-mime-extensions))) +(defvar mailcap-binary-suffixes + (if (memq system-type '(ms-dos windows-nt)) + '(".exe" ".com" ".bat" ".cmd" ".btm" "") + '(""))) + (defun mailcap-command-p (command) - "Say whether COMMAND is in the exec path." + "Say whether COMMAND is in the exec path. +The path of COMMAND will be returned iff COMMAND is a command." (let ((path (if (file-name-absolute-p command) '(nil) exec-path)) - file) + file dir) (catch 'found - (while path - (when (and (file-executable-p - (setq file (expand-file-name command (pop path)))) - (not (file-directory-p file))) - (throw 'found file)))))) + (while (setq dir (pop path)) + (let ((suffixes mailcap-binary-suffixes)) + (while suffixes + (when (and (file-executable-p + (setq file (expand-file-name + (concat command (pop suffixes)) + dir))) + (not (file-directory-p file))) + (throw 'found file)))))))) (provide 'mailcap) diff --git a/lisp/message.el b/lisp/message.el index 06a8881..a6beb4c 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -2220,7 +2220,7 @@ to find out how to use this." (unwind-protect (save-excursion (set-buffer tembuf) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (erase-buffer) ;; Avoid copying text props. (insert (format @@ -3964,7 +3964,7 @@ Do a `tab-to-tab-stop' if not in those headers." (message "No matching groups") (save-selected-window (pop-to-buffer "*Completions*") - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (let ((buffer-read-only nil)) (erase-buffer) (let ((standard-output (current-buffer))) @@ -4048,27 +4048,31 @@ regexp varstr." (defun message-encode-message-body () "Examine the message body, encode it, and add the requisite headers." (when (featurep 'mule) - (save-excursion - (save-restriction - (message-narrow-to-headers-or-head) - (message-remove-header - "^Content-Transfer-Encoding:\\|^Content-Type:\\|^Mime-Version:" t) - (goto-char (point-max)) - (widen) - (narrow-to-region (point) (point-max)) - (let* ((charset (mm-encode-body)) - (encoding (mm-body-encoding))) - (when (consp charset) - (error "Can't encode messages with multiple charsets (yet)")) - (widen) + (let (old-headers) + (save-excursion + (save-restriction (message-narrow-to-headers-or-head) + (unless (setq old-headers (message-fetch-field "mime-version")) + (message-remove-header + "^Content-Transfer-Encoding:\\|^Content-Type:\\|^Mime-Version:" t)) (goto-char (point-max)) - (setq charset (or charset (mm-mule-charset-to-mime-charset 'ascii))) - ;; We don't insert MIME headers if they only say the default. - (unless (and (eq charset 'us-ascii) - (eq encoding '7bit)) - (mm-insert-rfc822-headers charset encoding)) - (mm-encode-body)))))) + (widen) + (narrow-to-region (point) (point-max)) + (let* ((charset (mm-encode-body)) + (encoding (mm-body-encoding))) + (when (consp charset) + (error "Can't encode messages with multiple charsets (yet)")) + (widen) + (message-narrow-to-headers-or-head) + (goto-char (point-max)) + (setq charset (or charset + (mm-mule-charset-to-mime-charset 'ascii))) + ;; We don't insert MIME headers if they only say the default. + (when (and (not old-headers) + (not (and (eq charset 'us-ascii) + (eq encoding '7bit)))) + (mm-insert-rfc822-headers charset encoding)) + (mm-encode-body))))))) (run-hooks 'message-load-hook) diff --git a/lisp/mm-bodies.el b/lisp/mm-bodies.el index a2699f5..135b974 100644 --- a/lisp/mm-bodies.el +++ b/lisp/mm-bodies.el @@ -25,7 +25,7 @@ ;;; Code: (eval-and-compile - (or (fboundp 'base64-encode-region) + (or (fboundp 'base64-decode-region) (autoload 'base64-decode-region "base64" nil t))) (require 'mm-util) (require 'rfc2047) @@ -120,9 +120,8 @@ The characters in CHARSET should then be decoded." (when (and charset (setq mule-charset (mm-charset-to-coding-system charset)) buffer-file-coding-system - ;;(not (mm-coding-system-equal - ;; buffer-file-coding-system mule-charset)) - ) + (or (not (eq mule-charset 'ascii)) + (setq mule-charset rfc2047-default-charset))) (mm-decode-coding-region (point-min) (point-max) mule-charset)))))) (provide 'mm-bodies) diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index 027a46a..487b63e 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -192,16 +192,37 @@ (if (functionp method) (let ((cur (current-buffer))) (switch-to-buffer (generate-new-buffer "*mm*")) + (buffer-disable-undo) + (mm-set-buffer-file-coding-system 'no-conversion) (insert-buffer-substring cur) (funcall method) (mm-handle-set-undisplayer handle (current-buffer))) - (let* ((file (make-temp-name (expand-file-name "emm." mm-tmp-directory))) - process) + (let* ((dir (make-temp-name (expand-file-name "emm." mm-tmp-directory))) + (filename (mail-content-type-get + (mm-handle-disposition handle) 'filename)) + (needsterm (assoc "needsterm" + (mailcap-mime-info + (car (mm-handle-type handle)) t))) + process file) + ;; We create a private sub-directory where we store our files. + (make-directory dir) + (set-file-modes dir 448) + (if filename + (setq file (expand-file-name (or filename "mm.") dir)) + (setq file (make-temp-name (expand-file-name "mm." dir)))) (write-region (point-min) (point-max) file nil 'nomesg nil 'no-conversion) (setq process - (start-process "*display*" nil shell-file-name - "-c" (format method file))) + (if needsterm + (start-process "*display*" nil + "xterm" + "-e" (format method file)) + (switch-to-buffer (generate-new-buffer "*mm*")) + (buffer-disable-undo) + (mm-set-buffer-file-coding-system 'no-conversion) + (start-process "*display*" (current-buffer) + shell-file-name + "-c" (format method file)))) (mm-handle-set-undisplayer handle (cons file process)) (message "Displaying %s..." (format method file)))))) @@ -223,6 +244,9 @@ (delete-file (car object)) (error nil)) (condition-case () + (delete-directory (file-name-directory (car object))) + (error nil)) + (condition-case () (kill-process (cdr object)) (error nil))) ((bufferp object) @@ -305,6 +329,8 @@ This overrides entries in the mailcap file." (mm-decode-content-transfer-encoding (mm-handle-encoding handle)) (buffer-string))) +(defvar mm-default-directory nil) + (defun mm-save-part (handle) "Write HANDLE to a file." (let* ((name (mail-content-type-get (mm-handle-type handle) 'name)) @@ -316,7 +342,9 @@ This overrides entries in the mailcap file." (setq file (read-file-name "Save MIME part to: " (expand-file-name - (or filename name "") default-directory))) + (or filename name "") + (or mm-default-directory default-directory)))) + (setq mm-default-directory (file-name-directory file)) (mm-with-unibyte-buffer (insert-buffer-substring (mm-handle-buffer handle)) (mm-decode-content-transfer-encoding (mm-handle-encoding handle)) diff --git a/lisp/mm-util.el b/lisp/mm-util.el index c8e21b3..fecab8e 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -84,6 +84,7 @@ (device-type . ignore) (coding-system-equal . equal) (annotationp . ignore) + (set-buffer-file-coding-system . ignore) (make-char . (lambda (charset int) (int-to-char int))) @@ -96,8 +97,7 @@ (defvar mm-charset-coding-system-alist (let ((rest - '((us-ascii . iso-8859-1) - (gb2312 . cn-gb-2312) + '((gb2312 . cn-gb-2312) (iso-2022-jp-2 . iso-2022-7bit-ss2) (x-ctext . ctext))) (systems (mm-coding-system-list)) @@ -139,6 +139,9 @@ used as the line break code type of the coding system." ((and (null (mm-coding-system-list)) (memq charset mm-known-charsets)) charset) + ;; ascii + ((eq charset 'us-ascii) + 'ascii) ;; Check to see whether we can handle this charset. ((memq charset (mm-coding-system-list)) charset) diff --git a/lisp/nnbabyl.el b/lisp/nnbabyl.el index def1e0c..5615341 100644 --- a/lisp/nnbabyl.el +++ b/lisp/nnbabyl.el @@ -574,7 +574,7 @@ (cons (cons (point-min) (point-max)) major-mode)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (widen) (setq buffer-read-only nil) (fundamental-mode) diff --git a/lisp/nndoc.el b/lisp/nndoc.el index 99aacd1..0fe68e4 100644 --- a/lisp/nndoc.el +++ b/lisp/nndoc.el @@ -290,6 +290,7 @@ from the document.") (setq nndoc-dissection-alist nil) (save-excursion (set-buffer nndoc-current-buffer) + (mm-enable-multibyte) (erase-buffer) (if (stringp nndoc-address) (nnheader-insert-file-contents nndoc-address) diff --git a/lisp/nneething.el b/lisp/nneething.el index 6aaa529..700dad8 100644 --- a/lisp/nneething.el +++ b/lisp/nneething.el @@ -314,7 +314,7 @@ If this variable is nil, no files will be excluded.") (save-excursion (set-buffer (get-buffer-create nneething-work-buffer)) (setq case-fold-search nil) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (erase-buffer) (cond ((not (file-exists-p file)) diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index 3c58529..5d0d80f 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -704,7 +704,7 @@ deleted. Point is left where the deleted region was." (minid (lsh -1 -1)) maxid start end newscantime buffer-read-only) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (setq maxid (cdr active)) (goto-char (point-min)) diff --git a/lisp/nnheader.el b/lisp/nnheader.el index b8f739e..41c064e 100644 --- a/lisp/nnheader.el +++ b/lisp/nnheader.el @@ -494,7 +494,7 @@ the line could be found." (defun nnheader-set-temp-buffer (name &optional noerase) "Set-buffer to an empty (possibly new) buffer called NAME with undo disabled." (set-buffer (get-buffer-create name)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (unless noerase (erase-buffer)) (current-buffer)) diff --git a/lisp/nnmail.el b/lisp/nnmail.el index 1c109c2..7bc8c23 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -1507,9 +1507,9 @@ See the documentation for the variable `nnmail-split-fancy' for documentation." ;; Let the backend save the article (or not). (cond ((not duplication) - (nnmail-cache-insert message-id) (funcall func (setq group-art - (nreverse (nnmail-article-group artnum-func))))) + (nreverse (nnmail-article-group artnum-func)))) + (nnmail-cache-insert message-id)) ((eq action 'delete) (setq group-art nil)) ((eq action 'warn) diff --git a/lisp/nnmbox.el b/lisp/nnmbox.el index 9416cdc..8617d9b 100644 --- a/lisp/nnmbox.el +++ b/lisp/nnmbox.el @@ -166,6 +166,7 @@ (nnmbox-article-group-number))))))) (deffoo nnmbox-request-group (group &optional server dont-check) + (nnmbox-possibly-change-newsgroup nil server) (let ((active (cadr (assoc group nnmbox-group-alist)))) (cond ((or (null active) @@ -426,7 +427,8 @@ (set-buffer (setq nnmbox-mbox-buffer (nnheader-find-file-noselect nnmbox-mbox-file nil 'raw))) - (buffer-disable-undo (current-buffer)))) + (mm-enable-multibyte) + (buffer-disable-undo))) (when (not nnmbox-group-alist) (nnmail-activate 'nnmbox)) (if newsgroup @@ -514,7 +516,7 @@ (nnheader-find-file-noselect nnmbox-mbox-file nil 'raw))) (mm-enable-multibyte) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) ;; Go through the group alist and compare against ;; the mbox file. diff --git a/lisp/nnml.el b/lisp/nnml.el index a8f1e48..dd1c312 100644 --- a/lisp/nnml.el +++ b/lisp/nnml.el @@ -771,7 +771,7 @@ all. This may very well take some time.") (save-excursion ;; Init the nov buffer. (set-buffer nov-buffer) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (erase-buffer) (set-buffer nntp-server-buffer) ;; Delete the old NOV file. diff --git a/lisp/nnsoup.el b/lisp/nnsoup.el index 253557e..4931808 100644 --- a/lisp/nnsoup.el +++ b/lisp/nnsoup.el @@ -530,7 +530,7 @@ backend for the messages.") (when (file-exists-p (concat nnsoup-directory file)) (save-excursion ; Load the file. (set-buffer (get-buffer-create buffer-name)) - (buffer-disable-undo (current-buffer)) + (buffer-disable-undo) (push (cons nnsoup-current-group (current-buffer)) nnsoup-buffers) (nnheader-insert-file-contents (concat nnsoup-directory file)) (current-buffer)))))) diff --git a/lisp/rfc2047.el b/lisp/rfc2047.el index 8878a78..ea36d60 100644 --- a/lisp/rfc2047.el +++ b/lisp/rfc2047.el @@ -59,7 +59,7 @@ The values can be: (iso-8859-3 . Q) (iso-8859-4 . Q) (iso-8859-5 . B) - (koi8-r . Q) + (koi8-r . B) (iso-8859-7 . Q) (iso-8859-8 . Q) (iso-8859-9 . Q) @@ -232,7 +232,7 @@ Should be called narrowed to the head of the message." (goto-char (point-min)) (while (not (eobp)) (goto-char (min (point-max) (+ 64 (point)))) - (search-backward "=" nil (- (point) 2)) + (search-backward "=" (- (point) 2) t) (unless (eobp) (insert "\n"))))))) @@ -304,6 +304,8 @@ Valid ENCODINGs are \"B\" and \"Q\". If your Emacs implementation can't decode CHARSET, it returns nil." (let ((cs (mm-charset-to-coding-system charset))) (when cs + (when (eq cs 'ascii) + (setq cs rfc2047-default-charset)) (mm-decode-coding-string (cond ((equal "B" encoding) diff --git a/make.bat b/make.bat index 4a6b8a0..d183af9 100755 --- a/make.bat +++ b/make.bat @@ -1,57 +1,57 @@ -@echo off - -rem Written by David Charlap - -rem There are two catches, however. The emacs.bat batch file may not exist -rem in all distributions. It is part of the Voelker build of Emacs 19.34 -rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html). If the user -rem installs Gnus with some other build, he may have to replace calls to -rem %1\emacs.bat with something else. -rem -rem Also, the emacs.bat file that Voelker ships does not accept more than 9 -rem parameters, so the attempts to compile the .texi files will fail. To -rem fix that (at least on NT. I don't know about Win95), the following -rem change should be made to emacs.bat: -rem -rem %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 -rem -rem should become -rem -rem %emacs_dir%\bin\emacs.exe %* -rem -rem which will allow the batch file to accept an unlimited number of -rem parameters. - -if "%1" == "" goto usage - -cd lisp -call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile -if not "%2" == "copy" goto info -copy *.el* %1\lisp - -:info -cd ..\texi -call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer -call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer -if not "%2" == "copy" goto done -copy gnus %1\info -copy gnus-?? %1\info -copy message %1\info - -:etc -cd ..\etc -copy gnus-tut.txt %1\etc - -:done -cd .. -goto end - -:usage -echo Usage: make ^ [copy] -echo. -echo where: ^ is the directory you installed emacs in -echo eg. d:\emacs\19.34 -echo copy indicates that the compiled files should be copied to your -echo emacs lisp, info, and etc directories - -:end +@echo off + +rem Written by David Charlap + +rem There are two catches, however. The emacs.bat batch file may not exist +rem in all distributions. It is part of the Voelker build of Emacs 19.34 +rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html). If the user +rem installs Gnus with some other build, he may have to replace calls to +rem %1\emacs.bat with something else. +rem +rem Also, the emacs.bat file that Voelker ships does not accept more than 9 +rem parameters, so the attempts to compile the .texi files will fail. To +rem fix that (at least on NT. I don't know about Win95), the following +rem change should be made to emacs.bat: +rem +rem %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 +rem +rem should become +rem +rem %emacs_dir%\bin\emacs.exe %* +rem +rem which will allow the batch file to accept an unlimited number of +rem parameters. + +if "%1" == "" goto usage + +cd lisp +call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile +if not "%2" == "copy" goto info +copy *.el* %1\lisp + +:info +cd ..\texi +call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer +call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer +if not "%2" == "copy" goto done +copy gnus %1\info +copy gnus-?? %1\info +copy message %1\info + +:etc +cd ..\etc +copy gnus-tut.txt %1\etc + +:done +cd .. +goto end + +:usage +echo Usage: make ^ [copy] +echo. +echo where: ^ is the directory you installed emacs in +echo eg. d:\emacs\19.34 +echo copy indicates that the compiled files should be copied to your +echo emacs lisp, info, and etc directories + +:end -- 1.7.10.4