Synch to No Gnus 200406031937.
authoryamaoka <yamaoka>
Thu, 3 Jun 2004 22:06:37 +0000 (22:06 +0000)
committeryamaoka <yamaoka>
Thu, 3 Jun 2004 22:06:37 +0000 (22:06 +0000)
ChangeLog
etc/gnus/gnus-setup.ast
lisp/ChangeLog
lisp/assistant.el

index 2a456c5..8e7735a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-06-03  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * etc/gnus/gnus-setup.ast (Setting up a NNTP server)
+       (Setting up local mail storage (nnml)): fixed some bugs, added a
+       new screen - still testing
+
 2004-06-01  Simon Josefsson  <jas@extundo.com>
 
        * make.bat: Add SASL manual.
index a31cb61..790c6a0 100644 (file)
@@ -1,11 +1,8 @@
 @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
@@ -21,13 +18,11 @@ Choose the method Gnus will use to send mail:
 @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.
 
@@ -36,6 +31,13 @@ Your mail can be downloaded into Gnus in several ways, choose one:
 
 @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
index 3efacd2..56bbf6e 100644 (file)
@@ -1,3 +1,12 @@
+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.
index bacbe17..ef10be6 100644 (file)
       (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))