Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Submit data to Beeminder from within Emacs. Also integrates with org-mode.
Emacs Lisp
branch: master

This branch is 31 commits behind Sodaware:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
README.org
beeminder.el

README.org

beeminder.el

A really simple Emacs extension for working with Beeminder.

This is very much in the early stages, so there’s not really any error checking.

It’s designed to integrate with org-mode, and adds support for submitting data directly to Beeminder when a task is closed (see usage for some examples).

Thanks to Sacha Chau for providing the inspiration and initial code for this extension: https://gist.github.com/sachac/9700455

Installation

All Emacs installs are a little different, but the basic outline is this:

  • Download the source code and put it somewhere Emacs can find it (probably ~/.emacs.d/)
  • Add (require 'beeminder) somewhere in your Emacs startup
  • Set your API authorization token and Beeminder username configuration variables using the following:
(setq beeminder-username "username")
(setq beeminder-auth-token "token")

You can find your token by logging into Beeminder and then visiting the following URI: https://www.beeminder.com/api/v1/auth_token.json

Usage

New Shortcuts

beeminder.el adds the following shortcuts:

C-c b a - Add data to a Beeminder goal. Prompts for the goal identifier, a numeric value and an (optional) comment

C-c b g - Fetches all of your goals from Beeminder and inserts them as a list of org-mode headlines.

C-c b w - Fetches your username from Beeminder. Not really useful, but good for checking if your authorization token is set and valid

Integrating with org-mode

This extension listens for changes to the state of org-mode todo items, and can automatically add data to Beeminder once a task is complete. In order to do this, the task (or its ancestors) must have a ”beeminder” property that is set to the name of the goal to add to.

Tasks can also set a ”value” property, which will be sent when the task is complete. If no ”value” property is set, the value will default to 1.

Here’s an example:

* Beeminder.el Tasks
  :PROPERTIES:
  :beeminder: beeminder-el
  :END:
** TODO Write documentation

When “Write documentation” is changed to “DONE”, beeminder.el will submit a value of “1” to the ”beeminder-el” goal.

Future Improvements / TODO

Add a way to create goals on Beeminder from an org-mode headline

Add some error checking!

Allow tasks to use clocked time as their value

Licence

Copyright (C) 2014 Phil Newton

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Something went wrong with that request. Please try again.