spacemacs/layers/+source-control/github
2020-09-23 21:25:01 +02:00
..
img
funcs.el update copyright to 2020 2020-09-23 21:25:01 +02:00
layers.el update copyright to 2020 2020-09-23 21:25:01 +02:00
packages.el update copyright to 2020 2020-09-23 21:25:01 +02:00
README.org documentation formatting: Fri Aug 23 17:22:19 UTC 2019 2019-08-24 00:03:42 +02:00

GitHub layer

/TakeV/spacemacs/media/commit/82ba73a1c0fdf055e9c062beb5ba669c52a19e7f/layers/+source-control/github/img/github.png

Description

This layers adds support for GitHub.

Features:

  • forge: integration with various forges, such as GitHub and GitLab.
  • gist.el: full-featured mode to browse and post GitHub gists.
  • git-link: quickly generate URLs for commits or files.
  • github-clone allows for easy cloning and forking of repositories.

Install

Layer

To use this configuration layer, add it to your ~/.spacemacs. You will need to add github to the existing dotspacemacs-configuration-layers list in this file.

Git configuration

You will need to generate a personal access token on GitHub. This token should have the gist and repo permissions. Once this token is created, it needs to be added to your ~/.gitconfig

You will also need to generate an SSH key and add it to your GitHub account.

  git config --global github.oauth-token <token>

Forge

The forge package uses emacsql which requires a C compiler to be available on MS Windows, see issue https://github.com/skeeto/emacsql/issues/46.

For this reason the forge package is not installed on MS Windows by default. If you still want to install it (which means you do have a C compiler available in your PATH) then use the dotspacemacs-additional-packages variable in your dotfile:

  (dotspacemacs-additional-packages '((forge :toggle t)))

Key bindings

Forge

In a magit-status buffer (SPC g s):

Key binding Description
b Y create branch from pull-request
b y create and check out branch from pull-request
F f fetch issues and pull-requests
F n fetch notifications
F p create pull-request
F i create issue
F F list notifications
F P list pull-requests
F I list issues
p y pull pull-requests and issues for the current repository
p Y pull all notifications for the current repository's forge

In a forge-topic buffer:

Key binding Description
SPC m c create new post
SPC m e edit post

In a forge-post buffer (assuming the major mode leader key is ,)

Key binding Description
SPC m c or SPC m , submit post
SPC m k or SPC m k cancel post

gist.el

Key binding Description
SPC g g b create a public gist with the buffer content
SPC g g B create a private gist with the buffer content
SPC g g l open the gist list buffer
SPC g g r create a public gist with the region content
SPC g g R create a private gist with the region content

In the gist list buffer:

Key binding Description
/ evil search
+ add buffer to gist
- remove file for gist
b or o open current gist in browser
f fetch current gist
g refresh the list
h go left
j go down
k go up
K kill current gist
l go right
n next search occurrence
N next previous occurrence
v visual state
V visual-line state
y print URL and copy it

Clone repositories

Key binding Description
SPC g h c / search for a repository to clone it
SPC g h c c clone and optionally fork repository
SPC g h c r add a remote that is an existing fork of selected remote
SPC g h c f fork remote in current user namespace
SPC g h c u add upstream as remote