Running Emacs Functions in Batch Mode
Date: 10 November 2011
Updated: 22 March 2012
I use emacs for a lot of things at work. One of the more useful is org-mode for to do lists, scheduling and meeting notes. Org-mode can sync to mobile devices running the app MobileOrg. Unfortunately, that sync is a manual process. The good news, emacs is scriptable and can be run in batch mode to automate things. Here are a couple of things I use.
Note: Emacs batch mode spews a huge amount of crap to stderr. If you’re
putting these in cron, you may want to slap a 2>/dev/null
on there to keep it
quiet.
Sync with MobileOrg
The first line pushes the local org files to sync and the second pulls changes coming from the device.
emacs --batch -l $HOME/.emacs -f org-mobile-push
emacs --batch -l $HOME/.emacs -f org-mobile-pull
Publish Meeting Minutes
I keep meeting minutes using org-mode and then publish them to my web site. I also maintain my personal work site using org-mode. To publish all configured sites, you can use the script below.
emacs --batch -l $HOME/.emacs -f org-publish-all
If you want to publish a specific site rather than all of them, you can use this incantation.
emacs --batch -l $HOME/.emacs --eval '(org-publish "meetings")'
Updated [2012-03-22 Thu 22:49]: It’s also possible to use --eval
with emacsclient
. You, of course, need emacs server running but it makes
those batch runs much faster.