Skip to content
Matthew edited this page Dec 20, 2019 · 3 revisions

Snippets to integrate with Helm

Categorize eaf bookmarks

The following adds sources for browser and pdf app to `helm-filtered-bookmarks` command:

(defvar helm-bookmark-preds+
  '(helm-bookmark-org-file-p
    helm-bookmark-addressbook-p
    helm-bookmark-gnus-bookmark-p
    helm-bookmark-w3m-bookmark-p
    helm-bookmark-woman-man-bookmark-p
    helm-bookmark-info-bookmark-p
    helm-bookmark-image-bookmark-p
    helm-bookmark-file-p
    helm-bookmark-helm-find-files-p
    helm-bookmark-addressbook-p))

(define-advice helm-bookmark-uncategorized-bookmark-p (:override (bookmark) customize)
  "Return non--nil if BOOKMARK match no known category.

This uses `helm-bookmark-preds+' to make it easier to add categories."
  (cl-loop for pred in helm-bookmark-preds+
           never (funcall pred bookmark)))


(with-eval-after-load 'helm-bookmark
  (push 'helm-bookmark-eaf-p+ helm-bookmark-preds+)

  (defun helm-bookmark-eaf-p+ (bookmark)
    "Check if bookmark is an eaf bookmark."
    (eq (bookmark-get-handler bookmark)
        'eaf--bookmark-restore))


    (dolist (app '("browser" "pdf-viewer"))
      (push
       (helm-make-source (format "Bookmark %s" app) 'helm-source-filtered-bookmarks
         :init (lambda ()
                 (bookmark-maybe-load-default-file)
                 (helm-init-candidates-in-buffer
                     'global
                   (helm-bookmark-filter-setup-alist
                    (lambda (bookmark)
                      (equal (bookmark-prop-get bookmark 'eaf-app)
                             app))))))
       helm-bookmark-default-filtered-sources)))