@title Configuring Gnus for the first time
@node What do you want to do with Gnus?
-
@variable outbound (:radio ((item :tag "Send mail via sendmail" "sendmail") (item :tag "Send mail via SMTP" "smtp"))) "sendmail"
-
@variable backends (:set ((item :tag "Read news via NNTP" "nntp") (item :tag"Sacrifice a goat" "goat") (item :tag "Read mail, store it locally" "nnml") (item :tag "Read mail and store it on an IMAP server" "nnimap"))) (list "nnml")
-
@result primary-mail-selections (list backends outbound)
@text
@end text
@next (member "nnml" backends) "Setting up local mail storage (nnml)"
+@next (member "nntp" backends) "Setting up a NNTP server"
-@node "Setting up local mail storage (nnml)"
-
+@node Setting up local mail storage (nnml)
@variable mechanism (:radio ((item :tag "Get mail from your Unix mbox" "mbox") (item :tag "Use POP3 to retrieve mail" "pop3"))) "mbox"
-
@result nnml-mechanism (list mechanism)
-
@text
You are setting up local mail storage, using the nnml backend in Gnus terms.
@end text
+@node Setting up a NNTP server
+
+@text
+TODO: this will be a real link.
+Run M-x assistant and use the news-server.ast file as input.
+@end text
+
@ignore
@end ignore
+2004-06-03 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * assistant.el (assistant-node-name): new convenience function
+ (assistant-render-text, assistant-render-node): error handling,
+ plus handle multiple next nodes
+ (assistant-find-next-node): commented out for now
+ (assistant-find-next-nodes): new function, returns list of next
+ nodes
+
2004-06-02 Reiner Steib <Reiner.Steib@gmx.de>
* mail-source.el (mail-source-directory): Fix doc-string.
(pop ast))
(car ast)))
+(defun assistant-node-name (node)
+ (assistant-get node "node"))
+
(defun assistant-previous-node-text (node)
(format "<< Go back to %s" node))
(setcar (nthcdr 3 elem) value)))))
(defun assistant-render-text (text node)
+ (unless (and text node)
+ (gnus-error
+ 5
+ "The assistant was asked to render invalid text or node data"))
(dolist (elem text)
(if (stringp elem)
;; Ordinary text
(inhibit-read-only t)
(previous assistant-current-node)
(buffer-read-only nil))
+ (unless node
+ (gnus-error 5 "The node for %s could not be found" node-name))
(set (make-local-variable 'assistant-widgets) nil)
(assistant-set-defaults node)
(if (equal (assistant-get node "type") "interstitial")
- (assistant-render-node (assistant-find-next-node node-name))
+ (assistant-render-node (nth 0 (assistant-find-next-nodes node-name)))
(setq assistant-current-node node-name)
(when previous
(push previous assistant-previous-nodes))
(assistant-set-defaults (assistant-find-node node) 'force)
(assistant-render-node node)))
"Reset")
- (insert " ")
- (assistant-node-button 'next (assistant-find-next-node))
(insert "\n")
+ (dolist (nnode (assistant-find-next-nodes))
+ (assistant-node-button 'next nnode)
+ (insert "\n"))
+
(goto-char (point-min))
(assistant-make-read-only))))
(error "%s" result))))
(assistant-set node "save" t)))
-(defun assistant-find-next-node (&optional node)
+;; (defun assistant-find-next-node (&optional node)
+;; (let* ((node (assistant-find-node (or node assistant-current-node)))
+;; (node-name (assistant-node-name node))
+;; (nexts (assistant-get-list node "next"))
+;; next elem applicable)
+
+;; (while (setq elem (pop nexts))
+;; (when (assistant-eval (car (cadr elem)))
+;; (setq applicable (cons elem applicable))))
+
+;; ;; return the first thing we can
+;; (cadr (cadr (pop applicable)))))
+
+(defun assistant-find-next-nodes (&optional node)
(let* ((node (assistant-find-node (or node assistant-current-node)))
(nexts (assistant-get-list node "next"))
- next elem)
- (while (and (setq elem (cadr (pop nexts)))
- (not next))
- (when (setq next (assistant-eval (car elem)))
- (setq next (or (cadr elem) next))))
- next))
+ next elem applicable return)
+
+ (while (setq elem (pop nexts))
+ (when (assistant-eval (car (cadr elem)))
+ (setq applicable (cons elem applicable))))
+
+ ;; return the first thing we can
+
+ (while (setq elem (pop applicable))
+ (push (cadr (cadr elem)) return))
+
+ return))
(defun assistant-get-all-variables ()
(let ((variables nil))