From 63d481308f1d3e4e7ba15462821579e64bafff11 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Mon, 7 May 2001 00:20:40 +0000 Subject: [PATCH] T-gnus 6.15.3 revision 00 (Synch with Oort Gnus v0.03) --- ChangeLog | 4 ++ README.T-gnus | 2 +- lisp/ChangeLog | 77 ++++++++++++++++++++++++++ lisp/gnus-srvr.el | 2 +- lisp/gnus-sum.el | 41 +++++++++----- lisp/gnus-vers.el | 6 +-- lisp/gnus.el | 8 +-- lisp/imap.el | 2 +- lisp/mail-source.el | 3 +- lisp/mm-uu.el | 11 ++-- lisp/mm-view.el | 39 ++++++++++---- lisp/nnmail.el | 8 ++- lisp/nnrss.el | 16 ++++-- lisp/nntp.el | 149 ++++++++++++++++++++++++++------------------------- lisp/nnultimate.el | 37 +++++++++---- lisp/smime.el | 56 ++++++++++++++++--- texi/ChangeLog | 14 +++++ texi/gnus-ja.texi | 59 ++++++++++++++++---- texi/gnus.texi | 51 ++++++++++++++++-- 19 files changed, 428 insertions(+), 157 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3220590..f48d683 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2001-05-07 Katsumi Yamaoka + + * lisp/gnus-vers.el: T-gnus 6.15.3 revision 00. + 2001-04-27 Katsumi Yamaoka * lisp/gnus-vers.el (gnus-revision-number): Increment to 01. diff --git a/README.T-gnus b/README.T-gnus index 5555dd6..8aab2e8 100644 --- a/README.T-gnus +++ b/README.T-gnus @@ -33,6 +33,6 @@ NEWS: * T-gnus 6.15 - this is based on Oort Gnus. - The latest T-gnus is T-gnus 6.15.2 (based on Oort Gnus 0.02). It + The latest T-gnus is T-gnus 6.15.3 (based on Oort Gnus 0.03). It requires SEMI/WEMI (1.13.5 or later), FLIM (1.13.1 or later), and APEL (10.0 or later). diff --git a/lisp/ChangeLog b/lisp/ChangeLog index af6700b..1ddd422 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,80 @@ +2001-05-01 19:21:19 Lars Magne Ingebrigtsen + + * gnus.el: Oort Gnus v0.03 is released. + +2001-05-01 19:06:21 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-topic-article-to-article): Use the + group. + +2001-04-24 19:50:14 Lars Magne Ingebrigtsen + + * gnus-srvr.el (gnus-server-insert-server-line): Add a space. + +2001-04-15 14:55:03 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-retrieve-headers): Return all + available headers. + + * gnus-sum.el (gnus-read-all-available-headers): New variable. + (gnus-get-newsgroup-headers-xover): Use it. + +2001-04-14 15:47:26 Lars Magne Ingebrigtsen + + * nnultimate.el (nnultimate-retrieve-headers): Clean up. + +2001-04-30 17:00:00 ShengHuo ZHU + + * nntp.el (nntp-retrieve-groups): Use throw instead of error. + +2001-04-29 09:00:00 ShengHuo ZHU + + * nnrss.el (nnrss-insert-w3): Use cache before I figure out how to + disable it. + + * gnus.el (gnus-info-nodes): Remove a few The's. + +2001-04-29 08:00:00 ShengHuo ZHU + + * mail-source.el (mail-source-movemail): Call-process may return a + signal description string. + + * gnus-start.el (gnus-read-newsrc-el-file): + gnus-newsrc-file-version may be nil. + + * nnmail.el (nnmail-get-new-mail): Use the exact file only. + Suggested by Michael Sperber [Mr. Preprocessor] + . + +2001-04-25 Per Abrahamsen + + * mm-uu.el (mm-uu-configure-list): Fixed customize type. + +2001-04-24 Hrvoje Niksic + + * mm-view.el (mm-display-inline-fontify): Allow XEmacs to fully + fontify HANDLE. + +2001-04-18 Simon Josefsson + + * smime.el (smime-ask-passphrase): Rework to return value. + (smime-sign-region): Rework to bind value and use it. + (smime-decrypt-region): Ditto. + +2001-04-18 Mathias Herberts + Committed by Simon Josefsson + + * smime.el (smime-ask-passphrase): New function. + (smime-sign-region): Use it. + (smime-encrypt-cipher): New variable. + (smime-decrypt-region): Ditto. + +2001-04-12 Jason Merrill + Committed by Simon Josefsson + + * imap.el (imap-shell-open): Erase the buffer *after* copying it into + the log. + 2001-04-14 01:14:42 Lars Magne Ingebrigtsen *gnus.el: Oort Gnus v0.02 is released. diff --git a/lisp/gnus-srvr.el b/lisp/gnus-srvr.el index 9d5648f..729899a 100644 --- a/lisp/gnus-srvr.el +++ b/lisp/gnus-srvr.el @@ -189,7 +189,7 @@ The following commands are available: (gnus-tmp-agent (if (and gnus-agent (member method gnus-agent-covered-methods)) - "(agent)" + " (agent)" ""))) (beginning-of-line) (gnus-add-text-properties diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index d2be9e7..504b09b 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -1008,6 +1008,13 @@ when prompting the user for which type of files to save." :group 'gnus-summary :type 'regexp) +(defcustom gnus-read-all-available-headers nil + "Whether Gnus should parse all headers made available to it. +This is mostly relevant for slow backends where the user may +wish to widen the summary buffer to include all headers +that were fetched. Say, for nnultimate groups." + :group 'gnus-summary + :type '(choice boolean regexp)) ;;; Internal variables @@ -5143,6 +5150,13 @@ Return a list of headers that match SEQUENCE (see (mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets) (cur nntp-server-buffer) (dependencies (or dependencies gnus-newsgroup-dependencies)) + (allp (cond + ((eq gnus-read-all-available-headers t) + t) + ((stringp gnus-read-all-available-headers) + (string-match gnus-read-all-available-headers group)) + (t + nil))) number headers header) (save-excursion (set-buffer nntp-server-buffer) @@ -5152,19 +5166,22 @@ Return a list of headers that match SEQUENCE (see (goto-char (point-min)) (while (not (eobp)) (condition-case () - (while (and sequence (not (eobp))) + (while (and (or sequence allp) + (not (eobp))) (setq number (read cur)) - (while (and sequence - (< (car sequence) number)) - (setq sequence (cdr sequence))) - (and sequence - (eq number (car sequence)) - (progn - (setq sequence (cdr sequence)) - (setq header (inline - (gnus-nov-parse-line - number dependencies force-new)))) - (push header headers)) + (when (not allp) + (while (and sequence + (< (car sequence) number)) + (setq sequence (cdr sequence)))) + (when (and (or allp + (and sequence + (eq number (car sequence)))) + (progn + (setq sequence (cdr sequence)) + (setq header (inline + (gnus-nov-parse-line + number dependencies force-new))))) + (push header headers)) (forward-line 1)) (error (gnus-error 4 "Strange nov line (%d)" diff --git a/lisp/gnus-vers.el b/lisp/gnus-vers.el index 9343925..3fd3e96 100644 --- a/lisp/gnus-vers.el +++ b/lisp/gnus-vers.el @@ -34,16 +34,16 @@ (require 'product) (provide 'gnus-vers) -(defconst gnus-revision-number "01" +(defconst gnus-revision-number "00" "Revision number for this version of gnus.") ;; Product information of this gnus. (product-provide 'gnus-vers (product-define "T-gnus" nil - (list 6 15 2 + (list 6 15 3 (string-to-number gnus-revision-number)))) -(defconst gnus-original-version-number "0.02" +(defconst gnus-original-version-number "0.03" "Version number for this version of Gnus.") (provide 'running-pterodactyl-gnus-0_73-or-later) diff --git a/lisp/gnus.el b/lisp/gnus.el index 9538a62..4f4dca2 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -1822,10 +1822,10 @@ This variable can be nil, gnus or gnus-ja." (const :tag "Japanese" gnus-ja))) (defvar gnus-info-nodes - '((gnus-group-mode "The Group Buffer") - (gnus-summary-mode "The Summary Buffer") - (gnus-article-mode "The Article Buffer") - (gnus-server-mode "The Server Buffer") + '((gnus-group-mode "Group Buffer") + (gnus-summary-mode "Summary Buffer") + (gnus-article-mode "Article Buffer") + (gnus-server-mode "Server Buffer") (gnus-browse-mode "Browse Foreign Server") (gnus-tree-mode "Tree Display")) "Alist of major modes and related Info nodes.") diff --git a/lisp/imap.el b/lisp/imap.el index ec2585b..110760a 100644 --- a/lisp/imap.el +++ b/lisp/imap.el @@ -644,12 +644,12 @@ If ARGS, PROMPT is used as an argument to `format'." (not (imap-parse-greeting))) (accept-process-output process 1) (sit-for 1)) - (erase-buffer) (and imap-log (with-current-buffer (get-buffer-create imap-log) (buffer-disable-undo) (goto-char (point-max)) (insert-buffer-substring buffer))) + (erase-buffer) (when (memq (process-status process) '(open run)) (setq done process))))) (if done diff --git a/lisp/mail-source.el b/lisp/mail-source.el index e4df22c..22aec7a 100644 --- a/lisp/mail-source.el +++ b/lisp/mail-source.el @@ -541,8 +541,9 @@ Pass INFO on to CALLBACK." (goto-char (point-min)) (when (looking-at "movemail: ") (delete-region (point-min) (match-end 0))) + ;; Result may be a signal description string. (unless (yes-or-no-p - (format "movemail: %s (%d return). Continue? " + (format "movemail: %s (%s return). Continue? " (buffer-string) result)) (error "%s" (buffer-string))) (setq to nil))))))) diff --git a/lisp/mm-uu.el b/lisp/mm-uu.el index dd79e12..5893298 100644 --- a/lisp/mm-uu.el +++ b/lisp/mm-uu.el @@ -132,13 +132,10 @@ This can be either \"inline\" or \"attachment\".") "A list of mm-uu configuration. To disable dissecting shar codes, for instance, add `(shar . disabled)' to this list." - :type `(repeat (cons - ,(cons 'choice - (mapcar - (lambda (entry) - (cons 'item (car entry))) - mm-uu-type-alist)) - (choice (item disabled)))) + :type 'alist + :options (mapcar (lambda (entry) + (list (car entry) '(const disabled))) + mm-uu-type-alist) :group 'gnus-article-mime) ;; functions diff --git a/lisp/mm-view.el b/lisp/mm-view.el index 639c32e..976cdff 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -266,18 +266,37 @@ (defun mm-display-inline-fontify (handle mode) (let (text) - (with-temp-buffer - (mm-insert-part handle) - (funcall mode) - (font-lock-fontify-buffer) - (when (fboundp 'extent-list) - (map-extents (lambda (ext ignored) - (set-extent-property ext 'duplicable t) - nil) - nil nil nil nil nil 'text-prop)) - (setq text (buffer-string))) + ;; XEmacs @#$@ version of font-lock refuses to fully turn itself + ;; on for buffers whose name begins with " ". That's why we use + ;; save-current-buffer/get-buffer-create rather than + ;; with-temp-buffer. + (save-current-buffer + (set-buffer (generate-new-buffer "*fontification*")) + (unwind-protect + (progn + (buffer-disable-undo) + (mm-insert-part handle) + (funcall mode) + (let ((font-lock-verbose nil)) + ;; I find font-lock a bit too verbose. + (font-lock-fontify-buffer)) + ;; By default, XEmacs font-lock uses non-duplicable text + ;; properties. This code forces all the text properties + ;; to be copied along with the text. + (when (fboundp 'extent-list) + (map-extents (lambda (ext ignored) + (set-extent-property ext 'duplicable t) + nil) + nil nil nil nil nil 'text-prop)) + (setq text (buffer-string))) + (kill-buffer (current-buffer)))) (mm-insert-inline handle text))) +;; Shouldn't these functions check whether the user even wants to use +;; font-lock? At least under XEmacs, this fontification is pretty +;; much unconditional. Also, it would be nice to change for the size +;; of the fontified region. + (defun mm-display-patch-inline (handle) (mm-display-inline-fontify handle 'diff-mode)) diff --git a/lisp/nnmail.el b/lisp/nnmail.el index 912a232..939d853 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -1576,11 +1576,9 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (list :predicate `(lambda (file) - (string-match - ,(concat - (regexp-quote (concat group suffix)) - "$") - file))))))) + (string-equal + ,(concat group suffix) + (file-name-nondirectory file)))))))) (when nnmail-fetched-sources (if (member source nnmail-fetched-sources) (setq source nil) diff --git a/lisp/nnrss.el b/lisp/nnrss.el index e8f3332..db7e1c9 100644 --- a/lisp/nnrss.el +++ b/lisp/nnrss.el @@ -310,12 +310,18 @@ (defun nnrss-no-cache (url) "") +;; TODO:: disable cache. +;; +;; (defun nnrss-insert-w3 (url) +;; (require 'url) +;; (require 'url-cache) +;; (let ((url-cache-creation-function 'nnrss-no-cache)) +;; (mm-with-unibyte-current-buffer +;; (nnweb-insert url)))) + (defun nnrss-insert-w3 (url) - (require 'url) - (require 'url-cache) - (let ((url-cache-creation-function 'nnrss-no-cache)) - (mm-with-unibyte-current-buffer - (nnweb-insert url)))) + (mm-with-unibyte-current-buffer + (nnweb-insert url))) (defun nnrss-decode-entities-unibyte-string (string) (mm-with-unibyte-buffer diff --git a/lisp/nntp.el b/lisp/nntp.el index a1ea1e7..092e8a2 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -532,84 +532,85 @@ noticing asynchronous data.") "Retrieve group info on GROUPS." (nntp-possibly-change-group nil server) (when (nntp-find-connection-buffer nntp-server-buffer) - (save-excursion - ;; Erase nntp-server-buffer before nntp-inhibit-erase. - (set-buffer nntp-server-buffer) - (erase-buffer) - (set-buffer (nntp-find-connection-buffer nntp-server-buffer)) - ;; The first time this is run, this variable is `try'. So we - ;; try. - (when (eq nntp-server-list-active-group 'try) - (nntp-try-list-active (car groups))) - (erase-buffer) - (let ((count 0) - (received 0) - (last-point (point-min)) - (nntp-inhibit-erase t) - (buf (nntp-find-connection-buffer nntp-server-buffer)) - (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP"))) - (while groups - ;; Send the command to the server. - (nntp-send-command nil command (pop groups)) - (incf count) - ;; Every 400 requests we have to read the stream in - ;; order to avoid deadlocks. - (when (or (null groups) ;All requests have been sent. - (zerop (% count nntp-maximum-request))) - (nntp-accept-response) + (catch 'done + (save-excursion + ;; Erase nntp-server-buffer before nntp-inhibit-erase. + (set-buffer nntp-server-buffer) + (erase-buffer) + (set-buffer (nntp-find-connection-buffer nntp-server-buffer)) + ;; The first time this is run, this variable is `try'. So we + ;; try. + (when (eq nntp-server-list-active-group 'try) + (nntp-try-list-active (car groups))) + (erase-buffer) + (let ((count 0) + (received 0) + (last-point (point-min)) + (nntp-inhibit-erase t) + (buf (nntp-find-connection-buffer nntp-server-buffer)) + (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP"))) + (while groups + ;; Send the command to the server. + (nntp-send-command nil command (pop groups)) + (incf count) + ;; Every 400 requests we have to read the stream in + ;; order to avoid deadlocks. + (when (or (null groups) ;All requests have been sent. + (zerop (% count nntp-maximum-request))) + (nntp-accept-response) + (while (and (gnus-buffer-live-p buf) + (progn + ;; Search `blue moon' in this file for the + ;; reason why set-buffer here. + (set-buffer buf) + (goto-char last-point) + ;; Count replies. + (while (re-search-forward "^[0-9]" nil t) + (incf received)) + (setq last-point (point)) + (< received count))) + (nntp-accept-response)))) + + ;; Wait for the reply from the final command. + (unless (gnus-buffer-live-p buf) + (nnheader-report 'nntp "Connection to %s is closed." server) + (throw 'done nil)) + (set-buffer buf) + (goto-char (point-max)) + (re-search-backward "^[0-9]" nil t) + (when (looking-at "^[23]") (while (and (gnus-buffer-live-p buf) (progn - ;; Search `blue moon' in this file for the - ;; reason why set-buffer here. (set-buffer buf) - (goto-char last-point) - ;; Count replies. - (while (re-search-forward "^[0-9]" nil t) - (incf received)) - (setq last-point (point)) - (< received count))) - (nntp-accept-response)))) - - ;; Wait for the reply from the final command. - (unless (gnus-buffer-live-p buf) - (error - (nnheader-report 'nntp "Connection to %s is closed." server))) - (set-buffer buf) - (goto-char (point-max)) - (re-search-backward "^[0-9]" nil t) - (when (looking-at "^[23]") - (while (and (gnus-buffer-live-p buf) - (progn - (set-buffer buf) - (goto-char (point-max)) - (if (not nntp-server-list-active-group) - (not (re-search-backward "\r?\n" (- (point) 3) t)) - (not (re-search-backward "^\\.\r?\n" - (- (point) 4) t))))) - (nntp-accept-response))) - - ;; Now all replies are received. We remove CRs. - (unless (gnus-buffer-live-p buf) - (error - (nnheader-report 'nntp "Connection to %s is closed." server))) - (set-buffer buf) - (goto-char (point-min)) - (while (search-forward "\r" nil t) - (replace-match "" t t)) - - (if (not nntp-server-list-active-group) - (progn - (copy-to-buffer nntp-server-buffer (point-min) (point-max)) - 'group) - ;; We have read active entries, so we just delete the - ;; superfluous gunk. + (goto-char (point-max)) + (if (not nntp-server-list-active-group) + (not (re-search-backward "\r?\n" (- (point) 3) t)) + (not (re-search-backward "^\\.\r?\n" + (- (point) 4) t))))) + (nntp-accept-response))) + + ;; Now all replies are received. We remove CRs. + (unless (gnus-buffer-live-p buf) + (nnheader-report 'nntp "Connection to %s is closed." server) + (throw 'done nil)) + (set-buffer buf) (goto-char (point-min)) - (while (re-search-forward "^[.2-5]" nil t) - (delete-region (match-beginning 0) - (progn (forward-line 1) (point)))) - (copy-to-buffer nntp-server-buffer (point-min) (point-max)) - 'active))))) - + (while (search-forward "\r" nil t) + (replace-match "" t t)) + + (if (not nntp-server-list-active-group) + (progn + (copy-to-buffer nntp-server-buffer (point-min) (point-max)) + 'group) + ;; We have read active entries, so we just delete the + ;; superfluous gunk. + (goto-char (point-min)) + (while (re-search-forward "^[.2-5]" nil t) + (delete-region (match-beginning 0) + (progn (forward-line 1) (point)))) + (copy-to-buffer nntp-server-buffer (point-min) (point-max)) + 'active)))))) + (deffoo nntp-retrieve-articles (articles &optional group server) (nntp-possibly-change-group group server) (save-excursion diff --git a/lisp/nnultimate.el b/lisp/nnultimate.el index 4ed3377..3f69d36 100644 --- a/lisp/nnultimate.el +++ b/lisp/nnultimate.el @@ -86,6 +86,8 @@ (setq map mapping) (while (and (setq article (car articles)) map) + ;; Skip past the articles in the map until we reach the + ;; article we're looking for. (while (and map (or (> article (caar map)) (< (cadar map) (caar map)))) @@ -139,14 +141,21 @@ (setq contents (cdr (nth 2 (car (nth 2 table))))) (setq total-contents (nconc total-contents contents)) (incf current-page)) - ;;(setq total-contents (nreverse total-contents)) - (dolist (art (cdr elem)) - (if (not (nth (1- (cdr art)) total-contents)) - () ;(debug) - (push (list (car art) - (nth (1- (cdr art)) total-contents) - subject) - nnultimate-articles))))) + (when t + (let ((i 0)) + (dolist (co total-contents) + (push (list (or (nnultimate-topic-article-to-article + group (car elem) (incf i)) + 1) + co subject) + nnultimate-articles)))) + (when nil + (dolist (art (cdr elem)) + (when (nth (1- (cdr art)) total-contents) + (push (list (car art) + (nth (1- (cdr art)) total-contents) + subject) + nnultimate-articles)))))) (setq nnultimate-articles (sort nnultimate-articles 'car-less-than-car)) ;; Now we have all the articles, conveniently in an alist @@ -191,7 +200,7 @@ from (or date "") (concat "<" (number-to-string sid) "%" (number-to-string article) - "@ultimate>") + "@ultimate." server ">") "" 0 (/ (length (mapconcat 'identity @@ -210,6 +219,16 @@ (nnheader-insert-nov (cdr header)))))) 'nov))) +(defun nnultimate-topic-article-to-article (group topic article) + (catch 'found + (dolist (elem (nth 5 (assoc group nnultimate-groups))) + (when (and (= topic (nth 2 elem)) + (>= article (nth 3 elem)) + (< article (+ (- (nth 1 elem) (nth 0 elem)) 1 + (nth 3 elem)))) + (throw 'found + (+ (nth 0 elem) (- article (nth 3 elem)))))))) + (deffoo nnultimate-request-group (group &optional server dont-check) (nnultimate-possibly-change-server nil server) (when (not nnultimate-groups) diff --git a/lisp/smime.el b/lisp/smime.el index 58be1ae..7035ac8 100644 --- a/lisp/smime.el +++ b/lisp/smime.el @@ -85,6 +85,10 @@ ;; that decision. One might think that this even influenced were I ;; store my keys, and one would probably be right. :-) ;; +;; Update: Mathias Herberts sent the patch. However, it uses +;; environment variables to pass the password to OpenSSL, which is +;; slightly insecure. Hence a new todo: use a better -passin method. +;; ;; Suggestions and comments are appreciated, mail me at simon@josefsson.org. ;; @@ -108,6 +112,7 @@ ;;; Code: (require 'dig) +(require 'comint) (eval-when-compile (require 'cl)) (defgroup smime nil @@ -159,6 +164,17 @@ and the files themself should be in PEM format." :type 'string :group 'smime) +;; OpenSSL option to select the encryption cipher + +(defcustom smime-encrypt-cipher "-des3" + "Cipher algorithm used for encryption." + :type '(choice (const :tag "Triple DES" "-des3") + (const :tag "DES" "-des") + (const :tag "RC2 40 bits" "-rc2-40") + (const :tag "RC2 64 bits" "-rc2-64") + (const :tag "RC2 128 bits" "-rc2-128")) + :group 'smime) + (defcustom smime-dns-server nil "DNS server to query certificates from. If nil, use system defaults." @@ -168,6 +184,17 @@ If nil, use system defaults." (defvar smime-details-buffer "*OpenSSL output*") +;; Password dialog function + +(defun smime-ask-passphrase () + "Asks the passphrase to unlock the secret key." + (let ((passphrase + (comint-read-noecho + "Passphrase for secret key (RET for no passphrase): " t))) + (if (string= passphrase "") + nil + passphrase))) + ;; OpenSSL wrappers. (defun smime-call-openssl-region (b e buf &rest args) @@ -186,15 +213,22 @@ If nil, use system defaults." If signing fails, the buffer is not modified. Region is assumed to have proper MIME tags. KEYFILE is expected to contain a PEM encoded private key and certificate." - (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))) + (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*"))) + (passphrase (smime-ask-passphrase))) + (if passphrase + (setenv "GNUS_SMIME_PASSPHRASE" passphrase)) (prog1 - (when (smime-call-openssl-region b e buffer "smime" "-sign" - "-signer" (expand-file-name keyfile)) + (when (apply 'smime-call-openssl-region b e buffer "smime" "-sign" + "-signer" (expand-file-name keyfile) + (if passphrase + (list "-passin" "env:GNUS_SMIME_PASSPHRASE"))) (delete-region b e) (insert-buffer buffer) (when (looking-at "^MIME-Version: 1.0$") (delete-region (point) (progn (forward-line 1) (point)))) t) + (if passphrase + (setenv "GNUS_SMIME_PASSPHRASE" "" t)) (with-current-buffer (get-buffer-create smime-details-buffer) (goto-char (point-max)) (insert-buffer buffer)) @@ -208,7 +242,7 @@ is expected to contain of a PEM encoded certificate." (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))) (prog1 (when (apply 'smime-call-openssl-region b e buffer "smime" "-encrypt" - (mapcar 'expand-file-name certfiles)) + smime-encrypt-cipher (mapcar 'expand-file-name certfiles)) (delete-region b e) (insert-buffer buffer) (when (looking-at "^MIME-Version: 1.0$") @@ -277,11 +311,17 @@ nil." (defun smime-decrypt-region (b e keyfile) (let ((buffer (generate-new-buffer (generate-new-buffer-name "*smime*"))) - CAs) - (when (apply 'smime-call-openssl-region b e buffer "smime" "-decrypt" - "-recip" (list keyfile)) - + CAs (passphrase (smime-ask-passphrase))) + (if passphrase + (setenv "GNUS_SMIME_PASSPHRASE" passphrase)) + (when (apply 'smime-call-openssl-region + b e buffer "smime" "-decrypt" + "-recip" (list keyfile) + (if passphrase + (list "-passin" "env:GNUS_SMIME_PASSPHRASE" ))) ) + (if passphrase + (setenv "GNUS_SMIME_PASSPHRASE" "" t)) (with-current-buffer (get-buffer-create smime-details-buffer) (goto-char (point-max)) (insert-buffer buffer)) diff --git a/texi/ChangeLog b/texi/ChangeLog index 1137890..e308649 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,17 @@ +2001-04-15 19:38:54 Lars Magne Ingebrigtsen + + * gnus.texi (Mail and Post): Fix. + +2001-04-29 09:00:00 ShengHuo ZHU + + * gnus.texi: Remove a few The's. + (RSS): New. + +2001-04-26 Kai Gro,A_(Bjohann + + * gnus.texi (Unread Articles): Say that dormants are similar to + ticked. + 2001-04-13 Kai Gro,A_(Bjohann * gnus.texi (Sorting Groups): Note `C-k' and `C-y' for manually diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index f8b5565..f8cb17a 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -494,7 +494,7 @@ New Groups * Subscription Methods:: $B?7$7$$%0%k!<%W$KBP$7$F(B gnus $B$O2?$r$9$Y$-$+(B * Filtering New Groups:: Gnus $B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k(B -The Group Buffer +Group Buffer * Group Buffer Format:: $BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!(B * Group Maneuvering:: $B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I(B @@ -535,7 +535,7 @@ Misc Group Stuff * Group Timestamp:: Gnus $B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k(B * File Commands:: Gnus $B$N%U%!%$%k$NFI$_=q$-(B -The Summary Buffer +Summary Buffer * Summary Buffer Format:: $B35N,%P%C%U%!$N304Q$r7hDj$9$k(B * Summary Maneuvering:: $B35N,%P%C%U%!$rF0$-2s$k(B @@ -648,7 +648,7 @@ Various Summary Stuff * Summary Generation Commands:: $B35N,%P%C%U%!$N(B ($B:F(B) $B:n@.(B * Really Various Summary Commands:: $B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na(B -The Article Buffer +Article Buffer * Hiding Headers:: $B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k(B * Using MIME:: @sc{mime} $B5-;v$H$7$F8+$;$k(B @@ -677,7 +677,7 @@ Select Methods * Combined Groups:: $BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k(B * Gnus Unplugged:: $B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`(B -The Server Buffer +Server Buffer * Server Buffer Format:: $B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k(B * Server Commands:: $B%5!<%P!<$rA`$kL?Na(B @@ -735,6 +735,7 @@ Browsing the Web * Ultimate:: Ultimate Bulletin Board $B%7%9%F%`(B * Web Archive:: $B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`(B * Web Newspaper:: $B%&%'%V$KJ]4I$5$l$??7J9$rFI$`(B +* RSS:: RDF Site Summary $B$rFI$`(B * Customizing w3:: Gnus $B$+$i(B Emacs/w3 $B$rA`:n$9$k(B Other Sources @@ -4901,7 +4902,8 @@ gnus $B<+BN$O2D;k5-;v$r4|8B@Z$l>C5n$7$^$;$s(B) $B$N$G!"1J1s$K5-;v$rJ]B8$7$F$* @dfn{$BJ]N15-;v(B}$B$O%U%)%m!<%"%C%W$,$"$C$?$H$-$K$@$135N,%P%C%U%!$K8=$l$^$9!#(B $B%U%)%m!<%"%C%W$,L5$$$H$-$bI=<($5$;$?$$$H$-$O!"L?Na(B @kbd{/ D} $B$r;H$&$3$H(B -$B$,$G$-$^$9!#(B +$B$,$G$-$^$9!#$=$l0J30$O(B ($B8+$($k$+$I$&$+$OJL$K$7$F(B)$B!"2D;k5-;v(B (Ticked) $B$H(B +$B;w$?$h$&$J$b$N$G$9!#(B @item SPACE @vindex gnus-unread-mark @@ -5724,6 +5726,17 @@ gnus $B$OA4$F$N5-;v$N40A4$J(B @code{References} $BMs$r8+$F!"F1$8%9%l%C%I$KB0$ $B!X$:$l!Y$r%9%l%C%I$rJd40$9$k$N$KLr$KN)$D$+$r9MN8$;$:$KI=<($7$^$9!#:G8e$K!"(B $B$3$NJQ?t$,(B @code{more} $B$G$"$k$H!"(Bgnus $B$O$I$3$K$b$D$J$,$C$F$$$J$$;^MU$N$^(B $B$P$i$J@a$r@Z$jMn$H$7$^$;$s!#$3$NJQ?t$O%G%#%U%)%k%H$G$O(B @code{nil} $B$G$9!#(B + +@item gnus-read-all-available-headers +@vindex gnus-read-all-available-headers +$B$3$l$O$I$A$i$+$H8@$($P$"$^$jLr$KN)$?$J$$JQ?t$G$9!#%K%e!<%9$G$O$J$$%0%k!<(B +$B%W$K$*$$$F35N,%P%C%U%!$,$H$F$bBg$-$/$J$j!"$7$+$b?F5-;v$rC)$k$3$H$,$G$-$J(B +$B$$>l9g$K;H$&$3$H$rA[Dj$7$F$$$^$9!#$=$l$Ol9g$O%G%#%U%)%k%H$N(B @code{nil} $B$N$^$^$K$7$F$*$/$N$,L5Fq$G(B +$B$9!#;H$$$?$$>l9g$O%0%k!<%WL>$K9gCW$9$k@55,I=8=$+!"$9$Y$F$N%0%k!<%WL>$K9g(B +$BCW$9$k(B @code{t} $B$K$7$F2<$5$$!#(B @end table @node More Threading @@ -9298,12 +9311,13 @@ gnus $B$O>o$KEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#(B @lisp (add-hook 'gnus-select-group-hook - (lambda () - (cond - ((string-match "^de\\." gnus-newsgroup-name) - (ispell-change-dictionary "deutsch")) - (t - (ispell-change-dictionary "english"))))) + (lambda () + (cond + ((string-match + "^de\\." (gnus-group-real-name gnus-newsgroup-name)) + (ispell-change-dictionary "deutsch")) + (t + (ispell-change-dictionary "english"))))) @end lisp $B$"$J$?$NI,MW$K1~$8$FJQ99$7$F2<$5$$!#(B @@ -12371,6 +12385,7 @@ Gnus $B$O$3$l$i$N%=!<%9$X$N3&LL$rDs6!$9$k%P%C%/%(%s%I72$r>/$7Hw$($D$D$"$j(B * Ultimate:: Ultimate Bulletin Board $B%7%9%F%`(B * Web Archive:: $B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`(B * Web Newspaper:: $B%&%'%V$KJ]4I$5$l$??7J9$rFI$`(B +* RSS:: RDF Site Summary $B$rFI$`(B * Customizing w3:: Gnus $B$+$i(B Emacs/w3 $B$rA`:n$9$k(B @end menu @@ -12658,6 +12673,28 @@ asahi RET an_group RET}$B!#(B(@sc{an_group} $B$r1\Mw$7$?$$5-;v%0%k!<%W$KCV$-4 (nnshimbun "asahi" (nnshimbun-url "http://iij.asahi.com/")) @end lisp +@node RSS +@subsection RSS +@cindex nnrss +@cindex RSS + +$B$$$/$D$+$N%5%$%H$O(B RDF site summary (RSS) $B$r;}$C$F$$$^(B +$B$9(B @uref{http://purl.org/rss/1.0/spec}$B!#$3$l$O$H$F$b5,B'E*$+$DNIo$K?7$7$/$7$F$*$/$?$a$N>pJs$rF@$k$3$H(B +$B$,$G$-$^$9!#(B + +$B4JC1$K(B @code{nnrss} $B$r;H$$;O$a$k$K$O!"%0%k!<%W%P%C%U%!(B +$B$G(B @kbd{B nnrss RET RET} $B$H%?%$%W$7$F!"%0%k!<%W$r9VFI$7$F2<$5$$!#(B + +$B0J2<$N(B @code{nnrss} $BJQ?t$,JQ992DG=$G$9(B: + +@table @code +@item nnrss-directory +@vindex nnrss-directory +@code{nnrss} $B$,%U%!%$%k$r=q$-9~$`%G%#%l%/%H%j!<$G!"%G%#%U%)%k%H(B +$B$O(B @samp{~/News/rss/} $B$G$9!#(B +@end table + @node Customizing w3 @subsection w3 $B$N%+%9%?%^%$%:(B @cindex w3 diff --git a/texi/gnus.texi b/texi/gnus.texi index 69a61fe..2d15b93 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -440,7 +440,7 @@ New Groups * Subscription Methods:: What Gnus should do with new groups. * Filtering New Groups:: Making Gnus ignore certain new groups. -The Group Buffer +Group Buffer * Group Buffer Format:: Information listed and how you can change it. * Group Maneuvering:: Commands for moving in the group buffer. @@ -481,7 +481,7 @@ Misc Group Stuff * Group Timestamp:: Making Gnus keep track of when you last read a group. * File Commands:: Reading and writing the Gnus files. -The Summary Buffer +Summary Buffer * Summary Buffer Format:: Deciding how the summary buffer is to look. * Summary Maneuvering:: Moving around the summary buffer. @@ -591,7 +591,7 @@ Various Summary Stuff * Summary Generation Commands:: (Re)generating the summary buffer. * Really Various Summary Commands:: Those pesky non-conformant commands. -The Article Buffer +Article Buffer * Hiding Headers:: Deciding what headers should be displayed. * Using MIME:: Pushing articles through @sc{mime} before reading them. @@ -620,7 +620,7 @@ Select Methods * Combined Groups:: Combining groups into one group. * Gnus Unplugged:: Reading news and mail offline. -The Server Buffer +Server Buffer * Server Buffer Format:: You can customize the look of this buffer. * Server Commands:: Commands to manipulate servers. @@ -672,6 +672,8 @@ Browsing the Web * Slashdot:: Reading the Slashdot comments. * Ultimate:: The Ultimate Bulletin Board systems. * Web Archive:: Reading mailing list archived on web. +* RSS:: Reading RDF site summary. +* Customizing w3:: Doing stuff to Emacs/w3 from Gnus. Other Sources @@ -4931,6 +4933,8 @@ Marked as dormant (@code{gnus-dormant-mark}). @dfn{Dormant articles} will only appear in the summary buffer if there are followups to it. If you want to see them even if they don't have followups, you can use the @kbd{/ D} command (@pxref{Limiting}). +Otherwise (except for the visibility issue), they are just like ticked +messages. @item SPACE @vindex gnus-unread-mark @@ -5790,6 +5794,18 @@ thread or not. Finally, if this variable is @code{more}, gnus won't cut off sparse leaf nodes that don't lead anywhere. This variable is @code{nil} by default. +@item gnus-read-all-available-headers +@vindex gnus-read-all-available-headers +This is a rather obscure variable that few will find useful. It's +intended for those non-news newsgroups where the backend has to fetch +quite a lot to present the summary buffer, and where it's impossible to +go back to parents of articles. This is mostly the case in the +web-based groups, like the @code{nnultimate} groups. + +If you don't use those, then it's safe to leave this as the default +@code{nil}. If you want to use this variable, it should be a regexp +that matches the group name, or @code{t} for all groups. + @end table @@ -9734,7 +9750,8 @@ you're in, you could say something like the following: (add-hook 'gnus-select-group-hook (lambda () (cond - ((string-match "^de\\." gnus-newsgroup-name) + ((string-match + "^de\\." (gnus-group-real-name gnus-newsgroup-name)) (ispell-change-dictionary "deutsch")) (t (ispell-change-dictionary "english"))))) @@ -12904,6 +12921,7 @@ interfaces to these sources. * Slashdot:: Reading the Slashdot comments. * Ultimate:: The Ultimate Bulletin Board systems. * Web Archive:: Reading mailing list archived on web. +* RSS:: Reading RDF site summary. * Customizing w3:: Doing stuff to Emacs/w3 from Gnus. @end menu @@ -13165,6 +13183,29 @@ The account name on the web server. The password for your account on the web server. @end table +@node RSS +@subsection RSS +@cindex nnrss +@cindex RSS + +Some sites have RDF site summary (RSS) +@uref{http://purl.org/rss/1.0/spec}. It has a quite regular and nice +interface, and it's possible to get the information Gnus needs to keep +groups updated. + +The easiest way to get started with @code{nnrss} is to say something +like the following in the group buffer: @kbd{B nnrss RET RET}, then +subscribe groups. + +The following @code{nnrss} variables can be altered: + +@table @code +@item nnrss-directory +@vindex nnrss-directory +The directory where @code{nnrss} stores its files. The default is +@samp{~/News/rss/}. + +@end table @node Customizing w3 @subsection Customizing w3 -- 1.7.10.4