         collect (propertize i 'face anything-c-bookmarks-face3)))
 
 (defun anything-c-highlight-bookmark (files)
+  "Colors mean:
+Grey ==> non--buffer-filename with saved region or not.
+Yellow ==> w3m url with saved region.
+Green ==> info buffer with saved region.
+Blue ==> regular file with maybe a region saved.
+RedOnWhite ==> Directory."
   (loop for i in files
-        if (file-directory-p (bookmark-get-filename i))
-        collect (propertize i 'face anything-c-bookmarks-face1)
-        else
-        collect (propertize i 'face anything-c-bookmarks-face2)))
+     for pred = (bookmark-get-filename i)
+     for bufp = (and (fboundp 'bookmark-get-buffername)
+                     (bookmark-get-buffername i))
+     for regp = (and (fboundp 'bookmark-get-endposition)
+                     (bookmark-get-endposition i))
+     for handlerp = (and (fboundp 'bookmark-get-handler)
+                         (bookmark-get-handler i))
+     if (and pred ;; directories
+             (file-directory-p pred))
+     collect (propertize i 'face anything-c-bookmarks-face1)
+     if (and pred ;; regular files
+             (not (file-directory-p pred))
+             (file-exists-p pred)
+             (not regp))
+     collect (propertize i 'face anything-c-bookmarks-face2)
+     if (and pred ;; regular files with regions saved
+             (not (file-directory-p pred))
+             (file-exists-p pred)
+             regp)
+     collect (propertize i 'face '((:foreground "Indianred2")))
+     if (and (fboundp 'bookmark-get-buffername) ;; buffer non--filename
+             bufp
+             (not pred))
+     collect (propertize i 'face '((:foreground "grey")))
+     if (and (fboundp 'bookmark-get-buffername) ;; w3m buffers
+             (string= bufp "*w3m*")
+             (when pred
+               (not (file-exists-p pred))))
+     collect (propertize i 'face '((:foreground "yellow")))
+     if (and (fboundp 'bookmark-get-buffername) ;; info buffers
+             (or
+              (eq handlerp 'Info-bookmark-jump)
+              (and
+               (string= bufp "*info*")
+               (when pred
+                 (not (file-exists-p pred))))))
+     collect (propertize i 'face '((:foreground "green")))))
+       
 
 (defvar anything-c-source-bookmarks-local
   '((name . "Bookmarks-Local")

(define-anything-type-attribute 'bookmark
  '((action
     ("Jump to bookmark" . (lambda (candidate)
                                    (bookmark-jump candidate)
                                    (anything-update)))
     ("Jump to BM other window" . (lambda (candidate)
                                    (bookmark-jump-other-window candidate)
                                    (anything-update)))

    (pop-to-buffer standard-output)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Utilities Functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; For compatibility
(unless (fboundp 'region-active-p)
  (defun region-active-p ()
    "Return t if Transient Mark mode is enabled and the mark is active.

Most commands that act on the region if it is active and
Transient Mark mode is enabled, and on the text near point
otherwise, should use `use-region-p' instead.  That function
checks the value of `use-empty-active-region' as well."
    (and transient-mark-mode mark-active)))

(defun anything-nest (&rest same-as-anything)
  "Nested `anything'. If you use `anything' within `anything', use it."
  (with-selected-window (anything-window)
