Revision: miles@gnu.org--gnu-2004/gnus--devo--0--patch-160
authorMiles Bader <miles@gnu.org>
Tue, 2 Nov 2004 02:54:23 +0000 (02:54 +0000)
committerMiles Bader <miles@gnu.org>
Tue, 2 Nov 2004 02:54:23 +0000 (02:54 +0000)
Merge from gnus--rel--5.10

Patches applied:

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-62
 - miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-66
   Update from CVS

2004-11-01  Reiner Steib  <Reiner.Steib@gmx.de>

   * lisp/gnus-msg.el (gnus-summary-resend-default-address): Add :version.

   * lisp/tls.el (tls-process-connection-type, tls-success)
   (tls-certtool-program): Add :version.

   * lisp/starttls.el (starttls-gnutls-program, starttls-use-gnutls)
   (starttls-extra-arguments, starttls-process-connection-type)
   (starttls-connect, starttls-failure, starttls-success):

   * lisp/spam-stat.el (spam-stat): Add :version.

   * lisp/sieve.el (sieve): Add :version.

   * lisp/sha1.el (sha1): Added :version.
   (sha1-use-external): Removed redundant version.

   * lisp/nnmail.el (nnmail-split-fancy-with-parent-ignore-groups)
   (nnmail-cache-ignore-groups, nnmail-spool-hook)
   (nnmail-split-fancy-match-partial-words)
   (nnmail-split-lowercase-expanded):

   * lisp/nndiary.el (nndiary): Add :version.

   * lisp/mml2015.el (mml2015-unabbrev-trust-alist): Add :version.

   * lisp/mml-sec.el (mml-default-sign-method)
   (mml-default-encrypt-method, mml-signencrypt-style-alist): Add
   :version.

   * lisp/mm-uu.el (mm-uu-diff-groups-regexp): Add :version.

   * lisp/mm-url.el (mm-url-use-external, mm-url-program)
   (mm-url-arguments): Add :version.

   * lisp/mm-decode.el (mm-inline-text-html-with-w3m-keymap)
   (mm-attachment-file-modes, mm-decrypt-option)
   (mm-w3m-safe-url-regexp): Add :version.

   * lisp/message.el (message-cite-prefix-regexp)
   (message-sendmail-envelope-from, message-minibuffer-local-map)
   (message-user-fqdn, message-completion-alist): Add :version.

   * lisp/gnus-win.el (gnus-configure-windows-hook)
   (gnus-use-frames-on-any-display): Add :version.

   * lisp/gnus-art.el (gnus-article-address-banner-alist)
   (gnus-treat-unsplit-urls, gnus-treat-unfold-headers)
   (gnus-treat-from-picon, gnus-treat-mail-picon)
   (gnus-treat-x-pgp-sig): Add :version.

   * lisp/gnus-sum.el (gnus-spam-mark, gnus-recent-mark)
   (gnus-undownloaded-mark, gnus-summary-article-move-hook)
   (gnus-summary-article-delete-hook)
   (gnus-summary-display-while-building): Add :version.

   * lisp/gnus-start.el (gnus-subscribe-newsgroup-hooks)
   (gnus-get-top-new-news-hook):Add :version.

   * lisp/gnus-srvr.el (gnus-server-agent-face, gnus-server-opened-face)
   (gnus-server-closed-face, gnus-server-denied-face): Add :version.

   * lisp/gnus-registry.el (gnus-registry): Add :version.

   * lisp/gnus-spec.el (gnus-use-correct-string-widths)
   (gnus-make-format-preserve-properties): Add :version.

   * lisp/gnus.el (gnus-group-charter-alist)
   (gnus-group-fetch-control-use-browse-url)
   (gnus-install-group-spam-parameters): Add :version.

   * lisp/gnus-diary.el (gnus-diary): Add :version.

   * lisp/gnus-delay.el (gnus-delay): Add :version.

   * lisp/gnus-cite.el (gnus-cite-unsightly-citation-regexp)
   (gnus-cite-ignore-quoted-from, gnus-cite-attribution-face)
   (gnus-cite-blank-line-after-header, gnus-article-boring-faces):
   Add :version.

   * lisp/gnus-agent.el (gnus-agent-max-fetch-size)
   (gnus-agent-enable-expiration, gnus-agent-queue-mail)
   (gnus-agent-prompt-send-queue): Add :version.

   * lisp/deuglify.el (gnus-outlook-deuglify): Add :version.

   * lisp/html2text.el: Beautify code. Improve doc strings. Some checkdoc
   cleanup.
   (html2text-get-attr, html2text-fix-paragraph): Simplify code.
   (html2text-format-tag-list): Added "strong" and "em".  From
   "Alfred M. Szmidt" <ams@kemisten.nu> (tiny change).

29 files changed:
lisp/ChangeLog
lisp/deuglify.el
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-cite.el
lisp/gnus-delay.el
lisp/gnus-diary.el
lisp/gnus-msg.el
lisp/gnus-registry.el
lisp/gnus-spec.el
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-win.el
lisp/gnus.el
lisp/html2text.el
lisp/message.el
lisp/mm-decode.el
lisp/mm-url.el
lisp/mm-uu.el
lisp/mml-sec.el
lisp/mml2015.el
lisp/nndiary.el
lisp/nnmail.el
lisp/sha1.el
lisp/sieve.el
lisp/spam-stat.el
lisp/starttls.el
lisp/tls.el

