dotfiles/dotfiles/emacs.d/load.d/org-mobile-sync.el

40 lines
1.7 KiB
EmacsLisp

(defvar imalison-org-mobile-sync-timer nil)
(defvar imalison-org-mobile-sync-secs 60)
(defvar imalison-org-mobile-sync:unsaved-changes-count 0)
(defvar imalison-org-mobile-sync:unsaved-changes-min-sync 1)
(defun imalison-org-mobile-sync-pull-and-push ()
(org-mobile-pull)
(imalison-org-mobile-sync)
(when (fboundp 'sauron-add-event)
(sauron-add-event 'me 1 "Called org-mobile-pull and org-mobile-push")))
(defun imalison-org-mobile-sync-start ()
"Start automated `org-mobile-push'"
(interactive)
(setq imalison-org-mobile-sync-timer
(run-with-idle-timer imalison-org-mobile-sync-secs t
'imalison-org-mobile-sync-pull-and-push)))
(defun imalison-org-mobile-sync-stop ()
"Stop automated `org-mobile-push'"
(interactive)
(cancel-timer imalison-org-mobile-sync-timer))
(if (and (boundp 'file-notify--library) file-notify--library)
(use-package org-mobile-sync :ensure t :config (org-mobile-sync-mode 1))
(imalison-org-mobile-sync-start))
(defun imalison-org-mobile-sync (&optional force)
(interactive)
(when (or force (>= imalison-org-mobile-sync:unsaved-changes-count imalison-org-mobile-sync:unsaved-changes-min-sync))
(org-mobile-push)
(setq imalison-org-mobile-sync:unsaved-changes-count 0)))
(add-hook 'after-save-hook (lambda ()
(when (member (file-truename (buffer-file-name))
(mapcar 'file-truename org-agenda-files))
(setq imalison-org-mobile-sync:unsaved-changes-count
(+ imalison-org-mobile-sync:unsaved-changes-count 1)))))
(imalison-org-mobile-sync-start)
(provide 'org-mobile-sync)