spacemacs/layers/+source-control/github
syl20bnr 584392bd92 [core] Fix layer dependencies based on layer variables
There was a edge case with the declaration of the `lsp` layer in `layers.el`
files.
The `hy` layer depends on the `python` layer which in turn depends on the `lsp`
layer if and only if the `python-backend` layer variable is set to `lsp`.
When the `hy` layer was declared first then it declares the `python` layer
without its layer variables, thus the `lsp` layer was not declared because the
`python-backend` variable was not set.

The fix is to gather all the layer dependencies and resolve them only after all
the used layers have been declared.

* new function `configuration-layer/declare-layer-dependencies`
* replace all calls to `configuration-layer/declare-layer` by the new function
  except for distribution layers (we declare layer dependencies right away in
  distribution layers)
2019-09-30 02:00:48 -04:00
..
img
funcs.el github: add function to get repo for a forge notification error 2019-03-31 12:16:43 -04:00
layers.el [core] Fix layer dependencies based on layer variables 2019-09-30 02:00:48 -04:00
packages.el [Github] Do not install forge pacakge on Windows by default 2019-08-21 22:29:21 -04: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/c8b3e46ef8124ed2c491e05e46ca44fb4b5003a6/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