   (add-to-list 'geiser-custom--memoized-vars name))
 
 (defmacro geiser-custom--defcustom (name &rest body)
+  (declare (doc-string 3) (debug (name body)))
   `(progn
      (geiser-custom--memoize ',name)
      (defcustom ,name ,@body)))

  :group 'faces)

(defmacro geiser-custom--defface (face def group doc)
  (let ((face (intern (format "geiser-font-lock-%s" face))))
    `(defface ,face (face-default-spec ,def)
       ,(format "Face for %s." doc)



(defconst geiser-custom-font-lock-keywords
  (eval-when-compile
    `((,(concat "(\\(geiser-custom--\\(?:defcustom\\|defface\\)\\)\\_>"
                "[ \t'\(]*"
                "\\(\\(?:\\sw\\|\\s_\\)+\\)?")
       (1 font-lock-keyword-face)
       (2 font-lock-variable-name-face nil t)))))

(font-lock-add-keywords 'emacs-lisp-mode geiser-custom-font-lock-keywords)

(provide 'geiser-custom)
