diff options
Diffstat (limited to 'lisp/gnus')
| -rw-r--r-- | lisp/gnus/ChangeLog | 85 | ||||
| -rw-r--r-- | lisp/gnus/ChangeLog.1 | 18 | ||||
| -rw-r--r-- | lisp/gnus/auth-source.el | 2 | ||||
| -rw-r--r-- | lisp/gnus/deuglify.el | 4 | ||||
| -rw-r--r-- | lisp/gnus/gnus-art.el | 1 | ||||
| -rw-r--r-- | lisp/gnus/gnus-cite.el | 2 | ||||
| -rw-r--r-- | lisp/gnus/gnus-delay.el | 4 | ||||
| -rw-r--r-- | lisp/gnus/gnus-group.el | 2 | ||||
| -rw-r--r-- | lisp/gnus/gnus-int.el | 22 | ||||
| -rw-r--r-- | lisp/gnus/gnus-registry.el | 16 | ||||
| -rw-r--r-- | lisp/gnus/gnus-spec.el | 8 | ||||
| -rw-r--r-- | lisp/gnus/gnus-start.el | 2 | ||||
| -rw-r--r-- | lisp/gnus/gnus-sum.el | 15 | ||||
| -rw-r--r-- | lisp/gnus/gnus-util.el | 7 | ||||
| -rw-r--r-- | lisp/gnus/html2text.el | 6 | ||||
| -rw-r--r-- | lisp/gnus/message.el | 4 | ||||
| -rw-r--r-- | lisp/gnus/mm-decode.el | 32 | ||||
| -rw-r--r-- | lisp/gnus/mml.el | 4 | ||||
| -rw-r--r-- | lisp/gnus/mml1991.el | 4 | ||||
| -rw-r--r-- | lisp/gnus/mml2015.el | 78 | ||||
| -rw-r--r-- | lisp/gnus/nndir.el | 3 | ||||
| -rw-r--r-- | lisp/gnus/nndraft.el | 3 | ||||
| -rw-r--r-- | lisp/gnus/nnir.el | 6 | ||||
| -rw-r--r-- | lisp/gnus/nnmail.el | 4 | ||||
| -rw-r--r-- | lisp/gnus/shr.el | 32 | ||||
| -rw-r--r-- | lisp/gnus/smime.el | 2 | ||||
| -rw-r--r-- | lisp/gnus/utf7.el | 6 |
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 @@ ("–" . "-") ("‰" . "%%") ("±" . "+-") - ("£" . "") + ("£" . "£") (""" . "\"") ("»" . ">>") ("&rdquo" . "\"") ("®" . "(R)") ("›" . ")") ("’" . "'") - ("§" . "") + ("§" . "§") ("¹" . "^1") ("²" . "^2") ("³" . "^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 |
