 
 (ert-deftest ar/org-iter-for-each-link-test ()
   (with-temp-buffer
+    ;; TODO: Remove org-mode.
     (org-mode)
     (insert "#+TITLE: This is a test\n")
     (insert "* Heading 1\n")

          nil
          "Not in `ar/org-iter-with-org-file' block"))

(defun ar/org-iter-with-org-file (org-file-path &rest body)
  "With ORG-FILE-PATH, execute BODY."
  (let (ar/org-iter--with-block)
   (ar/file-with-current-file org-file-path
    body)))

(defun ar/org-iter-heading-1-markers ()
  "Get heading 1 markers.

      (should (= heading-called-count 2))
      (should (= link-called-count 5)))))

(defun __wip-helm-bookmarks ()
  (interactive)
  (ar/org-iter-with-org-file
   "~/stuff/active/blog/index.org"
   (let ((sources '()))
     (ar/org-iter-for-each-heading-1
      (lambda (heading)
        (let ((candidates '()))
          ;; TODO: Consider using widen instead.
          (save-restriction
            (org-narrow-to-subtree)
            (ar/org-iter-for-each-link
             (lambda (link)
               (add-to-list 'candidates
                (cons (cond ((and (org-element-property :contents-begin link)
                            (org-element-property :contents-end link))
                       (buffer-substring (org-element-property :contents-begin link)
                                         (org-element-property :contents-end link)))
                      (t
                       (org-element-property :raw-link link)))
                      (org-element-property :raw-link link))
                t))))
          (add-to-list 'sources
                       (helm-build-sync-source (org-element-property :raw-value heading)
                         :candidates candidates
                         :resume 'noresume
                         :action (lambda (href)
                                   (browse-url href)))))))
     (helm :sources sources))))

(provide 'ar-org-iter)

;;; ar-org-iter.el ends here
