   "String representing S-Expressions.")
 
 (define-anything-type-attribute 'bookmark
-  '((action ("Jump to bookmark" . (lambda (candidate)
+  '((action
+     ("Jump to bookmark" . (lambda (candidate)
                                     (bookmark-jump candidate)
                                     (anything-update)))
-            ("Delete bookmark" . bookmark-delete)
-            ("Rename bookmark" . bookmark-rename)
-            ("Relocate bookmark" . bookmark-relocate)))
+     ("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" . bookmark-delete)
+     ("Rename bookmark" . bookmark-rename)
+     ("Relocate bookmark" . bookmark-relocate)))
   "Bookmark name.")
 
 (define-anything-type-attribute 'line

                                                 (setq reg (buffer-substring (mark) (point))))
                                               (insert reg))))
               ("Remove region" . anything-c-icicle-region-delete-region)
               ("Update" . anything-icicle-region-update)))))

;; (anything 'anything-c-source-icicle-region)

(defun anything-icicle-region-update (elm)
  "Remove entries in `icicle-region-alist' if files doesn't exists anymore."
  (loop
     for i in icicle-region-alist
     when (and (caddr i)
               (not (file-exists-p (caddr i))))
     do
       (let ((pos (position i icicle-region-alist)))
         (anything-icicle-delete-region-from-alist pos))))

(defun anything-icicle-select-region-action (pos)
  "Action function for `icicle-select-region'."
  (let* ((reg   (nth pos icicle-region-alist))
         (buf   (cadr reg))
         (file  (caddr reg)))
    (when (and (not (get-buffer buf))
               file) ; If no buffer, try to open the file.  If no file, msg.
      (if (file-readable-p file)
          (find-file-noselect file)
          (message "No such file: `%s'" file)))
    (when (get-buffer buf)
      (pop-to-buffer buf)
      (raise-frame)
      (goto-char (cadr (cddr reg)))
      (push-mark (car (cddr (cddr reg))) 'nomsg 'activate)))
  (setq deactivate-mark  nil))


(defun anything-icicle-delete-region-from-alist (pos)
  "Delete the region named REG-NAME from `icicle-region-alist'."
  (let ((alist-cand  (nth pos icicle-region-alist)))
    (setq icicle-region-alist
          (delete (cons (car alist-cand) (cdr alist-cand)) icicle-region-alist)))
  (funcall icicle-customize-save-variable-function 'icicle-region-alist icicle-region-alist))

(defun anything-c-icicle-region-goto-region (candidate)
  (let ((pos (position candidate anything-icicle-region-alist))
        (buf (second (split-string candidate " => "))))
    (if (equal buf "*info*")

    (anything-icicle-select-region-action pos)))

(defun anything-c-icicle-region-delete-region (candidate)
  "Get the position of `candidate' and call `anything-icicle-delete-region-from-alist'."
  (let ((pos (position candidate anything-icicle-region-alist)))
    (anything-icicle-delete-region-from-alist pos)))


;;;; <Kill ring>
;;; Kill ring
