   (let ((default-font elm))
     (set-default-font default-font)))
 
+(defvar anything-c-xfonts-cache nil)
 (defvar anything-c-source-xfonts
   '((name . "X Fonts")
-    (candidates . (lambda ()
-                    (x-list-fonts "*")))
+    (init . (lambda ()
+              (unless anything-c-xfonts-cache
+                (setq anything-c-xfonts-cache
+                      (x-list-fonts "*")))))  
+    (candidates . anything-c-xfonts-cache)
     (multiline)
     (action . (("Copy to kill ring" . (lambda (elm)
                                         (kill-new elm)))

     ("Jump to bookmark" . (lambda (candidate)
                             (bookmark-jump candidate)
                             (anything-update)
                             (condition-case nil
                                 (when bookmark-use-region
                                   (let ((bmk-name (or (bookmark-get-buffername candidate)
                                                       (file-name-nondirectory
                                                        (bookmark-get-filename candidate)))))
                                     (when bmk-name
                                       (with-current-buffer bmk-name
                                         (setq deactivate-mark nil)))))
                               (error nil))))
     ("Jump to BM other window" . (lambda (candidate)
                                    (bookmark-jump-other-window candidate)
                                    (anything-update)))
     ("Bookmark edit annotation" . (lambda (candidate)
                                     (bookmark-edit-annotation candidate)))
     ("Bookmark show annotation" . (lambda (candidate)
                                     (bookmark-show-annotation candidate)))
     ("Delete bookmark" . anything-delete-marked-bookmarks)
     ("Rename bookmark" . bookmark-rename)
     ("Relocate bookmark" . bookmark-relocate)))
  "Bookmark name.")

RedOnWhite ==> Directory."
  (loop for i in files
     for pred = (bookmark-get-filename i)
     for bufp = (and (fboundp 'bookmark-get-buffer-name)
                     (bookmark-get-buffer-name i))
     for regp = (and (fboundp 'bookmark-get-end-position)
                     (bookmark-get-end-position i)
                     (/= (bookmark-get-position i)
                         (bookmark-get-end-position i)))
     for handlerp = (and (fboundp 'bookmark-get-handler)
                         (bookmark-get-handler i))
     ;; directories
     if (and pred 
             (file-directory-p pred))
     collect (propertize i 'face anything-c-bookmarks-face1 'help-echo pred)
     ;; regular files
     if (and pred 
             (not (file-directory-p pred))
             (file-exists-p pred)
             (not regp))
     collect (propertize i 'face anything-c-bookmarks-face2 'help-echo pred)
     ;; regular files with regions saved
     if (and pred 
             (not (file-directory-p pred))
             (file-exists-p pred)
             regp)
     collect (propertize i 'face '((:foreground "Indianred2")) 'help-echo pred)
     ;; gnus
     if (eq handlerp 'bookmark-jump-gnus)
     collect (propertize i 'face '((:foreground "magenta")) 'help-echo pred)
     ;; buffer non--filename
     if (and (fboundp 'bookmark-get-buffer-name)
             bufp
             (not (eq handlerp 'bookmark-jump-gnus))
             (not pred))
     collect (propertize i 'face '((:foreground "grey")))
     ;; w3m buffers
     if (and (fboundp 'bookmark-get-buffer-name)
             (string= bufp "*w3m*")
             (when pred
               (not (file-exists-p pred))))
     collect (propertize i 'face '((:foreground "yellow")) 'help-echo pred)
     ;; info buffers
     if (and (fboundp 'bookmark-get-buffer-name)
             (eq handlerp 'Info-bookmark-jump)
             (string= bufp "*info*"))
     collect (propertize i 'face '((:foreground "green")) 'help-echo pred)))
       

(defvar anything-c-source-bookmarks-local
