X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fassistant.el;h=93d72193f4199efe7ddefc0e43acb6838ca013d1;hp=22938af386ce031e517221aea1dde9e49298358a;hb=b52037f4a9c6bee1ff556c22750e158da1208d4b;hpb=0709e728b4f6f45f92649887f92e6c8ff5739033 diff --git a/lisp/assistant.el b/lisp/assistant.el index 22938af38..93d72193f 100644 --- a/lisp/assistant.el +++ b/lisp/assistant.el @@ -8,7 +8,7 @@ ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -17,9 +17,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -31,6 +29,11 @@ (require 'widget) (require 'wid-edit) +(autoload 'gnus-error "gnus-util") +(autoload 'netrc-get "netrc") +(autoload 'netrc-machine "netrc") +(autoload 'netrc-parse "netrc") + (defvar assistant-readers '(("variable" assistant-variable-reader) ("validate" assistant-sexp-reader) @@ -72,7 +75,7 @@ (forward-line 1))) (skip-chars-forward " \t") (prog1 - (buffer-substring (point) (line-end-position)) + (buffer-substring (point) (point-at-eol)) (forward-line 1)))) (push (list command (assistant-reader command value)) results)) @@ -205,7 +208,7 @@ (setq result (if raw (nth 3 elem) (format "%s" (nth 3 elem))))))) result)) - + (defun assistant-set-variable (node variable value) (let ((variables (assistant-get-list node "variable")) elem) @@ -213,11 +216,11 @@ (setq elem (cadr elem)) (when (eq (intern variable) (car elem)) (setcar (nthcdr 3 elem) value))))) - + (defun assistant-render-text (text node) (unless (and text node) - (gnus-error - 5 + (gnus-error + 5 "The assistant was asked to render invalid text or node data")) (dolist (elem text) (if (stringp elem) @@ -267,21 +270,19 @@ (cadr type)) assistant-widgets)) (t - (push + (push (widget-create 'editable-field :value-face 'assistant-field :assistant-variable variable (assistant-get-variable node variable)) assistant-widgets) - ;; The editable-field widget apparently inserts a newline; - ;; remove it. - (delete-char -1) (add-text-properties start (point) - (list - 'bold t - 'face 'assistant-field - 'not-read-only t)))))))) + (list + 'bold t + 'face 'assistant-field + 'not-read-only t))))))) + (widget-setup)) (defun assistant-render-node (node-name) (let ((node (assistant-find-node node-name)) @@ -359,7 +360,7 @@ (setq variable (cadr variable)) (let ((type (nth 1 variable)) (value (nth 3 variable))) - (when + (when (cond ((eq type :number) (string-match "[^0-9]" value)) @@ -409,7 +410,7 @@ (setq applicable (cons elem applicable)))) ;; return the first thing we can - + (while (setq elem (pop applicable)) (push (cadr (cadr elem)) return)) @@ -422,12 +423,12 @@ (append (assistant-get-list node "variable") variables))) variables)) - + (defun assistant-eval (form) (let ((bindings nil)) (dolist (variable (assistant-get-all-variables)) (setq variable (cadr variable)) - (push (list (car variable) + (push (list (car variable) (if (eq (nth 3 variable) 'default) nil (if (listp (nth 3 variable)) @@ -478,5 +479,4 @@ (provide 'assistant) -;;; arch-tag: 0404bfa2-9226-4611-8d3f-335c2416175b ;;; assistant.el ends here