Function: gnus-agent-cat-prepare-category-field

gnus-agent-cat-prepare-category-field is a macro defined in gnus-cus.el.gz.

Signature

(gnus-agent-cat-prepare-category-field PARAMETER)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/gnus-cus.el.gz
(defmacro gnus-agent-cat-prepare-category-field (parameter)
  (let* ((entry (assq parameter gnus-agent-parameters))
         (field (nth 3 entry)))
    `(let* ((type (copy-sequence
                   (nth 1 (assq ',parameter gnus-agent-parameters))))
            (val (,field info))
            (deflt (if (,field defaults)
                       (concat " [" (gnus-trim-whitespace
                                     (gnus-pp-to-string (,field defaults)))
                               "]")))
            symb)

       (if (eq (car type) 'radio)
           (let* ((rtype (nreverse type))
                  (rt rtype))
             (while (listp (or (cadr rt) 'not-list))
               (setq rt (cdr rt)))

             (setcdr rt (cons '(const :format "Inherit " nil) (cdr rt)))
             (setq type (nreverse rtype))))

       (if deflt
           (let ((tag (cdr (memq :tag type))))
             (when (string-match "\n" deflt)
	       (while (progn (setq deflt (replace-match "\n " t t
							deflt))
			     (string-match "\n" deflt (match-end 0))))
	       (setq deflt (concat "\n" deflt)))

             (setcar tag (concat (car tag) deflt))))

       (widget-insert "\n")

       (setq val (if val
                     (widget-create type :value val)
                   (widget-create type))
             symb (set (make-local-variable ',field) val))

       (widget-put symb :default val)
       (widget-put symb :accessor ',field)
       (push symb category-fields))))