mirror of
https://github.com/amix/vimrc
synced 2025-06-23 06:35:01 +08:00
Updated plugins
This commit is contained in:
@ -137,12 +137,15 @@ The same caveat applies to line number highlighting as to line highlighting just
|
||||
|
||||
If you switch off both line highlighting and signs, you won't see the sign column.
|
||||
|
||||
To keep your Vim snappy, vim-gitgutter will suppress the signs when a file has more than 500 changes. As soon as the number of changes falls below the limit vim-gitgutter will show the signs again. You can configure the threshold with:
|
||||
In older Vims (pre 8.1.0614 / Neovim 0.4.0) vim-gitgutter will suppress the signs when a file has more than 500 changes, to avoid slowing down the UI. As soon as the number of changes falls below the limit vim-gitgutter will show the signs again. You can configure the threshold with:
|
||||
|
||||
```viml
|
||||
let g:gitgutter_max_signs = 500 " default value
|
||||
let g:gitgutter_max_signs = 500 " default value (Vim < 8.1.0614, Neovim < 0.4.0)
|
||||
let g:gitgutter_max_signs = -1 " default value (otherwise)
|
||||
```
|
||||
|
||||
You can also remove the limit by setting `g:gitgutter_max_signs = -1`.
|
||||
|
||||
#### Hunks
|
||||
|
||||
You can jump between hunks:
|
||||
@ -287,19 +290,14 @@ Please note that vim-gitgutter won't override any colours or highlights you've s
|
||||
|
||||
#### Sign column
|
||||
|
||||
By default vim-gitgutter will make the sign column look like the line number column.
|
||||
|
||||
To customise your sign column's background color, first tell vim-gitgutter to leave it alone:
|
||||
Set the `SignColumn` highlight group to change the sign column's colour. For example:
|
||||
|
||||
```viml
|
||||
let g:gitgutter_override_sign_column_highlight = 0
|
||||
```
|
||||
" vim-gitgutter used to do this by default:
|
||||
highlight! link SignColumn LineNr
|
||||
|
||||
And then either update your colorscheme's `SignColumn` highlight group or set it in your vimrc:
|
||||
|
||||
```viml
|
||||
highlight SignColumn ctermbg=whatever " terminal Vim
|
||||
highlight SignColumn guibg=whatever " gVim/MacVim
|
||||
" or you could do this:
|
||||
highlight SignColumn guibg=whatever ctermbg=whatever
|
||||
```
|
||||
|
||||
By default the sign column will appear when there are signs to show and disappear when there aren't. To always have the sign column, add to your vimrc:
|
||||
@ -318,13 +316,15 @@ let g:gitgutter_sign_allow_clobber = 1
|
||||
|
||||
#### Signs' colours and symbols
|
||||
|
||||
If you or your colourscheme has defined `GitGutter*` highlight groups, the plugin will use those for the signs' colours.
|
||||
If you or your colourscheme has defined `GitGutter*` highlight groups, the plugin will use them for the signs' colours.
|
||||
|
||||
Otherwise it will use your colourscheme's `Diff*` highlight groups.
|
||||
If you want the background colours to match the sign column, but don't want to update the `GitGutter*` groups yourself, you can get the plugin to do it:
|
||||
|
||||
Either way the signs' background colours will be set to the sign column's background colour.
|
||||
```viml
|
||||
let g:gitgutter_set_sign_backgrounds = 1
|
||||
```
|
||||
|
||||
If you don't like the colours, specify the ones you want in your vimrc (see `:help highlight-guifg` and `:help highlight-ctermfg`). For example, to get vim-gitgutter's original colours (based on git-diff's colours in my terminal):
|
||||
If no `GitGutter*` highlight groups exist, the plugin will check the `Diff*` highlight groups. If their foreground colours differ the plugin will use them; if not, these colours will be used:
|
||||
|
||||
```viml
|
||||
highlight GitGutterAdd guifg=#009900 ctermfg=2
|
||||
|
@ -182,7 +182,7 @@ function! gitgutter#diff#handler(bufnr, diff) abort
|
||||
let modified_lines = gitgutter#diff#process_hunks(a:bufnr, gitgutter#hunk#hunks(a:bufnr))
|
||||
|
||||
let signs_count = len(modified_lines)
|
||||
if signs_count > g:gitgutter_max_signs
|
||||
if g:gitgutter_max_signs != -1 && signs_count > g:gitgutter_max_signs
|
||||
call gitgutter#utility#warn_once(a:bufnr, printf(
|
||||
\ 'exceeded maximum number of signs (%d > %d, configured by g:gitgutter_max_signs).',
|
||||
\ signs_count, g:gitgutter_max_signs), 'max_signs')
|
||||
|
@ -64,14 +64,6 @@ function! gitgutter#highlight#linenr_toggle() abort
|
||||
endfunction
|
||||
|
||||
|
||||
function! gitgutter#highlight#define_sign_column_highlight() abort
|
||||
if g:gitgutter_override_sign_column_highlight
|
||||
highlight! link SignColumn LineNr
|
||||
else
|
||||
highlight default link SignColumn LineNr
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! gitgutter#highlight#define_highlights() abort
|
||||
let [guibg, ctermbg] = s:get_background_colors('SignColumn')
|
||||
|
||||
@ -84,26 +76,24 @@ function! gitgutter#highlight#define_highlights() abort
|
||||
highlight default link GitGutterChangeDeleteInvisible GitGutterChangeInvisible
|
||||
|
||||
" When they are visible.
|
||||
|
||||
" If GitGutter* highlights are already defined, either by the user or the colourscheme,
|
||||
" set their backgrounds to the sign column's.
|
||||
for type in ["Add", "Change", "Delete"]
|
||||
if hlexists("GitGutter".type)
|
||||
" Were the highlight self-contained we could just declare the
|
||||
" background attributes and they would be merged. But it might be a
|
||||
" link, in which case it would be overwritten. So re-declare it in its
|
||||
" entirety.
|
||||
let [guifg, ctermfg] = s:get_foreground_colors('GitGutter'.type)
|
||||
execute "highlight GitGutter".type." guifg=".guifg." guibg=".guibg." ctermfg=".ctermfg." ctermbg=".ctermbg
|
||||
if g:gitgutter_set_sign_backgrounds
|
||||
execute "highlight GitGutter".type." guibg=".guibg." ctermbg=".ctermbg
|
||||
endif
|
||||
continue
|
||||
elseif s:useful_diff_colours()
|
||||
let [guifg, ctermfg] = s:get_foreground_colors('Diff'.type)
|
||||
else
|
||||
let [guifg, ctermfg] = s:get_foreground_fallback_colors(type)
|
||||
endif
|
||||
execute "highlight GitGutter".type." guifg=".guifg." guibg=".guibg." ctermfg=".ctermfg." ctermbg=".ctermbg
|
||||
endfor
|
||||
|
||||
" By default use Diff* foreground colors with SignColumn's background.
|
||||
for type in ['Add', 'Change', 'Delete']
|
||||
let [guifg, ctermfg] = s:get_foreground_colors('Diff'.type)
|
||||
execute "highlight GitGutter".type."Default guifg=".guifg." guibg=".guibg." ctermfg=".ctermfg." ctermbg=".ctermbg
|
||||
execute "highlight default link GitGutter".type." GitGutter".type."Default"
|
||||
endfor
|
||||
if hlexists("GitGutterChangeDelete") && g:gitgutter_set_sign_backgrounds
|
||||
execute "highlight GitGutterChangeDelete guibg=".guibg." ctermbg=".ctermbg
|
||||
endif
|
||||
|
||||
highlight default link GitGutterChangeDelete GitGutterChange
|
||||
|
||||
" Highlights used for the whole line.
|
||||
@ -236,3 +226,20 @@ function! s:get_background_colors(group) abort
|
||||
let guibg = s:get_hl(a:group, 'bg', 'gui')
|
||||
return [guibg, ctermbg]
|
||||
endfunction
|
||||
|
||||
function! s:useful_diff_colours()
|
||||
let [guifg_add, ctermfg_add] = s:get_foreground_colors('DiffAdd')
|
||||
let [guifg_del, ctermfg_del] = s:get_foreground_colors('DiffDelete')
|
||||
|
||||
return guifg_add != guifg_del && ctermfg_add != ctermfg_del
|
||||
endfunction
|
||||
|
||||
function! s:get_foreground_fallback_colors(type)
|
||||
if a:type == 'Add'
|
||||
return ['#009900', '2']
|
||||
elseif a:type == 'Change'
|
||||
return ['#bbbb00', '3']
|
||||
elseif a:type == 'Delete'
|
||||
return ['#ff2222', '1']
|
||||
endif
|
||||
endfunction
|
||||
|
@ -162,7 +162,7 @@ endfunction
|
||||
|
||||
|
||||
function! gitgutter#utility#cd_cmd(bufnr, cmd) abort
|
||||
let cd = s:unc_path(a:bufnr) ? 'pushd' : (gitgutter#utility#windows() ? 'cd /d' : 'cd')
|
||||
let cd = s:unc_path(a:bufnr) ? 'pushd' : (gitgutter#utility#windows() && s:dos_shell() ? 'cd /d' : 'cd')
|
||||
return cd.' '.s:dir(a:bufnr).' && '.a:cmd
|
||||
endfunction
|
||||
|
||||
@ -170,6 +170,10 @@ function! s:unc_path(bufnr)
|
||||
return s:abs_path(a:bufnr, 0) =~ '^\\\\'
|
||||
endfunction
|
||||
|
||||
function! s:dos_shell()
|
||||
return &shell == 'cmd.exe' || &shell == 'command.com'
|
||||
endfunction
|
||||
|
||||
function! s:use_known_shell() abort
|
||||
if has('unix') && &shell !=# 'sh'
|
||||
let [s:shell, s:shellcmdflag, s:shellredir] = [&shell, &shellcmdflag, &shellredir]
|
||||
|
@ -306,7 +306,7 @@ Signs:~
|
||||
|g:gitgutter_sign_removed|
|
||||
|g:gitgutter_sign_removed_first_line|
|
||||
|g:gitgutter_sign_modified_removed|
|
||||
|g:gitgutter_override_sign_column_highlight|
|
||||
|g:gitgutter_set_sign_backgrounds|
|
||||
|
||||
Hunk previews:~
|
||||
|
||||
@ -412,13 +412,16 @@ Default: 0
|
||||
Determines whether or not to show line number highlights.
|
||||
|
||||
*g:gitgutter_max_signs*
|
||||
Default: 500
|
||||
Default: 500 (Vim < 8.1.0614, Neovim < 0.4.0)
|
||||
-1 (otherwise)
|
||||
|
||||
Sets the maximum number of signs to show in a buffer. Vim is slow at updating
|
||||
signs, so to avoid slowing down the GUI the number of signs is capped. When
|
||||
the number of changed lines exceeds this value, the plugin removes all signs
|
||||
and displays a warning message.
|
||||
|
||||
When set to -1 the limit is not applied.
|
||||
|
||||
*g:gitgutter_sign_priority*
|
||||
Default: 10
|
||||
|
||||
@ -447,26 +450,14 @@ Defaults:
|
||||
You can use unicode characters but not images. Signs must not take up more than
|
||||
2 columns.
|
||||
|
||||
*g:gitgutter_override_sign_column_highlight*
|
||||
Default: 1
|
||||
*g:gitgutter_set_sign_backgrounds*
|
||||
Default: 0
|
||||
|
||||
Controls whether to make the sign column look like the line-number column (i.e.
|
||||
the |hl-LineNr| highlight group).
|
||||
|
||||
To customise your sign column's background color, first tell vim-gitgutter to
|
||||
leave it alone:
|
||||
>
|
||||
let g:gitgutter_override_sign_column_highlight = 0
|
||||
<
|
||||
|
||||
And then either update your colorscheme's |hlSignColumn| highlight group or set
|
||||
it in your |vimrc|:
|
||||
|
||||
Desired appearance Command ~
|
||||
Same as line-number column highlight clear SignColumn
|
||||
User-defined (terminal Vim) highlight SignColumn ctermbg={whatever}
|
||||
User-defined (graphical Vim) highlight SignColumn guibg={whatever}
|
||||
Only applies to existing GitGutter* highlight groups. See
|
||||
|gitgutter-highlights|.
|
||||
|
||||
Controls whether to override the signs' background colours to match the
|
||||
|hl-SignColumn|.
|
||||
|
||||
*g:gitgutter_preview_win_floating*
|
||||
Default: 0 (Vim)
|
||||
@ -538,6 +529,10 @@ To change the signs' colours, specify these highlight groups in your |vimrc|:
|
||||
|
||||
See |highlight-guifg| and |highlight-ctermfg| for the values you can use.
|
||||
|
||||
If you do not like the signs' background colours and you do not want to update
|
||||
the GitGutter* highlight groups yourself, you can get the plugin to do it
|
||||
|g:gitgutter_set_sign_backgrounds|.
|
||||
|
||||
To change the line highlights, set up the following highlight groups in your
|
||||
colorscheme or |vimrc|:
|
||||
>
|
||||
@ -593,8 +588,11 @@ c. Why can't I unstage staged changes?
|
||||
d. Why are the colours in the sign column weird?
|
||||
|
||||
Your colorscheme is configuring the |hl-SignColumn| highlight group weirdly.
|
||||
Please see |g:gitgutter_override_sign_column_highlight| on customising the
|
||||
sign column.
|
||||
Here are two ways you could change the colours:
|
||||
>
|
||||
highlight! link SignColumn LineNr
|
||||
highlight SignColumn guibg=whatever ctermbg=whatever
|
||||
<
|
||||
|
||||
e. What happens if I also use another plugin which uses signs (e.g. Syntastic)?
|
||||
|
||||
|
@ -22,6 +22,13 @@ function! s:set(var, default) abort
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:obsolete(var)
|
||||
if exists(a:var)
|
||||
call gitgutter#utility#warn(a:var.' is obsolete and has no effect.')
|
||||
endif
|
||||
endfunction
|
||||
|
||||
|
||||
call s:set('g:gitgutter_preview_win_location', 'bo')
|
||||
if exists('*nvim_open_win')
|
||||
call s:set('g:gitgutter_preview_win_floating', 1)
|
||||
@ -29,7 +36,11 @@ else
|
||||
call s:set('g:gitgutter_preview_win_floating', 0)
|
||||
endif
|
||||
call s:set('g:gitgutter_enabled', 1)
|
||||
call s:set('g:gitgutter_max_signs', 500)
|
||||
if exists('*sign_unplace')
|
||||
call s:set('g:gitgutter_max_signs', -1)
|
||||
else
|
||||
call s:set('g:gitgutter_max_signs', 500)
|
||||
endif
|
||||
call s:set('g:gitgutter_signs', 1)
|
||||
call s:set('g:gitgutter_highlight_lines', 0)
|
||||
call s:set('g:gitgutter_highlight_linenrs', 0)
|
||||
@ -40,7 +51,7 @@ if (has('nvim-0.4.0') || exists('*sign_place')) && !exists('g:gitgutter_sign_all
|
||||
let g:gitgutter_sign_allow_clobber = 1
|
||||
endif
|
||||
call s:set('g:gitgutter_sign_allow_clobber', 0)
|
||||
call s:set('g:gitgutter_override_sign_column_highlight', 1)
|
||||
call s:set('g:gitgutter_set_sign_backgrounds', 0)
|
||||
call s:set('g:gitgutter_sign_added', '+')
|
||||
call s:set('g:gitgutter_sign_modified', '~')
|
||||
call s:set('g:gitgutter_sign_removed', '_')
|
||||
@ -65,7 +76,10 @@ call s:set('g:gitgutter_use_location_list', 0)
|
||||
|
||||
call s:set('g:gitgutter_git_executable', 'git')
|
||||
if !executable(g:gitgutter_git_executable)
|
||||
call gitgutter#utility#warn('cannot find git. Please set g:gitgutter_git_executable.')
|
||||
if g:gitgutter_enabled
|
||||
call gitgutter#utility#warn('cannot find git. Please set g:gitgutter_git_executable.')
|
||||
endif
|
||||
finish
|
||||
endif
|
||||
|
||||
let default_grep = 'grep'
|
||||
@ -83,7 +97,6 @@ if !empty(g:gitgutter_grep)
|
||||
endif
|
||||
endif
|
||||
|
||||
call gitgutter#highlight#define_sign_column_highlight()
|
||||
call gitgutter#highlight#define_highlights()
|
||||
call gitgutter#highlight#define_signs()
|
||||
|
||||
@ -260,7 +273,7 @@ augroup gitgutter
|
||||
autocmd VimResume * call gitgutter#all(1)
|
||||
endif
|
||||
|
||||
autocmd ColorScheme * call gitgutter#highlight#define_sign_column_highlight() | call gitgutter#highlight#define_highlights()
|
||||
autocmd ColorScheme * call gitgutter#highlight#define_highlights()
|
||||
|
||||
" Disable during :vimgrep
|
||||
autocmd QuickFixCmdPre *vimgrep* let g:gitgutter_enabled = 0
|
||||
|
Reference in New Issue
Block a user