(gnus-mime-view-part-internally): Bind buffer-read-only to nil.
[gnus] / lisp / gnus-topic.el
index c17dbe4..9d656b8 100644 (file)
@@ -1,5 +1,5 @@
 ;;; gnus-topic.el --- a folding minor mode for Gnus group buffers
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Ilja Weis <kult@uni-paderborn.de>
@@ -461,7 +461,7 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
        (unless gnus-killed-hashtb
          (gnus-make-hashtable-from-killed))
        (gnus-group-prepare-flat-list-dead
-        (gnus-delete-if (lambda (group)
+        (gnus-remove-if (lambda (group)
                           (or (gnus-gethash group gnus-newsrc-hashtb)
                               (gnus-gethash group gnus-killed-hashtb)))
                         not-in-list)
@@ -696,7 +696,8 @@ articles in the topic and its subtopics."
         (unfound t)
         entry)
     ;; Try to jump to a visible group.
-    (while (and g (not (gnus-group-goto-group (car g) t)))
+    (while (and g
+               (not (gnus-group-goto-group (car g) t)))
       (pop g))
     ;; It wasn't visible, so we try to see where to insert it.
     (when (not g)
@@ -708,20 +709,31 @@ articles in the topic and its subtopics."
       (when (and unfound
                 topic
                 (not (gnus-topic-goto-missing-topic topic)))
-       (let* ((top (gnus-topic-find-topology topic))
-              (children (cddr top))
-              (type (cadr top))
-              (unread 0)
-              (entries (gnus-topic-find-groups
-                        (car type) (car gnus-group-list-mode)
-                        (cdr gnus-group-list-mode))))
-         (while children
-           (incf unread (gnus-topic-unread (caar (pop children)))))
-         (while (setq entry (pop entries))
-           (when (numberp (car entry))
-             (incf unread (car entry))))
-         (gnus-topic-insert-topic-line
-          topic t t (car (gnus-topic-find-topology topic)) nil unread))))))
+       (gnus-topic-display-missing-topic topic)))))
+
+(defun gnus-topic-display-missing-topic (topic)
+  "Insert topic lines recursively for missing topics."
+  (let ((parent (gnus-topic-find-topology
+                (gnus-topic-parent-topic topic))))
+    (when (and parent
+              (not (gnus-topic-goto-missing-topic (caadr parent))))
+      (gnus-topic-display-missing-topic (caadr parent))))
+  (gnus-topic-goto-missing-topic topic)
+  (let* ((top (gnus-topic-find-topology topic))
+        (children (cddr top))
+        (type (cadr top))
+        (unread 0)
+        (entries (gnus-topic-find-groups
+                  (car type) (car gnus-group-list-mode)
+                  (cdr gnus-group-list-mode)))
+       entry)
+    (while children
+      (incf unread (gnus-topic-unread (caar (pop children)))))
+    (while (setq entry (pop entries))
+      (when (numberp (car entry))
+       (incf unread (car entry))))
+    (gnus-topic-insert-topic-line
+     topic t t (car (gnus-topic-find-topology topic)) nil unread)))
 
 (defun gnus-topic-goto-missing-topic (topic)
   (if (gnus-topic-goto-topic topic)
@@ -1684,7 +1696,7 @@ If REVERSE, sort in reverse order."
   top)
 
 (defun gnus-topic-sort-topics (&optional topic reverse)
-  "Sort topics in TOPIC alphabeticaly by topic name.
+  "Sort topics in TOPIC alphabetically by topic name.
 If REVERSE, reverse the sorting order."
   (interactive
    (list (completing-read "Sort topics in : " gnus-topic-alist nil t