mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-23 17:40:06 +08:00
2763 lines
90 KiB
Plaintext
2763 lines
90 KiB
Plaintext
*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
|