index 7075198..0742e5f 100644 (file)
@@ -1,3 +1,96 @@
+2004-11-01  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-msg.el (gnus-summary-resend-default-address): Add :version.
+
+       * tls.el (tls-process-connection-type, tls-success)
+       (tls-certtool-program): Add :version.
+
+       * starttls.el (starttls-gnutls-program, starttls-use-gnutls)
+       (starttls-extra-arguments, starttls-process-connection-type)
+       (starttls-connect, starttls-failure, starttls-success): 
+
+       * spam-stat.el (spam-stat): Add :version.
+
+       * sieve.el (sieve): Add :version.
+
+       * sha1.el (sha1): Added :version.
+       (sha1-use-external): Removed redundant version.
+
+       * nnmail.el (nnmail-split-fancy-with-parent-ignore-groups)
+       (nnmail-cache-ignore-groups, nnmail-spool-hook)
+       (nnmail-split-fancy-match-partial-words)
+       (nnmail-split-lowercase-expanded): 
+
+       * nndiary.el (nndiary): Add :version.
+
+       * mml2015.el (mml2015-unabbrev-trust-alist): Add :version.
+
+       * mml-sec.el (mml-default-sign-method)
+       (mml-default-encrypt-method, mml-signencrypt-style-alist): Add
+       :version.
+
+       * mm-uu.el (mm-uu-diff-groups-regexp): Add :version.
+
+       * mm-url.el (mm-url-use-external, mm-url-program)
+       (mm-url-arguments): Add :version.
+
+       * mm-decode.el (mm-inline-text-html-with-w3m-keymap)
+       (mm-attachment-file-modes, mm-decrypt-option)
+       (mm-w3m-safe-url-regexp): Add :version.
+
+       * message.el (message-cite-prefix-regexp)
+       (message-sendmail-envelope-from, message-minibuffer-local-map)
+       (message-user-fqdn, message-completion-alist): Add :version.
+
+       * gnus-win.el (gnus-configure-windows-hook)
+       (gnus-use-frames-on-any-display): Add :version.
+
+       * gnus-art.el (gnus-article-address-banner-alist)
+       (gnus-treat-unsplit-urls, gnus-treat-unfold-headers)
+       (gnus-treat-from-picon, gnus-treat-mail-picon)
+       (gnus-treat-x-pgp-sig): Add :version.
+
+       * gnus-sum.el (gnus-spam-mark, gnus-recent-mark)
+       (gnus-undownloaded-mark, gnus-summary-article-move-hook)
+       (gnus-summary-article-delete-hook)
+       (gnus-summary-display-while-building): Add :version.
+
+       * gnus-start.el (gnus-subscribe-newsgroup-hooks)
+       (gnus-get-top-new-news-hook):Add :version.
+
+       * gnus-srvr.el (gnus-server-agent-face, gnus-server-opened-face)
+       (gnus-server-closed-face, gnus-server-denied-face): Add :version.
+
+       * gnus-registry.el (gnus-registry): Add :version.
+
+       * gnus-spec.el (gnus-use-correct-string-widths)
+       (gnus-make-format-preserve-properties): Add :version.
+
+       * gnus.el (gnus-group-charter-alist)
+       (gnus-group-fetch-control-use-browse-url)
+       (gnus-install-group-spam-parameters): Add :version.
+
+       * gnus-diary.el (gnus-diary): Add :version.
+
+       * gnus-delay.el (gnus-delay): Add :version.
+
+       * gnus-cite.el (gnus-cite-unsightly-citation-regexp)
+       (gnus-cite-ignore-quoted-from, gnus-cite-attribution-face)
+       (gnus-cite-blank-line-after-header, gnus-article-boring-faces):
+       Add :version.
+
+       * gnus-agent.el (gnus-agent-max-fetch-size)
+       (gnus-agent-enable-expiration, gnus-agent-queue-mail)
+       (gnus-agent-prompt-send-queue): Add :version.
+
+       * deuglify.el (gnus-outlook-deuglify): Add :version.
+
+       * html2text.el: Beautify code.  Improve doc strings.  Some checkdoc
+       cleanup.
+       (html2text-get-attr, html2text-fix-paragraph): Simplify code.
+       (html2text-format-tag-list): Added "strong" and "em".  From
+       "Alfred M. Szmidt" <ams@kemisten.nu> (tiny change).
+
 2004-10-29  Teodor Zlatanov  <tzz@lifelogs.com>
 
        * gnus-registry.el (gnus-registry-hashtb): create the registry
index 5f1945a..67ff9ac 100644 (file)
 ;;; User Customizable Variables:
 
 (defgroup gnus-outlook-deuglify nil
-  "Deuglify articles generated by broken user agents like MS Outlook (Express).")
+  "Deuglify articles generated by broken user agents like MS Outlook (Express)."
+  :version "21.4")
 
 ;;;###autoload
 (defcustom gnus-outlook-deuglify-unwrap-min 45
index 12427f7..86c9a1d 100644 (file)
@@ -160,6 +160,7 @@ read articles as they would just be downloaded again."
   "Chunk size for `gnus-agent-fetch-session'.
 The function will split its article fetches into chunks smaller than
 this limit."
+  :version "21.4"
   :group 'gnus-agent
   :type 'integer)
 
@@ -170,6 +171,7 @@ contents from a group's local storage.  This value may be overridden
 to disable expiration in specific categories, topics, and groups.  Of
 course, you could change gnus-agent-enable-expiration to DISABLE then
 enable expiration per categories, topics, and groups."
+  :version "21.4"
   :group 'gnus-agent
   :type '(radio (const :format "Enable " ENABLE)
                 (const :format "Disable " DISABLE)))
@@ -195,6 +197,7 @@ See Info node `(gnus)Server Buffer'."
   "Whether and when outgoing mail should be queued by the agent.
 When `always', always queue outgoing mail.  When nil, never
 queue.  Otherwise, queue if and only if unplugged."
+  :version "21.4"
   :group 'gnus-agent
   :type '(radio (const :format "Always" always)
                (const :format "Never" nil)
