summaryrefslogtreecommitdiff
path: root/lisp/gnus
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/gnus')
-rw-r--r--lisp/gnus/ChangeLog85
-rw-r--r--lisp/gnus/ChangeLog.118
-rw-r--r--lisp/gnus/auth-source.el2
-rw-r--r--lisp/gnus/deuglify.el4
-rw-r--r--lisp/gnus/gnus-art.el1
-rw-r--r--lisp/gnus/gnus-cite.el2
-rw-r--r--lisp/gnus/gnus-delay.el4
-rw-r--r--lisp/gnus/gnus-group.el2
-rw-r--r--lisp/gnus/gnus-int.el22
-rw-r--r--lisp/gnus/gnus-registry.el16
-rw-r--r--lisp/gnus/gnus-spec.el8
-rw-r--r--lisp/gnus/gnus-start.el2
-rw-r--r--lisp/gnus/gnus-sum.el15
-rw-r--r--lisp/gnus/gnus-util.el7
-rw-r--r--lisp/gnus/html2text.el6
-rw-r--r--lisp/gnus/message.el4
-rw-r--r--lisp/gnus/mm-decode.el32
-rw-r--r--lisp/gnus/mml.el4
-rw-r--r--lisp/gnus/mml1991.el4
-rw-r--r--lisp/gnus/mml2015.el78
-rw-r--r--lisp/gnus/nndir.el3
-rw-r--r--lisp/gnus/nndraft.el3
-rw-r--r--lisp/gnus/nnir.el6
-rw-r--r--lisp/gnus/nnmail.el4
-rw-r--r--lisp/gnus/shr.el32
-rw-r--r--lisp/gnus/smime.el2
-rw-r--r--lisp/gnus/utf7.el6
27 files changed, 270 insertions, 102 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 1f1b46c8532..870164023d5 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,84 @@
+2013-03-06 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * nndir.el (nndir-request-list): Remove 2nd argument passed to
+ nnml-request-list. (Bug#13873)
+ (nndir-request-newsgroups): Remove, unused.
+
+ * nndraft.el (nndraft-request-newsgroups): Remove, unused.
+
+2013-03-03 Ted Phelps <phelps@gnusto.com>
+
+ * shr.el: Make all the overlays set the `evaporate' property so that
+ they're removed properly.
+
+2013-02-25 Adam Sjøgren <asjo@koldfront.dk>
+
+ * mml2015-el (mml2015-epg-key-image): Wrap epg-gpg-program in
+ shell-quote-argument.
+
+2013-02-22 David Engster <deng@randomsample.de>
+
+ * gnus-registry.el (gnus-registry-save): Provide class name when
+ calling `eieio-persistent-read' to avoid "unsafe call" warning. Use
+ `condition-case' to stay compatible with older EIEIO versions which
+ only accept one argument.
+
+2013-02-17 Daiki Ueno <ueno@gnu.org>
+
+ * mml2015.el (epg-key-user-id-list, epg-user-id-string)
+ (epg-user-id-validity): Autoload.
+ (mml2015-epg-check-user-id): New function.
+ (mml2015-epg-check-sub-key): New function split from
+ mml2015-epg-find-usable-key.
+ (mml2015-epg-find-usable-key): Accept context, name, usage, and
+ optional name-is-key-id, to handle the case when user-id is unusable.
+ Reported by Łukasz Stelmach <stlman@poczta.fm>.
+
+2013-02-17 Glenn Morris <rgm@gnu.org>
+
+ * shr.el (shr-put-image): Use image-multi-frame-p if available.
+
+2013-02-16 Glenn Morris <rgm@gnu.org>
+
+ * shr.el (shr-put-image): Only animate images that specify a delay.
+ This is consistent with the old image-animated-p behavior.
+
+2013-02-14 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-util.el (gnus-define-keys): Convert [?\S-\ ] to [(shift space)]
+ for XEmacs.
+
+2013-02-13 Juri Linkov <juri@jurta.org>
+
+ * gnus-art.el (gnus-article-mode-map):
+ * gnus-sum.el (gnus-summary-mode-map, gnus-summary-article-map):
+ Make S-SPC scroll in the opposite sense to SPC. (Bug#2145)
+
+2013-02-10 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * nnir.el ("nnir"): Add 'virtual ability to nnir backend. (This was
+ done in 2012-07-22 by Andrew Cohen, but I reverted it mistakenly.)
+
+2013-02-07 Gábor Vida <gabor.v.vida@ericsson.com> (tiny change)
+
+ * auth-source.el (auth-source-format-prompt): Don't get confused by
+ any "\" in replacement text. (Bug#13637)
+
+2013-01-30 Christopher Schmidt <christopher@ch.ristopher.com>
+
+ * gnus-int.el (gnus-backend-trace-elapsed): New variable.
+ (gnus-backend-trace): Honour gnus-backend-trace.
+
+ * mml.el (mml-insert-part): Insert closing tag.
+
+ * mm-decode.el (mm-save-part): Handle invalid read-file-name results.
+
+2013-01-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-sum.el (gnus-summary-read-group-1): Protect against not being
+ able to find the article, which can happen in debbugs groups,
+ apparently.
+
2013-01-16 Glenn Morris <rgm@gnu.org>
* smiley.el (smiley-style): Make the file loadable in batch mode.
@@ -1434,7 +1515,7 @@
(nnimap-request-move-article): Delete the message from the correct IMAP
server.
-2012-02-19 Vida Gábor <vidagabor@gmail.com> (tiny change)
+2012-02-19 Gábor Vida <vidagabor@gmail.com> (tiny change)
* gnus-demon.el (gnus-demon-init): Don't multiply time twice.
Reported by Peter Münster.
@@ -1644,7 +1725,7 @@
* shr.el (shr-browse-url): Fix the name of the `browse-url-mail'
function call.
-2012-01-27 Vida Gábor <vidagabor@gmail.com> (tiny change)
+2012-01-27 Gábor Vida <vidagabor@gmail.com> (tiny change)
* gnus-demon.el (gnus-demon-run-callback, gnus-demon-init): Convert to
seconds, and make the repeat clause with HH:MM specs work as
diff --git a/lisp/gnus/ChangeLog.1 b/lisp/gnus/ChangeLog.1
index 34533f31bff..9043a23361e 100644
--- a/lisp/gnus/ChangeLog.1
+++ b/lisp/gnus/ChangeLog.1
@@ -452,7 +452,7 @@
* gnus-sum.el (gnus-remove-thread): Didn't work with sparse
threads.
-1998-08-14 Franois Pinard <pinard@iro.umontreal.ca>
+1998-08-14 François Pinard <pinard@iro.umontreal.ca>
* nndoc.el (nndoc-generate-mime-parts-head): Use original Subject,
Message-ID, and References in fully blown articles.
@@ -619,7 +619,7 @@
* gnus.el: Gnus v5.6.31 is released.
-1998-08-09 Franois Pinard <pinard@iro.umontreal.ca>
+1998-08-09 François Pinard <pinard@iro.umontreal.ca>
* nndoc.el: Split MIME multipart messages, maybe recursively.
(nndoc-mime-parts-type-p, nndoc-transform-mime-parts,
@@ -760,7 +760,7 @@
* gnus-group.el (gnus-group-read-ephemeral-group): Make the server
unique.
-1998-07-28 Franois Pinard <pinard@iro.umontreal.ca>
+1998-07-28 François Pinard <pinard@iro.umontreal.ca>
* gnus-uu.el (gnus-uu-reginize-string): Consider the number of
parts as part of the fixed subject, instead of a wild quantity.
@@ -943,7 +943,7 @@
* nntp.el (nntp-server-opened-hook): Doc change.
-1998-07-10 Franois Pinard <pinard@iro.umontreal.ca>
+1998-07-10 François Pinard <pinard@iro.umontreal.ca>
* gnus-sum.el (gnus-summary-respool-trace): New command and
keystroke.
@@ -1003,7 +1003,7 @@
* nntp.el (nntp-record-command): Give more precise time info.
(nntp-next-result-arrived-p): Look for the end of error lines.
-1998-07-01 Franois Pinard <pinard@iro.umontreal.ca>
+1998-07-01 François Pinard <pinard@iro.umontreal.ca>
* gnus-util.el (gnus-delete-if): Would do the opposite.
@@ -2016,7 +2016,7 @@
* gnus-picon.el (gnus-picons-display-x-face): `buf' -- unbound
var.
-1998-02-28 Franois Pinard <pinard@iro.umontreal.ca>
+1998-02-28 François Pinard <pinard@iro.umontreal.ca>
* gnus: configure'd.
@@ -2370,7 +2370,7 @@
* gnus-sum.el (gnus-summary-exit): Call purging function.
-1998-02-13 Franois Pinard <pinard@iro.umontreal.ca>
+1998-02-13 François Pinard <pinard@iro.umontreal.ca>
* nnmail.el (nnmail-get-new-mail): Don't clear split-history.
(nnmail-purge-split-history): New function.
@@ -3724,3 +3724,7 @@
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el
index ac16200adb2..e94904bf175 100644
--- a/lisp/gnus/auth-source.el
+++ b/lisp/gnus/auth-source.el
@@ -913,7 +913,7 @@ while \(:host t) would find all host entries."
(when (and c v)
(setq prompt (replace-regexp-in-string (format "%%%c" c)
(format "%s" v)
- prompt)))))
+ prompt nil t)))))
prompt)
(defun auth-source-ensure-strings (values)
diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el
index 8ef89a9e56d..36e91980ba2 100644
--- a/lisp/gnus/deuglify.el
+++ b/lisp/gnus/deuglify.el
@@ -270,7 +270,7 @@
:group 'gnus-outlook-deuglify)
(defcustom gnus-outlook-deuglify-attrib-verb-regexp
- "wrote\\|writes\\|says\\|schrieb\\|schreibt\\|meinte\\|skrev\\|a crit\\|schreef\\|escribi"
+ "wrote\\|writes\\|says\\|schrieb\\|schreibt\\|meinte\\|skrev\\|a écrit\\|schreef\\|escribió"
"Regular expression matching the verb used in an attribution line."
:version "22.1"
:type 'string
@@ -472,7 +472,7 @@ NODISPLAY is non-nil, don't redisplay the article buffer."
(provide 'deuglify)
;; Local Variables:
-;; coding: iso-8859-1
+;; coding: utf-8
;; End:
;;; deuglify.el ends here
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 25a555f3d8b..13d9b4e5c28 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -4361,6 +4361,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is
(gnus-define-keys gnus-article-mode-map
" " gnus-article-goto-next-page
+ [?\S-\ ] gnus-article-goto-prev-page
"\177" gnus-article-goto-prev-page
[delete] gnus-article-goto-prev-page
[backspace] gnus-article-goto-prev-page
diff --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el
index 3840f33687c..22e97cd8f4f 100644
--- a/lisp/gnus/gnus-cite.el
+++ b/lisp/gnus/gnus-cite.el
@@ -1250,7 +1250,7 @@ When enabled, it automatically turns on `font-lock-mode'."
(provide 'gnus-cite)
;; Local Variables:
-;; coding: iso-8859-1
+;; coding: utf-8
;; End:
;;; gnus-cite.el ends here
diff --git a/lisp/gnus/gnus-delay.el b/lisp/gnus/gnus-delay.el
index 5c14ffcfbdf..921d24109c2 100644
--- a/lisp/gnus/gnus-delay.el
+++ b/lisp/gnus/gnus-delay.el
@@ -2,7 +2,7 @@
;; Copyright (C) 2001-2013 Free Software Foundation, Inc.
-;; Author: Kai Grojohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+;; Author: Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
;; Keywords: mail, news, extensions
;; This file is part of GNU Emacs.
@@ -186,7 +186,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil."
(provide 'gnus-delay)
;; Local Variables:
-;; coding: iso-8859-1
+;; coding: utf-8
;; End:
;;; gnus-delay.el ends here
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 700d319228f..2c45d3c24a1 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -4377,7 +4377,7 @@ The hook `gnus-exit-gnus-hook' is called before actually exiting."
(defun gnus-group-browse-foreign-server (method)
"Browse a foreign news server.
If called interactively, this function will ask for a select method
- (nntp, nnspool, etc.) and a server address (eg. nntp.some.where).
+ (nntp, nnspool, etc.) and a server address (e.g., nntp.some.where).
If not, METHOD should be a list where the first element is the method
and the second element is the address."
(interactive
diff --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el
index 81e0252cf93..2378b598eeb 100644
--- a/lisp/gnus/gnus-int.el
+++ b/lisp/gnus/gnus-int.el
@@ -248,18 +248,20 @@ If it is down, start it up (again)."
'denied))
(defvar gnus-backend-trace nil)
+(defvar gnus-backend-trace-elapsed nil)
(defun gnus-backend-trace (type form)
- (with-current-buffer (get-buffer-create "*gnus trace*")
- (buffer-disable-undo)
- (goto-char (point-max))
- (insert (format-time-string "%H:%M:%S")
- (format " %.2fs %s %S\n"
- (if (numberp gnus-backend-trace)
- (- (float-time) gnus-backend-trace)
- 0)
- type form))
- (setq gnus-backend-trace (float-time))))
+ (when gnus-backend-trace
+ (with-current-buffer (get-buffer-create "*gnus trace*")
+ (buffer-disable-undo)
+ (goto-char (point-max))
+ (insert (format-time-string "%H:%M:%S")
+ (format " %.2fs %s %S\n"
+ (if (numberp gnus-backend-trace-elapsed)
+ (- (float-time) gnus-backend-trace-elapsed)
+ 0)
+ type form))
+ (setq gnus-backend-trace-elapsed (float-time)))))
(defun gnus-open-server (gnus-command-method)
"Open a connection to GNUS-COMMAND-METHOD."
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index e808b1975b4..5a7dfd82d28 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -87,6 +87,12 @@
(require 'easymenu)
(require 'registry)
+;; Silence XEmacs byte compiler, which will otherwise complain about
+;; call to `eieio-persistent-read'.
+(when (featurep 'xemacs)
+ (byte-compiler-options
+ (warnings (- callargs))))
+
(defvar gnus-adaptive-word-syntax-table)
(defvar gnus-registry-dirty t
@@ -296,8 +302,14 @@ This is not required after changing `gnus-registry-cache-file'."
(condition-case nil
(progn
(gnus-message 5 "Reading Gnus registry from %s..." file)
- (setq gnus-registry-db (gnus-registry-fixup-registry
- (eieio-persistent-read file)))
+ (setq gnus-registry-db
+ (gnus-registry-fixup-registry
+ (condition-case nil
+ (with-no-warnings
+ (eieio-persistent-read file 'registry-db))
+ ;; Older EIEIO versions do not check the class name.
+ ('wrong-number-of-arguments
+ (eieio-persistent-read file)))))
(gnus-message 5 "Reading Gnus registry from %s...done" file))
(error
(gnus-message
diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el
index 446e8260203..2606b8860af 100644
--- a/lisp/gnus/gnus-spec.el
+++ b/lisp/gnus/gnus-spec.el
@@ -418,7 +418,7 @@ characters when given a pad value."
;; them will have the balloon-help text property.
(let ((case-fold-search nil))
(if (string-match
- "\\`\\(.*\\)%[0-9]?[{(]\\(.*\\)%[0-9]?[})]\\(.*\n?\\)\\'\\|%[-0-9]*=\\|%[-0-9]*\\*"
+ "\\`\\(.*\\)%[0-9]?[{(«]\\(.*\\)%[0-9]?[»})]\\(.*\n?\\)\\'\\|%[-0-9]*=\\|%[-0-9]*\\*"
format)
(gnus-parse-complex-format format spec-alist)
;; This is a simple format.
@@ -435,13 +435,13 @@ characters when given a pad value."
(goto-char (point-min))
(insert "(\"")
;; Convert all font specs into font spec lists.
- (while (re-search-forward "%\\([0-9]+\\)?\\([{}()]\\)" nil t)
+ (while (re-search-forward "%\\([0-9]+\\)?\\([«»{}()]\\)" nil t)
(let ((number (if (match-beginning 1)
(match-string 1) "0"))
(delim (aref (match-string 2) 0)))
(if (or (= delim ?\()
(= delim ?\{)
- (= delim ?\))
+ (= delim ?\«))
(replace-match (concat "\"("
(cond ((= delim ?\() "mouse")
((= delim ?\{) "face")
@@ -733,7 +733,7 @@ If PROPS, insert the result."
(provide 'gnus-spec)
;; Local Variables:
-;; coding: iso-8859-1
+;; coding: utf-8
;; End:
;;; gnus-spec.el ends here
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index aa8b6bf2703..48bb99bfbce 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -121,7 +121,7 @@ This variable can be a list of select methods which Gnus will query with
the `ask-server' method in addition to the primary, secondary, and archive
servers.
-Eg.
+E.g.:
(setq gnus-check-new-newsgroups
'((nntp \"some.server\") (nntp \"other.server\")))
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index ea68a6a2fa5..93bc35af3bd 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -451,7 +451,7 @@ current article is unread."
:group 'gnus-summary-maneuvering
:type 'boolean)
-(defcustom gnus-auto-center-summary
+(defcustom gnus-auto-center-summary
(max (or (bound-and-true-p scroll-margin) 0) 2)
"*If non-nil, always center the current summary buffer.
In particular, if `vertical' do only vertical recentering. If non-nil
@@ -1819,6 +1819,7 @@ increase the score of each group you read."
(gnus-define-keys gnus-summary-mode-map
" " gnus-summary-next-page
+ [?\S-\ ] gnus-summary-prev-page
"\177" gnus-summary-prev-page
[delete] gnus-summary-prev-page
[backspace] gnus-summary-prev-page
@@ -2058,6 +2059,7 @@ increase the score of each group you read."
(gnus-define-keys (gnus-summary-article-map "A" gnus-summary-mode-map)
" " gnus-summary-next-page
"n" gnus-summary-next-page
+ [?\S-\ ] gnus-summary-prev-page
"\177" gnus-summary-prev-page
[delete] gnus-summary-prev-page
"p" gnus-summary-prev-page
@@ -4058,9 +4060,10 @@ If SELECT-ARTICLES, only select those articles from GROUP."
gnus-auto-select-first)
(progn
(let ((art (gnus-summary-article-number)))
- (unless (and (not gnus-plugged)
- (or (memq art gnus-newsgroup-undownloaded)
- (memq art gnus-newsgroup-downloadable)))
+ (when (and art
+ gnus-plugged
+ (not (memq art gnus-newsgroup-undownloaded))
+ (not (memq art gnus-newsgroup-downloadable)))
(gnus-summary-goto-article art))))
;; Don't select any articles.
(gnus-summary-position-point)
@@ -9785,7 +9788,7 @@ installed for this command to work."
(when (message-goto-body)
(gnus-narrow-to-body))
(goto-char (point-min))
- (while (search-forward "" (point-max) t)
+ (while (search-forward "·" (point-max) t)
(replace-match "."))
(unmorse-region (point-min) (point-max))
(widen)
@@ -12975,7 +12978,7 @@ BOOKMARK is a bookmark name or a bookmark record."
(run-hooks 'gnus-sum-load-hook)
;; Local Variables:
-;; coding: iso-8859-1
+;; coding: utf-8
;; End:
;;; gnus-sum.el ends here
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index df805c6fb26..331f9556710 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -333,6 +333,13 @@ TIME defaults to the current time."
(defmacro gnus-define-keys (keymap &rest plist)
"Define all keys in PLIST in KEYMAP."
+ ;; Convert the key [?\S-\ ] to [(shift space)] for XEmacs.
+ (when (featurep 'xemacs)
+ (let ((bindings plist))
+ (while bindings
+ (when (equal (car bindings) [?\S-\ ])
+ (setcar bindings [(shift space)]))
+ (setq bindings (cddr bindings)))))
`(gnus-define-keys-1 (quote ,keymap) (quote ,plist)))
(defmacro gnus-define-keys-safe (keymap &rest plist)
diff --git a/lisp/gnus/html2text.el b/lisp/gnus/html2text.el
index 4e05f1abb40..68e75196c87 100644
--- a/lisp/gnus/html2text.el
+++ b/lisp/gnus/html2text.el
@@ -1,4 +1,4 @@
-;;; html2text.el --- a simple html to plain text converter
+;;; html2text.el --- a simple html to plain text converter -*- coding: utf-8 -*-
;; Copyright (C) 2002-2013 Free Software Foundation, Inc.
@@ -65,14 +65,14 @@
("&ndash;" . "-")
("&permil;" . "%%")
("&plusmn;" . "+-")
- ("&pound;" . "")
+ ("&pound;" . "£")
("&quot;" . "\"")
("&raquo;" . ">>")
("&rdquo" . "\"")
("&reg;" . "(R)")
("&rsaquo;" . ")")
("&rsquo;" . "'")
- ("&sect;" . "")
+ ("&sect;" . "§")
("&sup1;" . "^1")
("&sup2;" . "^2")
("&sup3;" . "^3")
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 808e1edd6c3..a6638097b47 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1743,7 +1743,7 @@ no, only reply back to the author."
(file-error))
(mm-coding-system-p 'utf-8)
(executable-find idna-program)
- (string= (idna-to-ascii "rksmrgs")
+ (string= (idna-to-ascii "räksmörgås")
"xn--rksmrgs-5wao1o")
t)
"Whether to encode non-ASCII in domain names into ASCII according to IDNA.
@@ -8421,7 +8421,7 @@ Used in `message-simplify-recipients'."
(run-hooks 'message-load-hook)
;; Local Variables:
-;; coding: iso-8859-1
+;; coding: utf-8
;; End:
;;; message.el ends here
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index b5e4d3e38e8..04f325633ba 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1298,14 +1298,26 @@ PROMPT overrides the default one used to ask user for a file name."
(when filename
(setq filename (gnus-map-function mm-file-name-rewrite-functions
(file-name-nondirectory filename))))
- (setq file
- (read-file-name
- (or prompt
- (format "Save MIME part to (default %s): "
- (or filename "")))
- (or mm-default-directory default-directory)
- (expand-file-name (or filename "")
- (or mm-default-directory default-directory))))
+ (while
+ (progn
+ (setq file
+ (read-file-name
+ (or prompt
+ (format "Save MIME part to (default %s): "
+ (or filename "")))
+ (or mm-default-directory default-directory)
+ (expand-file-name (or filename "")
+ (or mm-default-directory default-directory))))
+ (cond ((or (not file) (equal file ""))
+ (message "Please enter a file name")
+ t)
+ ((and (file-directory-p file)
+ (not filename))
+ (message "Please enter a non-directory file name")
+ t)
+ (t nil)))
+ (sit-for 2)
+ (discard-input))
(if (file-directory-p file)
(setq file (expand-file-name filename file))
(setq file (expand-file-name
@@ -1791,7 +1803,7 @@ If RECURSIVE, search recursively."
(replace-match (char-to-string char))))
;; Remove "soft hyphens".
(goto-char (point-min))
- (while (search-forward "" nil t)
+ (while (search-forward "­" nil t)
(replace-match "" t t))
(libxml-parse-html-region (point-min) (point-max))))
(unless (bobp)
@@ -1813,7 +1825,7 @@ If RECURSIVE, search recursively."
(provide 'mm-decode)
;; Local Variables:
-;; coding: iso-8859-1
+;; coding: utf-8
;; End:
;;; mm-decode.el ends here
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 453086f4c20..3c9344a62c3 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -1440,7 +1440,9 @@ TYPE is the MIME type to use."
;; when you send the message.
(or (eq mail-user-agent 'message-user-agent)
(setq mail-encode-mml t))
- (mml-insert-tag 'part 'type type 'disposition "inline"))
+ (mml-insert-tag 'part 'type type 'disposition "inline")
+ (save-excursion
+ (mml-insert-tag '/part)))
(declare-function message-subscribed-p "message" ())
(declare-function message-make-mail-followup-to "message"
diff --git a/lisp/gnus/mml1991.el b/lisp/gnus/mml1991.el
index 88dee4ad883..5af7639019a 100644
--- a/lisp/gnus/mml1991.el
+++ b/lisp/gnus/mml1991.el
@@ -2,7 +2,7 @@
;; Copyright (C) 1998-2013 Free Software Foundation, Inc.
-;; Author: Sascha Ldecke <sascha@meta-x.de>,
+;; Author: Sascha Lüdecke <sascha@meta-x.de>,
;; Simon Josefsson <simon@josefsson.org> (Mailcrypt interface, Gnus glue)
;; Keywords: PGP
@@ -480,7 +480,7 @@ If no one is selected, default secret key is used. "
(provide 'mml1991)
;; Local Variables:
-;; coding: iso-8859-1
+;; coding: utf-8
;; End:
;;; mml1991.el ends here
diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el
index 275a4867e85..39bce23e76c 100644
--- a/lisp/gnus/mml2015.el
+++ b/lisp/gnus/mml2015.el
@@ -757,6 +757,9 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(autoload 'epg-sub-key-fingerprint "epg")
(autoload 'epg-signature-key-id "epg")
(autoload 'epg-signature-to-string "epg")
+(autoload 'epg-key-user-id-list "epg")
+(autoload 'epg-user-id-string "epg")
+(autoload 'epg-user-id-validity "epg")
(autoload 'epg-configuration "epg-config")
(autoload 'epg-expand-group "epg-config")
(autoload 'epa-select-keys "epa")
@@ -786,21 +789,53 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(cons password-cache-key-id mml2015-epg-secret-key-id-list))
(copy-sequence passphrase)))))
-(defun mml2015-epg-find-usable-key (keys usage)
- (catch 'found
+(defun mml2015-epg-check-user-id (key recipient)
+ (let ((pointer (epg-key-user-id-list key))
+ result)
+ (while pointer
+ (if (and (equal (car (mail-header-parse-address
+ (epg-user-id-string (car pointer))))
+ (car (mail-header-parse-address
+ recipient)))
+ (not (memq (epg-user-id-validity (car pointer))
+ '(revoked expired))))
+ (setq result t
+ pointer nil)
+ (setq pointer (cdr pointer))))
+ result))
+
+(defun mml2015-epg-check-sub-key (key usage)
+ (let ((pointer (epg-key-sub-key-list key))
+ result)
+ ;; The primary key will be marked as disabled, when the entire
+ ;; key is disabled (see 12 Field, Format of colon listings, in
+ ;; gnupg/doc/DETAILS)
+ (unless (memq 'disabled (epg-sub-key-capability (car pointer)))
+ (while pointer
+ (if (and (memq usage (epg-sub-key-capability (car pointer)))
+ (not (memq (epg-sub-key-validity (car pointer))
+ '(revoked expired))))
+ (setq result t
+ pointer nil)
+ (setq pointer (cdr pointer)))))
+ result))
+
+(defun mml2015-epg-find-usable-key (context name usage
+ &optional name-is-key-id)
+ (let ((keys (epg-list-keys context name))
+ key)
(while keys
- (let ((pointer (epg-key-sub-key-list (car keys))))
- ;; The primary key will be marked as disabled, when the entire
- ;; key is disabled (see 12 Field, Format of colon listings, in
- ;; gnupg/doc/DETAILS)
- (unless (memq 'disabled (epg-sub-key-capability (car pointer)))
- (while pointer
- (if (and (memq usage (epg-sub-key-capability (car pointer)))
- (not (memq (epg-sub-key-validity (car pointer))
- '(revoked expired))))
- (throw 'found (car keys)))
- (setq pointer (cdr pointer)))))
- (setq keys (cdr keys)))))
+ (if (and (or name-is-key-id
+ ;; Non email user-id can be supplied through
+ ;; mml2015-signers if mml2015-encrypt-to-self is set.
+ ;; Treat it as valid, as it is user's intention.
+ (not (string-match "\\`<" name))
+ (mml2015-epg-check-user-id (car keys) name))
+ (mml2015-epg-check-sub-key (car keys) usage))
+ (setq key (car keys)
+ keys nil)
+ (setq keys (cdr keys))))
+ key))
;; XXX: since gpg --list-secret-keys does not return validity of each
;; key, `mml2015-epg-find-usable-key' defined above is not enough for
@@ -811,10 +846,12 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
secret-key)
(while (and (not secret-key) secret-keys)
(if (mml2015-epg-find-usable-key
- (epg-list-keys context (epg-sub-key-fingerprint
- (car (epg-key-sub-key-list
- (car secret-keys)))))
- usage)
+ context
+ (epg-sub-key-fingerprint
+ (car (epg-key-sub-key-list
+ (car secret-keys))))
+ usage
+ t)
(setq secret-key (car secret-keys)
secret-keys nil)
(setq secret-keys (cdr secret-keys))))
@@ -828,7 +865,7 @@ If set, it overrides the setting of `mml2015-sign-with-sender'."
(coding-system-for-read 'binary)
(data (shell-command-to-string
(format "%s --list-options no-show-photos --attribute-fd 3 --list-keys %s 3>&1 >/dev/null 2>&1"
- epg-gpg-program key-id))))
+ (shell-quote-argument epg-gpg-program) key-id))))
(when (> (length data) 0)
(insert (substring data 16))
(create-image (buffer-string) nil t)))))
@@ -1115,8 +1152,7 @@ If no one is selected, symmetric encryption will be performed. "
(mapcar
(lambda (recipient)
(setq recipient-key (mml2015-epg-find-usable-key
- (epg-list-keys context recipient)
- 'encrypt))
+ context recipient 'encrypt))
(unless (or recipient-key
(y-or-n-p
(format "No public key for %s; skip it? "
diff --git a/lisp/gnus/nndir.el b/lisp/gnus/nndir.el
index b99a0c37d2e..5e68779e977 100644
--- a/lisp/gnus/nndir.el
+++ b/lisp/gnus/nndir.el
@@ -90,8 +90,7 @@
(nnml-request-article 0 nndir-current-group 0 0)
(nnmh-request-group nndir-current-group 0 0)
(nnml-close-group nndir-current-group 0)
- (nnml-request-list (nnoo-current-server 'nndir) nndir-directory)
- (nnml-request-newsgroups (nnoo-current-server 'nndir) nndir-directory))
+ (nnml-request-list (nnoo-current-server 'nndir)))
(provide 'nndir)
diff --git a/lisp/gnus/nndraft.el b/lisp/gnus/nndraft.el
index ad8a8b164de..b19b56ae6ea 100644
--- a/lisp/gnus/nndraft.el
+++ b/lisp/gnus/nndraft.el
@@ -346,8 +346,7 @@ are generated if and only if they are also in `message-draft-headers'.")
nnmh-retrieve-headers
nnmh-request-group
nnmh-close-group
- nnmh-request-list
- nnmh-request-newsgroups))
+ nnmh-request-list))
(provide 'nndraft)
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index e0bfcc2b5f5..cf5a813c5a8 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -1,8 +1,8 @@
-;;; nnir.el --- search mail with various search engines -*- coding: iso-8859-1 -*-
+;;; nnir.el --- search mail with various search engines -*- coding: utf-8 -*-
;; Copyright (C) 1998-2013 Free Software Foundation, Inc.
-;; Author: Kai Grojohann <grossjohann@ls6.cs.uni-dortmund.de>
+;; Author: Kai Großjohann <grossjohann@ls6.cs.uni-dortmund.de>
;; Swish-e and Swish++ backends by:
;; Christoph Conrad <christoph.conrad@gmx.de>.
;; IMAP backend by: Simon Josefsson <jas@pdc.kth.se>.
@@ -298,7 +298,7 @@ is `(valuefunc member)'."
(defvoo nnir-address nil
"The address of the nnir server.")
-(gnus-declare-backend "nnir" 'mail)
+(gnus-declare-backend "nnir" 'mail 'virtual)
;;; User Customizable Variables:
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 85a6d5639a1..a266567987d 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -179,7 +179,7 @@ is to be performed in, and it should return an integer that says how
many days an article can be stored before it is considered \"old\".
It can also return the values `never' and `immediate'.
-Eg.:
+E.g.:
\(setq nnmail-expiry-wait-function
(lambda (newsgroup)
@@ -291,7 +291,7 @@ directory. This hook is called after the incoming mail box has been
emptied, and can be used to call any mail box programs you have
running (\"xwatch\", etc.)
-Eg.
+E.g.:
\(add-hook 'nnmail-read-incoming-hook
(lambda ()
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index c9bf324b4fa..5df5297ba8a 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -347,11 +347,11 @@ size, and full-buffer size."
((eq shr-folding-mode 'none)
(insert text))
(t
- (when (and (string-match "\\`[ \t\n]" text)
+ (when (and (string-match "\\`[ \t\n ]" text)
(not (bolp))
(not (eq (char-after (1- (point))) ? )))
(insert " "))
- (dolist (elem (split-string text "[ \f\t\n\r\v]+" t))
+ (dolist (elem (split-string text "[ \f\t\n\r\v ]+" t))
(when (and (bolp)
(> shr-indentation 0))
(shr-indent))
@@ -391,7 +391,7 @@ size, and full-buffer size."
(shr-indent))
(end-of-line))
(insert " ")))
- (unless (string-match "[ \t\r\n]\\'" text)
+ (unless (string-match "[ \t\r\n ]\\'" text)
(delete-char -1)))))
(defun shr-find-fill-point ()
@@ -520,6 +520,11 @@ size, and full-buffer size."
(dolist (type types)
(shr-add-font (or shr-start (point)) (point) type))))
+(defun shr-make-overlay (beg end &optional buffer front-advance rear-advance)
+ (let ((overlay (make-overlay beg end buffer front-advance rear-advance)))
+ (overlay-put overlay 'evaporate t)
+ overlay))
+
;; Add an overlay in the region, but avoid putting the font properties
;; on blank text at the start of the line, and the newline at the end,
;; to avoid ugliness.
@@ -529,7 +534,7 @@ size, and full-buffer size."
(while (< (point) end)
(when (bolp)
(skip-chars-forward " "))
- (let ((overlay (make-overlay (point) (min (line-end-position) end))))
+ (let ((overlay (shr-make-overlay (point) (min (line-end-position) end))))
(overlay-put overlay 'face type))
(if (< (line-end-position) end)
(forward-line 1)
@@ -615,7 +620,12 @@ size, and full-buffer size."
(overlay-put overlay 'face 'default)))
(insert-image image (or alt "*")))
(put-text-property start (point) 'image-size size)
- (when (image-animated-p image)
+ (when (if (fboundp 'image-multi-frame-p)
+ ;; Only animate multi-frame things that specify a
+ ;; delay; eg animated gifs as opposed to
+ ;; multi-page tiffs. FIXME?
+ (cdr (image-multi-frame-p image))
+ (image-animated-p image))
(image-animate image nil 60)))
image)
(insert alt)))
@@ -785,7 +795,7 @@ ones, in case fg and bg are nil."
(when (and (< (setq column (current-column)) width)
(< (setq column (shr-previous-newline-padding-width column))
width))
- (let ((overlay (make-overlay (point) (1+ (point)))))
+ (let ((overlay (shr-make-overlay (point) (1+ (point)))))
(overlay-put overlay 'before-string
(concat
(mapconcat
@@ -1233,8 +1243,8 @@ ones, in case fg and bg are nil."
(end-of-line)
(insert line shr-table-vertical-line)
(dolist (overlay overlay-line)
- (let ((o (make-overlay (- (point) (nth 0 overlay) 1)
- (- (point) (nth 1 overlay) 1)))
+ (let ((o (shr-make-overlay (- (point) (nth 0 overlay) 1)
+ (- (point) (nth 1 overlay) 1)))
(properties (nth 2 overlay)))
(while properties
(overlay-put o (pop properties) (pop properties)))))
@@ -1335,8 +1345,8 @@ ones, in case fg and bg are nil."
(let ((end (length (car cache))))
(dolist (overlay (cadr cache))
(let ((new-overlay
- (make-overlay (1+ (- end (nth 0 overlay)))
- (1+ (- end (nth 1 overlay)))))
+ (shr-make-overlay (1+ (- end (nth 0 overlay)))
+ (1+ (- end (nth 1 overlay)))))
(properties (nth 2 overlay)))
(while properties
(overlay-put new-overlay
@@ -1466,7 +1476,7 @@ ones, in case fg and bg are nil."
(provide 'shr)
;; Local Variables:
-;; coding: iso-8859-1
+;; coding: utf-8
;; End:
;;; shr.el ends here
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index 7e391c03778..2c2775dfbd7 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -214,7 +214,7 @@ Enabling this will have OpenSSL check the signers certificate
against a certificate revocation list (CRL).
For this to work the CRL must be up-to-date and since they are
-normally updated quite often (ie. several times a day) you
+normally updated quite often (i.e., several times a day) you
probably need some tool to keep them up-to-date. Unfortunately
Gnus cannot do this for you.
diff --git a/lisp/gnus/utf7.el b/lisp/gnus/utf7.el
index 69b189b6b53..b55b77a383b 100644
--- a/lisp/gnus/utf7.el
+++ b/lisp/gnus/utf7.el
@@ -1,4 +1,4 @@
-;;; utf7.el --- UTF-7 encoding/decoding for Emacs -*-coding: iso-8859-1;-*-
+;;; utf7.el --- UTF-7 encoding/decoding for Emacs -*-coding: utf-8;-*-
;; Copyright (C) 1999-2013 Free Software Foundation, Inc.
@@ -52,10 +52,10 @@
;; necessary coding system. The code below doesn't seem to DTRT
;; generally. E.g.:
;;
-;; (utf7-encode "a+")
+;; (utf7-encode "a+£")
;; => "a+ACsAow-"
;;
-;; $ echo "a+"|iconv -f iso-8859-1 -t utf-7
+;; $ echo "a+£"|iconv -f utf-8 -t utf-7
;; a+-+AKM
;;
;; -- fx