Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

*** empty log message ***

  • Loading branch information...
commit 20d549d450e86514bc46b5503899a984cc77519a 1 parent 23e063a
@larsmagne larsmagne authored
Showing with 1,138 additions and 521 deletions.
  1. +240 −0 lisp/ChangeLog
  2. +4 −2 lisp/dgnushack.el
  3. +6 −3 lisp/gnus-cache.el
  4. +5 −3 lisp/gnus-cite.el
  5. +3 −2 lisp/gnus-cus.el
  6. +3 −2 lisp/gnus-demon.el
  7. +3 −2 lisp/gnus-ems.el
  8. +24 −24 lisp/gnus-kill.el
  9. +3 −2 lisp/gnus-mh.el
  10. +56 −22 lisp/gnus-msg.el
  11. +3 −2 lisp/gnus-nocem.el
  12. +5 −3 lisp/gnus-salt.el
  13. +69 −8 lisp/gnus-score.el
  14. +3 −2 lisp/gnus-setup.el
  15. +29 −22 lisp/gnus-soup.el
  16. +4 −3 lisp/gnus-srvr.el
  17. +24 −15 lisp/gnus-topic.el
  18. +8 −7 lisp/gnus-uu.el
  19. +37 −81 lisp/gnus-vis.el
  20. +3 −2 lisp/gnus-vm.el
  21. +3 −2 lisp/gnus-xmas.el
  22. +237 −183 lisp/gnus.el
  23. +0 −2  lisp/nnbabyl.el
  24. +3 −2 lisp/nndir.el
  25. +5 −4 lisp/nndoc.el
  26. +3 −2 lisp/nndraft.el
  27. +3 −2 lisp/nneething.el
  28. +29 −31 lisp/nnfolder.el
  29. +3 −2 lisp/nnkiboze.el
  30. +13 −8 lisp/nnmail.el
  31. +3 −5 lisp/nnmbox.el
  32. +3 −2 lisp/nnmh.el
  33. +7 −2 lisp/nnml.el
  34. +28 −3 lisp/nnsoup.el
  35. +3 −2 lisp/nnspool.el
  36. +21 −23 lisp/nntp.el
  37. +3 −2 lisp/nnvirtual.el
  38. +18 −0 texi/ChangeLog
  39. +10 −0 texi/Makefile
  40. +211 −37 texi/gnus.texi
