THIS IS WIP.
gah is an Elisp package that enables the browsing of GitHub issues via the command line utility gh.
gah is limited in feature set by design: it is not intended to be a comprehensive wrapper around gh.
- Browse issues for a repository:
- Create an issue from an Org heading.
- Emacs 30.x+
- ox-gfm
- The GitHub command line utility
gh(https://github.com/cli/cli) - Pandoc (for Markdown to Org translation)
Both gh and pandoc must be installed and accessible from Emacs.
- Ensure
gah.elis in theload-pathof your local Emacs configuration. - Customize the variable
gah-usernameto your GitHub user name. This must be configured.
gah can be invoked using execute-extended-command M-x:
M-x gahYou will be prompted to enter a repository name. Note that completion is available with the list of repositories in your GitHub account.
The issues for that repository will be listed in a new Emacs buffer named *gah: <repo name>*. The following key bindings are available when the point is on an issue:
- C-o
- Open Transient menu for gah (
gah-issues-tmenu). c- Copy the issue in Org format (
gah-copy-issue). RET- Open the issue in another window, moving point to it (
gah-switch-to-issue). - q
- Quit, keeping buffer. (
quit-window) - Q
- Quit, killing buffer. (
View-kill-and-leave) - n, j
- Move point to next issue and open it in a new window (
gah-next-line). - p, k
- Move point to previous issue and open it in a new window (
gah-previous-line). - K
- Kill all opened buffers associated with this repository (
gah-kill-all-repo-buffers). - N
- Create a new issue (
gah-request-issue-create) - b
- Open issue in web browser. (
gah-browse-url) - TAB
- Move point to next column (
vtable-next-column). - <backtab>
- Move point to previous column (
vtable-previous-column). - <double-mouse-1>
- Open issue in web browser (
gah-browse-url)
gah provides two ways to create an issue:
- From the issue browser, press
Nto rungah-request-issue-create. - From an Org file, using the command
gah-create-issue.
With gah-create-issue, one can compose the issue in Org syntax using an Org heading. The content within the Org heading will be converted into GitHub Flavored Markdown (via ox-gfm) that is put in the kill-ring for subsequent insertion.
Here’s an example of using gah-create-issue:
- Compose issue in an Org file:
* I got a problem Let me tell you about my problem with ~foo~. - With the point located anywhere within the heading subtree, run
M-xgah-create-issue. - You will be prompted to select a repository in the mini-buffer. Choose one.
- A new compose window for the issue will be displayed. With the point in the compose window, use
C-y(yank) to paste the GFM text (converted from the Org text). - Enter
C-c C-cto create the issue on GitHub.