Rename my //users directory and all places that refer to glittershark to grfn, including nix references and documentation. This may require some extra attention inside of gerrit's database after it lands to allow me to actually push things. Change-Id: I4728b7ec2c60024392c1c1fa6e0d4a59b3e266fa Reviewed-on: https://cl.tvl.fyi/c/depot/+/2933 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: glittershark <grfn@gws.fyi> |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| CODE_OF_CONDUCT.org | ||
| LICENSE | ||
| org-clubhouse.el | ||
| README.org | ||
#+TITLE:Org-Clubhouse
Simple, unopinionated integration between Emacs's org-mode and the Clubhouse issue tracker
(This used to be at urbint/org-clubhouse, by the way, but moved here as it's more of a personal project than a company one)
Installation
Quelpa
(quelpa '(org-clubhouse
:fetcher github
:repo "glittershark/org-clubhouse"))
DOOM Emacs
;; in packages.el
(package! org-clubhouse
:recipe (:fetcher github
:repo "glittershark/org-clubhouse"
:files ("*")))
;; in config.el
(def-package! org-clubhouse)
Spacemacs
;; in .spacemacs (SPC+fed)
dotspacemacs-additional-packages
'((org-clubhouse :location (recipe :fetcher github :repo "glittershark/org-clubhouse")))
Setup
Once installed, you'll need to set three global config vars:
(setq org-clubhouse-auth-token "<your-token>"
org-clubhouse-team-name "<your-team-name>"
org-clubhouse-username "<your-username>")
You can generate a new personal API token by going to the "API Tokens" tab on the "Settings" page in the clubhouse UI.
Note that org-clubhouse-username needs to be set to your mention name, not
your username, as currently there's no way to get the ID of a user given their
username in the clubhouse API
Usage
Reading from clubhouse
org-clubhouse-headlines-from-queryCreate org-mode headlines from a clubhouse query at the cursor's current position, prompting for the headline indentation level and clubhouse query textorg-clubhouse-headline-from-storyPrompts for headline indentation level and the title of a story (which will complete using the titles of all stories in your Clubhouse workspace) and creates an org-mode headline from that storyorg-clubhouse-headline-from-story-idCreates an org-mode headline directly from the ID of a clubhouse story
Writing to clubhouse
org-clubhouse-create-storyCreates a new Clubhouse story from the current headline, or if a region of headlines is selected bulk-creates stories with all those headlinesorg-clubhouse-create-epicCreates a new Clubhouse epic from the current headline, or if a region of headlines is selected bulk-creates epics with all those headlinesorg-clubhouse-create-story-with-task-listCreates a Clubhouse story from the current headline, making all direct children of the headline into tasks in the task list of the storyorg-clubhouse-push-task-listWrites each child element of the current clubhouse element as a task list item of the associated clubhouse ID.org-clubhouse-update-story-titleUpdates the title of the Clubhouse story linked to the current headline with the text of the headlineorg-clubhouse-update-descriptionUpdate the status of the Clubhouse story linked to the current element with the contents of a drawer inside the element called DESCRIPTION, if any existsorg-clubhouse-claimAdds the user configured inorg-clubhouse-usernameas the owner of the clubhouse story associated with the headline at point
Automatically updating Clubhouse story statuses
Org-clubhouse can be configured to update the status of stories as you update
their todo-keyword in org-mode. To opt-into this behavior, set the
org-clubhouse-mode minor-mode:
(add-hook 'org-mode-hook #'org-clubhouse-mode nil nil)
The mapping from org-mode todo-keywords is configured via the
org-clubhouse-state-alist variable, which should be an alist mapping (string)
org-mode todo-keywords to the (string) names of their corresponding workflow
state. You can have todo-keywords that don't map to a workflow state (I use this
in my workflow extensively) and org-clubhouse will just preserve the previous
state of the story when moving to that state.
An example config:
(setq org-clubhouse-state-alist
'(("TODO" . "To Do")
("ACTIVE" . "In Progress")
("DONE" . "Done")))
Philosophy
I use org-mode every single day to manage tasks, notes, literate programming,
etc. Part of what that means for me is that I already have a system for the
structure of my .org files, and I don't want to sacrifice that system for any
external tool. Updating statuses, org-clubhouse-create-story, and
org-clubhouse-headline-from-story are my bread and butter for that reason -
rather than having some sort of bidirectional sync that pulls down full lists of
all the stories in Clubhouse (or whatever issue tracker / project management
tool I'm using at the time). I can be in a mode where I'm taking meeting notes,
think of something that I need to do, make it a TODO headline, and make that
TODO headline a clubhouse story. That's the same reason for the DESCRIPTION
drawers rather than just sending the entire contents of a headline to
Clubhouse - I almost always want to write things like personal notes, literate
code, etc inside of the tasks I'm working on, and don't always want to share
that with Clubhouse.
Configuration
Refer to the beginning of the org-clubhouse.el file in this repository for documentation on all supported configuration variables