Revision: emacs@sv.gnu.org/emacs--devo--0--patch-134

Merge from gnus--rel--5.10

Patches applied:

 * gnus--rel--5.10  (patch 43-48)

   - Munge arch explicit ids in etc/images to match Emacs
   - Update from CVS
This commit is contained in:
Miles Bader 2006-03-03 07:45:27 +00:00
parent c99f622718
commit 719120eff4
9 changed files with 164 additions and 66 deletions

View file

@ -1,3 +1,56 @@
2006-03-03 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-decode.el (mm-get-part): Don't use
mm-with-unibyte-current-buffer.
* gnus-sum.el (gnus-summary-set-display-table): Don't nix out
characters 160 through 255 in Emacs 23.
2006-03-02 Katsumi Yamaoka <yamaoka@jpl.org>
* mml.el (mml-generate-mime-1): Encode parts other than text/* or
message/* containing non-ASCII text properly.
2006-02-28 Katsumi Yamaoka <yamaoka@jpl.org>
* mm-util.el (mm-with-unibyte-current-buffer): Add note.
2006-02-28 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
* nnweb.el (nnweb-gmane-create-mapping): Don't choke on ^M.
2006-02-28 Reiner Steib <Reiner.Steib@gmx.de>
* nnweb.el (nnweb-type-definition, nnweb-gmane-search): Use new
nov.php.
2006-02-28 Andreas Seltenreich <uwi7@stud.uni-karlsruhe.de>
* nnweb.el (nnweb-type-definition, nnweb-gmane-create-mapping)
(nnweb-gmane-wash-article, nnweb-gmane-search): Fix Gmane web
groups. Kudos to Olly Betts <olly@survex.com> for providing NOV
output on the server side.
(nnweb-google-create-mapping): Update regexps and add some
progress indication.
2006-02-28 Reiner Steib <Reiner.Steib@gmx.de>
* message.el (message-user-fqdn): Remove useless * in doc string.
* gnus-draft.el (gnus-draft-send): Bind message-signature to avoid
unnecessary interaction when sending queued mails. Reported by
TAKAHASHI Yoshio <tkh@jp.fujitsu.com>.
2006-02-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus-int.el (gnus-open-server): Respect gnus-batch-mode.
Merge of 2006-02-20 change from the trunk.
2006-02-28 Lars Magne Ingebrigtsen <larsi@gnus.org>
* dns.el (query-dns): Protect more against buggy tcp output.
Merge of 2006-02-20 change from the trunk.
2006-02-27 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-sum.el (gnus-sequence-of-unread-articles): Return nil if

View file

@ -347,7 +347,7 @@ If FULLP, return the entire record returned."
(>= (buffer-size) 2))
(goto-char (point-min))
(delete-region (point) (+ (point) 2)))
(unless (zerop (buffer-size))
(when (>= (buffer-size) 2)
(let ((result (dns-read (buffer-string))))
(if fullp
result

View file

@ -146,6 +146,8 @@
message-send-hook))
(message-setup-hook (and (not is-queue)
message-setup-hook))
(message-signature (and (not is-queue)
message-signature))
(gnus-agent-queue-mail (and (not is-queue)
gnus-agent-queue-mail))
(rfc2047-encode-encoded-words nil)

View file

@ -250,10 +250,12 @@ If it is down, start it up (again)."
;; recurse to open the agent's backend.
(setq open-offline (eq gnus-server-unopen-status 'offline))
gnus-server-unopen-status)
((gnus-y-or-n-p
(format "Unable to open %s:%s, go offline? "
(car gnus-command-method)
(cadr gnus-command-method)))
((and
(not gnus-batch-mode)
(gnus-y-or-n-p
(format "Unable to open %s:%s, go offline? "
(car gnus-command-method)
(cadr gnus-command-method))))
(setq open-offline t)
'offline)
(t

View file

@ -3098,8 +3098,11 @@ display only a single character."
(aset table ?\r nil)
;; We keep TAB as well.
(aset table ?\t nil)
;; We nix out any glyphs over 126 that are not set already.
(let ((i 256))
;; We nix out any glyphs 127 through 255, or 127 through 159 in
;; Emacs 23, that are not set already.
(let ((i (if (ignore-errors (= (make-char 'latin-iso8859-1 160) 160))
160
256)))
(while (>= (setq i (1- i)) 127)
;; Only modify if the entry is nil.
(unless (aref table i)

View file

@ -1084,14 +1084,16 @@ external if displayed external."
(defun mm-get-part (handle)
"Return the contents of HANDLE as a string."
(mm-with-unibyte-buffer
(insert (with-current-buffer (mm-handle-buffer handle)
(mm-with-unibyte-current-buffer
(buffer-string))))
(mm-decode-content-transfer-encoding
(mm-handle-encoding handle)
(mm-handle-media-type handle))
(buffer-string)))
(let ((default-enable-multibyte-characters
(with-current-buffer (mm-handle-buffer handle)
(mm-multibyte-p))))
(with-temp-buffer
(insert-buffer-substring (mm-handle-buffer handle))
(mm-disable-multibyte)
(mm-decode-content-transfer-encoding
(mm-handle-encoding handle)
(mm-handle-media-type handle))
(buffer-string))))
(defun mm-insert-part (handle)
"Insert the contents of HANDLE in the current buffer."

View file

@ -796,11 +796,17 @@ Use multibyte mode for this."
(defmacro mm-with-unibyte-current-buffer (&rest forms)
"Evaluate FORMS with current buffer temporarily made unibyte.
Also bind `default-enable-multibyte-characters' to nil.
Equivalent to `progn' in XEmacs"
Equivalent to `progn' in XEmacs
NOTE: Use this macro with caution in multibyte buffers (it is not
worth using this macro in unibyte buffers of course). Use of
`(set-buffer-multibyte t)', which is run finally, is generally
harmful since it is likely to modify existing data in the buffer.
For instance, it converts \"\\300\\255\" into \"\\255\" in Emacs 23."
(let ((multibyte (make-symbol "multibyte"))
(buffer (make-symbol "buffer")))
`(if mm-emacs-mule
(let ((,multibyte enable-multibyte-characters)
(let ((,multibyte enable-multibyte-characters)
(,buffer (current-buffer)))
(unwind-protect
(let (default-enable-multibyte-characters)

View file

@ -507,7 +507,15 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
(let ((coding-system-for-read mm-binary-coding-system))
(mm-insert-file-contents filename nil nil nil nil t)))
(t
(insert (cdr (assq 'contents cont)))))
(let ((contents (cdr (assq 'contents cont))))
(if (if (featurep 'xemacs)
(string-match "[^\000-\377]" contents)
(mm-multibyte-string-p contents))
(progn
(mm-enable-multibyte)
(insert contents)
(setq charset (mm-encode-body)))
(insert contents)))))
(setq encoding (mm-encode-buffer type)
coded (mm-string-as-multibyte (buffer-string))))
(mml-insert-mime-headers cont type charset encoding nil)

View file

@ -27,9 +27,6 @@
;; Note: You need to have `w3' installed for some functions to work.
;; FIXME: Due to changes in the HTML output of Gmane, stuff related to Gmane
;; web groups (`gnus-group-make-web-group') doesn't work anymore.
;;; Code:
(eval-when-compile (require 'cl))
@ -82,7 +79,7 @@ Valid types include `google', `dejanews', and `gmane'.")
(reference . identity)
(map . nnweb-gmane-create-mapping)
(search . nnweb-gmane-search)
(address . "http://gmane.org/")
(address . "http://search.gmane.org/nov.php")
(identifier . nnweb-gmane-identity)))
"Type-definition alist.")
@ -99,7 +96,7 @@ Valid types include `google', `dejanews', and `gmane'.")
(defvoo nnweb-articles nil)
(defvoo nnweb-buffer nil)
(defvar nnweb-group-alist nil)
(defvoo nnweb-group-alist nil)
(defvoo nnweb-group nil)
(defvoo nnweb-hashtb nil)
@ -309,22 +306,26 @@ Valid types include `google', `dejanews', and `gmane'.")
(defun nnweb-google-wash-article ()
;; We have Google's masked e-mail addresses here. :-/
(let ((case-fold-search t))
(let ((case-fold-search t)
(start-re "<pre>\n *")
(end-re "\n *</pre>"))
(goto-char (point-min))
(if (save-excursion
(or (re-search-forward "The requested message.*could not be found."
nil t)
(not (and (re-search-forward "^<pre>" nil t)
(re-search-forward "^</pre>" nil t)))))
(not (and (re-search-forward start-re nil t)
(re-search-forward end-re nil t)))))
;; FIXME: Don't know how to indicate "not found".
;; Should this function throw an error? --rsteib
(progn
(gnus-message 3 "Requested article not found")
(erase-buffer))
(delete-region (point-min)
(1+ (re-search-forward "^<pre>" nil t)))
(re-search-forward start-re))
(goto-char (point-min))
(delete-region (- (re-search-forward "^</pre>" nil t) (length "</pre>"))
(delete-region (progn
(re-search-forward end-re)
(match-beginning 0))
(point-max))
(mm-url-decode-entities))))
@ -403,6 +404,7 @@ Valid types include `google', `dejanews', and `gmane'.")
(save-excursion
(set-buffer nnweb-buffer)
(erase-buffer)
(nnheader-message 7 "Searching google...")
(when (funcall (nnweb-definition 'search) nnweb-search)
(let ((more t)
(i 0))
@ -413,15 +415,18 @@ Valid types include `google', `dejanews', and `gmane'.")
(goto-char (point-min))
(incf i 100)
(if (or (not (re-search-forward
"<td><a href=\"\n\\([^>\"]+\\)\"><img src=\"/img/nav_next" nil t))
"<a href=\"\n\\([^>\"]+\\)\"><img src=\"[^\"]+next"
nil t))
(>= i nnweb-max-hits))
(setq more nil)
;; Yup, there are more articles
(setq more (concat (nnweb-definition 'base) (match-string 1)))
(when more
(erase-buffer)
(nnheader-message 7 "Searching google...(%d)" i)
(mm-url-insert more))))
;; Return the articles in the right order.
(nnheader-message 7 "Searching google...done")
(setq nnweb-articles
(sort nnweb-articles 'car-less-than-car))))))
@ -454,46 +459,61 @@ Valid types include `google', `dejanews', and `gmane'.")
"Perform the search and create a number-to-url alist."
(save-excursion
(set-buffer nnweb-buffer)
(erase-buffer)
(when (funcall (nnweb-definition 'search) nnweb-search)
(let ((more t)
(case-fold-search t)
(active (or (cadr (assoc nnweb-group nnweb-group-alist))
(cons 1 0)))
subject group url
map)
;; Remove stuff from the beginning of results
(let ((case-fold-search t)
(active (or (cadr (assoc nnweb-group nnweb-group-alist))
(cons 1 0)))
map)
(erase-buffer)
(nnheader-message 7 "Searching Gmane..." )
(when (funcall (nnweb-definition 'search) nnweb-search)
(goto-char (point-min))
(search-forward "Search Results</h1><ul>" nil t)
(delete-region (point-min) (point))
(goto-char (point-min))
;; Iterate over the actual hits
(while (re-search-forward ".*href=\"\\([^\"]+\\)\">\\(.*\\)" nil t)
(setq url (concat "http://gmane.org/" (match-string 1)))
(setq subject (match-string 2))
(unless (nnweb-get-hashtb url)
(push
(list
(incf (cdr active))
(make-full-mail-header
(cdr active) (concat "(" group ") " subject) nil nil
nil nil 0 0 url))
map)
(nnweb-set-hashtb (cadar map) (car map))))
;; Return the articles in the right order.
(setq nnweb-articles
(sort (nconc nnweb-articles map) 'car-less-than-car))))))
;; Skip the status line
(forward-line 1)
;; Thanks to Olly Betts we now have NOV lines in our buffer!
(while (not (eobp))
(unless (or (eolp) (looking-at "\x0d"))
(let ((header (nnheader-parse-nov)))
(let ((xref (mail-header-xref header))
(from (mail-header-from header))
(subject (mail-header-subject header))
(rfc2047-encoding-type 'mime))
(when (string-match " \\([^:]+\\):\\([0-9]+\\)" xref)
(mail-header-set-xref
header
(format "http://article.gmane.org/%s/%s/raw"
(match-string 1 xref)
(match-string 2 xref))))
;; Add host part to gmane-encrypted addresses
(when (string-match "@$" from)
(mail-header-set-from header
(concat from "public.gmane.org")))
(mail-header-set-subject header
(rfc2047-encode-string subject))
(unless (nnweb-get-hashtb (mail-header-xref header))
(push
(list
(incf (cdr active))
header)
map)
(nnweb-set-hashtb (cadar map) (car map))))))
(forward-line 1)))
(nnheader-message 7 "Searching Gmane...done")
(setq nnweb-articles
(sort (nconc nnweb-articles map) 'car-less-than-car)))))
(defun nnweb-gmane-wash-article ()
(let ((case-fold-search t))
(goto-char (point-min))
(re-search-forward "<!--X-Head-of-Message-->" nil t)
(delete-region (point-min) (point))
(goto-char (point-min))
(while (looking-at "^<li><em>\\([^ ]+\\)</em>.*</li>")
(replace-match "\\1\\2" t)
(forward-line 1))
(mm-url-remove-markup)))
(when (search-forward "<!--X-Head-of-Message-->" nil t)
(delete-region (point-min) (point))
(goto-char (point-min))
(while (looking-at "^<li><em>\\([^ ]+\\)</em>.*</li>")
(replace-match "\\1\\2" t)
(forward-line 1))
(mm-url-remove-markup))))
(defun nnweb-gmane-search (search)
(mm-url-insert
@ -501,11 +521,13 @@ Valid types include `google', `dejanews', and `gmane'.")
(nnweb-definition 'address)
"?"
(mm-url-encode-www-form-urlencoded
`(("query" . ,search)))))
`(("query" . ,search)
("HITSPERPAGE" . ,(number-to-string nnweb-max-hits))))))
(setq buffer-file-name nil)
(set-buffer-multibyte t)
(mm-decode-coding-region (point-min) (point-max) 'utf-8)
t)
(defun nnweb-gmane-identity (url)
"Return a unique identifier based on URL."
(if (string-match "group=\\(.+\\)" url)