*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 01:36:26 +0000 (01:36 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 01:36:26 +0000 (01:36 +0000)
15 files changed:
lisp/ChangeLog
lisp/dgnushack.el
lisp/gnus-art.el
lisp/gnus-async.el
lisp/gnus-cite.el
lisp/gnus-sum.el
lisp/gnus-topic.el
lisp/gnus.el
lisp/lpath.el [new file with mode: 0644]
lisp/message.el
lisp/nnkiboze.el
lisp/nnoo.el
lisp/pop3.el
texi/custom.texi
texi/gnus.texi

index 4fb3f88..2fbddae 100644 (file)
@@ -1,3 +1,39 @@
+Sun Jan  5 09:39:14 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-sum.el (gnus-summary-exit-no-update): Prompt change.
+       (gnus-summary-limit-to-author): Ditto.
+       (gnus-summary-limit-to-subject): Ditto.
+
+       * gnus-cite.el (gnus-dissect-cited-text): Recognize articles that
+       end with cited text.
+
+       * gnus-topic.el (gnus-group-sort-topic): Remove nil elements.
+
+       * nnoo.el (nnoo-push-server): When switching from the nil server,
+       update all the default values of the variables.
+
+       * nnkiboze.el (nnkiboze-generate-group): Protect against nil
+       infos. 
+
+       * lpath.el: Included.
+
+Sun Jan  5 09:36:57 1997  Martin Buchholz  <mrb@eng.sun.com>
+
+       * dgnushack.el (bytecomp): Required.
+
+Sat Jan  4 11:45:45 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-art.el: Rename some functions back.
+
+       * gnus-sum.el (gnus-summary-save-newsrc): Don't nix out scores.
+
+       * gnus-async.el (gnus-async-prefetched-article-entry): Would
+       hang Emacs.
+
+Sat Jan  4 11:28:24 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.el: Red Gnus v0.77 is released.
+
 Sat Jan  4 08:35:06 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * gnus-cache.el (gnus-start): Don't require gnus-sum.
index 56507ac..7ebd679 100644 (file)
@@ -29,7 +29,9 @@
 (fset 'facep 'ignore)
 
 (require 'cl)
+(require 'bytecomp)
 (push "." load-path)
+(require 'lpath)
 
 (defalias 'device-sound-enabled-p 'ignore)
 (defalias 'play-sound-file 'ignore)
index 1cc845f..18a699b 100644 (file)
@@ -519,7 +519,7 @@ Initialized from `text-mode-syntax-table.")
   (text-property-any (point-min) (point-max) 'article-type type))
 
 (defsubst gnus-article-header-rank ()
-  "Give the rank of the string HEADER as given by `article-sorted-header-list'."
+  "Give the rank of the string HEADER as given by `gnus-sorted-header-list'."
   (let ((list gnus-sorted-header-list)
        (i 0))
     (while list
@@ -529,7 +529,7 @@ Initialized from `text-mode-syntax-table.")
       (incf i))
     i))
 
-(defun gnus-article-hide-headers (&optional arg delete)
+(defun article-hide-headers (&optional arg delete)
   "Toggle whether to hide unwanted headers and possibly sort them as well.
 If given a negative prefix, always show; if given a positive prefix,
 always hide."
@@ -602,7 +602,7 @@ always hide."
              ;; Work around XEmacs lossage.
              (put-text-property (point-min) beg 'invisible nil))))))))
 
-(defun gnus-article-hide-boring-headers (&optional arg)
+(defun article-hide-boring-headers (&optional arg)
   "Toggle hiding of headers that aren't very interesting.
 If given a negative prefix, always show; if given a positive prefix,
 always hide."
@@ -674,7 +674,7 @@ always hide."
        'boring-headers))))
 
 ;; Written by Per Abrahamsen <amanda@iesd.auc.dk>.
-(defun gnus-article-treat-overstrike ()
+(defun article-treat-overstrike ()
   "Translate overstrikes into bold text."
   (interactive)
   (save-excursion
@@ -698,7 +698,7 @@ always hide."
            (put-text-property
             (point) (1+ (point)) 'face 'underline))))))))
 
-(defun gnus-article-fill ()
+(defun article-fill ()
   "Format too long lines."
   (interactive)
   (save-excursion
@@ -716,7 +716,7 @@ always hide."
               (fill-paragraph nil))
          (end-of-line 2))))))
 
-(defun gnus-article-remove-cr ()
+(defun article-remove-cr ()
   "Remove carriage returns from an article."
   (interactive)
   (save-excursion
@@ -725,7 +725,7 @@ always hide."
       (while (search-forward "\r" nil t)
        (replace-match "" t t)))))
 
-(defun gnus-article-remove-trailing-blank-lines ()
+(defun article-remove-trailing-blank-lines ()
   "Remove all trailing blank lines from the article."
   (interactive)
   (save-excursion
@@ -740,7 +740,7 @@ always hide."
         (forward-line 1)
         (point))))))
 
-(defun gnus-article-display-x-face (&optional force)
+(defun article-display-x-face (&optional force)
   "Look for an X-Face header and display it if present."
   (interactive (list 'force))
   (save-excursion
@@ -782,8 +782,9 @@ always hide."
                (process-send-region "article-x-face" beg end)
                (process-send-eof "article-x-face")))))))))
 
-(defalias 'gnus-decode-rfc1522 'gnus-article-decode-rfc1522)
-(defun gnus-article-decode-rfc1522 ()
+(defalias 'gnus-decode-rfc1522 'article-decode-rfc1522)
+(defalias 'gnus-article-decode-rfc1522 'article-decode-rfc1522)
+(defun article-decode-rfc1522 ()
   "Hack to remove QP encoding from headers."
   (let ((case-fold-search t)
        (inhibit-point-motion-hooks t)
@@ -801,13 +802,13 @@ always hide."
          (narrow-to-region (match-beginning 0) (match-end 0))
          (delete-region (point-min) (point-max))
          (insert string)
-         (gnus-article-mime-decode-quoted-printable 
+         (article-mime-decode-quoted-printable 
           (goto-char (point-min)) (point-max))
          (subst-char-in-region (point-min) (point-max) ?_ ? )
          (goto-char (point-max)))
        (goto-char (point-min))))))
 
-(defun gnus-article-de-quoted-unreadable (&optional force)
+(defun article-de-quoted-unreadable (&optional force)
   "Do a naive translation of a quoted-printable-encoded article.
 This is in no way, shape or form meant as a replacement for real MIME
 processing, but is simply a stop-gap measure until MIME support is
@@ -824,13 +825,13 @@ or not."
                (and type (string-match "quoted-printable" (downcase type))))
        (goto-char (point-min))
        (search-forward "\n\n" nil 'move)
-       (gnus-article-mime-decode-quoted-printable (point) (point-max))))))
+       (article-mime-decode-quoted-printable (point) (point-max))))))
 
-(defun gnus-article-mime-decode-quoted-printable-buffer ()
+(defun article-mime-decode-quoted-printable-buffer ()
   "Decode Quoted-Printable in the current buffer."
-  (gnus-article-mime-decode-quoted-printable (point-min) (point-max)))
+  (article-mime-decode-quoted-printable (point-min) (point-max)))
   
-(defun gnus-article-mime-decode-quoted-printable (from to)
+(defun article-mime-decode-quoted-printable (from to)
   "Decode Quoted-Printable in the region between FROM and TO."
   (interactive "r")
   (goto-char from)
@@ -848,7 +849,7 @@ or not."
           (delete-char 1))
          ((gnus-message 3 "Malformed MIME quoted-printable message")))))
 
-(defun gnus-article-hide-pgp (&optional arg)
+(defun article-hide-pgp (&optional arg)
   "Toggle hiding of any PGP headers and signatures in the current article.
 If given a negative prefix, always show; if given a positive prefix,
 always hide."
@@ -881,7 +882,7 @@ always hide."
            (gnus-article-hide-text-type (match-beginning 0) (match-end 0) 'pgp))
          (widen))))))
 
-(defun gnus-article-hide-pem (&optional arg)
+(defun article-hide-pem (&optional arg)
   "Toggle hiding of any PEM headers and signatures in the current article.
 If given a negative prefix, always show; if given a positive prefix,
 always hide."
@@ -909,7 +910,7 @@ always hide."
             (gnus-article-hide-text-type
              (match-beginning 0) (match-end 0) 'pem))))))
 
-(defun gnus-article-hide-signature (&optional arg)
+(defun article-hide-signature (&optional arg)
   "Hide the signature in the current article.
 If given a negative prefix, always show; if given a positive prefix,
 always hide."
@@ -921,7 +922,7 @@ always hide."
          (when (gnus-article-narrow-to-signature)
            (gnus-article-hide-text-type (point-min) (point-max) 'signature)))))))
 
-(defun gnus-article-strip-leading-blank-lines ()
+(defun article-strip-leading-blank-lines ()
   "Remove all blank lines from the beginning of the article."
   (interactive)
   (save-excursion
@@ -933,7 +934,7 @@ always hide."
                    (looking-at "[ \t]*$"))
          (gnus-delete-line))))))
 
-(defun gnus-article-strip-multiple-blank-lines ()
+(defun article-strip-multiple-blank-lines ()
   "Replace consecutive blank lines with one empty line."
   (interactive)
   (save-excursion
@@ -947,12 +948,12 @@ always hide."
       (while (re-search-forward "\n\n\n+" nil t)
        (replace-match "\n\n" t t)))))
 
-(defun gnus-article-strip-blank-lines ()
+(defun article-strip-blank-lines ()
   "Strip leading, trailing and multiple blank lines."
   (interactive)
-  (gnus-article-strip-leading-blank-lines)
-  (gnus-article-remove-trailing-blank-lines)
-  (gnus-article-strip-multiple-blank-lines))
+  (article-strip-leading-blank-lines)
+  (article-remove-trailing-blank-lines)
+  (article-strip-multiple-blank-lines))
 
 (defvar mime::preview/content-list)
 (defvar mime::preview-content-info/point-min)
@@ -1064,7 +1065,7 @@ If HIDE, hide the text instead."
     (second . 1))
   "Mapping from time units to seconds.")
 
-(defun gnus-article-date-ut (&optional type highlight header)
+(defun article-date-ut (&optional type highlight header)
   "Convert DATE date to universal time in the current article.
 If TYPE is `local', convert to local time; if it is `lapsed', output
 how much time has lapsed since DATE."
@@ -1092,7 +1093,7 @@ how much time has lapsed since DATE."
                  (message-remove-header date-regexp t)
                  (beginning-of-line))
              (goto-char (point-max)))
-           (insert (gnus-article-make-date-line date type))
+           (insert (article-make-date-line date type))
            ;; Do highlighting.
            (forward-line -1)
            (when (looking-at "\\([^:]+\\): *\\(.*\\)$")
@@ -1101,7 +1102,7 @@ how much time has lapsed since DATE."
              (put-text-property (match-beginning 2) (match-end 2)
                                 'face eface))))))))
 
-(defun gnus-article-make-date-line (date type)
+(defun article-make-date-line (date type)
   "Return a DATE line of TYPE."
   (cond
    ;; Convert to the local timezone.  We have to slap a
@@ -1178,31 +1179,31 @@ how much time has lapsed since DATE."
    (t
     (error "Unknown conversion type: %s" type))))
 
-(defun gnus-article-date-local (&optional highlight)
+(defun article-date-local (&optional highlight)
   "Convert the current article date to the local timezone."
   (interactive (list t))
-  (gnus-article-date-ut 'local highlight))
+  (article-date-ut 'local highlight))
 
-(defun gnus-article-date-original (&optional highlight)
+(defun article-date-original (&optional highlight)
   "Convert the current article date to what it was originally.
 This is only useful if you have used some other date conversion
 function and want to see what the date was before converting."
   (interactive (list t))
-  (gnus-article-date-ut 'original highlight))
+  (article-date-ut 'original highlight))
 
-(defun gnus-article-date-lapsed (&optional highlight)
+(defun article-date-lapsed (&optional highlight)
   "Convert the current article date to time lapsed since it was sent."
   (interactive (list t))
-  (gnus-article-date-ut 'lapsed highlight))
+  (article-date-ut 'lapsed highlight))
 
-(defun gnus-article-show-all ()
+(defun article-show-all ()
   "Show all hidden text in the article buffer."
   (interactive)
   (save-excursion
     (let ((buffer-read-only nil))
       (gnus-article-unhide-text (point-min) (point-max)))))
 
-(defun gnus-article-emphasize (&optional arg)
+(defun article-emphasize (&optional arg)
   "Emphasize text according to `gnus-emphasis-alist'."
   (interactive (gnus-article-hidden-arg))
   (unless (gnus-article-check-hidden-text 'emphasis arg)
@@ -1516,6 +1517,46 @@ If variable `gnus-use-long-file-name' is non-nil, it is
         (concat (gnus-newsgroup-directory-form newsgroup) "/news"))
        gnus-article-save-directory)))
 
+(eval-and-compile
+  (mapcar
+   (lambda (func)
+     (let (afunc gfunc)
+       (if (consp func)
+          (setq afunc (car func)
+                gfunc (cdr func))
+        (setq afunc func
+              gfunc (intern (format "gnus-%s" func))))
+       (fset gfunc 
+            (if (not (fboundp afunc))
+                nil
+              `(lambda (&optional interactive &rest args)
+                 ,(documentation afunc t)
+                 (interactive (list t))
+                 (save-excursion
+                   (set-buffer gnus-article-buffer)
+                   (if interactive
+                       (call-interactively ',afunc)
+                     (apply ',afunc args))))))))
+   '(article-hide-headers
+     article-hide-boring-headers
+     article-treat-overstrike
+     (article-fill . gnus-article-word-wrap)
+     article-remove-cr
+     article-display-x-face
+     article-de-quoted-unreadable
+     article-mime-decode-quoted-printable
+     article-hide-pgp
+     article-hide-pem
+     article-hide-signature
+     article-remove-trailing-blank-lines
+     article-strip-leading-blank-lines
+     article-strip-multiple-blank-lines
+     article-strip-blank-lines
+     article-date-local
+     article-date-original
+     article-date-lapsed
+     article-emphasize
+     (article-show-all . gnus-article-show-all-headers))))
 \f
 ;;;
 ;;; Gnus article mode
index c0a7b6a..80aa263 100644 (file)
@@ -263,7 +263,11 @@ It should return non-nil if the article is to be prefetched."
     (if (and entry
             (= (cadr entry) (caddr entry)))
        (progn
-         (gnus-async-delete-prefected-entry entry)
+         (ignore-errors
+           (set-marker (cadr entry) nil)
+           (set-marker (caddr entry) nil))
+         (setq gnus-async-article-alist 
+               (delq entry gnus-async-article-alist))
          nil)
       entry)))
 
index 53b6e9a..2953566 100644 (file)
@@ -357,14 +357,17 @@ Lines matching `gnus-cite-attribution-suffix' and perhaps
          (goto-char (point-min))
          (forward-line (1- number))
          (push (cons (point-marker) prefix) marks)))
+      ;; Skip to the beginning of the body.
       (goto-char (point-min))
       (search-forward "\n\n" nil t)
       (push (cons (point-marker) "") marks)
+      ;; Find the end of the body.
       (goto-char (point-max))
       (gnus-article-search-signature)
       (push (cons (point-marker) "") marks)
+      ;; Sort the marks.
       (setq marks (sort marks (lambda (m1 m2) (< (car m1) (car m2)))))
-      (let* ((omarks marks))
+      (let ((omarks marks))
        (setq marks nil)
        (while (cdr omarks)
          (if (= (caar omarks) (caadr omarks))
@@ -373,7 +376,10 @@ Lines matching `gnus-cite-attribution-suffix' and perhaps
                  (push (car omarks) marks))
                (unless (equal (cdadr omarks) "")
                  (push (cadr omarks) marks))
-               (setq omarks (cdr omarks)))
+               (unless (and (equal (cdar omarks) "")
+                            (equal (cdadr omarks) "")
+                            (not (cddr omarks)))
+                 (setq omarks (cdr omarks))))
            (push (car omarks) marks))
          (setq omarks (cdr omarks)))
        (when (car omarks)
index 8778d5d..a6a6a5e 100644 (file)
@@ -4803,7 +4803,7 @@ The prefix argument ALL means to select all articles."
   (interactive "P")
   (gnus-summary-reselect-current-group all t))
 
-(defun gnus-summary-update-info ()
+(defun gnus-summary-update-info (&optional non-destructive)
   (save-excursion
     (let ((group gnus-newsgroup-name))
       (when gnus-newsgroup-kill-headers
@@ -4820,7 +4820,8 @@ The prefix argument ALL means to select all articles."
       (unless (listp (cdr gnus-newsgroup-killed))
        (setq gnus-newsgroup-killed (list gnus-newsgroup-killed)))
       (let ((headers gnus-newsgroup-headers))
-       (unless gnus-save-score
+       (when (and (not gnus-save-score)
+                  (not non-destructive))
          (setq gnus-newsgroup-scored nil))
        ;; Set the new ranges of read articles.
        (gnus-update-read-articles
@@ -4844,7 +4845,7 @@ The prefix argument ALL means to select all articles."
   "Save the current number of read/marked articles in the dribble buffer.
 If FORCE (the prefix), also save the .newsrc file(s)."
   (interactive "P")
-  (gnus-summary-update-info)
+  (gnus-summary-update-info t)
   (when force
     (gnus-save-newsrc-file)))
 
@@ -4928,7 +4929,7 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
         (quit-config (gnus-group-quit-config group)))
     (when (or no-questions
              gnus-expert-user
-             (gnus-y-or-n-p "Do you really wanna quit reading this group? "))
+             (gnus-y-or-n-p "Discard changes to this group and exit? "))
       ;; If we have several article buffers, we kill them at exit.
       (unless gnus-single-article-buffer
        (gnus-kill-buffer gnus-article-buffer)
@@ -5675,7 +5676,7 @@ If given a prefix, remove all limits."
 
 (defun gnus-summary-limit-to-subject (subject &optional header)
   "Limit the summary buffer to articles that have subjects that match a regexp."
-  (interactive "sRegexp: ")
+  (interactive "sLimit to subject (regexp): ")
   (unless header
     (setq header "subject"))
   (when (not (equal "" subject))
@@ -5689,7 +5690,7 @@ If given a prefix, remove all limits."
 
 (defun gnus-summary-limit-to-author (from)
   "Limit the summary buffer to articles that have authors that match a regexp."
-  (interactive "sRegexp: ")
+  (interactive "sLimit to author (regexp): ")
   (gnus-summary-limit-to-subject from "from"))
 
 (defun gnus-summary-limit-to-age (age &optional younger-p)
index 6d4902e..6ed2fd7 100644 (file)
@@ -1267,6 +1267,9 @@ If performed on a topic, edit the topic parameters instead."
   "Sort groups in the topics according to FUNC and REVERSE."
   (let ((alist gnus-topic-alist))
     (while alist
+      ;; !!!Sometimes nil elements sneak into the alist,
+      ;; for some reason or other.
+      (setcar alist (delq nil (car alist)))
       (gnus-topic-sort-topic (pop alist) func reverse))))
 
 (defun gnus-topic-sort-topic (topic func reverse)
index 1fab55a..ccfa5ad 100644 (file)
@@ -42,7 +42,7 @@
   "Score and kill file handling."
   :group 'gnus )
 
-(defconst gnus-version-number "0.77"
+(defconst gnus-version-number "0.78"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
diff --git a/lisp/lpath.el b/lisp/lpath.el
new file mode 100644 (file)
index 0000000..8c6592c
--- /dev/null
@@ -0,0 +1,33 @@
+;; Shut up.
+
+(defvar byte-compile-default-warnings)
+
+(defun maybe-fbind (args)
+  (while args 
+    (or (fboundp (car args))
+       (fset (car args) 'ignore))
+    (setq args (cdr args))))
+
+(if (string-match "XEmacs" emacs-version)
+    (progn 
+      (defvar track-mouse nil)
+      (maybe-fbind '(posn-point event-start x-popup-menu
+                    error-message-string facemenu-get-face window-at
+                    coordinates-in-window-p compute-motion
+                    x-defined-colors easy-menu-create-keymaps)) 
+      ;; XEmacs thinks writting compatible code is obsolete.
+      (require 'bytecomp)
+      (setq byte-compile-default-warnings
+           (delq 'obsolete byte-compile-default-warnings)))
+  (defvar browse-url-browser-function nil)
+  (maybe-fbind '(color-instance-rgb-components make-color-instance
+                color-instance-name specifier-instance device-type
+                device-class get-popup-menu-response event-object
+                x-defined-colors read-color add-submenu set-font-family
+                font-create-object set-font-size frame-device find-face
+                set-extent-property make-extent)))
+
+(setq load-path (cons "." load-path))
+(require 'custom)
+
+(provide 'lpath)
index c31fd4d..467d098 100644 (file)
@@ -1737,7 +1737,6 @@ to find out how to use this."
     (let ((headers message-deletable-headers))
       (while headers
        (goto-char (point-min)) 
-       ;;(message "Deleting header %s" (car headers)) (sit-for 5)
        (and (re-search-forward 
              (concat "^" (symbol-name (car headers)) ": *") nil t)
             (message-delete-line))
index 59ca522..2726bf4 100644 (file)
@@ -295,7 +295,8 @@ Finds out what articles are to be part of the nnkiboze groups."
                ;; That's it.  We exit this group.
                (gnus-summary-exit-no-update)))
          ;; Restore the proper info.
-         (setcdr ginfo (cdr orig-info))))
+         (when ginfo
+           (setcdr ginfo (cdr orig-info)))))
       (setcdr (car newsrc) (car active))
       (setq newsrc (cdr newsrc)))
     ;; We save the nov file.
index a64d1f9..bede2f0 100644 (file)
        (defs (nnoo-variables backend)))
     ;; Remove the old definition.
     (setcdr (cdr bstate) (delq (assoc current (cddr bstate)) (cddr bstate)))
+    ;; If this is the first time we push the server (i. e., this is 
+    ;; the nil server), then we update the default values of
+    ;; all the variables to reflect the current values.
+    (unless current
+      (let ((defaults (nnoo-variables backend))
+           def)
+       (while (setq def (pop defaults))
+         (setcdr def (symbol-value (car def))))))
     (let (state)
       (while defs
        (push (cons (caar defs) (symbol-value (caar defs)))
index 0d26cb0..43d1e8d 100644 (file)
@@ -37,6 +37,9 @@
 (require 'mail-utils)
 (provide 'pop3)
 
+(eval-and-compile
+  (if (not (fboundp 'md5)) (autoload 'md5 "md5")))
+
 (defvar pop3-maildrop (or user-login-name (getenv "LOGNAME") (getenv "USER") nil)
   "*POP3 maildrop.")
 (defvar pop3-mailhost (or (getenv "MAILHOST") nil)
index 58862b1..dac990e 100644 (file)
@@ -461,6 +461,8 @@ of a member of the group, that prefix will be ignored when creating a
 tag for that member.
 @end table
 
+@end defun
+
 @node  Declaring Variables, Declaring Faces, Declaring Groups, Declarations
 @comment  node-name,  next,  previous,  up
 @subsection Declaring Variables
index 1f5c389..c198956 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Red Gnus 0.77 Manual
+@settitle Red Gnus 0.78 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -287,7 +287,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Red Gnus 0.77 Manual
+@title Red Gnus 0.78 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -323,7 +323,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Red Gnus 0.77
+This manual corresponds to Red Gnus 0.78
 
 @end ifinfo