spacemacs/layers/+source-control/version-control
Aaron Jensen d47066611b Defer git-gutter loading
As it was, git-gutter and git-gutter+ get started as soon as emacs starts if
they're enabled. This added about 500ms to startup time on my machine, so this
will instead defer it until emacs has been idle for 5 seconds.
2017-08-11 23:56:24 +03:00
..
config.el Bump year in copyright headers 2017-01-05 23:08:17 -05:00
funcs.el Bump year in copyright headers 2017-01-05 23:08:17 -05:00
keybindings.el Bump year in copyright headers 2017-01-05 23:08:17 -05:00
packages.el Defer git-gutter loading 2017-08-11 23:56:24 +03:00
README.org update docs to the new toc-org format 2017-05-22 18:35:37 +03:00

Version-Control layer

Description

This layers adds general configuration for Emacs VC. It should work with all VC backends such as Git, Mercurial, Bazaar, SVN, etc…

Features

  • highlights uncommitted changes in the fringe or margin with diff-hl,

git-gutter, or git-gutter+

  • adds vcs transient-state SPC g. to allow quick navigation and modification of

buffer hunks.

Install

Layer

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

Configuration

You can choose the package to facilitate the diff transient-state and show margins by setting version-control-diff-tool

'(version-control :variables
                  version-control-diff-tool 'diff-hl)

You can choose the side on which the diff appears (by default it's the right side)

'(version-control :variables
                  version-control-diff-side 'left)

To automatically enable diff margins in all buffers, set version-control-global-margin

'(version-control :variables
                  version-control-global-margin t)

Differences between margin programs

This layer contains generalized mappings for three diff margin packages: diff-hl, git-gutter, and git-gutter+.

There are some differences between packages that might have some people prefer one over the other:

Feature diff-hl git-gutter git-gutter+
Show in fringe X X X
Extended VCS support (e.g. hg, svn) X X
Stage hunks from buffer X X
Dired support X

Key Bindings

Key Binding Description
SPC g . version control transient-state
SPC g r smerge mode transient-state
SPC T d toggle diff margins
SPC T C-d toggle diff margins globally
SPC g h o browser at remote

Version Control Transient-state

Key Binding Description
SPC g . h Show diff of hunk
SPC g . n Next hunk
SPC g . N Previous hunk
SPC g . p Previous hunk
SPC g . r Revert hunk
SPC g . s Stage hunk
SPC g . t Toggle margin indicators
SPC g . w Stage file
SPC g . u Unstage file
SPC g . d Repo diff popup
SPC g . D Show diffs of unstaged hunks
SPC g . c Commit with popup
SPC g . C Commit
SPC g . P Push repo with popup
SPC g . f Fetch for repo with popup
SPC g . F Pull repo with popup
SPC g . l Show repo log

Smerge Mode Transient-state

Key Binding Description
SPC g r n Next hunk
SPC g r N Previous hunk
SPC g r p Previous hunk
SPC g r j Go to next line
SPC g r k Go to previous line
SPC g r b Smerge keep base
SPC g r m Smerge keep mine
SPC g r a Smerge keep all
SPC g r o Smerge keep other
SPC g r c Smerge keep current
SPC g r C Smerge combine with next
SPC g r u Undo
SPC g r r Smerge refine
SPC g r q Quit transient state