*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