* assistant.el (assistant-authinfo-data): New function.
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Sun, 23 May 2004 21:16:36 +0000 (21:16 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Sun, 23 May 2004 21:16:36 +0000 (21:16 +0000)
(assistant-eval): Eval for entire assistant.

lisp/ChangeLog
lisp/assistant.el

index 1de381d..9a03688 100644 (file)
@@ -1,5 +1,8 @@
 2004-05-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
+       * assistant.el (assistant-authinfo-data): New function.
+       (assistant-eval): Eval for entire assistant.
+
        * netrc.el (netrc-services-file): New variable.
        (netrc-parse-services): New function.
        (netrc-find-service-name): New function.
index c20cf42..176d29d 100644 (file)
     (when (or (eq (nth 3 variable) 'default)
              forcep)
       (setcar (nthcdr 3 variable)
-             (eval (nth 2 variable))))))
+             (assistant-eval (nth 2 variable))))))
 
 (defun assistant-get-variable (node variable)
   (let ((variables (assistant-get-list node "variable"))
         result)
     (assistant-validate-types node)
     (when validation
-      (when (setq result (assistant-eval validation node))
+      (when (setq result (assistant-eval validation))
        (unless (y-or-n-p (format "Error: %s.  Continue? " result))
          (error "%s" result))))
     (assistant-set node "save" t)))
         next elem)
     (while (and (setq elem (cadr (pop nexts)))
                (not next))
-      (when (assistant-eval (car elem) node)
+      (when (assistant-eval (car elem))
        (setq next (cadr elem))))
     next))
-      
-(defun assistant-eval (form node)
+
+(defun assistant-get-all-variables ()
+  (let ((variables nil))
+    (dolist (node (cdr assistant-data))
+      (setq variables
+           (append (assistant-get-list node "variable")
+                   variables)))
+    variables))
+  
+(defun assistant-eval (form)
   (let ((bindings nil))
-    (dolist (variable (assistant-get-list node "variable"))
+    (dolist (variable (assistant-get-all-variables))
       (setq variable (cadr variable))
-      (push (list (car variable) (nth 3 variable))
+      (push (list (car variable) (if (eq (nth 3 variable) 'default)
+                                    nil
+                                  (nth 3 variable)))
            bindings))
     (eval
      `(let ,bindings
       (when (assistant-get node "save")
        (setq result (assistant-get node "result"))
        (push (list (car result)
-                   (assistant-eval (cadr result) node))
+                   (assistant-eval (cadr result)))
              results)))
     (message "Results: %s"
             (nreverse results))))
 
 (defun assistant-authinfo-data (server port type)
   (when (file-exists-p "~/.authinfo")
-    (let ((data
-          (netrc-machine (netrc-parse "~/.authinfo")
-                         server port)))
+    (netrc-get (netrc-machine (netrc-parse "~/.authinfo")
+                             server port)
+              (if (eq type 'user)
+                  "login"
+                "password"))))
 
 (provide 'assistant)