(message-cite-articles-with-x-no-archive): New
[gnus] / lisp / gnus-topic.el
index 708e779..3424d4d 100644 (file)
@@ -104,16 +104,16 @@ See Info node `(gnus)Formatting Variables'."
 
 (defun gnus-group-topic-name ()
   "The name of the topic on the current line."
 
 (defun gnus-group-topic-name ()
   "The name of the topic on the current line."
-  (let ((topic (get-text-property (gnus-point-at-bol) 'gnus-topic)))
+  (let ((topic (get-text-property (point-at-bol) 'gnus-topic)))
     (and topic (symbol-name topic))))
 
 (defun gnus-group-topic-level ()
   "The level of the topic on the current line."
     (and topic (symbol-name topic))))
 
 (defun gnus-group-topic-level ()
   "The level of the topic on the current line."
-  (get-text-property (gnus-point-at-bol) 'gnus-topic-level))
+  (get-text-property (point-at-bol) 'gnus-topic-level))
 
 (defun gnus-group-topic-unread ()
   "The number of unread articles in topic on the current line."
 
 (defun gnus-group-topic-unread ()
   "The number of unread articles in topic on the current line."
-  (get-text-property (gnus-point-at-bol) 'gnus-topic-unread))
+  (get-text-property (point-at-bol) 'gnus-topic-unread))
 
 (defun gnus-topic-unread (topic)
   "Return the number of unread articles in TOPIC."
 
 (defun gnus-topic-unread (topic)
   "Return the number of unread articles in TOPIC."
@@ -126,7 +126,7 @@ See Info node `(gnus)Formatting Variables'."
 
 (defun gnus-topic-visible-p ()
   "Return non-nil if the current topic is visible."
 
 (defun gnus-topic-visible-p ()
   "Return non-nil if the current topic is visible."
-  (get-text-property (gnus-point-at-bol) 'gnus-topic-visible))
+  (get-text-property (point-at-bol) 'gnus-topic-visible))
 
 (defun gnus-topic-articles-in-topic (entries)
   (let ((total 0)
 
 (defun gnus-topic-articles-in-topic (entries)
   (let ((total 0)
@@ -166,9 +166,11 @@ See Info node `(gnus)Formatting Variables'."
    (list (completing-read "Go to topic: "
                          (mapcar 'list (gnus-topic-list))
                          nil t)))
    (list (completing-read "Go to topic: "
                          (mapcar 'list (gnus-topic-list))
                          nil t)))
-  (dolist (topic (gnus-current-topics topic))
-    (gnus-topic-goto-topic topic)
-    (gnus-topic-fold t))
+  (let ((buffer-read-only nil))
+    (dolist (topic (gnus-current-topics topic))
+      (unless (gnus-topic-goto-topic topic)
+       (gnus-topic-goto-missing-topic topic)
+       (gnus-topic-display-missing-topic topic))))
   (gnus-topic-goto-topic topic))
 
 (defun gnus-current-topic ()
   (gnus-topic-goto-topic topic))
 
 (defun gnus-current-topic ()
@@ -195,9 +197,7 @@ If TOPIC, start with that topic."
 
 (defun gnus-group-active-topic-p ()
   "Say whether the current topic comes from the active topics."
 
 (defun gnus-group-active-topic-p ()
   "Say whether the current topic comes from the active topics."
-  (save-excursion
-    (beginning-of-line)
-    (get-text-property (point) 'gnus-active)))
+  (get-text-property (point-at-bol) 'gnus-active))
 
 (defun gnus-topic-find-groups (topic &optional level all lowest recursive)
   "Return entries for all visible groups in TOPIC.
 
 (defun gnus-topic-find-groups (topic &optional level all lowest recursive)
   "Return entries for all visible groups in TOPIC.
@@ -209,7 +209,7 @@ If RECURSIVE is t, return groups in its subtopics too."
     ;; We go through the newsrc to look for matches.
     (while groups
       (when (setq group (pop groups))
     ;; We go through the newsrc to look for matches.
     (while groups
       (when (setq group (pop groups))
-       (setq entry (gnus-gethash group gnus-newsrc-hashtb)
+       (setq entry (gnus-group-entry group)
              info (nth 2 entry)
              params (gnus-info-params info)
              active (gnus-active group)
              info (nth 2 entry)
              params (gnus-info-params info)
              active (gnus-active group)
@@ -435,6 +435,8 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
         (and gnus-group-listed-groups
              (copy-sequence gnus-group-listed-groups))))
 
         (and gnus-group-listed-groups
              (copy-sequence gnus-group-listed-groups))))
 
+    (gnus-update-format-specifications nil 'topic)
+    
     (when (or (not gnus-topic-alist)
              (not gnus-topology-checked-p))
       (gnus-topic-check-topology))
     (when (or (not gnus-topic-alist)
              (not gnus-topology-checked-p))
       (gnus-topic-check-topology))
@@ -462,7 +464,7 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
          (gnus-make-hashtable-from-killed))
        (gnus-group-prepare-flat-list-dead
         (gnus-remove-if (lambda (group)
          (gnus-make-hashtable-from-killed))
        (gnus-group-prepare-flat-list-dead
         (gnus-remove-if (lambda (group)
-                          (or (gnus-gethash group gnus-newsrc-hashtb)
+                          (or (gnus-group-entry group)
                               (gnus-gethash group gnus-killed-hashtb)))
                         not-in-list)
         gnus-level-killed ?K regexp)))
                               (gnus-gethash group gnus-killed-hashtb)))
                         not-in-list)
         gnus-level-killed ?K regexp)))
@@ -752,7 +754,7 @@ articles in the topic and its subtopics."
                    (not (gnus-topic-goto-topic (caaar tp))))
          (pop tp))
        (if tp
                    (not (gnus-topic-goto-topic (caaar tp))))
          (pop tp))
        (if tp
-           (forward-line 1)
+           (gnus-topic-forward-topic 1)
          (gnus-topic-goto-missing-topic (caadr top)))))
     nil))
 
          (gnus-topic-goto-missing-topic (caadr top)))))
     nil))
 
@@ -840,8 +842,7 @@ articles in the topic and its subtopics."
       (pop topics)))
   ;; Go through all living groups and make sure that
   ;; they belong to some topic.
       (pop topics)))
   ;; Go through all living groups and make sure that
   ;; they belong to some topic.
-  (let* ((tgroups (apply 'append (mapcar (lambda (entry) (cdr entry))
-                                        gnus-topic-alist)))
+  (let* ((tgroups (apply 'append (mapcar 'cdr gnus-topic-alist)))
         (entry (last (assoc (caar gnus-topic-topology) gnus-topic-alist)))
         (newsrc (cdr gnus-newsrc-alist))
         group)
         (entry (last (assoc (caar gnus-topic-topology) gnus-topic-alist)))
         (newsrc (cdr gnus-newsrc-alist))
         group)
@@ -855,7 +856,7 @@ articles in the topic and its subtopics."
     (while (setq topic (pop alist))
       (while (cdr topic)
        (if (and (cadr topic)
     (while (setq topic (pop alist))
       (while (cdr topic)
        (if (and (cadr topic)
-                (gnus-gethash (cadr topic) gnus-newsrc-hashtb))
+                (gnus-group-entry (cadr topic)))
            (setq topic (cdr topic))
          (setcdr topic (cddr topic)))))))
 
            (setq topic (cdr topic))
          (setcdr topic (cddr topic)))))))
 
@@ -885,7 +886,7 @@ articles in the topic and its subtopics."
       (let ((topic-name (pop topic))
            group filtered-topic)
        (while (setq group (pop topic))
       (let ((topic-name (pop topic))
            group filtered-topic)
        (while (setq group (pop topic))
-         (when (and (or (gnus-gethash group gnus-active-hashtb)
+         (when (and (or (gnus-active group)
                         (gnus-info-method (gnus-get-info group)))
                     (not (gnus-gethash group gnus-killed-hashtb)))
            (push group filtered-topic)))
                         (gnus-info-method (gnus-get-info group)))
                     (not (gnus-gethash group gnus-killed-hashtb)))
            (push group filtered-topic)))
@@ -927,8 +928,8 @@ articles in the topic and its subtopics."
                       ? ))
                     (yanked (list group))
                     alist talist end)
                       ? ))
                     (yanked (list group))
                     alist talist end)
-               ;; Then we enter the yanked groups into the topics they belong
-               ;; to.
+               ;; Then we enter the yanked groups into the topics
+               ;; they belong to.
                (when (setq alist (assoc (save-excursion
                                           (forward-line -1)
                                           (or
                (when (setq alist (assoc (save-excursion
                                           (forward-line -1)
                                           (or
@@ -1134,7 +1135,7 @@ articles in the topic and its subtopics."
       (when (gnus-visual-p 'topic-menu 'menu)
        (gnus-topic-make-menu-bar))
       (gnus-set-format 'topic t)
       (when (gnus-visual-p 'topic-menu 'menu)
        (gnus-topic-make-menu-bar))
       (gnus-set-format 'topic t)
-      (gnus-add-minor-mode 'gnus-topic-mode " Topic"
+      (add-minor-mode 'gnus-topic-mode " Topic"
                           gnus-topic-mode-map nil (lambda (&rest junk)
                                                     (interactive)
                                                     (gnus-topic-mode nil t)))
                           gnus-topic-mode-map nil (lambda (&rest junk)
                                                     (interactive)
                                                     (gnus-topic-mode nil t)))
@@ -1313,7 +1314,7 @@ If COPYP, copy the groups instead."
   (let ((use-marked (and (not n) (not (gnus-region-active-p))
                         gnus-group-marked t))
        (groups (gnus-group-process-prefix n)))
   (let ((use-marked (and (not n) (not (gnus-region-active-p))
                         gnus-group-marked t))
        (groups (gnus-group-process-prefix n)))
-    (mapcar
+    (mapc
      (lambda (group)
        (gnus-group-remove-mark group use-marked)
        (let ((topicl (assoc (gnus-current-topic) gnus-topic-alist))
      (lambda (group)
        (gnus-group-remove-mark group use-marked)
        (let ((topicl (assoc (gnus-current-topic) gnus-topic-alist))
@@ -1759,4 +1760,5 @@ If REVERSE, reverse the sorting order."
 
 (provide 'gnus-topic)
 
 
 (provide 'gnus-topic)
 
+;;; arch-tag: bf176856-f30c-40f0-ae77-e41529a1134c
 ;;; gnus-topic.el ends here
 ;;; gnus-topic.el ends here