Search code examples
emacselisporg-mode

How to automatically do org-mobile-push org-mobile pull in emacs


Since I am using org-mode to track my todo list in emacs, I like the iPhone app: MobileOrg, with it, I can access my todo list all day.

But here's the problem:

I have to manually org-mobile-push my changes from local file to mobile phone through dropbox, and org-mobile-pull the changes made by phone back.

How to make that automatically? Like adding some recipes in dotemacs file.


Solution

  • Add these two lines to dot emacs file:

    (add-hook 'after-init-hook 'org-mobile-pull)
    (add-hook 'kill-emacs-hook 'org-mobile-push) 
    

    With them, it automatically pulls the changes on emacs startup, and pushes the changes before emacs exits.

    -- Update

    If you never exit your Emacs, this solution might not work for you. So, another solution using idle timer

    ;; moble sync
    (defvar org-mobile-sync-timer nil)
    (defvar org-mobile-sync-idle-secs (* 60 10))
    (defun org-mobile-sync ()
      (interactive)
      (org-mobile-pull)
      (org-mobile-push))
    (defun org-mobile-sync-enable ()
      "enable mobile org idle sync"
      (interactive)
      (setq org-mobile-sync-timer
            (run-with-idle-timer org-mobile-sync-idle-secs t
                                 'org-mobile-sync)));
    (defun org-mobile-sync-disable ()
      "disable mobile org idle sync"
      (interactive)
      (cancel-timer org-mobile-sync-timer))
    (org-mobile-sync-enable)
    

    I just found out it is same as below answer, so, if you prefer the idle timer solution, please upvote tkf's answer.