aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorMiles Bader2009-08-29 00:27:12 +0000
committerMiles Bader2009-08-29 00:27:12 +0000
commitb0b63450dc77a67c017123bdfb7f079f27f0ef2a (patch)
tree4b49de1df54d4eb7fe6c6954037f46aa26de8a7a /lisp
parentd30a05d164446adde5d3c00798b2945891f09df6 (diff)
downloademacs-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/ChangeLog20
-rw-r--r--lisp/gnus/gnus-art.el27
-rw-r--r--lisp/gnus/gnus-group.el12
-rw-r--r--lisp/gnus/gnus-sum.el33
-rw-r--r--lisp/gnus/mml.el33
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 @@
12009-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
12009-08-28 Stefan Monnier <monnier@iro.umontreal.ca> 62009-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
312009-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
262009-07-24 Glenn Morris <rgm@gnu.org> 462009-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.
115The value may be a regexp matching those groups, a list of group names,
116or nil. This overrides `mm-w3m-safe-url-regexp' (which see). This is
117effective 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.
115If nil, only list groups that have unread articles." 127If 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.
673If nil, the expirable marks will be unchanged except that the marks
674will be removed when copying or moving articles to a group that has
675not turned auto-expire on. If non-nil, articles that have been read
676will be marked as expirable when being copied or moved to a group in
677which 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.
673If `not-confirm', pseudos will be viewed automatically, and the user 684If `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): "