diff options
| author | Miles Bader | 2009-08-29 00:27:12 +0000 |
|---|---|---|
| committer | Miles Bader | 2009-08-29 00:27:12 +0000 |
| commit | b0b63450dc77a67c017123bdfb7f079f27f0ef2a (patch) | |
| tree | 4b49de1df54d4eb7fe6c6954037f46aa26de8a7a /lisp | |
| parent | d30a05d164446adde5d3c00798b2945891f09df6 (diff) | |
| download | emacs-b0b63450dc77a67c017123bdfb7f079f27f0ef2a.tar.gz emacs-b0b63450dc77a67c017123bdfb7f079f27f0ef2a.zip | |
Merge from gnus--devo--0
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1629
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/gnus/ChangeLog | 20 | ||||
| -rw-r--r-- | lisp/gnus/gnus-art.el | 27 | ||||
| -rw-r--r-- | lisp/gnus/gnus-group.el | 12 | ||||
| -rw-r--r-- | lisp/gnus/gnus-sum.el | 33 | ||||
| -rw-r--r-- | lisp/gnus/mml.el | 33 |
5 files changed, 97 insertions, 28 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 2bdd3dfa91a..b11a7295d48 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2009-08-28 Katsumi Yamaoka <yamaoka@jpl.org> | ||
| 2 | |||
| 3 | * mml.el (mml-attach-file, mml-attach-buffer, mml-attach-external): | ||
| 4 | Don't save excursion. | ||
| 5 | |||
| 1 | 2009-08-28 Stefan Monnier <monnier@iro.umontreal.ca> | 6 | 2009-08-28 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 7 | ||
| 3 | * nnheader.el (nnheader-find-file-noselect): | 8 | * nnheader.el (nnheader-find-file-noselect): |
| @@ -23,6 +28,21 @@ | |||
| 23 | * gnus-art.el (gnus-button-patch): Use forward-line rather than | 28 | * gnus-art.el (gnus-button-patch): Use forward-line rather than |
| 24 | goto-line. | 29 | goto-line. |
| 25 | 30 | ||
| 31 | 2009-08-12 Katsumi Yamaoka <yamaoka@jpl.org> | ||
| 32 | |||
| 33 | * gnus-group.el (gnus-safe-html-newsgroups): New user option. | ||
| 34 | |||
| 35 | * gnus-art.el (gnus-bind-safe-url-regexp): New macro. | ||
| 36 | (gnus-mime-view-all-parts, gnus-mime-view-part-internally) | ||
| 37 | (gnus-mm-display-part, gnus-mime-display-single) | ||
| 38 | (gnus-mime-display-alternative): Use gnus-bind-safe-url-regexp to | ||
| 39 | override mm-w3m-safe-url-regexp according to gnus-safe-html-newsgroups. | ||
| 40 | |||
| 41 | * gnus-sum.el | ||
| 42 | (gnus-mark-copied-or-moved-articles-as-expirable): New user option. | ||
| 43 | (gnus-summary-move-article): Add expirable mark to articles copied or | ||
| 44 | moved to group that has auto-expire turned on if the option is non-nil. | ||
| 45 | |||
| 26 | 2009-07-24 Glenn Morris <rgm@gnu.org> | 46 | 2009-07-24 Glenn Morris <rgm@gnu.org> |
| 27 | 47 | ||
| 28 | * gnus-demon.el (gnus-demon-add-nntp-close-connection): | 48 | * gnus-demon.el (gnus-demon-add-nntp-close-connection): |
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index cedfff0421c..087ad68c539 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el | |||
| @@ -4740,6 +4740,23 @@ General format specifiers can also be used. See Info node | |||
| 4740 | (vector (caddr c) (car c) :active t)) | 4740 | (vector (caddr c) (car c) :active t)) |
| 4741 | gnus-mime-button-commands))) | 4741 | gnus-mime-button-commands))) |
| 4742 | 4742 | ||
| 4743 | (defmacro gnus-bind-safe-url-regexp (&rest body) | ||
| 4744 | "Bind `mm-w3m-safe-url-regexp' according to `gnus-safe-html-newsgroups'." | ||
| 4745 | `(let ((mm-w3m-safe-url-regexp | ||
| 4746 | (let ((group (if (and (eq major-mode 'gnus-article-mode) | ||
| 4747 | (gnus-buffer-live-p | ||
| 4748 | gnus-article-current-summary)) | ||
| 4749 | (with-current-buffer gnus-article-current-summary | ||
| 4750 | gnus-newsgroup-name) | ||
| 4751 | gnus-newsgroup-name))) | ||
| 4752 | (if (cond ((stringp gnus-safe-html-newsgroups) | ||
| 4753 | (string-match gnus-safe-html-newsgroups group)) | ||
| 4754 | ((consp gnus-safe-html-newsgroups) | ||
| 4755 | (member group gnus-safe-html-newsgroups))) | ||
| 4756 | nil | ||
| 4757 | mm-w3m-safe-url-regexp)))) | ||
| 4758 | ,@body)) | ||
| 4759 | |||
| 4743 | (defun gnus-mime-button-menu (event prefix) | 4760 | (defun gnus-mime-button-menu (event prefix) |
| 4744 | "Construct a context-sensitive menu of MIME commands." | 4761 | "Construct a context-sensitive menu of MIME commands." |
| 4745 | (interactive "e\nP") | 4762 | (interactive "e\nP") |
| @@ -4765,7 +4782,7 @@ General format specifiers can also be used. See Info node | |||
| 4765 | (or (search-forward "\n\n") (goto-char (point-max))) | 4782 | (or (search-forward "\n\n") (goto-char (point-max))) |
| 4766 | (let ((inhibit-read-only t)) | 4783 | (let ((inhibit-read-only t)) |
| 4767 | (delete-region (point) (point-max)) | 4784 | (delete-region (point) (point-max)) |
| 4768 | (mm-display-parts handles)))))) | 4785 | (gnus-bind-safe-url-regexp (mm-display-parts handles))))))) |
| 4769 | 4786 | ||
| 4770 | (defun gnus-article-jump-to-part (n) | 4787 | (defun gnus-article-jump-to-part (n) |
| 4771 | "Jump to MIME part N." | 4788 | "Jump to MIME part N." |
| @@ -5267,7 +5284,7 @@ If no internal viewer is available, use an external viewer." | |||
| 5267 | (when handle | 5284 | (when handle |
| 5268 | (if (mm-handle-undisplayer handle) | 5285 | (if (mm-handle-undisplayer handle) |
| 5269 | (mm-remove-part handle) | 5286 | (mm-remove-part handle) |
| 5270 | (mm-display-part handle)))))) | 5287 | (gnus-bind-safe-url-regexp (mm-display-part handle))))))) |
| 5271 | 5288 | ||
| 5272 | (defun gnus-mime-action-on-part (&optional action) | 5289 | (defun gnus-mime-action-on-part (&optional action) |
| 5273 | "Do something with the MIME attachment at \(point\)." | 5290 | "Do something with the MIME attachment at \(point\)." |
| @@ -5488,7 +5505,7 @@ N is the numerical prefix." | |||
| 5488 | (save-restriction | 5505 | (save-restriction |
| 5489 | (narrow-to-region (point) | 5506 | (narrow-to-region (point) |
| 5490 | (if (eobp) (point) (1+ (point)))) | 5507 | (if (eobp) (point) (1+ (point)))) |
| 5491 | (mm-display-part handle) | 5508 | (gnus-bind-safe-url-regexp (mm-display-part handle)) |
| 5492 | ;; We narrow to the part itself and | 5509 | ;; We narrow to the part itself and |
| 5493 | ;; then call the treatment functions. | 5510 | ;; then call the treatment functions. |
| 5494 | (goto-char (point-min)) | 5511 | (goto-char (point-min)) |
| @@ -5767,7 +5784,7 @@ If displaying \"text/html\" is discouraged \(see | |||
| 5767 | (set-buffer gnus-summary-buffer) | 5784 | (set-buffer gnus-summary-buffer) |
| 5768 | (error)) | 5785 | (error)) |
| 5769 | gnus-newsgroup-ignored-charsets))) | 5786 | gnus-newsgroup-ignored-charsets))) |
| 5770 | (mm-display-part handle t)) | 5787 | (gnus-bind-safe-url-regexp (mm-display-part handle t))) |
| 5771 | (goto-char (point-max))) | 5788 | (goto-char (point-max))) |
| 5772 | ((and text not-attachment) | 5789 | ((and text not-attachment) |
| 5773 | (when move | 5790 | (when move |
| @@ -5903,7 +5920,7 @@ If displaying \"text/html\" is discouraged \(see | |||
| 5903 | (mail-parse-ignored-charsets | 5920 | (mail-parse-ignored-charsets |
| 5904 | (with-current-buffer gnus-summary-buffer | 5921 | (with-current-buffer gnus-summary-buffer |
| 5905 | gnus-newsgroup-ignored-charsets))) | 5922 | gnus-newsgroup-ignored-charsets))) |
| 5906 | (mm-display-part preferred) | 5923 | (gnus-bind-safe-url-regexp (mm-display-part preferred)) |
| 5907 | ;; Do highlighting. | 5924 | ;; Do highlighting. |
| 5908 | (save-excursion | 5925 | (save-excursion |
| 5909 | (save-restriction | 5926 | (save-restriction |
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 602ee31944a..4a7f06833a3 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el | |||
| @@ -110,6 +110,18 @@ If nil, no groups are permanently visible." | |||
| 110 | :group 'gnus-group-listing | 110 | :group 'gnus-group-listing |
| 111 | :type '(choice regexp (const nil))) | 111 | :type '(choice regexp (const nil))) |
| 112 | 112 | ||
| 113 | (defcustom gnus-safe-html-newsgroups "\\`nnrss[+:]" | ||
| 114 | "Groups in which links in html articles are considered all safe. | ||
| 115 | The value may be a regexp matching those groups, a list of group names, | ||
| 116 | or nil. This overrides `mm-w3m-safe-url-regexp' (which see). This is | ||
| 117 | effective only when emacs-w3m renders html articles, i.e., in the case | ||
| 118 | `mm-text-html-renderer' is set to `w3m'." | ||
| 119 | :version "23.2" | ||
| 120 | :group 'gnus-group-various | ||
| 121 | :type '(choice regexp | ||
| 122 | (repeat :tag "List of group names" (string :tag "Group")) | ||
| 123 | (const nil))) | ||
| 124 | |||
| 113 | (defcustom gnus-list-groups-with-ticked-articles t | 125 | (defcustom gnus-list-groups-with-ticked-articles t |
| 114 | "*If non-nil, list groups that have only ticked articles. | 126 | "*If non-nil, list groups that have only ticked articles. |
| 115 | If nil, only list groups that have unread articles." | 127 | If nil, only list groups that have unread articles." |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 0624418f5ee..c77e3fcd9e2 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -668,6 +668,17 @@ string with the suggested prefix." | |||
| 668 | :group 'gnus-summary | 668 | :group 'gnus-summary |
| 669 | :type 'boolean) | 669 | :type 'boolean) |
| 670 | 670 | ||
| 671 | (defcustom gnus-mark-copied-or-moved-articles-as-expirable nil | ||
| 672 | "If non-nil, mark articles copied or moved to auto-expire group as expirable. | ||
| 673 | If nil, the expirable marks will be unchanged except that the marks | ||
| 674 | will be removed when copying or moving articles to a group that has | ||
| 675 | not turned auto-expire on. If non-nil, articles that have been read | ||
| 676 | will be marked as expirable when being copied or moved to a group in | ||
| 677 | which auto-expire is turned on." | ||
| 678 | :version "23.2" | ||
| 679 | :type 'boolean | ||
| 680 | :group 'gnus-summary-marks) | ||
| 681 | |||
| 671 | (defcustom gnus-view-pseudos nil | 682 | (defcustom gnus-view-pseudos nil |
| 672 | "*If `automatic', pseudo-articles will be viewed automatically. | 683 | "*If `automatic', pseudo-articles will be viewed automatically. |
| 673 | If `not-confirm', pseudos will be viewed automatically, and the user | 684 | If `not-confirm', pseudos will be viewed automatically, and the user |
| @@ -9753,11 +9764,12 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." | |||
| 9753 | (list (cdr art-group))))) | 9764 | (list (cdr art-group))))) |
| 9754 | 9765 | ||
| 9755 | ;; See whether the article is to be put in the cache. | 9766 | ;; See whether the article is to be put in the cache. |
| 9756 | (let ((marks (if (gnus-group-auto-expirable-p to-group) | 9767 | (let* ((expirable (gnus-group-auto-expirable-p to-group)) |
| 9757 | gnus-article-mark-lists | 9768 | (marks (if expirable |
| 9758 | (delete '(expirable . expire) | 9769 | gnus-article-mark-lists |
| 9759 | (copy-sequence gnus-article-mark-lists)))) | 9770 | (delete '(expirable . expire) |
| 9760 | (to-article (cdr art-group))) | 9771 | (copy-sequence gnus-article-mark-lists)))) |
| 9772 | (to-article (cdr art-group))) | ||
| 9761 | 9773 | ||
| 9762 | ;; Enter the article into the cache in the new group, | 9774 | ;; Enter the article into the cache in the new group, |
| 9763 | ;; if that is required. | 9775 | ;; if that is required. |
| @@ -9796,6 +9808,17 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." | |||
| 9796 | to-group (cdar marks) (list to-article) info))) | 9808 | to-group (cdar marks) (list to-article) info))) |
| 9797 | (setq marks (cdr marks))) | 9809 | (setq marks (cdr marks))) |
| 9798 | 9810 | ||
| 9811 | (when (and expirable | ||
| 9812 | gnus-mark-copied-or-moved-articles-as-expirable | ||
| 9813 | (not (memq 'expire to-marks))) | ||
| 9814 | ;; Mark this article as expirable. | ||
| 9815 | (push 'expire to-marks) | ||
| 9816 | (when (equal to-group gnus-newsgroup-name) | ||
| 9817 | (push to-article gnus-newsgroup-expirable)) | ||
| 9818 | ;; Copy the expirable mark to other group. | ||
| 9819 | (gnus-add-marked-articles | ||
| 9820 | to-group 'expire (list to-article) info)) | ||
| 9821 | |||
| 9799 | (gnus-request-set-mark | 9822 | (gnus-request-set-mark |
| 9800 | to-group (list (list (list to-article) 'add to-marks)))) | 9823 | to-group (list (list (list to-article) 'add to-marks)))) |
| 9801 | 9824 | ||
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el index 6028ce8b205..796470bd17f 100644 --- a/lisp/gnus/mml.el +++ b/lisp/gnus/mml.el | |||
| @@ -1292,15 +1292,14 @@ body) or \"attachment\" (separate from the body)." | |||
| 1292 | (description (mml-minibuffer-read-description)) | 1292 | (description (mml-minibuffer-read-description)) |
| 1293 | (disposition (mml-minibuffer-read-disposition type nil file))) | 1293 | (disposition (mml-minibuffer-read-disposition type nil file))) |
| 1294 | (list file type description disposition))) | 1294 | (list file type description disposition))) |
| 1295 | (save-excursion | 1295 | (unless (message-in-body-p) (goto-char (point-max))) |
| 1296 | (unless (message-in-body-p) (goto-char (point-max))) | 1296 | (mml-insert-empty-tag 'part |
| 1297 | (mml-insert-empty-tag 'part | 1297 | 'type type |
| 1298 | 'type type | 1298 | ;; icicles redefines read-file-name and returns a |
| 1299 | ;; icicles redefines read-file-name and returns a | 1299 | ;; string w/ text properties :-/ |
| 1300 | ;; string w/ text properties :-/ | 1300 | 'filename (mm-substring-no-properties file) |
| 1301 | 'filename (mm-substring-no-properties file) | 1301 | 'disposition (or disposition "attachment") |
| 1302 | 'disposition (or disposition "attachment") | 1302 | 'description description)) |
| 1303 | 'description description))) | ||
| 1304 | 1303 | ||
| 1305 | (defun mml-dnd-attach-file (uri action) | 1304 | (defun mml-dnd-attach-file (uri action) |
| 1306 | "Attach a drag and drop file. | 1305 | "Attach a drag and drop file. |
| @@ -1336,11 +1335,10 @@ BUFFER is the name of the buffer to attach. See | |||
| 1336 | (description (mml-minibuffer-read-description)) | 1335 | (description (mml-minibuffer-read-description)) |
| 1337 | (disposition (mml-minibuffer-read-disposition type nil))) | 1336 | (disposition (mml-minibuffer-read-disposition type nil))) |
| 1338 | (list buffer type description disposition))) | 1337 | (list buffer type description disposition))) |
| 1339 | (save-excursion | 1338 | (unless (message-in-body-p) (goto-char (point-max))) |
| 1340 | (unless (message-in-body-p) (goto-char (point-max))) | 1339 | (mml-insert-empty-tag 'part 'type type 'buffer buffer |
| 1341 | (mml-insert-empty-tag 'part 'type type 'buffer buffer | 1340 | 'disposition disposition |
| 1342 | 'disposition disposition | 1341 | 'description description)) |
| 1343 | 'description description))) | ||
| 1344 | 1342 | ||
| 1345 | (defun mml-attach-external (file &optional type description) | 1343 | (defun mml-attach-external (file &optional type description) |
| 1346 | "Attach an external file into the buffer. | 1344 | "Attach an external file into the buffer. |
| @@ -1351,10 +1349,9 @@ TYPE is the MIME type to use." | |||
| 1351 | (type (mml-minibuffer-read-type file)) | 1349 | (type (mml-minibuffer-read-type file)) |
| 1352 | (description (mml-minibuffer-read-description))) | 1350 | (description (mml-minibuffer-read-description))) |
| 1353 | (list file type description))) | 1351 | (list file type description))) |
| 1354 | (save-excursion | 1352 | (unless (message-in-body-p) (goto-char (point-max))) |
| 1355 | (unless (message-in-body-p) (goto-char (point-max))) | 1353 | (mml-insert-empty-tag 'external 'type type 'name file |
| 1356 | (mml-insert-empty-tag 'external 'type type 'name file | 1354 | 'disposition "attachment" 'description description)) |
| 1357 | 'disposition "attachment" 'description description))) | ||
| 1358 | 1355 | ||
| 1359 | (defun mml-insert-multipart (&optional type) | 1356 | (defun mml-insert-multipart (&optional type) |
| 1360 | (interactive (list (completing-read "Multipart type (default mixed): " | 1357 | (interactive (list (completing-read "Multipart type (default mixed): " |