Emacs sr.ht API client

8f58271 srht-todo: srht-todo-submit-ticket: Transient prefix command.

~akagi pushed to ~akagi/srht.el git

a month ago

d9a8f6a Merge branch 'master' into pre-0.5

~akagi pushed to ~akagi/srht.el git

a month ago


GNU-devel ELPA


#Version 0.4


GNU Emacs sourcehut API client.

srht provides bindings to the Sourcehut REST API as well as commands for interacting with it. It currently supports two services: git.sr.ht — git hosting and paste.sr.ht — ad-hoc text file hosting.


#With Guix

git clone https://git.sr.ht/~akagi/srht.el srht
cd srht
guix package -f guix.scm


srht depends on the HTTP library plz which is available in ELPA. After installing it, place files from /lisp folder in load-path.


To use this client, you need to generate a personal access tokens (Oauth and Oauth2). Oauth token will have unrestricted access to all sr.ht APIs and can be used like a normal access token to authenticate legacy API requests.

After creating the tokens:

#oauth token

(setq srht-token OAUTH-TOKEN)

It is also possible to store the token using auth-source.el, the host must be set to sr.ht.

machine sr.ht password TOKEN

#oauth2 token

To store the token use auth-source.el, the host must be set to git.sr.ht.

machine git.sr.ht password TOKEN

Strongly encouraged for the user to limit the scope of access that is provided by an authentication token. Currently srht-git.el requires at least REPOSITORIES, PROFILE scopes for git.sr.ht. When creating an oauth2 token, you can select scopes from the "Limit scope of access grant" menu.


You also need to set srht-username:

(setq srht-username USERNAME)

If you are using a self-hosted instanse:

(setq srht-domain '(DOMAIN ...))


Function Description
srht-git-repo-update Update information for git repository
srht-git-repo-delete Delete existing git repository
srht-git-repo-create Create git repository
srht-paste-link Kill the link of the selected paste
srht-paste-delete Detete paste with SHA
srht-paste-region Paste region or buffer to sourcehut

This package is part of GNU Emacs, being distributed in GNU ELPA. Contributions to this project must follow GNU guidelines, which means that, as with other parts of Emacs, patches of more than a few lines must be accompanied by having assigned copyright for the contribution to the FSF. Contributors who wish to do so may contact emacs-devel@gnu.org to request the assignment form.