From 104a4dfd02fa25e48924ef8ea1365279f636c6d6 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Sun, 6 May 2001 22:36:44 +0000 Subject: [PATCH] Importing Oort Gnus v0.03. --- lisp/ChangeLog | 77 ++++++++++++++++++++++++++ lisp/gnus-srvr.el | 2 +- lisp/gnus-start.el | 4 +- lisp/gnus-sum.el | 41 +++++++++----- lisp/gnus.el | 10 ++-- 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.texi | 51 ++++++++++++++++-- 16 files changed, 376 insertions(+), 144 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7da8061..d1b7ab8 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-start.el b/lisp/gnus-start.el index e10d588..22e0096 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -2077,7 +2077,9 @@ If FORCE is non-nil, the .newsrc file is read." (error "Error in %s" ding-file)))) ;; Older versions of `gnus-format-specs' are no longer valid ;; in Oort Gnus 0.01. - (let ((version (gnus-continuum-version gnus-newsrc-file-version))) + (let ((version + (and gnus-newsrc-file-version + (gnus-continuum-version gnus-newsrc-file-version)))) (when (or (not version) (< version 5.090002)) (setq gnus-format-specs nil))) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 5263405..7d8f6f5 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -956,6 +956,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 @@ -5094,6 +5101,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) @@ -5103,19 +5117,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.el b/lisp/gnus.el index 0168cd7..8428a0f 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -256,7 +256,7 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "0.02" +(defconst gnus-version-number "0.03" "Version number for this version of Gnus.") (defconst gnus-version (format "Oort Gnus v%s" gnus-version-number) @@ -1772,10 +1772,10 @@ covered by that variable." "The mail address of the Gnus maintainers.") (defvar gnus-info-nodes - '((gnus-group-mode "(gnus)The Group Buffer") - (gnus-summary-mode "(gnus)The Summary Buffer") - (gnus-article-mode "(gnus)The Article Buffer") - (gnus-server-mode "(gnus)The Server Buffer") + '((gnus-group-mode "(gnus)Group Buffer") + (gnus-summary-mode "(gnus)Summary Buffer") + (gnus-article-mode "(gnus)Article Buffer") + (gnus-server-mode "(gnus)Server Buffer") (gnus-browse-mode "(gnus)Browse Foreign Server") (gnus-tree-mode "(gnus)Tree Display")) "Alist of major modes and related Info nodes.") diff --git a/lisp/imap.el b/lisp/imap.el index 8a87f22..30838f5 100644 --- a/lisp/imap.el +++ b/lisp/imap.el @@ -653,13 +653,13 @@ 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) (imap-disable-multibyte) (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 5c54fb6..618d02e 100644 --- a/lisp/mail-source.el +++ b/lisp/mail-source.el @@ -539,8 +539,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 bbff39d..5f93e7b 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 c28abd5..8b6befa 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -1566,11 +1566,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 3ba900a..4a4b17b 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -493,84 +493,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 0567ecc..250ca31 100644 --- a/lisp/nnultimate.el +++ b/lisp/nnultimate.el @@ -85,6 +85,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)))) @@ -138,14 +140,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 @@ -190,7 +199,7 @@ from (or date "") (concat "<" (number-to-string sid) "%" (number-to-string article) - "@ultimate>") + "@ultimate." server ">") "" 0 (/ (length (mapconcat 'identity @@ -209,6 +218,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.texi b/texi/gnus.texi index 542e9fe..90d777e 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -433,7 +433,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. @@ -474,7 +474,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. @@ -584,7 +584,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. @@ -613,7 +613,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. @@ -665,6 +665,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 @@ -4937,6 +4939,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 @@ -5796,6 +5800,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 @@ -9775,7 +9791,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"))))) @@ -12902,6 +12919,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 @@ -13163,6 +13181,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