1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-24 06:30:03 +08:00
SpaceVim/bundle/gina.vim/doc/gina.txt

2763 lines
90 KiB
Plaintext
Vendored
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*gina.txt* Asynchronously control git repositories from Vim
Version: 1.0
Author: Alisue <lambdalisue@hashnote.net>
License: MIT License (See LICENSE)
=============================================================================
CONTENTS *gina-contents*
INTRODUCTION |gina-introduction|
USAGE |gina-usage|
COMMAND |gina-usage-command|
ACTION |gina-usage-action|
COMPONENT |gina-usage-component|
CUSTOM |gina-custom|
ACTION |gina-custom-action|
MAPPING |gina-custom-mapping|
COMMAND |gina-custom-command|
EXECUTE |gina-custom-execute|
EXAMPLE |gina-custom-example|
BUFFER |gina-buffer|
BLAME |gina-buffer-blame|
BRANCH |gina-buffer-branch|
CHANGES |gina-buffer-changes|
COMMIT |gina-buffer-commit|
DIFF |gina-buffer-diff|
GREP |gina-buffer-grep|
LOG |gina-buffer-log|
LS |gina-buffer-ls|
REFLOG |gina-buffer-reflog|
SHOW |gina-buffer-show|
STASH |gina-buffer-stash|
STASH SHOW |gina-buffer-stash-show|
STATUS |gina-buffer-status|
TAG |gina-buffer-tag|
INTERFACE |gina-interface|
COMMANDS |gina-commands|
FUNCTIONS |gina-functions|
VARIABLES |gina-variables|
HIGHLIGHTS |gina-highlights|
OPTIONS |gina-options|
ACTIONS |gina-actions|
MISC |gina-misc|
SHORT FORMAT |gina-misc-short-format|
TREEISH |gina-misc-treeish|
STRING FORMAT |gina-misc-string-format|
ASKPASS |gina-misc-askpass|
CHANGELOG |gina-changelog|
=============================================================================
INTRODUCTION *gina-introduction*
*gina.vim* (gina) is a plugin to asynchronously control git repositories.
- Execute a git command asynchronously (|job|)
- List candidates of a result of a git command
- Perform actions on candidates above to control a git repository
Latest version:~
https://github.com/lambdalisue/gina.vim
=============================================================================
USAGE *gina-usage*
The following is a schematic image of general working-flow with gina.
>
┌─────┬──────────┐
│ │ │
#DIRTY# │ ▼
▲ │ :Gina status │ << : stage
│ │ │ │ >> : unstage
│ │ │ │ -- : toggle
:write │ #STAGED# │ == : discard
▲ │ │ │ pp : patch
│ ├──────────┤ │ dd : diff
│ │ ▼
#CLEAN# │ :Gina commit │ ! : switch --amend
│ │ │ │ :w : save cache
│ ▼ │ │ :q : commit changes (confirm)
└────────────────┘ │ :wq : commit changes (immediate)
<
So basically user would
1. Edit contents in a git repository
2. Stage changes with |:Gina-status|
- "<<" to stage
- ">>" to unstage
- etc.
3. Commit changes with |:Gina-commit|
- |:w| to save message into a cache
- |:q| to commit changes (user will be asked if they want)
- |:wq| to commit changes (immediately the commit will be performed)
Read further to learn more basic of gina.
-----------------------------------------------------------------------------
COMMAND *gina-usage-command*
gina provides a single command |:Gina| which takes at least one argument.
When |:Gina| is executed with a |bang| modifier (|:Gina!|), it executes a
corresponding git command asynchronously and echo the result.
For example, when users execute ":Gina! status", it echos the current status
of a git repository like
>
:Gina! status
[gina] On branch master
[gina] Your branch is up-to-date with 'origin/master'.
...
[gina]
[gina] no changes added to commit (use "git add" and/or "git ...
<
When |:Gina| is executed with a double |bang| modifier (|:Gina!!|), it
executes a corresponding git command under the shell by |:!| or |:terminal|.
It is mainly for supporting an interactive features, such as "git add -p" or
"git rebase -i". Note that the command is not executed asynchronously.
When |:Gina| is executed without a |bang| modifier, it tries to find a
corresponding gina command from a "gina#command#..." namespace and execute.
If no corresponding command is found, it fallbacks to the above behavior,
namely non-gina conmmand executes a raw git command.
For example, when user executes ":Gina add", it fallbacks to ":Gina! add"
while there is no corresponding gina command for "add" exist.
>
:Gina add
[gina] Nothing specified, nothing added.
[gina] Maybe you wanted to say 'git add .'?
<
And when user executes ":Gina status", it opens a "gina-status" buffer while
"status" is found in "gina#command#..." namespace and the function
opens a "gina-status" buffer of the current git repository.
>
:Gina status
--> Opens a "gina-status" window instead
<
And on the buffer, users can execute pre-defined actions which is explained
in the next section.
-----------------------------------------------------------------------------
ACTION *gina-usage-action*
When |:Gina| opens a non file-like buffer (e.g. "gina-status" buffer), users
may perform pre-defined actions on candidates shown in the buffer.
For example, ":Gina status -s" opens a "gina-status" buffer with short format
which looks like
>
M foo.txt
M bar.txt
<
The buffer contents indiceate the index status of each files.
The first line indicates that a "foo.txt" is staged and the last line
indicates a "bar.txt" isn't.
When users hit "a" on the last line, users will be asked to select an
action to perform with a prompt like
>
action:
<
So now, type "sta" on that prompt like
>
action: sta
<
And now, hit <Tab> and "stage" is completed. This is a basic behavior of
|cmdline-completion| so read that if you are not familiar with.
And now, hit <Return> to perform the action. This will perform an
"index:stage" action which is aliased to "stage", what users just input.
And then the buffer content will becomes
>
M foo.txt
M bar.txt
<
Which indicates all changes are staged into the index.
So now, let's unstage "foo.txt" with an "index:unstage" action which is
aliased to "unstage".
Start a prompt by hitting "a" on the first line and type "uns" like
>
action: uns
<
And this time, hit <Return> instead of <Tab>.
It should execute a "index:unstage" action and the buffer content will become
>
M foo.txt
M bar.txt
<
Action name is guessed from the input, mean that users do not need to input
complete action name/alias if there is no confliction.
You may lazy to type an action name/alias everytime.
Fortunately, "gina-status" buffer provides some default mappings for
fundemental actions. The "stage" and "unstage" are mapped to "<<" and ">>" so
hitting these keys on a candidate will perform the corresponding action.
Additionally, some actions are allowed in |visual-mode|. For example, if you
would like to stage all files, use "ggVG<<" to perform an "index:stage"
action on all candidates listed in the buffer.
*gina-usage-action-mark*
Actions in some buffer are defined as "markable", mean that users can mark
candidates by "builtin:mark" action and all further actions are applied to the
selected candidates (only when the action is defined to use marks).
In default, the follwoing mappings are provided.
mm Mark/Unmark the selection [nv]
m+ Mark the selection [nv]
m- Unmark the selection [nv]
m* Unmark all marks [n]
<C-j> Move to the below line and mark/unmark [n]
<C-k> Mark/Unmark the line and move to the above line [n]
Note that marks are removed after users call any actions.
*gina-usage-action-repeat*
You may want to repeat a previous action. In that case, use a "builtin:repeat"
action which is mapped to "." in default.
Note that actions executed from "builtin:choice" action become repeatable.
Note that some actions are not repeatable. While most of actions are
repeatable, there is no way to confirm if an action is repeatable or not for
now.
The "gina-status" buffer provides a lot more pre-defined actions and default
mappings.
To see what kind of actions and mappings are defined, hit "?" and a help
message like below will be displayed.
>
browse [browse] Bro..... <Plug>(gina-a...)[n]
...
a b..choice [choice] Sel..... <Plug>(gina-a...)[nvi]
? b..help [help] Sho..... <Plug>(gina-a...)[n]
...
<
Each columns in the message indicates
1. A keymap assigned to the action (e.g. ?)
2. An action full name (e.g. builtin:help)
3. An action alias used for completion (e.g. [help])
4. A description of an action
5. A <Plug> mapping for customization (e.g. <Plug>(gina-action-builtin-help))
6. A mapping mode which the <Plug> mapping supports (e.g. [n])
If you would like to define custom aliases or mappings, see the next section.
*gina-usage-action-mods*
Most of actions support command modifiers. For example, if you would like to
see a debug message on the action, prepend |verbose| modifier like
>
action: verbose show
<
When you hit <CR>, the "show" action will be executed with |verbose| modifier.
To customize the mark, users can use the followings
|g:gina#action#mark_sign_text|
|hl-GinaActionMarkSelected|
-----------------------------------------------------------------------------
COMPONENT *gina-usage-component*
Gina provides component functions which return a cached string for
|statusline| and/or |tabline|.
For example, if users want to show an information about the git repository,
they can use the following code to show it on a |statusline|.
>
set statusline=...%{gina#component#repo#preset()}...
<
Or if users prefer to use non ASCII characters, specify "fancy" to the
first attribute like:
>
set statusline=...%{gina#component#repo#preset('fancy')}...
<
Gina provides the following preset component functions
function description~
|gina#component#repo#preset()| A general information.
|gina#component#status#preset()| A current git status.
|gina#component#traffic#preset()| A traffic information.
If users want to control the looks of the component, they can use a raw
component functions like
>
set statusline=...%{MyGitStatus()}...
function MyGitStatus() abort
let staged = gina#component#status#staged()
let unstaged = gina#component#status#unstaged()
let conflicted = gina#component#status#conflicted()
return printf(
\ 's: %s, u: %s, c: %s',
\ staged,
\ unstaged,
\ conflicted,
\)
endfunction
<
Gina provides the following raw component functions
function description~
|gina#component#repo#name()| A name of the current git
repository. Namely, this is a
directory name of the git
repository top.
|gina#component#repo#branch()| A name of the current branch.
|gina#component#repo#track()| A name of the current tracking
branch.
|gina#component#status#staged()| A number of staged files.
|gina#component#status#unstaged()| A number of unstaged files.
|gina#component#status#conflicted()| A number of conflicted files.
|gina#component#traffic#ahead()| A number of commits ahead of
the tracking branch.
|gina#component#traffic#behind()| A number of commits behind of
the tracking branch.
Note that the values are cached to improve the performance.
See also
|g:gina#component#repo#commit_length|
=============================================================================
CUSTOM *gina-custom*
Users can customize the behavior by the following functions.
function description~
|gina#custom#action#alias()| Define an action alias on a specified
gina-xxxxx buffer
|gina#custom#action#shorten()| Alt. to |gina#custom#action#alias()|.
It removes a scheme prefix from a
specified action scheme.
|gina#custom#mapping#map()| Define a custom mapping on a
specified gina-xxxxx buffer
|gina#custom#mapping#nmap()| Alt. to |gina#custom#mapping#map()|.
This function use |nmap| internally.
|gina#custom#mapping#vmap()| Alt. to |gina#custom#mapping#map()|.
This function use |vmap| internally.
|gina#custom#mapping#imap()| Alt. to |gina#custom#mapping#map()|.
This function use |imap| internally.
|gina#custom#command#option()| Define a default option for a
specified :Gina xxxxx command
|gina#custom#command#alias()| Define a command alias for a
specified :Gina xxxxx command
|gina#custom#execute()| Execute a command on a specified
gina-xxxxx buffer
The first argument of these function is {scheme} which indicates a buffer
type or a command.
If you are not satisfied with the functions above, use |autocmd|, |ftplugin|, or
|ftplugin| in the |after| directory to do more complex customization.
-----------------------------------------------------------------------------
ACTION *gina-custom-action*
Assume that you want to add a custom action alias for checking out a remote
branch with tracking state ("commit:checkout:track" action) by "track".
In this case, use |gina#custom#action#alias()| function to define a custom
action alias for "gina-branch" buffer by
>
" Alias 'track' to 'commit:checkout:track'
call gina#custom#action#alias(
\ 'branch', 'track', 'commit:checkout:track',
\)
<
The function above only affect actions for "gina-branch" buffer. If you would
like to apply aliases to more than one buffer, use "/{pattern}" in {scheme}.
Assume that you want to add global custom action alias for opening a diff
content of a candidate in 'previewwindow' by "dp", add the following code
in your |.vimrc|
>
" Alias 'dp' to 'diff:preview' globally
call gina#custom#action#alias(
\ '/.*', 'dp', 'diff:preview'
\)
<
Note that the value of the {scheme} attribute starts from "/".
If the {scheme} is "/{pattern}", the value without a leading "/" is assumed
as a |pattern| and the function is applied to all buffer with the {pattern}.
*gina-custom-action-shorten*
gina provides an alternative function |gina#custom#action#shorten()| which is
used to define "short-form" aliases of actions. For example, the following
will define short-form aliases of "show".
>
call gina#custom#action#shorten('status', 'show')
<
The code above will define the following aliases
short-form alias action~
"show" "show"
"split" "show:split"
"vsplit" "show:vsplit"
"tab" "show:tab"
"preview" "show:preview"
If you want to exclude some actions to make aliases, specify the action names
to the third argument like
>
call gina#custom#action#shorten(
\ 'status',
\ 'show',
\ ['show:tab', 'show:preview']
\)
<
Then short-form aliases except for "show:tab" and "show:preview" will be
defined on "gina-status" buffer.
Note that "/{pattern}" is available on this function as well.
-----------------------------------------------------------------------------
MAPPING *gina-custom-mapping*
Assume that you want to add custom mappings for switching buffers between
"gina-status" and "gina-commit" by "<C-^>".
In this case, use |gina#custom#mapping#nmap()| function to define a custom
mapping for "gina-status" and "gina-commit" buffers by
>
" Execute :Gina commit with <C-^> on "gina-status" buffer
call gina#custom#mapping#nmap(
\ 'status', '<C-^>',
\ ':<C-u>Gina commit<CR>',
\ {'noremap': 1, 'silent': 1},
\)
" Execute :Gina status with <C-^> on "gina-commit" buffer
call gina#custom#mapping#nmap(
\ 'commit', '<C-^>',
\ ':<C-u>Gina status<CR>',
\ {'noremap': 1, 'silent': 1},
\)
<
The function above only affect mappings for "gina-status" and "gina-commit"
buffers. Use "/{pattern}" in {scheme} to apply mappings to more than one
buffer.
Assume that you want to add global custom mappings for opening a candidate in
a new tabpage by "g<CR>", add the following code in your |.vimrc|
>
" Use g<CR> to open a candidate on a new tabpage
call gina#custom#mapping#nmap(
\ '/.*', 'g<CR>',
\ '<Plug>(gina-edit-tab)'
\)
<
Note that the value of the {scheme} attribute starts from "/".
If the {scheme} is "/{pattern}", the value without a leading "/" is assumed
as a |pattern| and the function is applied to all buffer with the {pattern}.
To map aliases or actions with <mods>, use |gina#action#call()| function like:
>
" Use <Left> to open a candidate on a leftest
call gina#custom#mapping#nmap(
\ 'status', '<Left>',
\ ':call gina#action#call(''show:leftest'')<CR>',
\ {'noremap': 1, 'silent': 1},
\)
" Use g<Left> to open a candidate on a leftest with verbose
call gina#custom#mapping#nmap(
\ 'status', 'g<Left>',
\ ':call gina#action#call(''verbose show:leftest'')<CR>',
\ {'noremap': 1, 'silent': 1},
\)
<
-----------------------------------------------------------------------------
COMMAND *gina-custom-command*
Assume that you would like to always open a "gina-log" buffer with |vsplit|
rather than the default opener by |:Gina-log|.
In this case, use |gina#custom#command#option()| function to define a default
option for the "log" command by
>
call gina#custom#command#option('log', '--opener', 'vsplit')
<
Then gina will automatically add "--opener=vsplit" to ":Gina log" if a
corresponding option has not manually specified (":Gina log --opener=tabedit"
still works even with the above code).
The second argument of the function is called {query}. Users can specify
multiple options with a bar ("|") separated string like
>
call gina#custom#command#option('commit', '-v|--verbose')
<
In this case, the option "-v" and "--verbose" are assumed as a same option.
When user execute ":Gina commit", gina automatically add "--verbose" option
but when user execute ":Gina commit -v" or ":Gina commit --verbose", gina
ignore the default option defined above.
Additionally, if the option is for switch the feature like "--verbose" on
":Gina commit", users can remove the default option by adding "--no-{option}"
like
>
call gina#custom#command#option('commit', '-v|--verbose')
:Gina commit
" --> Open "gina-commit" with "--verbose" option
:Gina commit --no-verbose
" --> Open "gina-commit" without "--verbose" option
<
Note that this "--no-{option}" is only available for options which default
value is specified to 1 (or omitted).
Assume that you want to add "--opener=vsplit" for all commands which opens
a non file-like buffer. Then add the following code in your |.vimrc|
>
" Add "--opener=vsplit" to branch/changes/grep/log
call gina#custom#command#option(
\ '/\%(branch\|changes\|grep\|log\)',
\ '--opener', 'vsplit'
\)
<
Note that the value of the {scheme} attribute starts from "/".
If the {scheme} is "/{pattern}", the value without a leading "/" is assumed
as a |pattern| and the function is applied to all buffer with the {pattern}.
*gina-custom-command-alias*
Assume that you want to use "st" for "status" command.
In this case, use |gina#custom#command#alias()| function to define a custom
command alias for "status" command by
>
call gina#custom#command#alias('status', 'st')
<
Then ":Gina st" will execute ":Gina status" instead of ":Gina! st"
It's worth to know that the command alias has its own default option space,
mean that defalt options assigned to "status" by |gina#custom#command#option()|
does not affect the command alias "st" for example
>
call gina#custom#command#option('status', '--ignore-submodules')
call gina#custom#command#alias('status', 'st')
:Gina status
" --> Open "gina-status" with "--ignore-submodules"
:Gina st
" --> Open "gina-status" without "--ignore-submodules"
>
If you would like to make a command alias for a git raw command rather than
gina's command, assign 1 to the third argument like
>
call gina#custom#command#alias('status', 'st', 1)
:Gina st
[gina] On branch master
[gina] Your branch is up-to-date with 'origin/master'.
...
[gina]
[gina] no changes added to commit (use "git add" and/or "git ...
Note that "/{pattern}" for {scheme} cannot be used in this function.
-----------------------------------------------------------------------------
EXECUTE *gina-custom-execute*
This is a most powerful custom function which |execute| an arbital {expr} on a
{scheme} buffer.
Assume that you would like to set 'winfixheight' on "gina-status" buffer to
fix the window height. Then the following code would help you.
>
call gina#custom#execute('status', 'setlocal winfixheight')
<
As like other custom functions, "/{pattern}" is allowed for {scheme} so you
can perform "setlocal winfixwidth" in multiple buffers like
>
call gina#custom#execute(
\ '/\%(status\|branch\|grep\)',
\ 'setlocal winfixheight'
\)
<
This is the most powerful custom function so use it with great care.
-----------------------------------------------------------------------------
EXAMPLE *gina-custom-example*
The following is what I use for now to customize gina.
>
call gina#custom#command#alias('branch', 'br')
call gina#custom#command#option('br', '-v', 'v')
call gina#custom#command#option(
\ '/\%(log\|reflog\)',
\ '--opener', 'vsplit'
\)
call gina#custom#command#option(
\ 'log', '--group', 'log-viewer'
\)
call gina#custom#command#option(
\ 'reflog', '--group', 'reflog-viewer'
\)
call gina#custom#command#option(
\ 'commit', '-v|--verbose'
\)
call gina#custom#command#option(
\ '/\%(status\|commit\)',
\ '-u|--untracked-files'
\)
call gina#custom#command#option(
\ '/\%(status\|changes\)',
\ '--ignore-submodules'
\)
call gina#custom#action#alias(
\ 'branch', 'track',
\ 'checkout:track'
\)
call gina#custom#action#alias(
\ 'branch', 'merge',
\ 'commit:merge'
\)
call gina#custom#action#alias(
\ 'branch', 'rebase',
\ 'commit:rebase'
\)
call gina#custom#mapping#nmap(
\ 'branch', 'g<CR>',
\ '<Plug>(gina-commit-checkout-track)'
\)
call gina#custom#mapping#nmap(
\ 'status', '<C-^>',
\ ':<C-u>Gina commit<CR>',
\ {'noremap': 1, 'silent': 1}
\)
call gina#custom#mapping#nmap(
\ 'commit', '<C-^>',
\ ':<C-u>Gina status<CR>',
\ {'noremap': 1, 'silent': 1}
\)
call gina#custom#execute(
\ '/\%(status\|branch\|ls\|grep\|changes\|tag\)',
\ 'setlocal winfixheight',
\)
<
Latest version:~
"home/.config/nvim/rc.d/gina.vim" on https://github.com/lambdalisue/rook/
=============================================================================
BUFFER *gina-buffer*
gina uses two kind of buffers internally. One is called a "file-like" buffer
and another is called "non file-like" buffer.
The main difference between "file-like" and "non file-like" is options.
Some options are forcedly assigned by the command (upper part) and other
options are defined in a corresponding |ftplugin| (lower part).
The following table visualize the difference of options between file-like and
non file-like ("?" in the table indicates the default value)
option file-like non file-like~
'buftype' nowrite nofile
'bufhidden' ? hide
'swapfile' ? 0
'modifiable' 0 0
option file-like non file-like~
'buflisted' 1 0
'list' ? 0
'spell' ? 0
'wrap' ? 0
'foldenable' ? 0
'number' ? 0
'relativenumber' ? 0
'foldcolumn' ? 0
'colorcolumn' ? 0
If you are not satisfied with this options, use a |ftplugin| in an |after|
directory to overwrite.
Additinal difference is |gina-actions|. Most of "non file-like" buffer
pre-define some actions while non of "file-like" buffer does.
*gina-buffer-naming*
A buffer which shown by gina is one of the following
gina://{refname}:{scheme}[:{params}]
gina://{refname}:{scheme}[:{params}]/{rev}
gina://{refname}:{scheme}[:{params}]/{treeish}
Where
{refname} An unique name for a git repository
e.g. "gina.vim"
{scheme} A command scheme
e.g. "status", "commit"
{params} Optional parameters splitted by ":"
e.g. "cached", "cached:--"
{rev} A target revision
e.g. "HEAD", "master"
{treeish} A target treeish which is {rev}:{path}
e.g. "HEAD:README.md", ":autoload/gina.vim"
When a command supports filtering candidates by "-- {pathspec}..." and the
filteration has performed, "--" is applied to {params} like
>
:Gina log
" --> Open gina://xxxxx:log for entire log
:Gina log -- **/*.vim
" --> Open gina://xxxxx:log:-- for filtered log
<
The {treeish} is similar to the one used in "git show" command.
See |gina-misc-treeish| for the detail about {treeish}
*gina-buffer-+cmd*
When a buffer is opend by gina, [+cmd] specified to the command is recognized
and performed. See ":h +cmd" for the detail.
*gina-buffer-++opt*
When a buffer is opend by gina, [++opt] specified to the command is recognized
and respected. Users can use this feature to open a buffer with a particular
encoding or format like
>
:Gina show ++enc=sjis ++ff=mac HEAD:README.md
" --> Open README.md in HEAD with sjis/mac
<
See ":h ++opt" for more detail.
Note that automatical detection by 'fileencodings' or 'fileformats' are not
supported. Upvote https://github.com/lambdalisue/gina.vim/issues/24 if need.
-----------------------------------------------------------------------------
BLAME *gina-buffer-blame*
{scheme}: blame
'filetype': gina-blame
This is a "non file-like" buffer which is shown by |:Gina-blame| command.
It shows a content of the file with a blame navigator looks like (note that
SHA1 indicators are represented as a shade block but it is colored columns in
real world)
>
Navigation buffer Content buffer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
Add badges o... on yesterday ░ | ![...](...)
Add badges o... on yesterday ░ | ![...](...)
...
Initial commit on 14, Feb | FOOBAR HOGEHOGE
Some refactoring on today |█ | ![...](...)
│ │ ││
│ │ │└ SHA1 indicator column(s) (N chars)
│ │ └ Current revision mark
│ └ Timestamp (relative or absolute)
└ Commit summary
<
Continuous lines with a same revision (commit) is called a "chunk". Not like
a git raw blame command, gina does not show a revision of each chunks/lines.
Instead, gina uses SHA1 indicator column(s) to distinguish revisions.
SHA1 indicator column(s) is a colored column or combinations of colored
columns which indicate an unique revision in a blame content. The number of
columns used to indicate a single revision is determined from the total
numbers of revisions shown in a blame content. Namely, same colored column or
same colored columns combination indicate a same revision so that users can
easily distinguish which lines are continuous or which chunks are equal.
When a revision of a chunk is equal to a revision of a blame content, a
current revision mark (default is "|") is shown just next to the SHA1
indicator. In this case, "blame:open" action would open a related parent
commit if exists rather than the commit itself.
The navigation content is width dependent. When the window width of the
"gina-blame" buffer has changed, the content will be redrawn when
- Users hit <C-L> (<Plug>(gina-blame-C-L))
- Focus is moved from/to the buffer (|WinLeave| or |WinEnter|)
- Vim's window is resized (|VimResized|)
In this buffer, users can use the following action groups.
|gina-actions-blame| (shorten)
|gina-actions-browse|
|gina-actions-changes|
|gina-actions-compare|
|gina-actions-diff|
|gina-actions-ls|
|gina-actions-show|
|gina-actions-yank|
And the following <Plug> mappings additional to the <Plug> mappings comes from
actions above
<Plug>(gina-blame-redraw) Redraw content with the current width
<Plug>(gina-blame-C-L) Redraw content and <C-L> to refresh
And the following default keymappings
<Return> Open a blame with the selected chunk
<Backspace> Back to navigationally historical previous blame
<C-L> Redraw content and <C-L> to refresh
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#blame#use_default_aliases|
|g:gina#command#blame#use_default_mappings|
Additionally, users can customize the content via the following variables.
|g:gina#command#blame#formatter#format|
|g:gina#command#blame#formatter#separator|
|g:gina#command#blame#formatter#current_mark|
|g:gina#command#blame#formatter#timestamp_months|
|g:gina#command#blame#formatter#timestamp_format1|
|g:gina#command#blame#formatter#timestamp_format2|
>
The following is a recommended customization while gina does not show exact
SHA1 of the revision of the chunk.
>
" Echo chunk info with j/k
call gina#custom#mapping#nmap(
\ 'blame', 'j',
\ 'j<Plug>(gina-blame-echo)'
\)
call gina#custom#mapping#nmap(
\ 'blame', 'k',
\ 'k<Plug>(gina-blame-echo)'
\)
<
The above may influence the performance so it is not defined in default.
-----------------------------------------------------------------------------
BRANCH *gina-buffer-branch*
{scheme}: branch
'filetype': gina-branch
'autoread': 1
This is a "non file-like" buffer which is shown by |:Gina-branch| command.
In this buffer, users can use the following action groups.
|gina-actions-branch| (shorten)
|gina-actions-browse|
|gina-actions-changes|
|gina-actions-commit|
"commit:checkout" is aliased to "checkout"
"commit:checkout:track" is aliased to "checkout:track"
|gina-actions-ls|
|gina-actions-show|
|gina-actions-yank|
And the following default keymappings
<Return> Checkout a branch (detached head for remote)
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#branch#use_default_aliases|
|g:gina#command#branch#use_default_mappings|
Note that actions are defined as "markable" in this buffer.
See |gina-usage-action-mark| for the detail.
-----------------------------------------------------------------------------
CHANGES *gina-buffer-changes*
{scheme}: changes
'filetype': gina-changes
This is a "non file-like" buffer which is shown by |:Gina-changes| command.
In this buffer, users can use the following action groups.
|gina-actions-browse|
|gina-actions-compare|
|gina-actions-diff|
|gina-actions-edit| (shorten)
|gina-actions-show|
|gina-actions-yank|
And the following default keymappings are defined
<Return> Edit a file
dd Open a unified-diff
DD Open a unified-diff (vsplit)
cc Open two buffers to compare
CC Open two buffers to compare (tab)
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#changes#use_default_aliases|
|g:gina#command#changes#use_default_mappings|
-----------------------------------------------------------------------------
COMMIT *gina-buffer-commit*
{scheme}: commit
'filetype': gina-commit
This is a "non file-like" buffer which is shown by |:Gina-commit| command.
When users save a content with |:write| command, the content is cached.
To read from content and discard the current modification which has not cached
yet, use |:edit!|. Note that there are two content cache exist. One for commit
without "--amend" and another for commit with "--amend".
When users close the buffer with |:quit| command, users will be asked if they
want to commit the changes like
>
[gina] Do you want to commit changes? [Y(es)/n(o)]
<
"Y" is capital mean that if user hit <Return> without answering, that mean
"Yes". If user type "n" or "no" and hit <Return>, the commit is canceled.
Note that if users cache the content with |:w|, the cached message will be used
when users open a "gina-commit" buffer again.
When users close the buffer with |:wq| command, no confirmation prompt will
appear and the commit is immediately performed.
When users close the buffer with |:q!| command, no confirmation prompt will
appear and the commit is canceled.
Note that no actions are available on this buffer.
The following <Plug> mapping is available on this buffer
<Plug>(gina-commit-amend) Toggle "--amend" option
<Plug>(gina-diff-jump) Jump to a corresponding file with a
corresponding line number.
If jumps to the source file when the
cursor is on removed line (the line
starts from '-') or destination file
when the cursor is on non modified or
added line (the line starts from ' '
or '+').
Works only on diff content visibled
when '-v' or '--verbose' option is
specified.
And the following default keymapping is defined
! Switch --amend option
<Return> Jump to a corresponding file
Users can disable the default mappings by
|g:gina#command#commit#use_default_mappings|
-----------------------------------------------------------------------------
DIFF *gina-buffer-diff*
{scheme}: diff
'filetype': diff
This is a "file-like" buffer which is shown by |:Gina-diff| command.
The following <Plug> mapping is available on this buffer
<Plug>(gina-diff-jump) Jump to a corresponding file with a
corresponding line number.
If jumps to the source file when the
cursor is on removed line (the line
starts from '-') or destination file
when the cursor is on non modified or
added line (the line starts from ' '
or '+')
And the following default keymapping is defined
<Return> Jump to a corresponding file
Users can disable the default mappings by
|g:gina#command#diff#use_default_mappings|
Note that no actions are available on this buffer.
-----------------------------------------------------------------------------
GREP *gina-buffer-grep*
{scheme}: grep
'filetype': gina-grep
This is a "non file-like" buffer which is shown by |:Gina-grep| command.
The aliases of actions and default mappings are rely on {rev} part of the
buffer name (|gina-buffer-naming|).
In this buffer, users can use the following action groups.
|gina-actions-browse|
|gina-actions-compare|
|gina-actions-diff|
|gina-actions-edit| (shorten when {rev} is missing)
|gina-actions-export|
|gina-actions-ls|
|gina-actions-show| (shorten when {rev} exists)
|gina-actions-yank|
And the following default keymappings are defined
<Return> Edit/Show a file (depends on {rev})
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#qrep#use_default_aliases|
|g:gina#command#qrep#use_default_mappings|
Note that actions are defined as "markable" in this buffer.
See |gina-usage-action-mark| for the detail.
-----------------------------------------------------------------------------
LOG *gina-buffer-log*
{scheme}: log
'filetype': gina-log
This is a "non file-like" buffer which is shown by |:Gina-log| command.
In this buffer, users can use the following action groups.
|gina-actions-browse|
|gina-actions-changes|
|gina-actions-commit|
|gina-actions-compare|
|gina-actions-diff|
|gina-actions-edit|
|gina-actions-ls|
|gina-actions-show| (shorten)
|gina-actions-yank|
And the following default keymappings are defined
<Return> Show a commit or content
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#log#use_default_aliases|
|g:gina#command#log#use_default_mappings|
-----------------------------------------------------------------------------
LS *gina-buffer-ls*
{scheme}: ls
'filetype': gina-ls
This is a "non file-like" buffer which is shown by |:Gina-ls| command.
The aliases of actions and default mappings are rely on {rev} part of the
buffer name (|gina-buffer-naming|).
In this buffer, users can use the following action groups.
|gina-actions-browse|
|gina-actions-changes|
|gina-actions-compare|
|gina-actions-diff|
|gina-actions-edit| (shorten when {rev} is missing)
|gina-actions-show| (shorten when {rev} exists)
|gina-actions-yank|
And the following default keymappings are defined
<Return> Edit/Show a file (depends on {rev})
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#ls#use_default_aliases|
|g:gina#command#ls#use_default_mappings|
-----------------------------------------------------------------------------
REFLOG *gina-buffer-reflog*
{scheme}: reflog
'filetype': gina-reflog
This is a "non file-like" buffer which is shown by |:Gina-reflog| command.
In this buffer, users can use the following action groups.
|gina-actions-changes|
|gina-actions-commit|
|gina-actions-show| (shorten)
|gina-actions-yank|
And the following default keymappings are defined
<Return> Show a commit or content
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#reflog#use_default_aliases|
|g:gina#command#reflog#use_default_mappings|
-----------------------------------------------------------------------------
REBASE *gina-buffer-rebase*
{scheme}: NONE
'filetype': gitrebase
This is not a gina's buffer but when user use 'git rebase -i' and 'gitrebase'
buffer is opened. Gina provides the following mappings to help user.
<Return> Preview a commit
<C-a> Round up the command
<C-z> Round down the command
If you would like to use a bit different mappings, use the <Plug> mappings
<Plug>(gina-rebase-open)
<Plug>(gina-rebase-round-up)
<Plug>(gina-rebase-round-down)
Users can disable this feature by
|g:gina_gitrebase_support_mappings|
-----------------------------------------------------------------------------
SHOW *gina-buffer-show*
{scheme}: show
'filetype': git without {path}
This is a "file-like" buffer which is shown by |:Gina-show| command.
The following commands also opens this buffer to compare the content.
|:Gina-blame|
|:Gina-chaperon|
|:Gina-compare|
|:Gina-patch|
The following <Plug> mapping is available on this buffer when no {path} is
specified.
<Plug>(gina-diff-jump) Jump to a corresponding file with a
corresponding line number.
If jumps to the source file when the
cursor is on removed line (the line
starts from '-') or destination file
when the cursor is on non modified or
added line (the line starts from ' '
or '+')
And the following default keymapping is defined
<Return> Jump to a corresponding file
Users can disable the default mappings by
|g:gina#command#show#use_default_mappings|
Note that no actions are available on this buffer.
-----------------------------------------------------------------------------
STASH *gina-buffer-stash*
{scheme}: stash
'filetype': gina-stash
'autoread': 1
This is a "non file-like" buffer which is shown by |:Gina-stash| command.
In this buffer, users can use the following action groups.
|gina-actions-diff|
|gina-actions-stash| (shorten)
|gina-actions-yank|
And the following default keymappings are defined
<Return> Show changes on a stash
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#stash#use_default_aliases|
|g:gina#command#stash#use_default_mappings|
Note that actions are defined as "markable" in this buffer.
See |gina-usage-action-mark| for the detail.
-----------------------------------------------------------------------------
STASH SHOW *gina-buffer-stash-show*
{scheme}: stash
'filetype': gina-stash-show
This is a "non file-like" buffer which is shown by |:Gina-stash| command.
In this buffer, users can use the following action groups.
|gina-actions-compare|
|gina-actions-diff|
|gina-actions-edit|
|gina-actions-show| (shorten)
|gina-actions-yank|
And the following default keymappings are defined
<Return> Show a content in a stash
dd Show an unified-diff in a stash
DD Show an unified-diff in a stash (vsplit)
cc Compare a content in a stash
CC Compare a content in a stash (tab)
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#stash#show#use_default_aliases|
|g:gina#command#stash#show#use_default_mappings|
-----------------------------------------------------------------------------
STATUS *gina-buffer-status*
{scheme}: status
'filetype': gina-status
'autoread': 1
This is a "non file-like" buffer which is shown by |:Gina-status| command.
In this buffer, users can use the following action groups.
|gina-actions-browse|
|gina-actions-chaperon|
|gina-actions-compare|
|gina-actions-diff|
|gina-actions-edit| (shorten)
|gina-actions-export|
|gina-actions-index| (shorten)
|gina-actions-patch|
|gina-actions-show|
|gina-actions-yank|
And the following default keymappings are defined
<Return> Edit a file
dd Open a unified-diff
DD Open a unified-diff (vsplit)
cc Open two buffers to compare
CC Open two buffers to compare (tab)
pp Open three buffers to patch
PP Open three buffers to patch (tab)
!! Open three buffers to solve conflict
<< Stage changes
>> Unstage changes
-- Toggle stage/unstage
== Discard local changes
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#status#use_default_aliases|
|g:gina#command#status#use_default_mappings|
Note that actions are defined as "markable" in this buffer.
See |gina-usage-action-mark| for the detail.
-----------------------------------------------------------------------------
TAG *gina-buffer-tag*
{scheme}: tag
'filetype': gina-tag
'autoread': 1
This is a "non file-like" buffer which is shown by |:Gina-tag| command.
In this buffer, users can use the following action groups.
|gina-actions-browse|
|gina-actions-changes|
|gina-actions-commit|
"commit:checkout" is aliased to "checkout"
"commit:checkout:track" is aliased to "checkout:track"
|gina-actions-ls|
|gina-actions-show| (shorten)
|gina-actions-tag| (shorten)
|gina-actions-yank|
And the following default keymappings are defined
<Return> Show a commit or content
Users can disable the default aliases (shorten) and/or mappings by
|g:gina#command#tag#use_default_aliases|
|g:gina#command#tag#use_default_mappings|
Note that actions are defined as "markable" in this buffer.
See |gina-usage-action-mark| for the detail.
=============================================================================
INTERFACE *gina-interface*
-----------------------------------------------------------------------------
COMMANDS *gina-commands*
Note that commands which opens a buffer understand <mods>, mean that users
can control the directions like
>
:topleft Gina show --opener=vsplit
<
Additionally [+cmd] and [++opt] are supported. See |gina-buffer-+cmd| and
|gina-buffer-++opt| for detail.
*:Gina*
:Gina {command} [{options}]
Call a gina command of {command} or a git raw {command}.
It calls a gina command of {command} when {command} is found under
the namespace "gina#command#".
Otherwise it fallbacks to |:Gina!| to call a git raw command.
*:Gina!*
:Gina! {command} [{options}]
Call a git raw {command} asynchronously.
It calls a raw {command} ("git {command} {options}") and echo the
result.
*:Gina!!*
:Gina!! {command} [{options}]
Call a git raw {command} under the shell.
It uses |:!| or |:terminal| to call a git raw {command} to allow git's
interactive features such as "git add -p" or "git rebase -i".
Note that Vim users may need to hit <C-J> instead of <CR> to send
a newline to the shell.
*:Gina-blame*
:Gina blame [+cmd] [++opt] [{options}] [--root] [-L{range}...] [--reverse]
[-M{num}] [-C{num}] [--since={date}] [{treeish}]
Open a "gina-blame" buffer to blame changes of the content.
If {treeish} is missing, ':' is used as a default treeish.
If {path} part of the {treeish} is omitted, it warns and fails.
The followings are allowed in {options}.
--group1={group}
A window group name used for the 1st buffer
(|gina-options-group|)
--group2={group}
A window group name used for the 2nd buffer
(|gina-options-group|)
--opener={opener}
An opener command for the 1st buffer (|gina-options-opener|)
--line={line}
An initial line number
--width={width}
Width used for the navigation buffer
--format={format}
Format string used to construct navi line.
(|g:gina#command#blame#formatter#format|)
See also~
|gina-buffer-blame|
:!man git-blame
*:Gina-branch*
:Gina branch [+cmd] [++opt] [{options}] [-r | -a] [--list]
[-v | -vv | --verbose]
[(--merged | --no-merged | --contains)={commit}]
[--sort={key}] [--points-at={object}] [{pattern}...]
:Gina branch [--set-upstream | --track | --no-track] [-l] [-f] {branchname}
[{start-point}]
:Gina branch (--set-upstream-to={upstream} | -u{upstream}) [{branchname}]
:Gina branch --unset-upstream [{branchname}]
:Gina branch (--move | -m | -M) [-f] [{oldbranch}] {newbranch}
:Gina branch (--delete | -d | -D) [-r] [-f] {branchname}...
Open a "gina-branch" buffer to list and manipulate branches or perform
a raw "git branch" command.
The followings are allowed in {options}.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
Note that "--edit-description" is not supported. If you need the
feature, create a feature request issue on the GitHub.
See also~
|gina-buffer-branch|
:!man git-branch
*:Gina-browse*
:Gina browse [{options}] [{treeish}]
Show a remote content of {treeish} of a connected remote in a system
browser (e.g. Firefox, Google Chrome, etc).
If {treeish} is missing, {rev} part of the {treeish} is guessed from a
current buffer and {path} part will be omitted. Use ":" instead if you
would like to guess {path} part as well (|gina-misc-treeish|).
The followings are allowed in {options}.
--scheme={scheme}
Use a specified scheme to build a remote url.
Currently "_", "root", "blame", or "compare" is available on
github.com or bitbucket.org
--exact
Use an exact revision instead of a branch name
--yank
Yank a url instead of opening
This command currently supports github.com and bitbucket.org.
Users can add rules for other web-service by adding entries to
|g:gina#command#browse#translation_patterns|.
*:Gina-cd*
:Gina cd [{path}]
Change a current directory to the {path} or the repository root by
|:cd| command.
See also~
|:Gina-lcd|
*:Gina-changes*
:Gina changes [+cmd] [++opt] [{options}] [{rev}] [-- {pathspec}...]
Open a "gina-changes" buffer to list changes per file for {rev} or the
index.
If {rev} is missing, it is guessed from the current buffer. Use ":0"
to force the index (|gina-misc-treeish|).
The followings are allowed in {options}.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
It uses "git diff --numstat" internally so see "man git-diff" for
other available {options}.
See also~
|gina-buffer-changes|
:!man git-diff
*:Gina-chaperon*
:Gina chaperon [+cmd] [++opt] [{options}] [{path}]
Open 3-way diff to solve conflict.
If {path} is missing, it is guessed from the current buffer.
The followings are allowed in {options}.
--group1={group}
A window group name used for the 1st buffer
(|gina-options-group|)
--group2={group}
A window group name used for the 2nd buffer
(|gina-options-group|)
--group3={group}
A window group name used for the 3rd buffer
(|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
--line={line}
An initial line number
--col={col}
An initial column number
It opens the follwoing buffers by |:Gina-edit| and |:Gina-show| command.
REMOTE: gina://{refname}:show/:3:{path}
WORKTREE: {path}
LOCAL: gina://{refname}:show/:2:{path}
Users can use |:diffput| and |:diffget| to copy diff content.
Additionally, gina defines the following additional mappings.
REMOTE/LOCAL
<Plug>(gina-diffput) Put a diff chunk to WORKTREE buffer.
Assigned to "dp" in default.
WORKTREE
<Plug>(gina-diffget-l) Get a diff chunk from LOCAL buffer.
Assigned to "dol" in default.
<Plug>(gina-diffget-r) Get a diff chunk from REMOTE buffer.
Assigned to "dor" in default.
See also~
|:Gina-patch|
*:Gina-commit*
:Gina commit [+cmd] [++opt] [{options}] [-a] [-s] [-v] [-u{mode}]
[--amend] [(-c | -C | --fixup= | --squash=){commit}]
[--reset-author] [--allow-empty] [--allow-empty-message]
[--no-verify] [-e] [--author={author}]
[--date={date}] [--cleanup={mode}] [--[no-]status] [-i | -o]
[-S{keyid}] [--] [{file}...]
:Gina commit (-p | --interactive) [-s] [-v] [-u{mode}]
[--amend] [(-c | -C | --fixup= | --squash=){commit}]
[--reset-author] [--allow-empty] [--allow-empty-message]
[--no-verify] [-e] [--author={author}]
[--date={date}] [--cleanup={mode}] [--[no-]status] [-i | -o]
[-S{keyid}] [--] [{file}...]
:Gina commit (-F{file} | -m{msg}) [-a] [-s] [-v] [-u{mode}]
[--amend] [(-c | -C | --fixup= | --squash=){commit}]
[--reset-author] [--allow-empty] [--allow-empty-message]
[--no-verify] [-e] [--author={author}]
[--date={date}] [--cleanup={mode}] [--[no-]status] [-i | -o]
[-S{keyid}] [--] [{file}...]
Open a "gina-commit" buffer to commit changes or perform a raw
"git commit" command.
Users can write a commit message on this buffer and the actual commit
will be performed when user close the buffer with |:q| or |:wq|.
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
--restore
Restore the previous buffer after closing the commit buffer
with |:q| or |:wq|.
See also~
|gina-buffer-commit|
|:Gina-status|
*:Gina-compare*
:Gina compare [+cmd] [++opt] [{options}] [{treeish}]
Open two buffers to compare the content of {path} between 1) working
tree vs index or {rev}, 2) index vs HEAD or {rev}.
If {treeish} is missing, ':' is used as a default treeish.
If {path} part of the {treeish} is omitted, it warns and fails.
The followings are allowed in {options}
--group1={group}
A window group name used for the 1st buffer
(|gina-options-group|)
--group2={group}
A window group name used for the 2nd buffer
(|gina-options-group|)
--opener={opener}
An opener command for the 1st buffer (|gina-options-opener|)
--line={line}
An initial line number
--col={col}
An initial column number
--cached
Compare to the index rather than the working tree
-R
Reverse the buffer order.
It respects 'diffopt' when opening the 2nd buffer. Add "vertical" to
the option if you prefer to open the 2nd buffer vertically.
See also~
|gina-buffer-compare|
|:Gina-diff|
*:Gina-diff*
:Gina diff [+cmd] [++opt] [{options}] [{treeish}]
Show an unified diff of {path} or the repository between 1) working
tree vs index or {rev}, 2) index vs HEAD or {rev}.
If {treeish} is missing, {rev} part of the {treeish} is guessed from a
current buffer and {path} part will be omitted. Use ":" instead if you
would like to guess {path} part as well (|gina-misc-treeish|).
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
See also~
|gina-buffer-diff|
|:Gina-compare|
:!man git-diff
*:Gina-edit*
:Gina edit [+cmd] [++opt] [{options}] [{path}]
Open a content of the {path} in the working tree.
If {path} is missing, it is guessed from the current buffer.
The followings are allowed in {options}
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
--line={line}
An initial line number
--col={col}
An initial column number
See also~
|:Gina-diff|
|:Gina-show|
*:Gina-grep*
:Gina grep [+cmd] [++opt] [{options}] [{pattern}] [{rev}] [-- {pathspec}...]
Open a "gina-grep" buffer to show files which contains the specified
patterns.
If {rev} is missing, it is guessed from the current buffer. Use ":0"
to force the index (|gina-misc-treeish|).
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
See also~
|gina-buffer-grep|
|:Gina-qrep|
*:Gina-lcd*
:Gina lcd [{path}]
Change a current directory to the {path} or the repository root by
|:lcd| command.
See also~
|:Gina-cd|
*:Gina-log*
:Gina log [+cmd] [++opt] [{options}] [{treeish}] [-- {pathspec}...]
Open a "gina-log" buffer to show commits of the {treeish} or the
repository.
If {path} part of the {treeish} is missing, it shows a log of the
repository.
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
See also~
|gina-buffer-log|
:!man git-log
*:Gina-ls*
:Gina ls [+cmd] [++opt] [{options}] [{rev}] [-- {pathspec}...]
List files in the working tree, the index, or the commit.
If {rev} is missing, it is guessed from the current buffer. Use ":0"
to force the index (|gina-misc-treeish|).
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
Note that if {rev} is specified, it use "git ls-tree" internally.
Otherwise it use "git ls-files" internally.
See also~
|gina-buffer-ls|
:!man git-ls-files
:!man git-ls-tree
*:Gina-patch*
:Gina patch [+cmd] [++opt] [{options}] [{path}]
Open three buffers to patch changes of {path} to the index.
If {path} is missing, it is guessed from the current buffer.
The followings are allowed in {options}
--oneside
Open two buffers (INDEX and WORKTREE) instead
--group1={group}
A window group name used for the 1st buffer
(|gina-options-group|)
--group2={group}
A window group name used for the 2nd buffer
(|gina-options-group|)
--group3={group}
A window group name used for the 3rd buffer
(|gina-options-group|)
--opener={opener}
An opener command for the 1st buffer (|gina-options-opener|)
--line={line}
An initial line number
--col={col}
An initial column number
It respects 'diffopt' when opening the 2nd, 3rd buffer. Add "vertical"
to the option if you prefer to open the 2nd, 3rd buffer vertically.
It opens the follwoing buffers by |:Gina-edit| and |:Gina-show| command.
HEAD: gina://{refname}:show/HEAD:{path}
INDEX: gina://{refname}:show/:{path}
WORKTREE: {path}
Users can use |:diffput| and |:diffget| to copy diff content.
Additionally, gina defines the following additional mappings.
HEAD/WORKTREE
<Plug>(gina-diffput) Put a diff chunk to INDEX buffer.
Assigned to "dp" in default.
WORKTREE
<Plug>(gina-diffget) Get a diff chunk from INDEX buffer.
Assigned to "do" in default.
INDEX
<Plug>(gina-diffget-l) Get a diff chunk from HEAD buffer.
Assigned to "dol" in default.
<Plug>(gina-diffget-r) Get a diff chunk from WORKTREE buffer.
Assigned to "dor" in default.
See also~
|:Gina-chaperon|
*:Gina-qrep*
:Gina qrep[!] [{options}] [--{pathspec}...]
Like |:Gina-grep| but it uses |quickfix| window to show the result.
It tries to mimic a Vim's builtin |:grep| command. So
1. Use |:silent| if you would like to suppress the message
2. Use a bang (!) if you don't want to focus the first candidate
3. Use |QuickFixCmdPre| if you need some prior operation
4. Use |QuickFixCmdPost| if you need some posterior operation (such as
an opening |quickfix| window)
The followings are allowed in {options}
--action={action}
An action which is specified to |setqflist()|.
See also~
:!man git-grep
*:Gina-reflog*
:Gina reflog [+cmd] [++opt] [{options}]
Open a "gina-reflog" buffer to see reflog of the repository.
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
See also~
|gina-buffer-reflog|
:!man git-reflog
*:Gina-show*
:Gina show [+cmd] [++opt] [{options}] [{treeish}] [-- {pathspec}...]
Show a commit of {rev} or content of {path} in {rev}.
If {treeish} is missing, {rev} part of the {treeish} is guessed from a
current buffer and {path} part will be omitted. Use ":" instead if you
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
--line={line}
An initial line number if {path} is not omitted.
--col={col}
An initial column number if {path} is not omitted.
See also~
|gina-buffer-show|
:!man git-show
*:Gina-stash*
:Gina stash [+cmd] [++opt] [{options}]
:Gina stash [+cmd] [++opt] list [{options}]
:Gina stash [+cmd] [++opt] show [{options}]
Execute a git raw command or open a "gina-stash" buffer to list
stashes or open a "gina-stash-show" buffer to show changes.
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
See also~
|gina-buffer-stash|
|gina-buffer-stash-show|
:!man git-status
*:Gina-status*
:Gina status [+cmd] [++opt] [{options}] [-- {pathspec}...]
Open a "gina-status" buffer to show status of the repository.
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
See also~
|gina-buffer-status|
:!man git-status
*:Gina-tag*
:Gina tag [+cmd] [++opt] [{options}]
Open a "gina-tag" buffer to list tags.
The followings are allowed in {options} additional to options for
a corresponding git command.
--group={group}
A window group name used for the buffer (|gina-options-group|)
--opener={opener}
An opener command for the new buffer (|gina-options-opener|)
--restore
Restore the previous buffer after closing the tag message
edit buffer with |:q| or |:wq|.
Note that it open a tag message edit buffer when "-a/--annotate",
"-s/--sign", or "-u{keyid}/--local-user={keyid}" has specified and
actual tag creation will be performed when the buffer has closed like
"gina-commit" buffer.
Note that it execute a raw git command when "-d/--delete",
"-v/--verify", or a positional argument without "-l/--list" has
specified.
See also~
|gina-buffer-tag|
:!man git-tag
-----------------------------------------------------------------------------
FUNCTIONS *gina-functions*
*gina#action#call()*
gina#action#call({expr} [, {fline} [, {lline}]])
gina#action#call({expr}, {candidates})
Call an action which is determined from {expr}.
If {expr} contains <mods>, the action will be called with the
specified command modifiers.
If {expr} ends with an action alias, an aliased action will be called.
Without extra arguments, the action will be called with
1. A candidate of the current line
2. Marked candidates if the action is defined to use marks
If {fline} is specified, a candidate at {fline} is used.
If {fline} and {lline} are specified, candidates between {fline} and
{lline} are used.
If {candidates} list is specified, the specified candidates will be
used.
Note that the API with {fline}, {lline}, and {candidates} has not
settled yet so users should not use it without understanding.
*gina#custom#action#alias()*
gina#custom#action#alias({scheme}, {alias}, {name})
Add an {alias} of {name} action on {scheme} buffers.
Users can access the action with the {alias} in "builtin:choice".
Note that this alias will not affect to a mappin name.
Note that "/{pattern}" for {scheme} is used to apply the function for
buffers which matches with {pattern}.
See also~
|gina-custom-action|
*gina#custom#action#shorten()*
gina#custom#action#shorten({scheme}, {action_scheme} [, {excludes}])
Automatically add shorten aliases of actions in {action_scheme} on
{scheme} buffers.
Note that "/{pattern}" for {scheme} is used to apply the function for
buffers which matches with {pattern}.
See also~
|gina-custom-action-shorten|
*gina#custom#command#alias()*
gina#custom#command#alias({scheme}, {alias} [, {raw}])
Define a command alias of {scheme} to {alias}.
If {raw} is specified, it alias to a git raw command instead of a
gina's command.
Note that "/{pattern}" for {scheme} is not allowed in this function.
See also~
|gina-custom-command-alias|
*gina#custom#command#option()*
gina#custom#command#option({scheme}, {option} [, {value}])
Define a default command {option} for a {scheme} command.
If {value} is omitted, 1 is used instead.
The function automatically add a option remover "--no-{option}" when
the {value} is 1. So that user can disable the default option by using
that remover option.
Note that the default options are applied based on the alias, namely
the default options for "status" and "st" (assume this is an alias
of "status") are different.
Note that "/{pattern}" for {scheme} is used to apply the function for
commands which matches with {pattern}.
See also~
|gina-custom-command|
|gina-custom-command-alias|
*gina#component#repo#preset()*
gina#component#repo#preset([{kind}])
Return a cached repository information which includes a repository
name, a current branch name, and a tracking branch name.
>
" With a tracking branch
echo gina#component#repo#preset()
" -> 'gina.vim [master -> origin/master]'
echo gina#component#repo#preset('fancy')
" -> 'gina.vim [master → origin/master]'
" Without a tracking branch
echo gina#component#repo#preset()
" -> 'gina.vim [master]'
echo gina#component#repo#preset('fancy')
" -> 'gina.vim [master]'
<
It uses the following raw component functions internally.
|gina#component#repo#name()|
|gina#component#repo#branch()|
|gina#component#repo#track()|
*gina#component#repo#name()*
gina#component#repo#name()
Return a name of the current repository, namely it is a directory name
of the repository.
*gina#component#repo#branch()*
gina#component#repo#branch()
Return a cached name of the current branch.
*gina#component#repo#track()*
gina#component#repo#track()
Return a cached name of the tracking branch of the current branch.
*gina#component#status#preset()*
gina#component#status#preset([{kind}])
Return a cached repository status which includes a number of the
staged, unstaged, and conflicted files.
>
echo gina#component#status#preset()
" -> '<2 >4 x3'
echo gina#component#status#preset('fancy')
" -> '«2 »4 ×3'
<
It uses the following raw component functions internally.
|gina#component#status#staged()|
|gina#component#status#unstaged()|
|gina#component#status#conflicted()|
*gina#component#status#staged()*
gina#component#status#staged()
Return a cached number of staged files.
*gina#component#status#unstaged()*
gina#component#status#unstaged()
Return a cached number of unstaged files.
*gina#component#status#conflicted()*
gina#component#status#conflicted()
Return a cached number of conflicted files.
*gina#component#traffic#preset()*
gina#component#traffic#preset([{kind}])
Return a cached traffic information between a current branch and a
current tracking branch.
>
echo gina#component#traffic#preset()
" -> '^2 v4'
echo gina#component#traffic#preset('fancy')
" -> '↑2 ↓4'
<
It uses the following raw component functions internally.
|gina#component#traffic#ahead()|
|gina#component#traffic#behind()|
*gina#component#traffic#ahead()*
gina#component#traffic#ahead()
Return a cached number of commits ahead of the current tracking
branch.
*gina#component#traffic#behind()*
gina#component#traffic#behind()
Return a cached number of commits behind of the current tracking
branch.
*gina#custom#mapping#map()*
*gina#custom#mapping#nmap()*
*gina#custom#mapping#vmap()*
*gina#custom#mapping#imap()*
gina#custom#mapping#map({scheme}, {lhs}, {rhs} [, {options}])
gina#custom#mapping#nmap({scheme}, {lhs}, {rhs} [, {options}])
gina#custom#mapping#vmap({scheme}, {lhs}, {rhs} [, {options}])
gina#custom#mapping#imap({scheme}, {lhs}, {rhs} [, {options}])
Define {lhs} to {rhs} mapping on {scheme} buffers.
The {options} may contains the following attributes
"mode" A single character for a prefix of a |:map| command
This is overwritten when nmap, vmap, or imap version
of the function has used.
Default is ""
"noremap" Use |:noremap| instead of |:map|.
Default is 0
"buffer" Add <buffer> to the command
Default is 1
"nowait" Add <nowait> to the command
Default is 0
"silent" Add <silent> to the command
Default is 0
"special" Add <special> to the command
Default is 0
"script" Add <script> to the command
Default is 0
"unique" Add <unique> to the command
Default is 0
"expr" Add <expr> to the command
Default is 0
Note that "/{pattern}" for {scheme} is used to apply the function for
buffers which matches with {pattern}.
See also~
|gina-custom-mapping|
-----------------------------------------------------------------------------
VARIABLES *gina-variables*
*g:gina_gitrebase_support_mappings*
g:gina_gitrebase_support_mappings
Add several mappings to 'gitrebase' buffer showed by 'git rebase -i'
command.
Default: 1
See also |gina-buffer-rebase|
*g:gina#action#index#discard_directories*
g:gina#action#index#discard_directories
A safe-net for index:discard action.
If the value is not 1, gina ignore any directory candidates.
Default: 0
*g:gina#action#mark_sign_text*
g:gina#action#mark_sign_text
One or two characters used for a mark |sign|.
See |gina-usage-action-mark| for what the mark is.
Default: "|"
*g:gina#command#blame#use_default_aliases*
*g:gina#command#branch#use_default_aliases*
*g:gina#command#changes#use_default_aliases*
*g:gina#command#grep#use_default_aliases*
*g:gina#command#log#use_default_aliases*
*g:gina#command#ls#use_default_aliases*
*g:gina#command#reflog#use_default_aliases*
*g:gina#command#show#use_default_aliases*
*g:gina#command#stash#use_default_aliases*
*g:gina#command#stash#show#use_default_aliases*
*g:gina#command#status#use_default_aliases*
*g:gina#command#tag#use_default_aliases*
g:gina#command#{scheme}#use_default_aliases
Define a default action aliases in a corresponding buffer.
Assign 0 if you would like to disable the default action aliases.
Default: 1
*g:gina#command#blame#use_default_mappings*
*g:gina#command#branch#use_default_mappings*
*g:gina#command#changes#use_default_mappings*
*g:gina#command#chaperon#use_default_mappings*
*g:gina#command#commit#use_default_mappings*
*g:gina#command#grep#use_default_mappings*
*g:gina#command#log#use_default_mappings*
*g:gina#command#ls#use_default_mappings*
*g:gina#command#patch#use_default_mappings*
*g:gina#command#reflog#use_default_mappings*
*g:gina#command#stash#use_default_mappings*
*g:gina#command#stash#show#use_default_mappings*
*g:gina#command#status#use_default_mappings*
*g:gina#command#tag#use_default_mappings*
g:gina#command#{scheme}#use_default_mappings
Define a default mappings in a corresponding buffer.
Assign 0 if you would like to disable the default mappings.
Default: 1
*g:gina#command#blame#formatter#format*
g:gina#command#blame#formatter#format
A format string used to construct individual lines of a blame navi
buffer. The following format strings are replaced by a rule which
explained in |gina-misc-string-format|.
"su" A commit summary (a first line of the commit message)
"au" An author name of the commit
"ma" A current commit indication mark
"in" A commit SHA indicator
"ti" A timestamp string
Additionally, the format is splitted by "%=" like |statusline|.
Default: "%su%=on %ti %ma%in"
*g:gina#command#blame#formatter#separator*
g:gina#command#blame#formatter#separator
A separator text used to indicate that the content is squashed.
Default: "..."
*g:gina#command#blame#formatter#current_mark*
g:gina#command#blame#formatter#current_mark
A current mark text used to indicate that the revision of the chunk is
equal to the revision of the blame content.
Default: "|"
*g:gina#command#blame#formatter#timestamp_months*
g:gina#command#blame#formatter#timestamp_months
Threshold number of months to use human friendly timestamp.
Default: 3
*g:gina#command#blame#formatter#timestamp_format1*
g:gina#command#blame#formatter#timestamp_format1
A |strftime()| format used for an absolute timestamp which year is
equal to the year of the current time.
Default: "%d %b"
*g:gina#command#blame#formatter#timestamp_format2*
g:gina#command#blame#formatter#timestamp_format2
A |strftime()| format used for an absolute timestamp which year is
NOT equal to the year of the current time.
Default: "%d %b, %Y"
*g:gina#command#blame#timestamper#format1*
g:gina#command#blame#timestamper#format1
Removed. Use |gina#command#blame#formatter#timestamp_format1|.
*g:gina#command#blame#timestamper#format2*
g:gina#command#blame#timestamper#format2
Removed. Use |gina#command#blame#formatter#timestamp_format2|.
*g:gina#command#browse#translation_patterns*
g:gina#command#browse#translation_patterns
A translation pattern used to build a correspondidng URL in
|:Gina-browse| command.
An item of the dictionary is a |List|, which have an acceptable url
pattern |List| and a url translation scheme |Dictionary|.
The acceptable url pattern list contains |String| items which indicate
a url pattern in regular expression. "%domain" in the pattern will be
replaced into a key value of the dictionary for convinience.
Users can specify a particular scheme defined in the url translation
scheme dictionary with "--scheme" option, mean the following command
open a git blame page in github.com while a url translation scheme
dictionary of github.com has "blame" entry.
>
:Gina browse --scheme=blame
<
In the url translation scheme dictionary, the following format strings
are replaced by a rule which explained in |gina-misc-string-format|.
"pt" A relative file path from a top of git working tree
"ls" A start line number of the selection
"le" A end line number of the selection
"c0" A commit specified
"c1" A lhs commit for diff
"c2" A rhs commit for diff
"h0" A sha1 hash of c0
"h1" A sha1 hash of c1
"h2" A sha1 hash of c2
"r0" A commit or sha1 hash depends on "--exact"
"r1" Same as r0 but for c1/h1
"r2" Same as r0 but for c2/h2
Example: Add a pattern for GitLab
>
" %domain in the acceptable url pattern list will be substituted into
" 'gitlab.hashnote.net'
" '_' of a url translation scheme dictionary is used as a default
" scheme
" '^' of a url translation scheme dictionary is used as a repository
" scheme
call extend(g:gina#command#browse#translation_patterns, {
\ 'gitlab.hashnote.net': [
\ [
\ '\vhttps?://(%domain)/(.{-})/(.{-})%(\.git)?$',
\ '\vgit://(%domain)/(.{-})/(.{-})%(\.git)?$',
\ '\vgit\@(%domain):(.{-})/(.{-})%(\.git)?$',
\ '\vssh://git\@(%domain)/(.{-})/(.{-})%(\.git)?$',
\ ], {
\ 'root': 'https://\1/\2/\3/tree/%r1/',
\ '_': 'https://\1/\2/\3/blob/%r1/%pt%{#L|}ls%{-}le',
\ 'exact': 'https://\1/\2/\3/blob/%h1/%pt%{#L|}ls%{-}le',
\ },
\ ],
\})
<
*g:gina#component#repo#commit_length*
g:gina#component#repo#commit_length
A length of commit returned by |gina#component#repo#branch()|.
If the length is less than 1, full-length will be used.
Default: 0
*g:gina#process#command*
g:gina#process#command
A command string used to execute a git process.
Note: Users should not change the value unless you know what.
Default: "git --no-pager -c core.editori=false"
*g:gina#process#updatetime*
g:gina#process#updatetime
A updatetime in millisecond used for synchronous feature.
Note: Users should not change the value unless you know what.
Default: 100
*g:gina#core#askpass#askpass_program*
g:gina#core#askpass#askpass_program
A askpass program used in a git process.
See |gina-misc-askpass| for detail about "askpass".
Default: ""
*g:gina#core#askpass#force_internal*
g:gina#core#askpass#force_internal
Force to use an internal script instead for "askpass".
See |gina-misc-askpass| for detail about "askpass".
Default: 0
*g:gina#core#console#enable_message_history*
g:gina#core#console#enable_message_history
Save command messages in |message-history|.
Default: 0
*g:gina#core#emitter#modified_delay*
g:gina#core#emitter#modified_delay
A delay in millisecon until "modified" event is emitted by
"modified:delay" event.
Note: Users should not change the value unless you know what.
Default: 10
*g:gina#core#spinner#frames*
g:gina#core#spinner#frames
A |List| of characters used for spinner animation.
Default:
['-', '\', '|', '/'] (LANG=C)
['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷'] (Other)
*g:gina#core#spinner#message*
g:gina#core#spinner#message
A |String| message used in spinner.
Default: 'Loading ...'
*g:gina#core#spinner#delaytime*
g:gina#core#spinner#delaytime
A delay-time in milliseconds. An actual spinner animation in a
'statusline' will be shown after this delay.
Note that negative value will disable the spinner animation
completely.
Default: 500
*g:gina#core#spinner#updatetime*
g:gina#core#spinner#updatetime
A update-time in milliseconds. A spinner animation will be updated
every this update-time.
Default: 100
*g:gina#core#writer#updatetime*
g:gina#core#writer#updatetime
A updatetime in millisecond used for a Vim.BufferWriter.
Users may need to increase this value for a large repository.
Default: 10
-----------------------------------------------------------------------------
HIGHLIGHTS *gina-highlights*
*hl-GinaActionMarkSelected*
GinaActionMarkSelected
A highlight used for a mark sign text.
See |gina-usage-action-mark| for what the mark is.
-----------------------------------------------------------------------------
OPTIONS *gina-options*
*gina-options-group*
--group={group}
Specify a window group name for a new buffer. If there is a buffer
which has same window group name exist, the new buffer will be opened
in the window instead of a new window. For example
>
:Gina status --group=foo --opener=vsplit
" --> Open a new window with 'gina-status' window
:Gina branch --opener=vsplit
" --> Open a new window with 'gina-branch'
:Gina log --group=foo --opener=vsplit
" --> A 'gina-log' buffer is opened in a window which
" had 'gina-status'
<
*gina-options-opener*
--opener={opener}
Specify an opener command for a new buffer. For example
>
:Gina status --opener=vsplit
" --> Open a new window vertically split
:Gina branch --opener="botright split"
" --> Open a new window at the bottom
<
See |opening-window| for available values.
-----------------------------------------------------------------------------
ACTIONS *gina-actions*
See also~
|gina-usage-action|
*gina-actions-builtin*
builtin:echo (hidden)
Echo candidates
builtin:help (unrepeatable)
builtin:help:all (hidden/unrepeatable)
Show a help of actions
When ":all" has specified, all available actions including hidden
actions are shown.
builtin:choice (hiddden/unrepeatable)
Select an action to perform.
builtin:repeat (hidden)
Repeat a previous repeatable action which was executed from
"builtin:choice" action.
builtin:mark (hidden)
Mark/Unmark selected candidates.
Only available when the action binder has defined with "markable"
builtin:mark:set (hidden)
Mark selected candidates.
Only available when the action binder has defined with "markable"
builtin:mark:unset (hidden)
Unmark selected candidates.
Only available when the action binder has defined with "markable"
builtin:mark:unall (hidden)
Unmark all candidates.
Only available when the action binder has defined with "markable"
*gina-actions-blame*
blame:echo
Echo a chunk info.
blame:open
Blame a content on a commit of a chunk.
It opens a blame with a related parent (previous) commit if the
revision of the chunk and the revision of the blame is equal and a
related parent commit exist.
Note that this action is recorded in an internal blame history used
for "blame:back" action.
blame:back
Back to a navigational previous blame recorded by "blame:open" action.
*gina-actions-branch*
branch:refresh
Refresh remote branches.
Internally, it calls "git remote update --prune".
branch:new
Create a new branch.
branch:move
branch:move:force (hidden)
Rename a branch.
branch:delete
branch:delete:force (hidden)
Delete a branch.
branch:set-upstream-to
Set an upstream of a branch.
branch:unset-upstream
Unset an upstream of a branch.
*gina-actions-browse*
browse
browse:exact (hidden)
Open a remote url in a system browser.
browse:yank
browse:yank:exact (hidden)
Copy a remote url.
*gina-actions-changes*
changes:of
changes:of:split/vsplit/tab/preview (hidden)
changes:of:above/below/left/right (alias)
changes:of:top/bottom/leftest/rightest (alias)
Show changes of the commit.
changes:between
changes:between:split/vsplit/tab/preview (hidden)
changes:between:above/below/left/right (alias)
changes:between:top/bottom/leftest/rightest (alias)
Show changes between the commit and HEAD.
changes:from
changes:from:split/vsplit/tab/preview (hidden)
changes:from:above/below/left/right (alias)
changes:from:top/bottom/leftest/rightest (alias)
Show changes from a common ancestor of the commit and HEAD.
*gina-actions-chaperon*
chaperon
chaperon:split/vsplit/tab (hidden)
chaperon:above/below/left/right (alias)
chaperon:top/bottom/leftest/rightest (alias)
Open three buffers to solve conflict.
*gina-actions-commit*
commit:checkout
Checkout a commit.
commit:checkout:track (hidden)
Checkout a commit with a tracking branch.
commit:reset
commit:reset:soft/hard/merge/keep (hidden)
Reset a HEAD to a commit.
commit:merge
commit:merge:ff-only/no-ff/squash (hidden)
Merge a commit into a HEAD.
commit:rebase
Rebase a HEAD from the commit.
commit:rebase:merge (hidden)
Rebase a HEAD by merging the commit.
commit:revert
commit:revert:1/2 (hidden)
Revert a commit.
commit:cherry-pick
commit:cherry-pick:1/2 (hidden)
Apply changes of a commit.
commit:tag (alias)
Aliased to "commit:tag:annotate" in default.
Users can overrule it by |gina#custom#action#alias()|.
commit:tag:lightweight
Create a lightweight tag of a commit.
commit:tag:annotate
Create an unsigned, annotated tag of a commit.
commit:tag:sign
Create a GPG-signed tag of a commit.
*gina-actions-compare*
compare
compare:split/vsplit/tab (hidden)
compare:above/below/left/right (alias)
compare:top/bottom/leftest/rightest (alias)
Open two buffers to compare differences.
*gina-actions-diff*
diff
diff:split/vsplit/tab/preview (hidden)
diff:above/below/left/right (alias)
diff:top/bottom/leftest/rightest (alias)
Open an unified-diff.
*gina-actions-edit*
edit
edit:split/vsplit/tab/preview (hidden)
edit:above/below/left/right (alias)
edit:top/bottom/leftest/rightest (alias)
Edit a content in a working tree.
*gina-actions-export*
export:quickfix
Create a new quickfix list with selected candidates.
export:quickfix:add (hidden)
Add selected candidates to an existing quickfix list.
export:quickfix:replace (hidden)
Replace an existing quickfix list with selected candidates.
*gina-actions-index*
index:add (hidden)
index:add:force (hidden)
Add changes to an index.
index:add:intent-to-add (hidden)
Intent to add changes to an index.
index:rm (hidden)
index:rm:force (hidden)
Remove files from a working tree and from an index.
index:rm:cached (hidden)
Remove files from an index but a working tree.
index:reset (hidden)
Reset changes on an index.
index:stage
index:stage:force (hidden)
Stage changes to an index.
It uses "index:add" and "index:rm" internally.
index:unstage
Unstage changes from an index.
It is an alias of "index:reset".
index:toggle
Toggle stage/unstage of changes in an index.
It uses "index:stage" and "index:unstage" internally.
index:checkout
index:checkout:force (hidden)
Checkout contents from an index.
index:checkout:HEAD (hidden)
index:checkout:HEAD:force (hidden)
Checkout contents from a HEAD.
index:checkout:origin (hidden)
index:checkout:origin:force (hidden)
Checkout contents from an origin/HEAD.
index:checkout:ours (hidden)
Checkout contents from local (ours) during merge.
index:checkout:theirs (hidden)
Checkout contents from remote (theirs) during merge.
index:discard
index:discard:force (hidden)
Discard changes on a working tree.
If the file is tracked, the content is overwritten via the content in
HEAD. If the file is untracked, the file is removed.
See |g:gina#action#index#discard_directories| if you would like to
discard directories as well.
*gina-actions-ls*
ls
ls:split/vsplit/tab/preview (hidden)
ls:above/below/left/right (alias)
ls:top/bottom/leftest/rightest (alias)
List files/directories in a repository on a parcitular commit.
*gina-actions-patch*
patch
patch:split/vsplit/tab (hidden)
patch:above/below/left/right (alias)
patch:top/bottom/leftest/rightest (alias)
Open three buffers to patch changes to an index.
patch:oneside
patch:oneside:split/vsplit/tab (hidden)
patch:oneside:above/below/left/right (alias)
patch:oneside:top/bottom/leftest/rightest (alias)
Open two buffers to patch changes to an index.
*gina-actions-show*
show
show:split/vsplit/tab/preview (hidden)
show:above/below/left/right (alias)
show:top/bottom/leftest/rightest (alias)
Show a commit or a content at a commit.
show:commit
show:commit:split/vsplit/tab/preview (hidden)
show:commit:above/below/left/right (alias)
show:commit:top/bottom/leftest/rightest (alias)
Show a commit.
*gina-actions-stash*
stash:show
stash:show:split/vsplit/tab/preview (hidden)
stash:show:above/below/left/right (alias)
stash:show:top/bottom/leftest/rightest (alias)
Show changes in a stash.
stash:drop
stash:drop:force
Remove a stashed state.
stash:pop
stash:pop:index
Remove a stashed state and apply to a working tree.
stash:apply
stash:apply:index
Apply a stashed state to a working tree.
stash:branch
Create a new branch with a stashed state.
stash:clear
stash:clear:force
Remove all stashed states.
*gina-actions-tag*
tag:new (alias)
Aliased to "tag:new:annotate" in default.
Users can overrule it by |gina#custom#action#alias()|.
tag:new:lightweight
Create a lightweight tag of a HEAD.
tag:new:annotate
Create an unsigned, annotated tag of a HEAD.
tag:new:sign
Create a GPG-signed tag of a HEAD.
tag:delete
Delete a tag.
tag:verify
Verify a tag.
*gina-actions-yank*
yank:rev
Yank a revision
yank:path
Yank a path
yank:treeish
Yank a treeish
=============================================================================
MISC *gina-misc*
-----------------------------------------------------------------------------
SHORT FORMAT *gina-misc-short-format*
gina use a short format in |gina-buffer-status|.
The following is a cheatsheet of that format.
>
X Y Meaning
[MD] not updated
M [ MD] updated in index
A [ MD] added to index
D [ M] deleted from index
R [ MD] renamed in index
C [ MD] copied in index
[MARC] index and work tree matches
[ MARC] M work tree changed since index
[ MARC] D deleted in work tree
D D unmerged, both deleted
A U unmerged, added by us
U D unmerged, deleted by them
U A unmerged, added by them
D U unmerged, deleted by us
A A unmerged, both added
U U unmerged, both modified
? ? untracked
! ! ignored
<
See :!man git-status for more detail.
-----------------------------------------------------------------------------
TREEISH *gina-misc-treeish*
gina use {treeish} in command which may requires {rev} and/or {path}.
The syntax of {treeish} is {rev}:{path} which is commonly used in "git show"
command. In gina, this {treeish} would be
{rev}:{path} used to specify {rev} and {path} to the command.
If {rev} or {path} is an empty string, a corresponding value
of the current buffer is used.
:0:{path} used to specify {path} and omit {rev} so that command would
refer to the index.
{rev} used to specify {rev} and omit {path} so that command would
show a repository-wide result.
For example
>
:Gina show develop:autoload/gina.vim
" --> Open autoload/gina.vim in develop branch
:Gina show develop:
" --> Open a corresponding file of the current buffer in develop
:Gina show :autoload/gina.vim
" --> Open autoload/gina.vim in a revision of the current buffer
:Gina show :
" --> Open a corresponding file in a revision of the current buffer
:Gina show :0:autoload/gina.vim
" --> Open autoload/gina.vim in the index (forced)
:Gina show HEAD
" --> Open a HEAD commit rather than a particular file
:Gina show
" --> Open a commit rather than a particular file
<
Note that if {rev} and/or {path} are empty rather than omit, the value will
refer the current buffer so the result of the command depends on the buffer.
-----------------------------------------------------------------------------
STRING FORMAT *gina-misc-string-format*
gina uses lambdalisue/vital-Data-String-Formatter which was originally built
in lambdalisue/vim-gita to perform complex string format.
The format would be performed with the following steps
1. If a format string is leaded by %, the "%" and the format string will be
translated into a corresponding informations. E.g: "%rb" -> "master" or ""
2. If a format string is leaded by %{left|}, the "%{left|}" and the format
string will be translated into a corresponding informations and "left" will
be inserted at left side of the translation if the translation is not an
empty string. E.g: "%{#}rb" -> "#master" or ""
3. If a format string is leaded by %{|right}, the "%{|right}" and the format
string will be translated into a corresponding informations and "right"
will be inserted at right side of the translation if the translation is not
an empty string. E.g: "%{|$}rb" -> "master$" or ""
4. If a format string is leaded by %{left|right}, the "%{left|right}" and the
format string will be translated into a corresponding informations and
"left" and "right" will be inserted at left and right side of the
translation respectively if the translation is not an empty string. E.g:
"%{#|$}rb" -> "#master$" or ""
See also~
https://github.com/lambdalisue/vim-gita
https://github.com/lambdalisue/vital-Data-String-Formatter
-----------------------------------------------------------------------------
ASKPASS *gina-misc-askpass*
When git requires username or password (e.g. git pull on a repository linked
with https://), it use a program called "askpass".
While gina.vim execute a git command through a job feature, a terminal based
askpass program which git provides cannot be used.
To solve this issue, gina.vim try to use a GUI based askpass program instead.
LINUX *gina-misc-askpass-linux*
There is a well known GUI based askpass program called "ssh-askpass-gnome".
Users should install the program and set the executable path to one of these
1. "$GIT_ASKPASS" environment variable
2. "core.askpass" with "git config --global core.askpass=..."
3. "$SSH_ASKPASS" environment variable
When no available askpass program could be detected from above, gina.vim use
an internal askpass script based on "zenity" when "zenity" is executable.
Otherwise a git command which requires username and/or password always fail.
In short, Linux users should do one of
- Install "ssh-askpass-gnome" and configure it properly
- Install "zenity"
To enable username and/or password interactive input.
See "scripts/askpass.zenity" if you would like to check what the script does.
MAC *gina-misc-askpass-mac*
gina.vim provides an internal askpass script based on an AppleScript.
The script should be available on any Unix based Mac.
In short, Mac uses should do nothing to enable username and/or password
interactive input.
See "scripts/askpass.mac" if you would like to check what the script does.
WINDOWS *gina-misc-askpass-windows*
Git has a built-in credential helper called "wincred" for Windows.
This credential helper use a GUI-based prompt so Windows user do not need to
worry about this unless they disabled that by configuration.
In short, use "git config --global credential.helper wincred" to use
"wincred" in your system.
=============================================================================
CHANGELOG *gina-changelog*
2017.02.25 (v0.1.0)
Release first beta version.
2017.03.05 (v0.2.1)
Release second beta version.
- Bug fixes
- Fix commit issue on a newly checked out repository
- Fix tabpage issue of Vim.Buffer.Group module
- Fix 'modeline' issue on several commands
- Fix colorscheme issue for highlights
- Fix no action error
- Improve actions
- Add mods support
- Add mark features to mark candidates prior to the actions
- Add "show:commit" action to show a commit rather than a content
- Add "xxx:split/vsplit"
- Move "xxx:above/below/..." to aliases
- Do NOT repeat action by mappings
- Do NOT restore selections after repeat
- Do NOT alias choice/repeat
- Fix Gina show
- Enable --line/--col only when {path} has specified
- Fix Gina log
- Allow "Gina log v0.1.0..." to show log from v0.1.0 to HEAD
- Guess --line/--col from the current buffer if possible
- Add Gina blame
2017.08.03 (v0.3.1)
Release third beta version.
- Add
- Gina stash
- statusline/tabline components
- command completion
- diff jumps on diff/commit buffer
- shell/term execution via Gina!!
- Yank actions
- Fix
- 'Not allowed here' exceptions
- Scroll position on Gina blame
- Gina show --opener=edit :
- Gina init
2018.09.29 (v1.0.0)
Release a first stable version.
=============================================================================
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl