Skip to content

@mrvdb /gist:3111823
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Automatic asynchronous org-mobile-push in idle time.
;; Show a notification when a push has been completed
(require 'notifications)
(defun notify-push (result)
(notifications-notify
:title "Push complete"
:body (format "Org-mobile-push: %s" result)
)
)
;; Fork the work of pushing to mobile
(require 'async)
(defun fork-org-push-mobile ()
(async-start
;; What to do in the child process
`(lambda ()
,(async-inject-variables "org-\\(mobile-\\|directory\\)")
(org-mobile-push))
; What to do when it finishes
(lambda (result)
(notify-push result))))
;; Define a timer variable
(defvar org-mobile-push-timer nil
"Timer that `org-mobile-push-timer' used to reschedule itself, or nil.")
;; Push to mobile when the idle timer runs out
(defun org-mobile-push-with-delay (secs)
(when org-mobile-push-timer
(cancel-timer org-mobile-push-timer))
(setq org-mobile-push-timer
(run-with-idle-timer
(* 1 secs) nil 'fork-org-push-mobile)))
;; After saving files, start a 30 seconds idle timer after which we
;; are going to push
(add-hook 'after-save-hook
(lambda ()
(when (eq major-mode 'org-mode)
(dolist (file (org-mobile-files-alist))
(if (string= (expand-file-name (car file)) (buffer-file-name))
(org-mobile-push-with-delay 30)))
)))
;; At least run it once a day, but no need for a delay this time
(run-at-time "00:05" 86400 '(lambda () (org-mobile-push-with-delay 1)))
@tatsuhirosatou

This is great! Thanks for sharing. I'm running into an issue with the after save hook, I'm getting the error "Symbol's function definition is void: org-mobile-files-alist". Do you have any suggestions?

@dylan-conlin

Nice work--up and running like a charm!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.