   (setq magit-status-buffer-switch-function #'switch-to-buffer)
   (fullframe magit-status magit-mode-quit-window)
   (magit-auto-revert-mode)
-  :bind ("C-x g" . magit-status))
+  :bind ("C-x g" . magit-status)
+  :commands (magit-pull magit-status magit-log))
 
 (use-package vc
   :commands (vc-pull)

  (with-current-buffer (find-file-noselect (expand-file-name
                                            "~/stuff/active/non-public/daily.org"))
    (ar/org-helm-entry-child-candidates "current-week")))

(defmacro ar/with-current-file (file-path &rest body)
  "Open file at FILE-PATH and execute BODY."

  :commands (helm-buffers-list)
  :ensure t)

(defun ar/pull-repo-at-path (path)
  "Pull repository at PATH."
  (ar/with-current-file path (magit-pull)))

(defun ar/pending-repo-at-path-p (path)
  "Check if pending changes in repository at PATH."
  (ar/with-current-file path (magit-anything-modified-p)))

(defun ar/check-frequent-repos-pending ()
  (interactive)
  (cond
   ((ar/pending-repo-at-path-p "~/stuff/active/dots")
    (magit-status "~/stuff/active/dots"))
   ((ar/pending-repo-at-path-p "~/stuff/active/blog")
    (magit-status "~/stuff/active/blog"))
   ((ar/pending-repo-at-path-p "~/stuff/active/non-public")
    (magit-status "~/stuff/active/non-public"))))

(defun ar/pull-frequent-repos ()
  "Pull all frequent repositories."
  (interactive)
  (ar/pull-repo-at-path "~/stuff/active/dots")
  (ar/pull-repo-at-path "~/stuff/active/blog")
  (ar/pull-repo-at-path "~/stuff/active/non-public"))

(defun ar/projectile-helm-ag ()
  "Search current repo/project using ag."