@@ -203,6 +206,7 @@ queue.  Otherwise, queue if and only if unplugged."
 (defcustom gnus-agent-prompt-send-queue nil
   "If non-nil, `gnus-group-send-queue' will prompt if called when
 unplugged."
+  :version "21.4"
   :group 'gnus-agent
   :type 'boolean)
 
index e5c33d6..53e03b6 100644 (file)
@@ -321,6 +321,7 @@ advertisements.  For example:
                   (symbol :tag "Item in `gnus-article-banner-alist'" none)
                   regexp
                   (const :tag "None" nil))))
+  :version "21.4"
   :group 'gnus-article-washing)
 
 (defcustom gnus-emphasis-alist
@@ -929,6 +930,7 @@ See Info node `(gnus)Customizing Articles' for details."
   "Remove newlines from within URLs.
 Valid values are nil, t, `head', `last', an integer or a predicate.
 See Info node `(gnus)Customizing Articles' for details."
+  :version "21.4"
   :group 'gnus-article-treat
   :link '(custom-manual "(gnus)Customizing Articles")
   :type gnus-article-treat-custom)
@@ -1133,6 +1135,7 @@ See Info node `(gnus)Customizing Articles' for details."
   "Unfold folded header lines.
 Valid values are nil, t, `head', `last', an integer or a predicate.
 See Info node `(gnus)Customizing Articles' for details."
+  :version "21.4"
   :group 'gnus-article-treat
   :link '(custom-manual "(gnus)Customizing Articles")
   :type gnus-article-treat-custom)
@@ -1255,6 +1258,7 @@ See Info node `(gnus)Customizing Articles' and Info node
 Valid values are nil, t, `head', `last', an integer or a predicate.
 See Info node `(gnus)Customizing Articles' and Info node
 `(gnus)Picons' for details."
+  :version "21.4"
   :group 'gnus-article-treat
   :group 'gnus-picon
   :link '(custom-manual "(gnus)Customizing Articles")
@@ -1270,6 +1274,7 @@ See Info node `(gnus)Customizing Articles' and Info node
 Valid values are nil, t, `head', `last', an integer or a predicate.
 See Info node `(gnus)Customizing Articles' and Info node
 `(gnus)Picons' for details."
+  :version "21.4"
   :group 'gnus-article-treat
   :group 'gnus-picon
   :link '(custom-manual "(gnus)Customizing Articles")
@@ -1356,6 +1361,7 @@ See Info node `(gnus)Customizing Articles' for details."
 To automatically treat X-PGP-Sig, set it to head.
 Valid values are nil, t, `head', `last', an integer or a predicate.
 See Info node `(gnus)Customizing Articles' for details."
+  :version "21.4"
   :group 'gnus-article-treat
   :group 'mime-security
   :link '(custom-manual "(gnus)Customizing Articles")
index 6d018a0..e90fa32 100644 (file)
@@ -124,6 +124,7 @@ The text matching the first grouping will be used as a button."
 (defcustom gnus-cite-unsightly-citation-regexp
   "^-----Original Message-----\nFrom: \\(.+\n\\)+\n"
   "Regexp matching Microsoft-type rest-of-message citations."
+  :version "21.4"
   :group 'gnus-cite
   :type 'regexp)
 
@@ -131,6 +132,7 @@ The text matching the first grouping will be used as a button."
   "Non-nil means don't regard lines beginning with \">From \" as cited text.
 Those lines may have been quoted by MTAs in order not to mix up with
 the envelope From line."
+  :version "21.4"
   :group 'gnus-cite
   :type 'boolean)
 
@@ -141,6 +143,7 @@ the envelope From line."
 (defcustom gnus-cite-attribution-face 'gnus-cite-attribution-face
   "Face used for attribution lines.
 It is merged with the face for the cited text belonging to the attribution."
+  :version "21.4"
   :group 'gnus-cite
   :type 'face)
 
@@ -278,7 +281,6 @@ This should make it easier to see who wrote what."
 
 (defcustom gnus-cite-blank-line-after-header t
   "If non-nil, put a blank line between the citation header and the button."
-  :version "21.4"
   :group 'gnus-cite
   :type 'boolean)
 
@@ -290,7 +292,6 @@ This should make it easier to see who wrote what."
 If an article has more pages below the one you are looking at, but
 nothing on those pages is a word of at least three letters that is not
 in a boring face, then the pages will be skipped."
-  :version "21.4"
   :type '(repeat face)
   :group 'gnus-article-hiding)
 
index e8ccba8..96f97ff 100644 (file)
@@ -41,6 +41,7 @@
 ;;;###autoload
 (defgroup gnus-delay nil
   "Arrange for sending postings later."
+  :version "21.4"
   :group 'gnus)
 
 (defcustom gnus-delay-group "delayed"
index 9425ef3..fe28b7f 100644 (file)
 (require 'gnus-art)
 
 (defgroup gnus-diary nil
-  "Utilities on top of the nndiary backend for Gnus.")
+  "Utilities on top of the nndiary backend for Gnus."
+  :version "21.4")
 
 (defcustom gnus-diary-summary-line-format "%U%R%z %uD: %(%s%) (%ud)\n"
   "*Summary line format for nndiary groups."
index 32bec9e..518cff2 100644 (file)
@@ -281,6 +281,7 @@ If nil, Gnus will never ask for confirmation if replying to mail."
   "If non-nil, Gnus tries to suggest a default address to resend to.
 If nil, the address field will always be empty after invoking
 `gnus-summary-resend-message'."
+  :version "21.4"
   :group 'gnus-message
   :type 'boolean)
 
index d621343..ce3e825 100644 (file)
@@ -66,6 +66,7 @@
 
 (defgroup gnus-registry nil
   "The Gnus registry."
+  :version "21.4"
   :group 'gnus)
 
 (defvar gnus-registry-hashtb (make-hash-table                      
index d39316a..cd8a36f 100644 (file)
 
 (defcustom gnus-use-correct-string-widths (featurep 'xemacs)
   "*If non-nil, use correct functions for dealing with wide characters."
+  :version "21.4"
   :group 'gnus-format
   :type 'boolean)
 
 (defcustom gnus-make-format-preserve-properties (featurep 'xemacs)
   "*If non-nil, use a replacement `format' function which preserves
 text properties. This is only needed on XEmacs, as FSF Emacs does this anyway."
+  :version "21.4"
   :group 'gnus-format
   :type 'boolean)
 
index 41db8b8..f3b0f9b 100644 (file)
@@ -205,21 +205,25 @@ If nil, a faster, but more primitive, buffer is used instead."
 
 (defcustom gnus-server-agent-face 'gnus-server-agent-face
   "Face name to use on AGENTIZED servers."
+  :version "21.4"
   :group 'gnus-server-visual
   :type 'face)
 
 (defcustom gnus-server-opened-face 'gnus-server-opened-face
   "Face name to use on OPENED servers."
+  :version "21.4"
   :group 'gnus-server-visual
   :type 'face)
 
 (defcustom gnus-server-closed-face 'gnus-server-closed-face
   "Face name to use on CLOSED servers."
+  :version "21.4"
   :group 'gnus-server-visual
   :type 'face)
 
 (defcustom gnus-server-denied-face 'gnus-server-denied-face
   "Face name to use on DENIED servers."
+  :version "21.4"
   :group 'gnus-server-visual
   :type 'face)
 
index 99bf877..7506a6f 100644 (file)
@@ -299,6 +299,7 @@ claim them."
 (defcustom gnus-subscribe-newsgroup-hooks nil
   "*Hooks run after you subscribe to a new group.
 The hooks will be called with new group's name as argument."
+  :version "21.4"
   :group 'gnus-group-new
   :type 'hook)
 
@@ -405,6 +406,7 @@ This hook is called as the first thing when Gnus is started."
 
 (defcustom gnus-get-top-new-news-hook nil
   "A hook run just before Gnus checks for new news globally."
+  :version "21.4"
   :group 'gnus-group-new
   :type 'hook)
 
index 160a9a8..334abcf 100644 (file)
@@ -476,6 +476,7 @@ string with the suggested prefix."
 
 (defcustom gnus-spam-mark ?$
   "*Mark used for spam articles."
+  :version "21.4"
   :group 'gnus-summary-marks
   :type 'character)
 
@@ -512,6 +513,7 @@ string with the suggested prefix."
 
 (defcustom gnus-recent-mark ?N
   "*Mark used for articles that are recent."
+  :version "21.4"
   :group 'gnus-summary-marks
   :type 'character)
 
@@ -559,6 +561,7 @@ string with the suggested prefix."
 
 (defcustom gnus-undownloaded-mark ?-
   "*Mark used for articles that weren't downloaded."
+  :version "21.4"
   :group 'gnus-summary-marks
   :type 'character)
 
@@ -945,16 +948,19 @@ automatically when it is selected."
 
 (defcustom gnus-summary-article-move-hook nil
   "*A hook called after an article is moved, copied, respooled, or crossposted."
+  :version "21.4"
   :group 'gnus-summary
   :type 'hook)
 
 (defcustom gnus-summary-article-delete-hook nil
   "*A hook called after an article is deleted."
+  :version "21.4"
   :group 'gnus-summary
   :type 'hook)
 
 (defcustom gnus-summary-article-expire-hook nil
   "*A hook called after an article is expired."
+  :version "21.4"
   :group 'gnus-summary
   :type 'hook)
 
@@ -9222,6 +9228,7 @@ If nil, use to the current newsgroup method."
   "If non-nil, show and update the summary buffer as it's being built.
 If the value is t, update the buffer after every line is inserted.  If
 the value is an integer (N), update the display every N lines."
+  :version "21.4"
   :group 'gnus-thread
   :type '(choice (const :tag "off" nil)
                 number
index 1db5dc3..e910997 100644 (file)
@@ -62,6 +62,7 @@
   "*If non-nil, frames on all displays will be considered useable by Gnus.
 When nil, only frames on the same display as the selected frame will be
 used to display Gnus windows."
+  :version "21.4"
   :group 'gnus-windows
   :type 'boolean)
 
@@ -203,6 +204,7 @@ See the Gnus manual for an explanation of the syntax used.")
 
 (defcustom gnus-configure-windows-hook nil
   "*A hook called when configuring windows."
+  :version "21.4"
   :group 'gnus-windows
   :type 'hook)
 
index c7da0f1..d78351f 100644 (file)
@@ -1310,6 +1310,7 @@ If the default site is too slow, try one of these:
                        (gnus-replace-in-string name "\\." "-") "-charter.html")))
   "*An alist of (HIERARCHY . FORM) pairs used to construct the URL of a charter.
 When FORM is evaluated `name' is bound to the name of the group."
+  :version "21.4"
   :group 'gnus-group-various
   :type '(repeat (cons (string :tag "Hierarchy") (sexp :tag "Form"))))
 
@@ -1317,6 +1318,7 @@ When FORM is evaluated `name' is bound to the name of the group."
   "*Non-nil means that control messages are displayed using `browse-url'.
 Otherwise they are fetched with ange-ftp and displayed in an ephemeral
 group."
+  :version "21.4"
   :group 'gnus-group-various
   :type 'boolean)
 
@@ -1779,6 +1781,7 @@ total number of articles in the group.")
 (defcustom gnus-install-group-spam-parameters t
   "*Disable the group parameters for spam detection.
 Enable if `G c' in XEmacs is giving you trouble, and make sure to submit a bug report."
+  :version "21.4"
   :type 'boolean
   :group 'gnus-start)
 
index 5772489..f33b125 100644 (file)
 
 ;; These functions provide a simple way to wash/clean html infected
 ;; mails.  Definitely do not work in all cases, but some improvement
-;; in readability is generally obtained. Formatting is only done in
+;; in readability is generally obtained.  Formatting is only done in
 ;; the buffer, so the next time you enter the article it will be
 ;; "re-htmlized".
 ;;
-;; The main function is "html2text"
+;; The main function is `html2text'.
 
 ;;; Code:
 
@@ -47,9 +47,9 @@
   "The map of entity to text.
 
 This is an alist were each element is a dotted pair consisting of an
-old string, and a replacement string. This replacement is done by the
-function \"html2text-substitute\" which basically performs a
-replace-string operation for every element in the list. This is
+old string, and a replacement string.  This replacement is done by the
+function `html2text-substitute' which basically performs a
+`replace-string' operation for every element in the list.  This is
 completely verbatim - without any use of REGEXP.")
 
 (defvar html2text-remove-tag-list
@@ -57,11 +57,11 @@ completely verbatim - without any use of REGEXP.")
   "A list of removable tags.
 
 This is a list of tags which should be removed, without any
-formatting.  Observe that if you the tags in the list are presented
-*without* any \"<\" or \">\". All occurences of a tag appearing in
-this list are removed, irrespective of whether it is a closing or
-opening tag, or if the tag has additional attributes. The actual
-deletion is done by the function \"html2text-remove-tags\".
+formatting.  Note that tags in the list are presented *without*
+any \"<\" or \">\".  All occurences of a tag appearing in this
+list are removed, irrespective of whether it is a closing or
+opening tag, or if the tag has additional attributes.  The
+deletion is done by the function `html2text-remove-tags'.
 
 For instance the text:
 
@@ -75,8 +75,10 @@ If this list contains the element \"font\".")
 
 (defvar html2text-format-tag-list
   '(("b"         . html2text-clean-bold)
+    ("strong"     . html2text-clean-bold)
     ("u"         . html2text-clean-underline)
     ("i"         . html2text-clean-italic)
+    ("em"         . html2text-clean-italic)
     ("blockquote" . html2text-clean-blockquote)
     ("a"          . html2text-clean-anchor)
     ("ul"         . html2text-clean-ul)
@@ -86,7 +88,7 @@ If this list contains the element \"font\".")
   "An alist of tags and processing functions.
 
 This is an alist where each dotted pair consists of a tag, and then
-the name of a function to be called when this tag is found. The
+the name of a function to be called when this tag is found.  The
 function is called with the arguments p1, p2, p3 and p4. These are
 demontrated below:
 
@@ -117,11 +119,12 @@ formatting, and then moved afterward.")
 ;;
 
 
-(defun html2text-replace-string (from-string to-string p1 p2)
-  (goto-char p1)
+(defun html2text-replace-string (from-string to-string min max)
+  "Replace FROM-STRING with TO-STRING in region from MIN to MAX."
+  (goto-char min)
   (let ((delta (- (string-width to-string) (string-width from-string)))
        (change 0))
-    (while (search-forward from-string p2 t)
+    (while (search-forward from-string max t)
       (replace-match to-string)
       (setq change (+ change delta)))
     change))
@@ -137,8 +140,79 @@ formatting, and then moved afterward.")
 ;; <Functions related to attributes> i.e. <font size=+3>
 ;;
 
-(defun html2text-attr-value (attr-list attr)
-  (nth 1 (assoc attr attr-list)))
+(defun html2text-attr-value (list attribute)
+  "Get value of ATTRIBUTE from LIST."
+  (nth 1 (assoc attribute list)))
+
+(defun html2text-get-attr (p1 p2 tag)
+  (goto-char p1)
+  (re-search-forward " +[^ ]" p2 t)
+  (let* ((attr-string (buffer-substring-no-properties (1- (point)) (1- p2)))
+        (tmp-list (split-string attr-string))
+        (attr-list)
+        (counter 0)
+        (prev (car tmp-list))
+        (this (nth 1 tmp-list))
+        (next (nth 2 tmp-list))
+        (index 1))
+
+    (cond
+     ;; size=3
+     ((string-match "[^ ]=[^ ]" prev)
+      (let ((attr  (nth 0 (split-string prev "=")))
+           (value (nth 1 (split-string prev "="))))
+       (setq attr-list (cons (list attr value) attr-list))))
+     ;; size= 3
+     ((string-match "[^ ]=\\'" prev)
+      (setq attr-list (cons (list (substring prev 0 -1) this) attr-list))))
+
+    (while (< index (length tmp-list))
+      (cond
+       ;; size=3
+       ((string-match "[^ ]=[^ ]" this)
+       (let ((attr  (nth 0 (split-string this "=")))
+             (value (nth 1 (split-string this "="))))
+         (setq attr-list (cons (list attr value) attr-list))))
+       ;; size =3
+       ((string-match "\\`=[^ ]" this)
+       (setq attr-list (cons (list prev (substring this 1)) attr-list)))
+       ;; size= 3
+       ((string-match "[^ ]=\\'" this)
+       (setq attr-list (cons (list (substring this 0 -1) next) attr-list)))
+       ;; size = 3
+       ((string= "=" this)
+       (setq attr-list (cons (list prev next) attr-list))))
+      (setq index (1+ index))
+      (setq prev this)
+      (setq this next)
+      (setq next (nth (1+ index) tmp-list)))
+    ;;
+    ;; Tags with no accompanying "=" i.e. value=nil
+    ;;
+    (setq prev (car tmp-list))
+    (setq this (nth 1 tmp-list))
+    (setq next (nth 2 tmp-list))
+    (setq index 1)
+
+    (when (and (not (string-match "=" prev))
+              (not (string= (substring this 0 1) "=")))
+      (setq attr-list (cons (list prev nil) attr-list)))
+    (while (< index (1- (length tmp-list)))
+      (when (and (not (string-match "=" this))
+                (not (or (string= (substring next 0 1) "=")
+                         (string= (substring prev -1) "="))))
+       (setq attr-list (cons (list this nil) attr-list)))
+      (setq index (1+ index))
+      (setq prev this)
+      (setq this next)
+      (setq next (nth (1+ index) tmp-list)))
+
+    (when (and this
+              (not (string-match "=" this))
+              (not (string= (substring prev -1) "=")))
+      (setq attr-list (cons (list this nil) attr-list)))
+    ;; return - value
+    attr-list))
 
 (defun html2text-get-attr (p1 p2)
   (save-restriction
@@ -261,9 +335,11 @@ formatting, and then moved afterward.")
   (html2text-delete-tags p1 p2 p3 p4))
 
 (defun html2text-clean-anchor (p1 p2 p3 p4)
-  ;; If someone can explain how to make the URL clickable I will
-  ;; surely improve upon this.
-  (let ((href (html2text-attr-value (html2text-get-attr p1 p2) "href")))
+  ;; If someone can explain how to make the URL clickable I will surely
+  ;; improve upon this.
+  ;; Maybe `goto-addr.el' can be used here.
+  (let* ((attr-list (html2text-get-attr p1 p2 "a"))
+        (href (html2text-attr-value attr-list "href")))
     (delete-region p1 p4)
     (when href
       (goto-char p1)
@@ -283,31 +359,28 @@ formatting, and then moved afterward.")
 
 (defun html2text-fix-paragraph (p1 p2)
   (goto-char p1)
-  (let ((has-br-line)
-       (refill-start)
+  (let ((refill-start)
        (refill-stop))
     (when (re-search-forward "<br>$" p2 t)
-      (setq has-br-line t))
-    (when has-br-line
-       (goto-char p1)
-       (when (re-search-forward ".+[^<][^b][^r][^>]$" p2 t)
-         (beginning-of-line)
-         (setq refill-start (point))
-         (goto-char p2)
-         (re-search-backward ".+[^<][^b][^r][^>]$" refill-start t)
-         (next-line 1)
-         (end-of-line)
-         ;; refill-stop should ideally be adjusted to
-         ;; accomodate the "<br>" strings which are removed
-         ;; between refill-start and refill-stop.  Can simply
-         ;; be returned from my-replace-string
-         (setq refill-stop (+ (point)
-                              (html2text-replace-string
-                               "<br>" ""
-                               refill-start (point))))
-         ;; (message "Point = %s  refill-stop = %s" (point) refill-stop)
-         ;; (sleep-for 4)
-         (fill-region refill-start refill-stop))))
+      (goto-char p1)
+      (when (re-search-forward ".+[^<][^b][^r][^>]$" p2 t)
+       (beginning-of-line)
+       (setq refill-start (point))
+       (goto-char p2)
+       (re-search-backward ".+[^<][^b][^r][^>]$" refill-start t)
+       (next-line 1)
+       (end-of-line)
+       ;; refill-stop should ideally be adjusted to
+       ;; accomodate the "<br>" strings which are removed
+       ;; between refill-start and refill-stop.  Can simply
+       ;; be returned from my-replace-string
+       (setq refill-stop (+ (point)
+                            (html2text-replace-string
+                             "<br>" ""
+                             refill-start (point))))
+       ;; (message "Point = %s  refill-stop = %s" (point) refill-stop)
+       ;; (sleep-for 4)
+       (fill-region refill-start refill-stop))))
   (html2text-replace-string "<br>" "" p1 p2))
 
 ;;
@@ -343,7 +416,7 @@ fashion, quite close to pure guess-work. It does work in some cases though."
 ;;
 
 (defun html2text-remove-tags (tag-list)
-  "Removes the tags listed in the list \"html2text-remove-tag-list\".
+  "Removes the tags listed in the list `html2text-remove-tag-list'.
 See the documentation for that variable."
   (interactive)
   (dolist (tag tag-list)
@@ -352,7 +425,7 @@ See the documentation for that variable."
       (delete-region (match-beginning 0) (match-end 0)))))
 
 (defun html2text-format-tags ()
-  "See the variable \"html2text-format-tag-list\" for documentation"
+  "See the variable `html2text-format-tag-list' for documentation."
   (interactive)
   (dolist (tag-and-function html2text-format-tag-list)
     (let ((tag      (car tag-and-function))
@@ -371,21 +444,18 @@ See the documentation for that variable."
          (search-backward "</" (point-min) t)
          (setq p3 (point))
          (funcall function p1 p2 p3 p4)
-         (goto-char p1)
-         )))))
+         (goto-char p1))))))
 
 (defun html2text-substitute ()
-  "See the variable \"html2text-replace-list\" for documentation"
+  "See the variable `html2text-replace-list' for documentation."
   (interactive)
   (dolist (e html2text-replace-list)
     (goto-char (point-min))
     (let ((old-string (car e))
          (new-string (cdr e)))
-      (html2text-replace-string old-string new-string (point-min) (point-max)))
-    ))
+      (html2text-replace-string old-string new-string (point-min) (point-max)))))
 
 (defun html2text-format-single-elements ()
-  ""
   (interactive)
   (dolist (tag-and-function html2text-format-single-element-list)
     (let ((tag      (car tag-and-function))
@@ -420,6 +490,6 @@ See the documentation for that variable."
 ;;
 ;; </Interactive functions>
 ;;
-
+(provide 'html2text)
 ;;; arch-tag: e9e57b79-35d4-4de1-a647-e7e01fe56d1e
 ;;; html2text.el ends here
index 91a622b..795bfb1 100644 (file)
@@ -582,6 +582,7 @@ Done before generating the new subject of a forward."
                non-word-constituents
                "]\\)+>+\\|[ \t]*[]>|}+]\\)+"))))
   "*Regexp matching the longest possible citation prefix on a line."
+  :version "21.4"
   :group 'message-insertion
   :link '(custom-manual "(message)Insertion Variables")
   :type 'regexp)
@@ -738,6 +739,7 @@ Doing so would be even more evil than leaving it out."
   "*Envelope-from when sending mail with sendmail.
 If this is nil, use `user-mail-address'.  If it is the symbol
 `header', use the From: header of the message."
+  :version "21.4"
   :type '(choice (string :tag "From name")
                 (const :tag "Use From: header from message" header)
                 (const :tag "Use `user-mail-address'" nil))
@@ -845,7 +847,8 @@ the signature is inserted."
   (let ((map (make-sparse-keymap 'message-minibuffer-local-map)))
     (set-keymap-parent map minibuffer-local-map)
     map)
-  "Keymap for `message-read-from-minibuffer'.")
+  "Keymap for `message-read-from-minibuffer'."
+  :version "21.4")
 
 ;;;###autoload
 (defcustom message-citation-line-function 'message-insert-citation-line
@@ -1430,6 +1433,7 @@ no, only reply back to the author."
 
 (defcustom message-user-fqdn nil
   "*Domain part of Messsage-Ids."
+  :version "21.4"
   :group 'message-headers
   :link '(custom-manual "(message)News Headers")
   :type '(radio (const :format "%v  " nil)
@@ -6644,6 +6648,7 @@ which specify the range to operate on."
        '("^\\(Disposition-Notification-To\\|Return-Receipt-To\\):"
          . message-expand-name))
   "Alist of (RE . FUN).  Use FUN for completion on header lines matching RE."
+  :version "21.4"
   :group 'message
   :type '(alist :key-type regexp :value-type function))
 
index 225f821..65b9545 100644 (file)
@@ -149,12 +149,14 @@ when displaying the image.  The default value is \"\\\\`cid:\" which only
 matches parts embedded to the Multipart/Related type MIME contents and
 Gnus will never connect to the spammer's site arbitrarily.  You may
 set this variable to nil if you consider all urls to be safe."
+  :version "21.4"
   :type '(choice (regexp :tag "Regexp")
                 (const :tag "All URLs are safe" nil))
   :group 'mime-display)
 
 (defcustom mm-inline-text-html-with-w3m-keymap t
   "If non-nil, use emacs-w3m command keys in the article buffer."
+  :version "21.4"
   :type 'boolean
   :group 'mime-display)
 
@@ -378,6 +380,7 @@ If not set, `default-directory' will be used."
 
 (defcustom mm-attachment-file-modes 384
   "Set the mode bits of saved attachments to this integer."
+  :version "21.4"
   :type 'integer
   :group 'mime-display)
 
@@ -435,6 +438,7 @@ If not set, `default-directory' will be used."
   "Option of decrypting encrypted parts.
 `never', not decrypt; `always', always decrypt;
 `known', only decrypt known protocols.  Otherwise, ask user."
+  :version "21.4"
   :type '(choice (item always)
                 (item never)
                 (item :tag "only known protocols" known)
index 51c720a..f1ea36c 100644 (file)
@@ -46,6 +46,7 @@
                                    (require 'url)
                                  (error nil)))
   "*If non-nil, use external grab program `mm-url-program'."
+  :version "21.4"
   :type 'boolean
   :group 'mm-url)
 
@@ -64,6 +65,7 @@
    (t "GET"))
   "The url grab program.
 Likely values are `wget', `w3m', `lynx' and `curl'."
+  :version "21.4"
   :type '(choice
          (symbol :tag "wget" wget)
          (symbol :tag "w3m" w3m)
@@ -74,6 +76,7 @@ Likely values are `wget', `w3m', `lynx' and `curl'."
 
 (defcustom mm-url-arguments nil
   "The arguments for `mm-url-program'."
+  :version "21.4"
   :type '(repeat string)
   :group 'mm-url)
 
index 6cb15c8..fe1b7cf 100644 (file)
@@ -81,6 +81,7 @@ This can be either \"inline\" or \"attachment\".")
 
 (defcustom mm-uu-diff-groups-regexp "gnus\\.commits"
   "*Regexp matching diff groups."
+  :version "21.4"
   :type 'regexp
   :group 'gnus-article-mime)
 
index b810736..8bd2ed7 100644 (file)
@@ -43,6 +43,7 @@
 (defcustom mml-default-sign-method "pgpmime"
   "Default sign method.
 The string must have an entry in `mml-sign-alist'."
+  :version "21.4"
   :type '(choice (const "smime")
                 (const "pgp")
                 (const "pgpauto")
@@ -60,6 +61,7 @@ The string must have an entry in `mml-sign-alist'."
 (defcustom mml-default-encrypt-method "pgpmime"
   "Default encryption method.
 The string must have an entry in `mml-encrypt-alist'."
+  :version "21.4"
   :type '(choice (const "smime")
                 (const "pgp")
                 (const "pgpauto")
@@ -83,6 +85,7 @@ Note that the output generated by using a `combined' mode is NOT
 understood by all PGP implementations, in particular PGP version
 2 does not support it!  See Info node `(message)Security' for
 details."
+  :version "21.4"
   :group 'message
   :type '(repeat (list (choice (const :tag "S/MIME" "smime")
                               (const :tag "PGP" "pgp")
index 9b11850..cefa1cd 100644 (file)
@@ -87,6 +87,7 @@ Valid packages include `pgg', `gpg' and `mailcrypt'.")
     ("TRUST_FULLY"     . t)
     ("TRUST_ULTIMATE"  . t))
   "Map GnuPG trust output values to a boolean saying if you trust the key."
+  :version "21.4"
   :group 'mime-security
   :type '(repeat (cons (regexp :tag "GnuPG output regexp")
                       (boolean :tag "Trust key"))))
index e252768..562a30c 100644 (file)
 
 (defgroup nndiary nil
   "The Gnus Diary backend."
+  :version "21.4"
   :group 'gnus-diary)
 
 (defcustom nndiary-mail-sources
index 8e195fa..725952e 100644 (file)
@@ -118,6 +118,7 @@ If nil, the first match found will be used."
 (defcustom nnmail-split-fancy-with-parent-ignore-groups nil
   "Regexp that matches group names to be ignored when applying `nnmail-split-fancy-with-parent'.
 This can also be a list of regexps."
+  :version "21.4"
   :group 'nnmail-split
   :type '(choice (const :tag "none" nil)
                 (regexp :value ".*")
@@ -126,6 +127,7 @@ This can also be a list of regexps."
 (defcustom nnmail-cache-ignore-groups nil
   "Regexp that matches group names to be ignored when inserting message ids into the cache (`nnmail-cache-insert').
 This can also be a list of regexps."
+  :version "21.4"
   :group 'nnmail-split
   :type '(choice (const :tag "none" nil)
                 (regexp :value ".*")
@@ -352,6 +354,7 @@ discarded after running the split process."
 
 (defcustom nnmail-spool-hook nil
   "*A hook called when a new article is spooled."
+  :version "21.4"
   :group 'nnmail
   :type 'hook)
 
@@ -574,6 +577,7 @@ Normally, regexes given in `nnmail-split-fancy' are implicitly surrounded
 by \"\\=\\<...\\>\".  If this variable is true, they are not implicitly\
  surrounded
 by anything."
+  :version "21.4"
   :group 'nnmail
   :type 'boolean)
 
@@ -581,6 +585,7 @@ by anything."
   "Whether to lowercase expanded entries (i.e. \\N) when splitting mails.
 This avoids the creation of multiple groups when users send to an address
 using different case (i.e. mailing-list@domain vs Mailing-List@Domain)."
+  :version "21.4"
   :group 'nnmail
   :type 'boolean)
 
index a9b6880..51a826f 100644 (file)
@@ -60,6 +60,7 @@
 
 (defgroup sha1 nil
   "Elisp interface for SHA1 hash computation."
+  :version "21.4"
   :group 'extensions)
 
 (defcustom sha1-maximum-internal-length 500
@@ -82,7 +83,6 @@ It must be a string \(program name\) or list of strings \(name and its args\)."
                               (error))
   "*Use external SHA1 program.
 If this variable is set to nil, use internal function only."
-  :version "21.4"
   :type 'boolean
   :group 'sha1)
 
index f95ae3e..3a830a7 100644 (file)
@@ -65,6 +65,7 @@
 
 (defgroup sieve nil
   "Manage sieve scripts."
+  :version "21.4"
   :group 'tools)
 
 (defcustom sieve-new-script "<new script>"
index 8e24114..d84ac23 100644 (file)
 Use the functions to build a dictionary of words and their statistical
 distribution in spam and non-spam mails.  Then use a function to determine
 whether a buffer contains spam or not."
+  :version "21.4"
   :group 'gnus)
 
 (defcustom spam-stat-file "~/.spam-stat.el"
index c172e88..7a2eef5 100644 (file)
   "Name of GNUTLS command line tool.
 This program is used when GNUTLS is used, i.e. when
 `starttls-use-gnutls' is non-nil."
+  :version "21.4"
   :type 'string
   :group 'starttls)
 
@@ -138,6 +139,7 @@ i.e. when `starttls-use-gnutls' is nil."
 
 (defcustom starttls-use-gnutls (not (executable-find starttls-program))
   "*Whether to use GNUTLS instead of the `starttls' command."
+  :version "21.4"
   :type 'boolean
   :group 'starttls)
 
@@ -156,11 +158,13 @@ This program is used when GNUTLS is used, i.e. when
 For example, non-TLS compliant servers may require
 '(\"--protocols\" \"ssl3\").  Invoke \"gnutls-cli --help\" to
 find out which parameters are available."
+  :version "21.4"
   :type '(repeat string)
   :group 'starttls)
 
 (defcustom starttls-process-connection-type nil
   "*Value for `process-connection-type' to use when starting STARTTLS process."
+  :version "21.4"
   :type 'boolean
   :group 'starttls)
 
@@ -170,6 +174,7 @@ The default is what GNUTLS's \"gnutls-cli\" outputs."
   ;; GNUTLS cli.c:main() print this string when it is starting to run
   ;; in the application read/write phase.  If the logic, or the string
   ;; itself, is modified, this must be updated.
+  :version "21.4"
   :type 'regexp
   :group 'starttls)
 
@@ -178,6 +183,7 @@ The default is what GNUTLS's \"gnutls-cli\" outputs."
 The default is what GNUTLS's \"gnutls-cli\" outputs."
   ;; GNUTLS cli.c:do_handshake() print this string on failure.  If the
   ;; logic, or the string itself, is modified, this must be updated.
+  :version "21.4"
   :type 'regexp
   :group 'starttls)
 
@@ -188,6 +194,7 @@ The default is what GNUTLS's \"gnutls-cli\" outputs."
   ;; common.c:print_info(), that unconditionally print this string
   ;; last.  If that logic, or the string itself, is modified, this
   ;; must be updated.
+  :version "21.4"
   :type 'regexp
   :group 'starttls)
 
index 5f57c08..1b58760 100644 (file)
@@ -67,18 +67,21 @@ after successful negotiation."
 
 (defcustom tls-process-connection-type nil
   "*Value for `process-connection-type' to use when starting TLS process."
+  :version "21.4"
   :type 'boolean
   :group 'tls)
 
 (defcustom tls-success "- Handshake was completed"
   "*Regular expression indicating completed TLS handshakes.
 The default is what GNUTLS's \"gnutls-cli\" outputs."
+  :version "21.4"
   :type 'regexp
   :group 'tls)
 
 (defcustom tls-certtool-program (executable-find "certtool")
   "Name of  GnuTLS certtool.
 Used by `tls-certificate-information'."
+  :version "21.4"
   :type '(repeat string)
   :group 'tls)