Function: gnus-subscribe-hierarchical-interactive
gnus-subscribe-hierarchical-interactive is a byte-compiled function
defined in gnus-start.el.gz.
Signature
(gnus-subscribe-hierarchical-interactive GROUPS)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-start.el.gz
;; For subscribing new newsgroup
(defun gnus-subscribe-hierarchical-interactive (groups)
(let ((groups (sort groups #'string<))
prefixes prefix start ans group starts)
(while groups
(setq prefixes (list "^"))
(while (and groups prefixes)
(while (not (string-match (car prefixes)
(gnus-group-real-name (car groups))))
(setq prefixes (cdr prefixes)))
(setq prefix (car prefixes))
(setq start (1- (length prefix)))
(if (and (string-match "[^\\.]\\." (gnus-group-real-name (car groups))
start)
(cdr groups)
(setq prefix
(concat "^" (substring
(gnus-group-real-name (car groups))
0 (match-end 0))))
(string-match prefix (gnus-group-real-name (cadr groups))))
(progn
(push prefix prefixes)
(message "Descend hierarchy %s? ([y]nsq): "
(substring prefix 1 (1- (length prefix))))
(while (not (memq (setq ans (read-char-exclusive))
'(?y ?\n ?\r ?n ?s ?q)))
(ding)
(message "Descend hierarchy %s? ([y]nsq): "
(substring prefix 1 (1- (length prefix)))))
(cond ((= ans ?n)
(dolist (g groups)
(when (string-match prefix (gnus-group-real-name g))
(push g gnus-killed-list)
(puthash g t gnus-killed-hashtb)))
(setq starts (cdr starts)))
((= ans ?s)
(dolist (g groups)
(when (string-match prefix (gnus-group-real-name g))
(puthash g t gnus-killed-hashtb)
(gnus-subscribe-alphabetically g)))
(setq starts (cdr starts)))
((= ans ?q)
(dolist (g groups)
(push g gnus-killed-list)
(puthash g t gnus-killed-hashtb)))
(t nil)))
(message "Subscribe %s? ([n]yq)" (car groups))
(while (not (memq (setq ans (read-char-exclusive))
'(?y ?\n ?\r ?q ?n)))
(ding)
(message "Subscribe %s? ([n]yq)" (car groups)))
(setq group (car groups))
(cond ((= ans ?y)
(gnus-subscribe-alphabetically (car groups))
(puthash group t gnus-killed-hashtb))
((= ans ?q)
(dolist (g groups)
(push g gnus-killed-list)
(puthash g t gnus-killed-hashtb)))
(t
(push group gnus-killed-list)
(puthash group t gnus-killed-hashtb)))
(setq groups (cdr groups)))))))