View
240 lisp/ChangeLog
@@ -1,7 +1,247 @@
+Sun Feb 4 16:22:20 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+
+ * gnus.el (gnus-summary-edit-article): Make sure we're in the
+ summary buffer.
+
+Sun Feb 4 14:05:20 1996 Lars Magne Ingebrigtsen <larsi@eistla.ifi.uio.no>
+
+ * nndoc.el (nndoc-guess-digest-type): Too strict body-begin for
+ MIME digests.
+
+ * gnus-msg.el (gnus-removable-headers): Don't remove Bcc header.
+ (gnus-mail-send): Accept a parameter.
+ (gnus-inews-send-mail-copy): Use it.
+
+ * gnus-salt.el (gnus-tree-close): Don't kill the tree buffer.
+
+ * gnus.el (gnus-summary-select-article): Changed return value.
+ (gnus-summary-scroll-up): Use it.
+
+Sat Feb 3 20:39:59 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-summary-dummy-line-format): Included tabs.
+ (gnus-summary-prepare-threads): Insert dummy lines properly.
+ (gnus-summary-hide-thread): Hide dummies better.
+
+ * gnus-uu.el (gnus-uu-get-actions): Escape special characters.
+
+ * gnus-soup.el (gnus-soup-group-brew): Add articles in right
+ order; don't generate display.
+
+ * gnus.el (gnus-summary-sort): Allow sorting in reverse order.
+ (gnus-summary-pop-limit): Don't pop if there isn't anything to
+ pop.
+ (gnus-sort-articles): Would destroy the newsgroup data.
+
+ * gnus-soup.el (gnus-soup-unpack-packet): Return the process value.
+
+ * gnus.el (gnus-summary-exit): Don't bury buffers that don't exist.
+ (gnus-summary-exit-no-update): Ditto.
+
+Sat Feb 3 14:37:31 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+
+ * gnus-soup.el (gnus-soup-add-article): Would bug out on
+ non-existent articles.
+
+ * gnus.el (gnus-configure-windows): Delete windows on all frames.
+
+Sat Feb 3 15:07:38 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.el (gnus-summary-read-group): Wouldn't score anything.
+
+ * gnus.el: 0.34 is released.
+
+Sat Feb 3 13:08:48 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+
+ * gnus-msg.el (gnus-summary-resend-bounced-mail): Strip more
+ gruft.
+
+ * gnus.el: 0.33 is released.
+
+Fri Feb 2 20:19:07 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-summary-exit): Bury the article buffer.
+
+ * gnus-score.el (gnus-score-followup-article): Don't do
+ `score-effect'.
+
+Fri Feb 2 20:07:31 1996 Jason L. Tibbitts, III <tibbs@uh.edu>
+
+ * nnmail.el (nnmail-process-babyl-mail-format): Allow many spaces
+ after ":".
+
+Fri Feb 2 20:05:02 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-summary-select-article): Return t on success.
+
+Thu Feb 1 00:50:54 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * nnfolder.el (nnfolder-request-group): Give a better error
+ message.
+
+ * nnfolder.el: Really use virtual servers.
+
+ * gnus.el (gnus-select-newsgroup): Moved score file processing to
+ an earlier point.
+
+ * gnus-msg.el (gnus-post-method): Use `gnus-post-method' from the
+ group buffer.
+
+ * nnsoup.el (nnsoup-request-expire-articles): Bombed.
+ (nnsoup-delete-unreferenced-message-files): New command.
+
+ * gnus-cache.el (gnus-cache-possibly-enter-article): Update cache
+ mark.
+ (gnus-cache-possibly-remove-article): Ditto.
+
+ * gnus-srvr.el (gnus-server-prepare): Weed out nil servers.
+
+ * gnus-msg.el (gnus-mail-reply): Respect
+ `rmail-dont-reply-to-names'.
+
+Wed Jan 31 19:25:50 1996 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * gnus-msg.el (gnus-inews-insert-mime-headers): `(widen)' before
+ searching for 8-bit characters.
+
+ * gnus-vis.el (gnus-article-highlight-headers): Make it ignore
+ the `intangible' text property.
+
+Thu Feb 1 00:33:37 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-summary-limit-to-unread): Remove sparse articles.
+
+Wed Jan 31 15:54:38 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-score.el (gnus-summary-score-map): Recursive map.
+
+ * gnus-msg.el (gnus-dissociate-buffer-from-draft): Didn't run hook
+ properly.
+
+ * gnus-kill.el (gnus-execute): Don't use `gnus-header-*'.
+
+ * gnus-msg.el (gnus-kill-message-buffer): New command and
+ keystroke.
+ (gnus-mail-setup): Use the gnus-mail-*-method variables.
+
+ * gnus-topic.el (gnus-topic-rename): Default to current topic.
+ (gnus-topic-create-topic): Ditto.
+
+ * gnus-vis.el (gnus-group-highlight-line): Offer ticked number.
+
+ * gnus-uu.el (gnus-uu-grab-articles): Remove the message.
+
+ * gnus-vis.el (gnus-group-highlight): New default for dark
+ backgrounds.
+
+ * gnus-topic.el (gnus-group-prepare-topics): Don't do anything
+ about dead groups.
+
+ * gnus.el (gnus-summary-mode-map): Clobbered "D".
+
+Mon Jan 29 19:06:00 1996 Kim-Minh Kaplan <kkaplan@cdfhp3.in2p3.fr>
+
+ * gnus.el (gnus-simplify-subject-fuzzy): Fold case.
+
+Mon Jan 29 17:48:12 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-summary-limit): Hide any threads, possibly.
+
+ * gnus-msg.el (gnus-forward-insert-buffer): Really delete unwanted
+ headers.
+
+ * gnus-vis.el (gnus-insert-prev-page-button): Allow clicking.
+ (gnus-insert-next-page-button): Ditto.
+
+ * nntp.el (nntp-send-region-to-server): Copy text to a temp buffer
+ before sending.
+
+Sun Jan 28 10:28:39 1996 Lars Magne Ingebrigtsen <larsi@eistla.ifi.uio.no>
+
+ * gnus-cite.el (gnus-dissect-cited-text): Don't push a nil on the
+ list.
+
+Sat Jan 27 20:32:29 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-topic.el (gnus-group-topic-topics-only): Removed variable.
+
+ * nnbabyl.el (nnbabyl-request-group): Don't report failures on
+ empty groups.
+ * nnmbox.el (nnmbox-request-group): Ditto.
+
+ * gnus.el (gnus-simplify-buffer-fuzzy): Simplify [x/x].
+
+ * gnus-score.el (gnus-score-default-header): Duplicate defvars.
+ (gnus-summary-increase-score): Default variables should be
+ symbols, not chars.
+
+ * gnus.el (gnus-summary-mode-map): Wrong name for `t' keystroke.
+
+Sat Jan 27 20:29:45 1996 Marc Auslander <marc@watson.ibm.com>
+
+ * gnus-score.el (gnus-summary-increase-score): Didn't work for
+ non-temporary score entries.
+
+Fri Jan 26 17:24:00 1996 David K}gedal <davidk@lysator.liu.se>
+
+ * nnmail.el (nnmail-check-duplication): Don't tread 'delete as a
+ function
+
+Sat Jan 27 19:51:08 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-topic.el (gnus-topic-prepare-topic): Number of groups would
+ be 0.
+ (gnus-topic-update-topic-line): Ditto.
+
+Fri Jan 26 15:10:09 1996 Steven L. Baur <steve@miranova.com>
+
+ * gnus-vis.el (gnus-article-add-buttons): Need to reset point to top
+ of article before trying the next regexp in the gnus-button-alist.
+
+Sat Jan 27 19:22:24 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-vis.el (gnus-button-alist): Allow space after "<URL: ".
+
+Fri Jan 26 20:20:25 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-topic.el (gnus-topic-indent-level): New variable.
+ (gnus-topic-yank-group): Use it.
+ (gnus-topic-insert-topic-line): Ditto.
+ (gnus-topic-prepare-topic): Ditto.
+
+Fri Jan 26 17:18:25 1996 ISO-2022-JP <yamaoka@ga.sony.co.jp>
+
+ * gnus-vis.el (gnus-article-highlight-headers): Would infloop.
+
+Fri Jan 26 14:10:19 1996 Lars Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-dribble-read-file): Set file modes on the dribble
+ file.
+ (gnus-article-check-hidden-text): Only checked signature.
+ (gnus-article-check-hidden-text): Do things in the article
+ buffer.
+ (gnus-group-line-format-alist): Let N have its old definition.
+ (gnus-group-catchup-group-hook): New variable.
+ (gnus-group-catchup): Use it.
+ (gnus-group-remove-mark): Give a useful return value.
+ (gnus-group-kill-group): Would bug out when killing lots of dead
+ groups.
+
+Thu Jan 25 09:32:19 1996 Jack Vinson <jvinson@cheux.ecs.umass.edu>
+
+ * gnus.el (gnus-group-insert-group-line) : Changed "header" to
+ "gnus-tmp-header" for parameter that gets passed to user
+ functions. Set to the group name, but may not necessarily want
+ this.
+ (gnus-group-set-mode-line) : ditto, gnus-tmp-header set to nil.
+ (gnus-set-mode-line) : ditto, gnus-tmp-header set to nil.
+
Fri Jan 26 07:47:59 1996 Lars Magne Ingebrigtsen <larsi@eistla.ifi.uio.no>
* gnus.el (gnus): Goto the first unread group.
+ * gnus.el: 0.32 is released.
+
Thu Jan 25 18:27:03 1996 Lars Ingebrigtsen <lars@eyesore.no>
* gnus.el: Autoload `gnus-group-highlight-line'.
View
6 lisp/dgnushack.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -28,6 +29,7 @@
(setq load-path (cons "." load-path))
(defun dgnushack-compile ()
+ ;(setq byte-compile-dynamic t)
(let ((files (directory-files "." nil ".el$"))
(xemacs (string-match "XEmacs" emacs-version))
byte-compile-warnings file)
View
9 lisp/gnus-cache.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -173,7 +174,8 @@ variable to \"^nnml\".")
;; Update the active info.
(set-buffer gnus-summary-buffer)
(gnus-cache-update-active group number)
- (push number gnus-newsgroup-cached))
+ (push number gnus-newsgroup-cached)
+ (gnus-summary-update-secondary-mark article))
t))))))
(defun gnus-cache-enter-remove-article (article)
@@ -372,6 +374,7 @@ Returns the list of articles removed."
(progn (forward-line 1) (point)))))
(setq gnus-newsgroup-cached
(delq article gnus-newsgroup-cached))
+ (gnus-summary-update-secondary-mark article)
t)))
(defun gnus-cache-articles-in-group (group)
View
8 lisp/gnus-cite.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -260,7 +261,8 @@ Lines matching `gnus-cite-attribution-suffix' and perhaps
(setq omarks (cdr omarks)))
(push (car omarks) marks))
(setq omarks (cdr omarks)))
- (push (car omarks) marks)
+ (when (car omarks)
+ (push (car omarks) marks))
(nreverse marks)))))
(defun gnus-article-fill-cited-article (&optional force)
View
5 lisp/gnus-cus.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
View
5 lisp/gnus-demon.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
View
5 lisp/gnus-ems.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
View
48 lisp/gnus-kill.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -605,27 +606,26 @@ marked as read or ticked are ignored."
(save-excursion
(let ((killed-no 0)
function article header)
- (if (or (null field) (string-equal field ""))
- (setq function nil)
+ (if (or (null field)
+ (string-equal field "")
+ (not (fboundp
+ (setq function
+ (intern-soft
+ (concat "mail-header-" (downcase field)))))))
+ (error "Unknown header field: \"%s\"" field)
;; Get access function of header filed.
- (setq function (intern-soft (concat "gnus-header-" (downcase field))))
- (if (and function (fboundp function))
- (setq function (symbol-function function))
- (error "Unknown header field: \"%s\"" field))
- ;; Make FORM funcallable.
- (if (and (listp form) (not (eq (car form) 'lambda)))
- (setq form (list 'lambda nil form))))
- ;; Starting from the current article.
- (while (or (and (not article)
- (setq article (gnus-summary-article-number))
- t)
- (setq article
- (gnus-summary-search-forward
- (not ignore-marked) nil backward)))
- (and (or (null gnus-newsgroup-kill-headers)
- (memq article gnus-newsgroup-kill-headers))
- (vectorp (setq header (gnus-summary-article-header article)))
- (gnus-execute-1 function regexp form header)
- (setq killed-no (1+ killed-no))))
- killed-no)))
+ (setq function `(lambda (h) (,function h)))
+ ;; Starting from the current article.
+ (while (or (and (not article)
+ (setq article (gnus-summary-article-number))
+ t)
+ (setq article
+ (gnus-summary-search-forward
+ (not ignore-marked) nil backward)))
+ (and (or (null gnus-newsgroup-kill-headers)
+ (memq article gnus-newsgroup-kill-headers))
+ (vectorp (setq header (gnus-summary-article-header article)))
+ (gnus-execute-1 function regexp form header)
+ (setq killed-no (1+ killed-no))))
+ killed-no))))
View
5 lisp/gnus-mh.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
View
78 lisp/gnus-msg.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -233,7 +234,7 @@ included. Organization, Lines and X-Mailer are optional.")
(defvar gnus-deletable-headers '(Message-ID Date)
"*Headers to be deleted if they already exists and were generated by Gnus previously.")
-(defvar gnus-removable-headers '(NNTP-Posting-Host Bcc Xref)
+(defvar gnus-removable-headers '(NNTP-Posting-Host Xref)
"*Headers to be removed unconditionally before posting.")
(defvar gnus-article-expires 14
@@ -330,11 +331,11 @@ headers.")
(defvar gnus-in-reply-to nil)
(defvar gnus-last-posting-server nil)
-
(eval-and-compile
(autoload 'gnus-uu-post-news "gnus-uu" nil t)
(autoload 'news-setup "rnewspost")
(autoload 'news-reply-mode "rnewspost")
+ (autoload 'rmail-dont-reply-to "mail-utils")
(autoload 'rmail-output "rmailout"))
@@ -570,7 +571,7 @@ If SILENT, don't prompt the user."
;; If the group-method is nil (which shouldn't happen) we use
;; the default method.
((null group-method)
- gnus-select-method)
+ (or gnus-post-method gnus-select-method))
;; We want this group's method.
((and query-method (not (eq query-method 0)))
group-method)
@@ -746,7 +747,7 @@ method to use."
(forward-line 1)
(insert gnus-mail-courtesy-message)))
- (gnus-mail-send)
+ (gnus-mail-send t)
(kill-buffer (current-buffer))
(gnus-message 5 "Sending via mail...done"))))))
@@ -1418,7 +1419,8 @@ nil."
""))))
(or (mail-position-on-field "Mime-Version")
(insert "1.0")
- (cond ((progn
+ (cond ((save-restriction
+ (widen)
(goto-char (point-min))
(re-search-forward "[\200-\377]" nil t))
(or (mail-position-on-field "Content-Type")
@@ -1846,11 +1848,14 @@ mailer."
(gnus-set-work-buffer)
(unless (equal mct "never")
(insert (or reply-to from "")))
- (insert (if (bolp) "" ", ")
- (or to "")
- (if (or (not mct) (not mctdo)) ""
- (concat (if (bolp) "" ", ") mct))
- (if cc (concat (if (bolp) "" ", ") cc) ""))
+ (insert
+ (if (bolp) "" ", ") (or to "")
+ (if (or (not mct) (not mctdo)) ""
+ (concat (if (bolp) "" ", ") mct))
+ (if cc (concat (if (bolp) "" ", ") cc) ""))
+ ;; Remove addresses that match `rmail-dont-reply-to-names'.
+ (insert (prog1 (rmail-dont-reply-to (buffer-string))
+ (erase-buffer)))
(goto-char (point-min))
(setq ccalist
(mapcar
@@ -2276,6 +2281,13 @@ If INHIBIT-PROMPT, never prompt for a Subject."
(cdr reply)))))
(and winconf (set-window-configuration winconf))))))
+(defun gnus-kill-message-buffer ()
+ "Kill the current buffer after dissociating it from the draft group."
+ (interactive)
+ (when (gnus-y-or-n-p "Dissociate and kill the current buffer? ")
+ (gnus-dissociate-buffer-from-draft)
+ (kill-buffer (current-buffer))))
+
(defun gnus-put-message ()
"Put the current message in some group and return to Gnus."
(interactive)
@@ -2345,10 +2357,12 @@ If INHIBIT-PROMPT, never prompt for a Subject."
(insert gnus-forward-end-separator)
;; Remove all unwanted headers.
(goto-char (point-min))
+ (forward-line 1)
(save-restriction
(narrow-to-region (point) (if (search-forward "\n\n" nil t)
(1- (point))
(point)))
+ (goto-char (point-min))
(delete-non-matching-lines gnus-forward-included-headers))
;; Delete any invisible text.
(goto-char (point-min))
@@ -2532,7 +2546,9 @@ this is a reply."
(erase-buffer)
(insert-buffer-substring gnus-article-buffer)
(goto-char (point-min))
- (search-forward "\n\n")
+ (or (re-search-forward "--- *Original message.*\n" nil t)
+ (and (search-forward "\n\n" nil t)
+ (re-search-forward "^Return-Path:.*\n" nil t)))
;; We remove everything before the bounced mail.
(delete-region
(point-min)
@@ -2560,16 +2576,17 @@ this is a reply."
;;; Sending mail.
-(defun gnus-mail-send ()
+(defun gnus-mail-send (&optional no-generated-headers)
"Send the current buffer as mail.
Headers will be generated before sending."
(interactive)
- (save-excursion
- (save-restriction
- (widen)
- (gnus-inews-narrow-to-headers)
- (gnus-inews-insert-headers gnus-required-mail-headers)
- (gnus-inews-remove-empty-headers)))
+ (unless no-generated-headers
+ (save-excursion
+ (save-restriction
+ (widen)
+ (gnus-inews-narrow-to-headers)
+ (gnus-inews-insert-headers gnus-required-mail-headers)
+ (gnus-inews-remove-empty-headers))))
(widen)
;; Remove the header separator.
(goto-char (point-min))
@@ -2593,6 +2610,7 @@ Headers will be generated before sending."
(use-local-map (copy-keymap (current-local-map)))
(local-set-key "\C-c\C-c" 'gnus-mail-send-and-exit)
(local-set-key "\C-c\C-p" 'gnus-put-message)
+ (local-set-key "\C-c\C-k" 'gnus-kill-message-buffer)
(local-set-key "\C-c\M-d" 'gnus-dissociate-buffer-from-draft)
(local-set-key "\C-c\C-d" 'gnus-associate-buffer-with-draft))
@@ -2622,7 +2640,23 @@ Headers will be generated before sending."
(eq gnus-mail-other-window-method
'gnus-mail-other-window-using-vm)))
'gnus-vm-mail-setup)
- (t 'gnus-sendmail-mail-setup))
+ ((or
+ (eq gnus-mail-method 'sendmail)
+ (and (or (eq type 'reply) (eq type 'followup))
+ (eq gnus-mail-reply-method 'gnus-mail-reply-using-mail))
+ (and (eq type 'forward)
+ (eq gnus-mail-forward-method 'gnus-mail-forward-using-mail))
+ (and (eq type 'new)
+ (eq gnus-mail-other-window-method
+ 'gnus-mail-other-window-using-mail)))
+ 'gnus-sendmail-mail-setup)
+ (t
+ (cond ((or (eq type 'reply) (eq type 'followup))
+ gnus-mail-reply-method)
+ ((eq type 'forward)
+ gnus-mail-forward-method)
+ ((eq type 'new)
+ gnus-mail-other-window-method))))
to subject in-reply-to cc replybuffer actions)
;; Associate this mail buffer with the draft group.
(gnus-enter-buffer-into-draft))
@@ -2803,7 +2837,7 @@ Headers will be generated before sending."
(defun gnus-dissociate-buffer-from-draft ()
"Disable auto-saving and association to the draft group of the current buffer."
(interactive)
- (run-hooks gnus-message-sent-hook)
+ (run-hooks 'gnus-message-sent-hook)
(setq buffer-file-name nil)
(setq buffer-auto-save-file-name nil))
View
5 lisp/gnus-nocem.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
View
8 lisp/gnus-salt.el
@@ -16,8 +16,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -582,7 +583,8 @@ Two predefined functions are available:
(gnus-get-tree-buffer))
(defun gnus-tree-close (group)
- (gnus-kill-buffer gnus-tree-buffer))
+ ;(gnus-kill-buffer gnus-tree-buffer)
+ )
(defun gnus-highlight-selected-tree (article)
"Highlight the selected article in the tree."
View
77 lisp/gnus-score.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -132,6 +133,56 @@ If this variable is nil, exact matching will always be used.")
(defvar gnus-score-uncacheable-files "ADAPT$"
"*All score files that match this regexp will not be cached.")
+(defvar gnus-score-default-header nil
+ "Default header when entering new scores.
+
+Should be one of the following symbols.
+
+ a: from
+ s: subject
+ b: body
+ h: head
+ i: message-id
+ t: references
+ x: xref
+ l: lines
+ d: date
+ f: followup
+
+If nil, the user will be asked for a header.")
+
+(defvar gnus-score-default-type nil
+ "Default match type when entering new scores.
+
+Should be one of the following symbols.
+
+ s: substring
+ e: exact string
+ f: fuzzy string
+ r: regexp string
+ b: before date
+ a: at date
+ n: this date
+ <: less than number
+ >: greater than number
+ =: equal to number
+
+If nil, the user will be asked for a match type.")
+
+(defvar gnus-score-default-fold nil
+ "Use case folding for new score file entries iff not nil.")
+
+(defvar gnus-score-default-duration nil
+ "Default duration of effect when entering new scores.
+
+Should be one of the following symbols.
+
+ t: temporary
+ p: permanent
+ i: immediate
+
+If nil, the user will be asked for a duration.")
+
;; Internal variables.
@@ -173,7 +224,6 @@ of the last successful match.")
(gnus-define-keys
(gnus-summary-score-map "V" gnus-summary-mode-map)
- "V" gnus-summary-score-map
"s" gnus-summary-set-score
"a" gnus-summary-score-entry
"S" gnus-summary-current-score
@@ -253,9 +303,12 @@ used as score."
(list (list ?t (current-time-string) "temporary")
'(?p perm "permanent") '(?i now "immediate")))
(mimic gnus-score-mimic-keymap)
- (hchar gnus-score-default-header)
- (tchar gnus-score-default-type)
- (pchar gnus-score-default-duration)
+ (hchar (and gnus-score-default-header
+ (aref (symbol-name gnus-score-default-header) 0)))
+ (tchar (and gnus-score-default-type
+ (aref (symbol-name gnus-score-default-type) 0)))
+ (pchar (and gnus-score-default-duration
+ (aref (symbol-name gnus-score-default-duration) 0)))
entry temporary end type match)
;; First we read the header to score.
@@ -351,7 +404,7 @@ used as score."
(if (eq 's score) nil score) ; Score
(if (eq 'perm temporary) ; Temp
nil
- (nth 1 temporary))
+ temporary)
(not (nth 3 entry))) ; Prompt
))
@@ -617,7 +670,7 @@ SCORE is the score to add."
(when id
(gnus-summary-score-entry
"references" (concat id "[ \t]*$") 'r
- score (current-time-string)))))))
+ score (current-time-string) nil t))))))
(defun gnus-score-followup-thread (&optional score)
"Add SCORE to all later articles in the thread the current buffer is part of."
@@ -2124,6 +2177,14 @@ The list is determined from the variable gnus-score-file-alist."
(setq files (cdr files)))
(setq gnus-internal-global-score-files out)))
+(defun gnus-score-default-fold-toggle ()
+ "Toggle folding for new score file entries."
+ (interactive)
+ (setq gnus-score-default-fold (not gnus-score-default-fold))
+ (if gnus-score-default-fold
+ (message "New score file entries will be case insensitive.")
+ (message "New score file entries will be case sensitive.")))
+
(provide 'gnus-score)
;;; gnus-score.el ends here
View
5 lisp/gnus-setup.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
;; My head is starting to spin with all the different mail/news packages.
View
51 lisp/gnus-soup.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -133,16 +134,16 @@ move those articles instead."
(while articles
;; Find the header of the article.
(set-buffer gnus-summary-buffer)
- (setq headers (gnus-summary-article-header (car articles)))
- ;; Put the article in a buffer.
- (set-buffer tmp-buf)
- (when (gnus-request-article-this-buffer
- (car articles) gnus-newsgroup-name)
- (gnus-soup-store gnus-soup-directory prefix headers
- gnus-soup-encoding-type
- gnus-soup-index-type)
- (gnus-soup-area-set-number
- area (1+ (or (gnus-soup-area-number area) 0))))
+ (when (setq headers (gnus-summary-article-header (car articles)))
+ ;; Put the article in a buffer.
+ (set-buffer tmp-buf)
+ (when (gnus-request-article-this-buffer
+ (car articles) gnus-newsgroup-name)
+ (gnus-soup-store gnus-soup-directory prefix headers
+ gnus-soup-encoding-type
+ gnus-soup-index-type)
+ (gnus-soup-area-set-number
+ area (1+ (or (gnus-soup-area-number area) 0)))))
;; Mark article as read.
(set-buffer gnus-summary-buffer)
(gnus-summary-remove-process-mark (car articles))
@@ -256,14 +257,16 @@ $ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\""
msg-buf)))
(defun gnus-soup-group-brew (group)
+ "Enter GROUP and add all articles to a SOUP package."
(let ((gnus-expert-user t)
(gnus-large-newsgroup nil))
- (and (gnus-summary-read-group group)
- (let ((gnus-newsgroup-processable
- (gnus-sorted-complement
- gnus-newsgroup-unreads
- (append gnus-newsgroup-dormant gnus-newsgroup-marked))))
- (gnus-soup-add-article nil)))
+ (when (gnus-summary-read-group group nil nil nil t)
+ (let ((gnus-newsgroup-processable
+ (nreverse
+ (gnus-sorted-complement
+ gnus-newsgroup-unreads
+ (append gnus-newsgroup-dormant gnus-newsgroup-marked)))))
+ (gnus-soup-add-article nil)))
(gnus-summary-exit)))
(defun gnus-soup-insert-idx (offset header)
@@ -487,12 +490,16 @@ file. The vector contain three strings, [prefix name encoding]."
(int-to-string (cdr entry))))
(defun gnus-soup-unpack-packet (dir unpacker packet)
+ "Unpack PACKET into DIR using UNPACKER.
+Return whether the unpacking was successful."
(gnus-make-directory dir)
(message "Unpacking: %s" (format unpacker packet))
- (call-process
- "sh" nil nil nil "-c"
- (format "cd %s ; %s" (expand-file-name dir) (format unpacker packet)))
- (message "Unpacking...done"))
+ (prog1
+ (zerop (call-process
+ "sh" nil nil nil "-c"
+ (format "cd %s ; %s" (expand-file-name dir)
+ (format unpacker packet))))
+ (message "Unpacking...done")))
(defun gnus-soup-send-packet (packet)
(gnus-soup-unpack-packet
View
7 lisp/gnus-srvr.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -192,7 +193,7 @@ The following commands are available:
;; First we do the real list of servers.
(while alist
(push (cdr (setq server (pop alist))) done)
- (when server
+ (when (and server (car server))
(gnus-server-insert-server-line (car server) (cdr server))))
;; Then we insert the list of servers that have been opened in
;; this session.
View
39 lisp/gnus-topic.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -47,12 +48,12 @@ with some simple extensions.
%A Number of unread articles in the groups in the topic and its subtopics.
")
-(defvar gnus-group-topic-topics-only nil
- "*If non-nil, only the topics will be shown when typing `l' or `L'.")
-
(defvar gnus-topic-unique t
"*If non-nil, each group will only belong to one topic.")
+(defvar gnus-topic-indent-level 2
+ "*How much each subtopic should be indented.")
+
;; Internal variables.
(defvar gnus-topic-killed-topics nil)
@@ -110,6 +111,7 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
(erase-buffer))
;; List dead groups?
+ (when nil
(when (and (>= level gnus-level-zombie) (<= lowest gnus-level-zombie))
(gnus-group-prepare-flat-list-dead
(setq gnus-zombie-list (sort gnus-zombie-list 'string<))
@@ -120,7 +122,7 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
(gnus-group-prepare-flat-list-dead
(setq gnus-killed-list (sort gnus-killed-list 'string<))
gnus-level-killed ?K
- regexp))
+ regexp)))
;; Use topics.
(when (< lowest gnus-level-zombie)
@@ -140,9 +142,11 @@ articles in the topic and its subtopics."
(let* ((type (pop topic))
(entries (gnus-topic-find-groups (car type) list-level all))
(visiblep (and (eq (nth 1 type) 'visible) (not silent)))
- (gnus-group-indentation (make-string (* 2 level) ? ))
+ (gnus-group-indentation
+ (make-string (* gnus-topic-indent-level level) ? ))
(beg (progn (beginning-of-line) (point)))
(topic (reverse topic))
+ (all-entries entries)
(unread 0)
info entry end)
;; Insert any sub-topics.
@@ -169,7 +173,7 @@ articles in the topic and its subtopics."
(gnus-topic-insert-topic-line
(car type) visiblep
(not (eq (nth 2 type) 'hidden))
- level entries unread))
+ level all-entries unread))
(goto-char end)
unread))
@@ -254,7 +258,7 @@ articles in the topic and its subtopics."
(defun gnus-topic-insert-topic-line (name visiblep shownp level entries
&optional unread)
(let* ((visible (if visiblep "" "..."))
- (indentation (make-string (* 2 level) ? ))
+ (indentation (make-string (* gnus-topic-indent-level level) ? ))
(total-number-of-articles unread)
(number-of-groups (length entries))
(active-topic (eq gnus-topic-alist gnus-topic-active-alist)))
@@ -406,6 +410,7 @@ articles in the topic and its subtopics."
(car type) (car gnus-group-list-mode)
(cdr gnus-group-list-mode)))
(visiblep (eq (nth 1 type) 'visible))
+ (all-entries entries)
(unread 0)
info entry end)
;; Tally any sub-topics.
@@ -420,7 +425,7 @@ articles in the topic and its subtopics."
(gnus-topic-insert-topic-line
(car type) visiblep
(not (eq (nth 2 type) 'hidden))
- level entries unread)
+ level all-entries unread)
(gnus-delete-line))
unread))
@@ -563,6 +568,7 @@ articles in the topic and its subtopics."
(push (cons 'gnus-topic-mode gnus-topic-mode-map)
minor-mode-map-alist))
(add-hook 'gnus-summary-exit-hook 'gnus-topic-update-topic)
+ (add-hook 'gnus-group-catchup-group-hook 'gnus-topic-update-topic)
(make-local-variable 'gnus-group-prepare-function)
(setq gnus-group-prepare-function 'gnus-group-prepare-topics)
(make-local-variable 'gnus-group-goto-next-group-function)
@@ -617,7 +623,8 @@ group."
(interactive
(list
(read-string "Create topic: ")
- (completing-read "Parent topic: " gnus-topic-alist nil t)))
+ (completing-read "Parent topic: " gnus-topic-alist nil t
+ (cons (gnus-group-parent-topic) 0))))
;; Check whether this topic already exists.
(when (gnus-topic-find-topology topic)
(error "Topic aleady exists"))
@@ -730,9 +737,10 @@ group."
(gnus-topic-inhibit-change-level t)
(gnus-group-indentation
(make-string
- (* 2 (or (save-excursion
- (gnus-topic-goto-topic (gnus-group-parent-topic))
- (gnus-group-topic-level)) 0)) ? ))
+ (* gnus-topic-indent-level
+ (or (save-excursion
+ (gnus-topic-goto-topic (gnus-group-parent-topic))
+ (gnus-group-topic-level)) 0)) ? ))
yanked group alist)
;; We first yank the groups the normal way...
(setq yanked (gnus-group-yank-group arg))
@@ -824,7 +832,8 @@ group."
(interactive
(let (topic)
(list
- (setq topic (completing-read "Rename topic: " gnus-topic-alist nil t))
+ (setq topic (completing-read "Rename topic: " gnus-topic-alist nil t
+ (cons (gnus-group-parent-topic) 0)))
(read-string (format "Rename %s to: " topic)))))
(let ((top (gnus-topic-find-topology old-name))
(entry (assoc old-name gnus-topic-alist)))
View
15 lisp/gnus-uu.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -900,9 +901,8 @@ The headers will be included in the sequence they are matched.")
(setcar files (nconc (list (if (string= action "gnus-uu-archive")
(cons 'action "file")
(cons 'action action))
- (cons 'execute (if (string-match "%" action)
- (format action name)
- (concat action " " name))))
+ (cons 'execute (gnus-uu-command
+ action name)))
(car files))))
(setq files (cdr files)))
ofiles))
@@ -1220,7 +1220,8 @@ The headers will be included in the sequence they are matched.")
(setq state 'middle)))
;; When there are no result-files, then something must be wrong.
- (unless result-files
+ (if result-files
+ (message "")
(cond
((not has-been-begin)
(message "Wrong type file"))
@@ -1300,7 +1301,7 @@ The headers will be included in the sequence they are matched.")
(or (looking-at gnus-uu-body-line)
(gnus-delete-line))
- ; Replace any slashes and spaces in file names before decoding
+ ;; Replace any slashes and spaces in file names before decoding
(goto-char name-beg)
(while (re-search-forward "/" name-end t)
(replace-match ","))
View
118 lisp/gnus-vis.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -213,7 +214,7 @@
`(("\\bin\\( +article\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2
t gnus-button-message-id 3)
;; This is how URLs _should_ be embedded in text...
- ("<URL:\\([^\n\r>]*\\)>" 0 t gnus-button-url 1)
+ ("<URL: *\\([^\n\r>]*\\)>" 0 t gnus-button-url 1)
;; Next regexp stolen from highlight-headers.el.
;; Modified by Vladimir Alexiev.
(,gnus-button-url-regexp 0 t gnus-button-url 0)
@@ -262,10 +263,13 @@ HEADER is a regexp to match a header. For a fuller explanation, see
'((mailp . bold)
((= unread 0) . italic)))
((eq gnus-background-mode 'dark)
- `(((not mailp) .
- ,(custom-face-lookup "ForestGreen" nil nil t nil nil))
- ((zerop unread) .
- ,(custom-face-lookup "Blue" nil nil t nil nil))))
+ `(((> unread 200) . ,(custom-face-lookup "Red" nil nil t nil nil))
+ ((and (< level 3) (zerop unread)) .
+ ,(custom-face-lookup "SeaGreen" nil nil t nil nil))
+ ((< level 3) . ,(custom-face-lookup "SpringGreen" nil nil t nil nil))
+ ((zerop unread) . ,(custom-face-lookup "SteelBlue" nil nil t nil nil))
+ (t . ,(custom-face-lookup "SkyBlue" nil nil t nil nil))
+ ))
(t
`(((not mailp) .
,(custom-face-lookup "ForestGreen" nil nil t nil nil))
@@ -283,6 +287,7 @@ method: The select method.
mailp: Whether the select method is a mail method.
level: The level of the group.
score: The score of the group.
+ticked: The number of ticked articles in the group.
")
@@ -578,10 +583,10 @@ score: The score of the group.
:selected (null gnus-score-default-header)]
["From" (gnus-score-set-default 'gnus-score-default-header 'a)
:style radio
- :selected (eq gnus-score-default-header 'a )]
+ :selected (eq gnus-score-default-header 'a)]
["Subject" (gnus-score-set-default 'gnus-score-default-header 's)
:style radio
- :selected (eq gnus-score-default-header 's )]
+ :selected (eq gnus-score-default-header 's)]
["Article body"
(gnus-score-set-default 'gnus-score-default-header 'b)
:style radio
@@ -807,65 +812,6 @@ score: The score of the group.
;; It is the message that forces the active status to be updated.
(message ""))
-(defvar gnus-score-default-header nil
- "Default header when entering new scores.
-
-Should be one of the following symbols.
-
- a: from
- s: subject
- b: body
- h: head
- i: message-id
- t: references
- x: xref
- l: lines
- d: date
- f: followup
-
-If nil, the user will be asked for a header.")
-
-(defvar gnus-score-default-type nil
- "Default match type when entering new scores.
-
-Should be one of the following symbols.
-
- s: substring
- e: exact string
- f: fuzzy string
- r: regexp string
- b: before date
- a: at date
- n: this date
- <: less than number
- >: greater than number
- =: equal to number
-
-If nil, the user will be asked for a match type.")
-
-(defvar gnus-score-default-fold nil
- "Use case folding for new score file entries iff not nil.")
-
-
-(defun gnus-score-default-fold-toggle ()
- "Toggle folding for new score file entries."
- (interactive)
- (setq gnus-score-default-fold (not gnus-score-default-fold))
- (if gnus-score-default-fold
- (message "New score file entries will be case insensitive.")
- (message "New score file entries will be case sensitive.")))
-
-(defvar gnus-score-default-duration nil
- "Default duration of effect when entering new scores.
-
-Should be one of the following symbols.
-
- t: temporary
- p: permanent
- i: immediate
-
-If nil, the user will be asked for a duration.")
-
(defun gnus-visual-score-map (type)
(if t
nil
@@ -1044,11 +990,13 @@ If nil, the user will be asked for a duration.")
(unread (if (numberp (car entry)) (car entry) 0))
(info (nth 2 entry))
(method (gnus-server-get-method group (gnus-info-method info)))
+ (marked (gnus-info-marks info))
(mailp (memq 'mail (assoc (symbol-name
(car (or method gnus-select-method)))
gnus-valid-select-methods)))
(level (gnus-info-level info))
(score (gnus-info-score info))
+ (ticked (gnus-range-length (cdr (assq 'tick marked))))
(inhibit-read-only t))
;; Eval the cars of the lists until we find a match.
(while (and list
@@ -1324,17 +1272,21 @@ do the highlighting. See the documentation for those functions."
(save-excursion
(set-buffer gnus-article-buffer)
(save-restriction
- (goto-char (point-min))
- (when (search-forward "\n\n" nil t)
- (narrow-to-region (1- (point)) (point-min))
- (let ((alist gnus-header-face-alist)
- (buffer-read-only nil)
- (case-fold-search t)
- (inhibit-point-motion-hooks t)
- entry regexp header-face field-face from hpoints fpoints)
+ (let ((alist gnus-header-face-alist)
+ (buffer-read-only nil)
+ (case-fold-search t)
+ (inhibit-point-motion-hooks t)
+ entry regexp header-face field-face from hpoints fpoints)
+ (goto-char (point-min))
+ (when (search-forward "\n\n" nil t)
+ (narrow-to-region (1- (point)) (point-min))
(while (setq entry (pop alist))
(goto-char (point-min))
- (setq regexp (concat "^\\(" (nth 0 entry) "\\)")
+ (setq regexp (concat "^\\("
+ (if (string-equal "" (nth 0 entry))
+ "[^\t ]"
+ (nth 0 entry))
+ "\\)")
header-face (nth 1 entry)
field-face (nth 2 entry))
(while (and (re-search-forward regexp nil t)
@@ -1350,7 +1302,7 @@ do the highlighting. See the documentation for those functions."
(not (memq (setq from (point)) fpoints)))
(push from fpoints)
(if (re-search-forward "^[^ \t]" nil t)
- (forward-char -1)
+ (forward-char -2)
(goto-char (point-max)))
(put-text-property from (point) 'face field-face)))))))))
@@ -1397,6 +1349,7 @@ specified by `gnus-button-alist'."
(setq beg (point))
(while (setq entry (pop alist))
(setq regexp (car entry))
+ (goto-char beg)
(while (re-search-forward regexp nil t)
(let* ((start (and entry (match-beginning (nth 1 entry))))
(end (and entry (match-end (nth 1 entry))))
@@ -1592,8 +1545,10 @@ specified by `gnus-button-alist'."
(defun gnus-insert-prev-page-button ()
(let ((buffer-read-only nil))
- (gnus-eval-format gnus-prev-page-line-format nil
- `(gnus-prev t local-map ,gnus-prev-page-map))))
+ (gnus-eval-format
+ gnus-prev-page-line-format nil
+ `(gnus-prev t local-map ,gnus-prev-page-map
+ gnus-callback gnus-article-prev-page))))
(defvar gnus-next-page-map nil)
(unless gnus-next-page-map
@@ -1605,7 +1560,8 @@ specified by `gnus-button-alist'."
(defun gnus-insert-next-page-button ()
(let ((buffer-read-only nil))
(gnus-eval-format gnus-next-page-line-format nil
- `(gnus-next t local-map ,gnus-next-page-map))))
+ `(gnus-next t local-map ,gnus-next-page-map
+ gnus-callback gnus-article-prev-page))))
;;; Compatibility Functions:
View
5 lisp/gnus-vm.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
View
5 lisp/gnus-xmas.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
View
420 lisp/gnus.el
@@ -1177,7 +1177,7 @@ possible.
This restriction may disappear in later versions of Gnus.")
(defvar gnus-summary-dummy-line-format
- "* %(: :%) %S\n"
+ "* %(: :%) %S\n"
"*The format specification for the dummy roots in the summary buffer.
It works along the same lines as a normal formatting string,
with some simple extensions.
@@ -1354,6 +1354,9 @@ It calls `gnus-summary-expire-articles' by default.")
(defvar gnus-summary-exit-hook nil
"*A hook called on exit from the summary buffer.")
+(defvar gnus-group-catchup-group-hook nil
+ "*A hook run when catching up a group from the group buffer.")
+
(defvar gnus-open-server-hook nil
"*A hook called just before opening connection to the news server.")
@@ -1577,9 +1580,15 @@ It is called with three parameters -- GROUP, LEVEL and OLDLEVEL.")
`((?M gnus-tmp-marked-mark ?c)
(?S gnus-tmp-subscribed ?c)
(?L gnus-tmp-level ?d)
- (?N gnus-tmp-number ?s)
+ (?N (cond ((eq number t) "*" )
+ ((numberp number)
+ (int-to-string
+ (+ number
+ (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked)))
+ (gnus-range-length (cdr (assq 'tick gnus-tmp-marked))))))
+ (t number)) ?s)
(?R gnus-tmp-number-of-read ?s)
- (?t gnus-tmp-number-total ?s)
+ (?t gnus-tmp-number-total ?d)
(?y gnus-tmp-number-of-unread ?s)
(?I (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked))) ?d)
(?T (gnus-range-length (cdr (assq 'tick gnus-tmp-marked))) ?d)
@@ -1673,7 +1682,7 @@ variable (string, integer, character, etc).")
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version "September Gnus v0.32"
+(defconst gnus-version "September Gnus v0.35"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
@@ -2984,7 +2993,7 @@ If RE-ONLY is non-nil, strip leading `Re:'s only."
(progn (goto-char (match-beginning 0)))
(re-search-forward ":"))))
(goto-char (point-min))
- (while (re-search-forward "[ \t\n]*([^()]*)[ \t]*$" nil t)
+ (while (re-search-forward "[ \t\n]*[[{(][^()]*[]})][ \t]*$" nil t)
(replace-match "" t t))
(goto-char (point-min))
(while (re-search-forward "[ \t]+" nil t)
@@ -3009,9 +3018,9 @@ If RE-ONLY is non-nil, strip leading `Re:'s only."
(defun gnus-simplify-subject-fuzzy (subject)
"Siplify a subject string fuzzily."
- (let ((case-fold-search t))
- (save-excursion
- (gnus-set-work-buffer)
+ (save-excursion
+ (gnus-set-work-buffer)
+ (let ((case-fold-search t))
(insert subject)
(inline (gnus-simplify-buffer-fuzzy))
(buffer-string))))
@@ -3263,7 +3272,10 @@ If RE-ONLY is non-nil, strip leading `Re:'s only."
;; Either remove all windows or just remove all Gnus windows.
(if gnus-use-full-window
- (delete-other-windows)
+ (mapcar (lambda (frame)
+ (select-frame frame)
+ (delete-other-windows))
+ (frame-list))
(gnus-remove-some-windows)
(switch-to-buffer nntp-server-buffer))
@@ -4647,10 +4659,6 @@ increase the score of each group you read."
(zerop number)
(cdr (assq 'tick gnus-tmp-marked)))
?* ? ))
- (gnus-tmp-number
- (cond ((eq number t) "*" )
- ((numberp number) (int-to-string number))
- (t number)))
(gnus-tmp-process-marked
(if (member gnus-tmp-group gnus-group-marked)
gnus-process-mark ? ))
@@ -4735,7 +4743,7 @@ already."
(gnus-tmp-news-server (car (cdr gnus-select-method)))
(gnus-tmp-news-method (car gnus-select-method))
(max-len 60)
- header ;Dummy binding for user-defined formats
+ gnus-tmp-header ;Dummy binding for user-defined formats
;; Get the resulting string.
(mode-string (eval gformat)))
;; If the line is too long, we chop it off.
@@ -4874,11 +4882,15 @@ If UNMARK, remove the mark instead."
(gnus-group-position-point))
(defun gnus-group-remove-mark (group)
+ "Remove the process mark from GROUP and move point there.
+Return nil if the group isn't displayed."
(if (gnus-group-goto-group group)
(save-excursion
- (gnus-group-mark-group 1 'unmark t))
+ (gnus-group-mark-group 1 'unmark t)
+ t)
(setq gnus-group-marked
- (delete group gnus-group-marked))))
+ (delete group gnus-group-marked))
+ nil))
(defun gnus-group-set-mark (group)
"Set the process mark on GROUP."
@@ -5718,6 +5730,7 @@ or nil if no action could be taken."
(when all
(gnus-add-marked-articles group 'tick nil nil 'force)
(gnus-add-marked-articles group 'dormant nil nil 'force))
+ (run-hooks 'gnus-group-catchup-group-hook)
num))))
(defun gnus-group-expire-articles (&optional n)
@@ -5916,10 +5929,10 @@ of groups killed."
(while groups
(gnus-group-remove-mark (car groups))
(gnus-delete-line)
- (setq entry (gnus-gethash (pop groups) gnus-newsrc-hashtb))
- (push (cons (car entry) (nth 2 entry))
- gnus-list-of-killed-groups)
- (setcdr (cdr entry) (cdr (cdr (cdr entry)))))
+ (when (setq entry (gnus-gethash (pop groups) gnus-newsrc-hashtb))
+ (push (cons (car entry) (nth 2 entry))
+ gnus-list-of-killed-groups)
+ (setcdr (cdr entry) (cdr (cdr (cdr entry))))))
(gnus-make-hashtable-from-newsrc-alist)))
(gnus-group-position-point)
@@ -6539,7 +6552,7 @@ and the second element is the address."
"a" gnus-summary-post-news
"x" gnus-summary-limit-to-unread
"s" gnus-summary-isearch-article
- "t" gnus-summary-toggle-header
+ "t" gnus-article-hide-headers
"g" gnus-summary-show-article
"l" gnus-summary-goto-last-article
"\C-c\C-v\C-v" gnus-uu-decode-uu-view
@@ -6550,7 +6563,6 @@ and the second element is the address."
"\M-*" gnus-cache-remove-article
"\M-&" gnus-summary-universal-argument
"\C-l" gnus-recenter
- "D" gnus-summary-enter-digest-group
"I" gnus-summary-increase-score
"L" gnus-summary-lower-score
@@ -7302,10 +7314,10 @@ If NO-DISPLAY, don't generate a summary buffer."
(run-hooks 'gnus-select-group-hook)
;; Set any local variables in the group parameters.
(gnus-summary-set-local-parameters gnus-newsgroup-name)
+ (gnus-update-format-specifications)
;; Do score processing.
(when gnus-use-scoring
(gnus-possibly-score-headers))
- (gnus-update-format-specifications)
;; Check whether to fill in the gaps in the threads.
(when gnus-build-sparse-threads
(gnus-build-sparse-threads))
@@ -7799,7 +7811,7 @@ If NO-DISPLAY, don't generate a summary buffer."
(reverse gnus-article-sort-functions))))))
(gnus-message 7 "Sorting articles...")
(prog1
- (sort articles func)
+ (setq gnus-newsgroup-headers (sort articles func))
(gnus-message 7 "Sorting articles...done")))))
(defun gnus-make-sort-function (funs)
@@ -8030,7 +8042,8 @@ or a straight list of headers."
gnus-tmp-header nil))
;; If the article lies outside the current limit,
;; then we do not display it.
- ((not (memq number gnus-newsgroup-limit))
+ ((and (not (memq number gnus-newsgroup-limit))
+ (not gnus-tmp-dummy-line))
(setq gnus-tmp-gathered
(nconc (mapcar
(lambda (h) (mail-header-number (car h)))
@@ -8059,95 +8072,98 @@ or a straight list of headers."
(when gnus-tmp-header
;; We may have an old dummy line to output before this
;; article.
- (when gnus-tmp-dummy-line
- (gnus-summary-insert-dummy-line
- gnus-tmp-dummy-line (mail-header-number gnus-tmp-header))
- (setq gnus-tmp-dummy-line nil))
-
- ;; Compute the mark.
- (setq
- gnus-tmp-unread
- (cond
- ((memq number gnus-newsgroup-unreads) gnus-unread-mark)
- ((memq number gnus-newsgroup-marked) gnus-ticked-mark)
- ((memq number gnus-newsgroup-dormant) gnus-dormant-mark)
- ((memq number gnus-newsgroup-expirable) gnus-expirable-mark)
- (t (or (cdr (assq number gnus-newsgroup-reads))
- gnus-ancient-mark))))
-
- (push (gnus-data-make number gnus-tmp-unread (1+ (point))
- gnus-tmp-header gnus-tmp-level)
- gnus-newsgroup-data)
-
- ;; Actually insert the line.
- (setq
- gnus-tmp-subject-or-nil
- (cond
- ((and gnus-thread-ignore-subject
- gnus-tmp-prev-subject
- (not (inline (gnus-subject-equal
- gnus-tmp-prev-subject subject))))
- subject)
- ((zerop gnus-tmp-level)
- (if (and (eq gnus-summary-make-false-root 'empty)
- (memq number gnus-tmp-gathered)
- gnus-tmp-prev-subject
- (inline (gnus-subject-equal
- gnus-tmp-prev-subject subject)))
- gnus-summary-same-subject
- subject))
- (t gnus-summary-same-subject)))
- (if (and (eq gnus-summary-make-false-root 'adopt)
- (= gnus-tmp-level 1)
- (memq number gnus-tmp-gathered))
- (setq gnus-tmp-opening-bracket ?\<
- gnus-tmp-closing-bracket ?\>)
- (setq gnus-tmp-opening-bracket ?\[
- gnus-tmp-closing-bracket ?\]))
- (setq
- gnus-tmp-indentation
- (aref gnus-thread-indent-array gnus-tmp-level)
- gnus-tmp-lines (mail-header-lines gnus-tmp-header)
- gnus-tmp-score (or (cdr (assq number gnus-newsgroup-scored))
- gnus-summary-default-score 0)
- gnus-tmp-score-char
- (if (or (null gnus-summary-default-score)
- (<= (abs (- gnus-tmp-score gnus-summary-default-score))
- gnus-summary-zcore-fuzz)) ?
- (if (< gnus-tmp-score gnus-summary-default-score)
- gnus-score-below-mark gnus-score-over-mark))
- gnus-tmp-replied
- (cond ((memq number gnus-newsgroup-processable)
- gnus-process-mark)
- ((memq number gnus-newsgroup-cached)
- gnus-cached-mark)
- ((memq number gnus-newsgroup-replied)
- gnus-replied-mark)
- (t gnus-unread-mark))
- gnus-tmp-from (mail-header-from gnus-tmp-header)
- gnus-tmp-name
- (cond
- ((string-match "(.+)" gnus-tmp-from)
- (substring gnus-tmp-from
- (1+ (match-beginning 0)) (1- (match-end 0))))
- ((string-match "<[^>]+> *$" gnus-tmp-from)
- (setq beg-match (match-beginning 0))
- (or (and (string-match "^\"[^\"]*\"" gnus-tmp-from)
- (substring gnus-tmp-from (1+ (match-beginning 0))
- (1- (match-end 0))))
- (substring gnus-tmp-from 0 beg-match)))
- (t gnus-tmp-from)))
- (when (string= gnus-tmp-name "")
- (setq gnus-tmp-name gnus-tmp-from))
- (or (numberp gnus-tmp-lines) (setq gnus-tmp-lines 0))
- (put-text-property
- (point)
- (progn (eval gnus-summary-line-format-spec) (point))
- 'gnus-number number)
- (when gnus-visual-p
- (forward-line -1)
- (run-hooks 'gnus-summary-update-hook)
- (forward-line 1))
+ (if gnus-tmp-dummy-line
+ (progn
+ (gnus-summary-insert-dummy-line
+ gnus-tmp-dummy-line (mail-header-number gnus-tmp-header))
+ (setq gnus-tmp-dummy-line nil))
+
+ ;; Compute the mark.
+ (setq
+ gnus-tmp-unread
+ (cond
+ ((memq number gnus-newsgroup-unreads) gnus-unread-mark)
+ ((memq number gnus-newsgroup-marked) gnus-ticked-mark)
+ ((memq number gnus-newsgroup-dormant) gnus-dormant-mark)
+ ((memq number gnus-newsgroup-expirable) gnus-expirable-mark)
+ (t (or (cdr (assq number gnus-newsgroup-reads))
+ gnus-ancient-mark))))
+
+ (push (gnus-data-make number gnus-tmp-unread (1+ (point))
+ gnus-tmp-header gnus-tmp-level)
+ gnus-newsgroup-data)
+
+ ;; Actually insert the line.
+ (setq
+ gnus-tmp-subject-or-nil
+ (cond
+ ((and gnus-thread-ignore-subject
+ gnus-tmp-prev-subject
+ (not (inline (gnus-subject-equal
+ gnus-tmp-prev-subject subject))))
+ subject)
+ ((zerop gnus-tmp-level)
+ (if (and (eq gnus-summary-make-false-root 'empty)
+ (memq number gnus-tmp-gathered)
+ gnus-tmp-prev-subject
+ (inline (gnus-subject-equal
+ gnus-tmp-prev-subject subject)))
+ gnus-summary-same-subject
+ subject))
+ (t gnus-summary-same-subject)))
+ (if (and (eq gnus-summary-make-false-root 'adopt)
+ (= gnus-tmp-level 1)
+ (memq number gnus-tmp-gathered))
+ (setq gnus-tmp-opening-bracket ?\<
+ gnus-tmp-closing-bracket ?\>)
+ (setq gnus-tmp-opening-bracket ?\[
+ gnus-tmp-closing-bracket ?\]))
+ (setq
+ gnus-tmp-indentation
+ (aref gnus-thread-indent-array gnus-tmp-level)
+ gnus-tmp-lines (mail-header-lines gnus-tmp-header)
+ gnus-tmp-score (or (cdr (assq number gnus-newsgroup-scored))
+ gnus-summary-default-score 0)
+ gnus-tmp-score-char
+ (if (or (null gnus-summary-default-score)
+ (<= (abs (- gnus-tmp-score gnus-summary-default-score))
+ gnus-summary-zcore-fuzz)) ?
+ (if (< gnus-tmp-score gnus-summary-default-score)
+ gnus-score-below-mark gnus-score-over-mark))
+ gnus-tmp-replied
+ (cond ((memq number gnus-newsgroup-processable)
+ gnus-process-mark)
+ ((memq number gnus-newsgroup-cached)
+ gnus-cached-mark)
+ ((memq number gnus-newsgroup-replied)
+ gnus-replied-mark)
+ (t gnus-unread-mark))
+ gnus-tmp-from (mail-header-from gnus-tmp-header)
+ gnus-tmp-name
+ (cond
+ ((string-match "(.+)" gnus-tmp-from)
+ (substring gnus-tmp-from
+ (1+ (match-beginning 0)) (1- (match-end 0))))
+ ((string-match "<[^>]+> *$" gnus-tmp-from)
+ (setq beg-match (match-beginning 0))
+ (or (and (string-match "^\"[^\"]*\"" gnus-tmp-from)
+ (substring gnus-tmp-from (1+ (match-beginning 0))
+ (1- (match-end 0))))
+ (substring gnus-tmp-from 0 beg-match)))
+ (t gnus-tmp-from)))
+ (when (string= gnus-tmp-name "")
+ (setq gnus-tmp-name gnus-tmp-from))
+ (or (numberp gnus-tmp-lines) (setq gnus-tmp-lines 0))
+ (put-text-property
+ (point)
+ (progn (eval gnus-summary-line-format-spec) (point))
+ 'gnus-number number)
+ (when gnus-visual-p
+ (forward-line -1)
+ (run-hooks 'gnus-summary-update-hook)
+ (forward-line 1))
+
+ )
(setq gnus-tmp-prev-subject subject)))
@@ -8525,7 +8541,7 @@ If WHERE is `summary', the summary mode line format will be used."
(vectorp gnus-current-headers))
(mail-header-subject gnus-current-headers) ""))
max-len
- header);; passed as argument to any user-format-funcs
+ gnus-tmp-header);; passed as argument to any user-format-funcs
(setq mode-string (eval mformat))
(setq max-len (max 4 (if gnus-mode-non-string-length
(- (frame-width)
@@ -9424,6 +9440,8 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
;; not garbage-collected, it seems. This would the lead to en
;; ever-growing Emacs.
(gnus-summary-clear-local-variables)
+ (when (get-buffer gnus-article-buffer)
+ (bury-buffer gnus-article-buffer))
;; We clear the global counterparts of the buffer-local
;; variables as well, just to be on the safe side.
(gnus-configure-windows 'group 'force)
@@ -9472,6 +9490,8 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
(kill-buffer gnus-summary-buffer)))
(when gnus-use-trees
(gnus-tree-close group))
+ (when (get-buffer gnus-article-buffer)
+ (bury-buffer gnus-article-buffer))
;; Return to the group buffer.
(gnus-configure-windows 'group 'force)
;; Clear the current group name.
@@ -9796,7 +9816,7 @@ be displayed."
(setq did article))
(if (or all-headers gnus-show-all-headers)
(gnus-article-show-all-headers))
- nil))
+ 'old))
(if did
(gnus-article-set-window-start
(cdr (assq article gnus-newsgroup-bookmarks)))))))
@@ -9878,7 +9898,7 @@ If BACKWARD, the previous article is selected instead of the next."
(gnus-summary-search-group backward gnus-keep-same-level))))
(while (not ended)
(gnus-message
- 7 "No more%s articles%s" (if unread " unread" "")
+ 5 "No more%s articles%s" (if unread " unread" "")
(if (and group
(not (gnus-ephemeral-group-p gnus-newsgroup-name)))
(format " (Type %s for %s [%s])"
@@ -9990,14 +10010,14 @@ Argument LINES specifies lines to be scrolled up (or down if negative)."
(interactive "p")
(gnus-set-global-variables)
(gnus-configure-windows 'article)
- (or (gnus-summary-select-article nil nil 'pseudo)
- (gnus-eval-in-buffer-window
- gnus-article-buffer
- (cond ((> lines 0)
- (if (gnus-article-next-page lines)
- (gnus-message 3 "End of message")))
- ((< lines 0)
- (gnus-article-prev-page (- lines))))))
+ (when (eq (gnus-summary-select-article nil nil 'pseudo) 'old)
+ (gnus-eval-in-buffer-window
+ gnus-article-buffer
+ (cond ((> lines 0)
+ (if (gnus-article-next-page lines)
+ (gnus-message 3 "End of message")))
+ ((< lines 0)
+ (gnus-article-prev-page (- lines))))))
(gnus-summary-recenter)
(gnus-summary-position-point))
@@ -10120,10 +10140,13 @@ If not given a prefix, use the process marked articles instead."
If given a prefix, remove all limits."
(interactive "P")
(gnus-set-global-variables)
- (prog2
- (if total (setq gnus-newsgroup-limits
- (list (mapcar (lambda (h) (mail-header-number h))
- gnus-newsgroup-headers))))
+ (when total
+ (setq gnus-newsgroup-limits
+ (list (mapcar (lambda (h) (mail-header-number h))
+ gnus-newsgroup-headers))))
+ (unless gnus-newsgroup-limits
+ (error "No limit to pop"))
+ (prog1
(gnus-summary-limit nil 'pop)
(gnus-summary-position-point)))
@@ -10160,7 +10183,7 @@ If ALL is non-nil, limit strictly to unread articles."
(list gnus-del-mark gnus-read-mark gnus-ancient-mark
gnus-killed-mark gnus-kill-file-mark
gnus-low-score-mark gnus-expirable-mark
- gnus-canceled-mark gnus-catchup-mark)
+ gnus-canceled-mark gnus-catchup-mark gnus-sparse-mark)
'reverse)))
(defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-to-marks)
@@ -10282,7 +10305,11 @@ If ALL, mark even excluded ticked and dormants as read."
;; This will do all the work of generating the new summary buffer
;; according to the new limit.
(gnus-summary-prepare)
- ;; Try to return to the article you were at, or on in the
+ ;; Hide any threads, possibly.
+ (and gnus-show-threads
+ gnus-thread-hide-subtree
+ (gnus-summary-hide-all-threads))
+ ;; Try to return to the article you were at, or one in the
;; neighborhood.
(if data
;; We try to find some article after the current one.
@@ -10530,16 +10557,22 @@ Return how many articles were fetched."
gnus-newsgroup-name (list 'nndoc ""))
gnus-current-article))
(ogroup gnus-newsgroup-name)
- (buf (current-buffer)))
+ (case-fold-search t)
+ (buf (current-buffer))
+ dig)
(save-excursion
- (set-buffer gnus-original-article-buffer)
+ (setq dig (nnheader-set-temp-buffer " *gnus digest buffer*"))
+ (insert-buffer-substring gnus-original-article-buffer)
+ (narrow-to-region
+ (goto-char (point-min))
+ (or (search-forward "\n\n" nil t) (point)))
(goto-char (point-min))
- (search-forward "\n\n" nil t)
- (narrow-to-region (point) (point-max)))
+ (delete-matching-lines "^\\(Path\\):")
+ (widen))
(unwind-protect
(if (gnus-group-read-ephemeral-group
name `(nndoc ,name (nndoc-address
- ,(get-buffer gnus-original-article-buffer))
+ ,(get-buffer dig))
(nndoc-article-type ,(if force 'digest 'guess))) t)
;; Make all postings to this group go to the parent group.
(setcdr (nthcdr 4 (gnus-get-info name))
@@ -10549,9 +10582,7 @@ Return how many articles were fetched."
(gnus-set-global-variables)
(gnus-configure-windows 'summary)
(gnus-message 3 "Article couldn't be entered?"))
- (save-excursion
- (set-buffer gnus-original-article-buffer)
- (widen)))))
+ (kill-buffer dig))))
(defun gnus-summary-isearch-article (&optional regexp-p)
"Do incremental search forward on the current article.
@@ -11155,22 +11186,24 @@ This will have permanent effect only in mail groups.
If FORCE is non-nil, allow editing of articles even in read-only
groups."
(interactive "P")
- (gnus-set-global-variables)
- (when (and (not force)
- (gnus-group-read-only-p))
- (error "The current newsgroup does not support article editing."))
- (gnus-summary-select-article t nil t)
- (gnus-configure-windows 'article)
- (select-window (get-buffer-window gnus-article-buffer))
- (gnus-message 6 "C-c C-c to end edits")
- (setq buffer-read-only nil)
- (text-mode)
- (use-local-map (copy-keymap (current-local-map)))
- (local-set-key "\C-c\C-c" 'gnus-summary-edit-article-done)
- (buffer-enable-undo)
- (widen)
- (goto-char (point-min))
- (search-forward "\n\n" nil t))
+ (save-excursion
+ (set-buffer gnus-summary-buffer)
+ (gnus-set-global-variables)
+ (when (and (not force)
+ (gnus-group-read-only-p))
+ (error "The current newsgroup does not support article editing."))
+ (gnus-summary-select-article t nil t)
+ (gnus-configure-windows 'article)
+ (select-window (get-buffer-window gnus-article-buffer))
+ (gnus-message 6 "C-c C-c to end edits")
+ (setq buffer-read-only nil)
+ (text-mode)
+ (use-local-map (copy-keymap (current-local-map)))
+ (local-set-key "\C-c\C-c" 'gnus-summary-edit-article-done)
+ (buffer-enable-undo)
+ (widen)
+ (goto-char (point-min))
+ (search-forward "\n\n" nil t)))
(defun gnus-summary-edit-article-done ()
"Make edits to the current article permanent."
@@ -12060,15 +12093,14 @@ Returns nil if no threads were there to be hidden."
;; Go forward until either the buffer ends or the subthread
;; ends.
(when (and (not (eobp))
- (or (and (zerop (gnus-summary-next-thread 1 t))
- (gnus-summary-find-prev))
+ (or (zerop (gnus-summary-next-thread 1 t))
(goto-char (gnus-data-pos (car (gnus-data-list 'rev))))))
(setq end (point))
(prog1
(if (and (> (point) start)
(search-backward "\n" start t))
(progn
- (subst-char-in-region start end ?\n ?\^M)
+ (subst-char-in-region start (point) ?\n ?\^M)
(gnus-summary-goto-subject article))
(goto-char start)
nil)
@@ -12237,10 +12269,20 @@ Argument REVERSE means reverse order."
(defun gnus-summary-sort (predicate reverse)
"Sort summary buffer by PREDICATE. REVERSE means reverse order."
(gnus-set-global-variables)
- (let* ((gnus-thread-sort-functions
- (list (intern (format "gnus-thread-sort-by-%s" predicate))))
+ (let* ((thread (intern (format "gnus-thread-sort-by-%s" predicate)))
+ (article (intern (format "gnus-article-sort-by-%s" predicate)))
+ (gnus-thread-sort-functions
+ (list
+ (if (not reverse)
+ thread
+ `(lambda (t1 t2)
+ (,thread t2 t1)))))
(gnus-article-sort-functions
- (list (intern (format "gnus-article-sort-by-%s" predicate))))
+ (list
+ (if (not reverse)
+ article
+ `(lambda (t1 t2)
+ (,article t2 t1)))))
(buffer-read-only)
(gnus-summary-prepare-hook nil))
;; We do the sorting by regenerating the threads.
@@ -13163,11 +13205,11 @@ always hide."
((listp gnus-ignored-headers)
(mapconcat 'identity gnus-ignored-headers
"\\|")))))
- (visible (cond ((stringp gnus-visible-headers)
- gnus-visible-headers)
- ((listp gnus-visible-headers)
- (mapconcat 'identity gnus-visible-headers
- "\\|"))))
+ (visible
+ (cond ((stringp gnus-visible-headers)
+ gnus-visible-headers)
+ ((listp gnus-visible-headers)
+ (mapconcat 'identity gnus-visible-headers "\\|"))))
want-list beg want-l)
;; First we narrow to just the headers.
(widen)
@@ -13544,13 +13586,15 @@ matches, the text in question is not a signature.")
(defun gnus-article-check-hidden-text (type arg)
"Return nil if hiding is necessary."
- (let ((hide (gnus-article-hidden-text-p 'signature)))
- (cond ((or (and (null arg) (eq hide 'hidden))
- (and arg (< 0 (prefix-numeric-value arg))))
- (gnus-article-show-hidden-text 'signature))
- ((eq hide 'shown)
- (gnus-article-show-hidden-text 'signature t))
- (t nil))))
+ (save-excursion
+ (set-buffer gnus-article-buffer)
+ (let ((hide (gnus-article-hidden-text-p type)))
+ (cond ((or (and (null arg) (eq hide 'hidden))
+ (and arg (< 0 (prefix-numeric-value arg))))
+ (gnus-article-show-hidden-text type))
+ ((eq hide 'shown)
+ (gnus-article-show-hidden-text type t))
+ (t nil)))))
(defun gnus-article-hidden-text-p (type)
"Say whether the current buffer contains hidden text of type TYPE."
@@ -14072,6 +14116,7 @@ If NEWSGROUP is nil, return the global kill file name instead."
(defvar gnus-dribble-eval-file nil)
(defun gnus-dribble-file-name ()
+ "Return the dribble file for the current .newsrc."
(concat
(if gnus-dribble-directory
(concat (file-name-as-directory gnus-dribble-directory)
@@ -14080,6 +14125,7 @@ If NEWSGROUP is nil, return the global kill file name instead."
"-dribble"))
(defun gnus-dribble-enter (string)
+ "Enter STRING into the dribble buffer."
(if (and (not gnus-dribble-ignore)
gnus-dribble-buffer
(buffer-name gnus-dribble-buffer))
@@ -14090,6 +14136,7 @@ If NEWSGROUP is nil, return the global kill file name instead."
(set-buffer obuf))))
(defun gnus-dribble-read-file ()
+ "Read the dribble file from disk."
(let ((dribble-file (gnus-dribble-file-name)))
(save-excursion
(set-buffer (setq gnus-dribble-buffer
@@ -14104,16 +14151,23 @@ If NEWSGROUP is nil, return the global kill file name instead."
(set-buffer-modified-p nil)
(let ((auto (make-auto-save-file-name))
(gnus-dribble-ignore t))
- (if (or (file-exists-p auto) (file-exists-p dribble-file))
- (progn
- (if (file-newer-than-file-p auto dribble-file)
- (setq dribble-file auto))
- (insert-file-contents dribble-file)
- (if (not (zerop (buffer-size)))
- (set-buffer-modified-p t))
- (if (gnus-y-or-n-p
- "Auto-save file exists. Do you want to read it? ")
- (setq gnus-dribble-eval-file t))))))))
+ (when (or (file-exists-p auto) (file-exists-p dribble-file))
+ ;; Load whichever file is newest -- the auto save file
+ ;; or the "real" file.
+ (if (file-newer-than-file-p auto dribble-file)
+ (insert-file-contents auto)
+ (insert-file-contents dribble-file))
+ (unless (zerop (buffer-size))
+ (set-buffer-modified-p t))
+ ;; Set the file modes to reflect the .newsrc file modes.
+ (save-buffer)
+ (when (file-exists-p gnus-current-startup-file)
+ (set-file-modes dribble-file
+ (file-modes gnus-current-startup-file)))
+ ;; Possibly eval the file later.
+ (when (gnus-y-or-n-p
+ "Auto-save file exists. Do you want to read it? ")
+ (setq gnus-dribble-eval-file t)))))))
(defun gnus-dribble-eval-file ()
(if (not gnus-dribble-eval-file)
View
2  lisp/nnbabyl.el
@@ -210,8 +210,6 @@
(dont-check
(nnheader-report 'nnbabyl "Selected group %s" group)
t)
- ((> (car active) (cdr active))
- (nnheader-report 'nnbabyl "Empty group %s" group))
(t
(nnheader-report 'nnbabyl "Selected group %s" group)
(nnheader-insert "211 %d %d %d %s\n"
View
5 lisp/nndir.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
View
9 lisp/nndoc.el
@@ -18,8 +18,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
@@ -326,7 +327,7 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward',
(setcdr entry
(list
(cons 'head-end "^ ?$")
- (cons 'body-begin "^ \n")
+ (cons 'body-begin "^ ?\n")
(cons 'article-begin b-delimiter)
(cons 'body-end-function 'nndoc-digest-body-end)
; (cons 'body-end
@@ -447,7 +448,7 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward',
(and (re-search-backward nndoc-article-begin nil t)
(setq end (point))
(search-forward "\n\n" beg t)
- (re-search-backward "^Content-Length: \\([0-9]+\\) *$" end t)
+ (re-search-backward "^Content-Length:[ \t]*\\([0-9]+\\) *$" end t)
(setq len (string-to-int (match-string 1)))
(search-forward "\n\n" beg t)
(or (= (setq len (+ (point) len)) (point-max))
View
5 lisp/nndraft.el
@@ -17,8 +17,9 @@
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary: