ebe4c60264
This reverts commit
|
||
---|---|---|
.. | ||
config.el | ||
funcs.el | ||
keybindings.el | ||
packages.el | ||
README.org |
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
VC commands:
Key Binding | Description |
---|---|
SPC g . |
version control transient-state |
SPC g r |
smerge mode transient-state |
SPC g h o |
browser at remote |
SPC g v = |
open a hunk under the point in the diff buffer |
SPC g v D |
compare the entire working tree with head |
SPC g v e |
show diff against current head using ediff |
SPC g v g |
visually annotate the current file |
SPC g v d |
open the VC Directory buffer |
SPC g v + |
update the working copy |
SPC g v i |
register (add) into a version control system |
SPC g v u |
revert working copy to their repository contents |
SPC g v l |
list the change log |
SPC g v L |
list the change log for the current VC controlled tree |
SPC g v v |
do the next logical VC operation (vc-next-action ) |
SPC g v I |
ignore file (vc-ignore ) |
SPC g v r |
resolve conflicts in file |
VC Directory buffer commands
You can hit SPC pv
from the current project to open the VC Directory buffer,
or use SPC g v d
for specifying a root directory.
Then you may mark (m
key) files you are interested in, to form a fileset.
Most commands described above are applicable to filesets too.
To some of them are given shortcuts:
Key | Description |
---|---|
= |
compare selected files with head |
c |
open a commit message buffer |
l |
list changes |
a |
annotate selected files |
i |
add into a version control system |
r |
refresh directory view |
E |
ignore file under cursor |
Navigation and interaction commands in the VC Directory buffer:
Key Bindings | Description |
---|---|
j or M-n |
next file |
k or M-p |
previous file |
gj or TAB |
next directory |
gk or S-TAB |
previous directory |
m |
mark a file |
u |
unmark a file |
Commit message editing buffer
In a commit message buffer press C-c C-c
to commit the changes with the entered message.
Pressing C-c C-k
will discard the commit message and close this buffer.
Diff buffer
Key Bindings | Description |
---|---|
C-j or M-n |
next hunk |
C-k or M-p |
previous hunk |
gj or J or TAB |
next file |
gk or K or S-TAB |
previous file |
a |
apply a hunk |
r |
revert a hunk |
S |
split the current hunk at point into two hunks |
D |
kill a hunk |
u |
undo killing or splitting |
Log view buffer
Key Bindings | Description |
---|---|
C-j or M-n |
next message |
C-k or M-p |
previous message |
gj or J or TAB |
next file |
gk or K or S-TAB |
previous file |
f or ENTER |
visit the version at point |
d |
display a diff between the revision at point and the next earlier revision |
o |
use for jumping to links |
H |
toggle hiding of the full message |
Annotation buffer
Key Bindings | Description |
---|---|
J |
visit the annotation of the revision after this one |
K |
visit the annotation of the revision previous to this one |
L |
Visit the log of the revision at line |
H |
toggle whether or not the annotation is visible |
a |
visit the annotation of the revision identified in the current line |
p |
visit the annotation of the revision before the revision at line |
d |
display the diff between the current line’s revision and the previous revision |
f |
show in a buffer the file revision indicated by the current line |
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 |
Toggles
Key Binding | Description |
---|---|
SPC T d |
toggle diff margins |
SPC T C-d |
toggle diff margins globally |