parent
276f89837f
commit
fb5661211d
@ -1670,6 +1670,7 @@ augroup fugitive_blame
|
|||||||
autocmd FileType fugitiveblame setlocal nomodeline | if exists('b:git_dir') | let &l:keywordprg = s:repo().keywordprg() | endif
|
autocmd FileType fugitiveblame setlocal nomodeline | if exists('b:git_dir') | let &l:keywordprg = s:repo().keywordprg() | endif
|
||||||
autocmd Syntax fugitiveblame call s:BlameSyntax()
|
autocmd Syntax fugitiveblame call s:BlameSyntax()
|
||||||
autocmd User Fugitive if s:buffer().type('file', 'blob') | exe "command! -buffer -bar -bang -range=0 -nargs=* Gblame :execute s:Blame(<bang>0,<line1>,<line2>,<count>,[<f-args>])" | endif
|
autocmd User Fugitive if s:buffer().type('file', 'blob') | exe "command! -buffer -bar -bang -range=0 -nargs=* Gblame :execute s:Blame(<bang>0,<line1>,<line2>,<count>,[<f-args>])" | endif
|
||||||
|
autocmd ColorScheme,GUIEnter * call s:RehighlightBlame()
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
function! s:linechars(pattern) abort
|
function! s:linechars(pattern) abort
|
||||||
@ -1858,6 +1859,8 @@ function! s:BlameJump(suffix) abort
|
|||||||
return ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
let s:hash_colors = {}
|
||||||
|
|
||||||
function! s:BlameSyntax() abort
|
function! s:BlameSyntax() abort
|
||||||
let b:current_syntax = 'fugitiveblame'
|
let b:current_syntax = 'fugitiveblame'
|
||||||
let conceal = has('conceal') ? ' conceal' : ''
|
let conceal = has('conceal') ? ' conceal' : ''
|
||||||
@ -1876,7 +1879,7 @@ function! s:BlameSyntax() abort
|
|||||||
syn match FugitiveblameNotCommittedYet "(\@<=Not Committed Yet\>" contained containedin=FugitiveblameAnnotation
|
syn match FugitiveblameNotCommittedYet "(\@<=Not Committed Yet\>" contained containedin=FugitiveblameAnnotation
|
||||||
hi def link FugitiveblameBoundary Keyword
|
hi def link FugitiveblameBoundary Keyword
|
||||||
hi def link FugitiveblameHash Identifier
|
hi def link FugitiveblameHash Identifier
|
||||||
hi def link FugitiveblameUncommitted Function
|
hi def link FugitiveblameUncommitted Ignore
|
||||||
hi def link FugitiveblameTime PreProc
|
hi def link FugitiveblameTime PreProc
|
||||||
hi def link FugitiveblameLineNumber Number
|
hi def link FugitiveblameLineNumber Number
|
||||||
hi def link FugitiveblameOriginalFile String
|
hi def link FugitiveblameOriginalFile String
|
||||||
@ -1884,6 +1887,37 @@ function! s:BlameSyntax() abort
|
|||||||
hi def link FugitiveblameShort FugitiveblameDelimiter
|
hi def link FugitiveblameShort FugitiveblameDelimiter
|
||||||
hi def link FugitiveblameDelimiter Delimiter
|
hi def link FugitiveblameDelimiter Delimiter
|
||||||
hi def link FugitiveblameNotCommittedYet Comment
|
hi def link FugitiveblameNotCommittedYet Comment
|
||||||
|
let seen = {}
|
||||||
|
for lnum in range(1, line('$'))
|
||||||
|
let hash = matchstr(getline(lnum), '^\^\=\zs\x\{6\}')
|
||||||
|
if hash ==# '' || hash ==# '000000' || has_key(seen, hash)
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
let seen[hash] = 1
|
||||||
|
if &t_Co > 16 && exists('g:CSApprox_loaded')
|
||||||
|
\ && empty(get(s:hash_colors, hash))
|
||||||
|
let [s, r, g, b; __] = map(matchlist(hash, '\(\x\x\)\(\x\x\)\(\x\x\)'), 'str2nr(v:val,16)')
|
||||||
|
let color = csapprox#per_component#Approximate(r, g, b)
|
||||||
|
if color == 16 && &background ==# 'dark'
|
||||||
|
let color = 8
|
||||||
|
endif
|
||||||
|
let s:hash_colors[hash] = ' ctermfg='.color
|
||||||
|
else
|
||||||
|
let s:hash_colors[hash] = ''
|
||||||
|
endif
|
||||||
|
exe 'syn match FugitiveblameHash'.hash.' "\%(^\^\=\)\@<='.hash.'\x\{1,34\}\>" nextgroup=FugitiveblameAnnotation,FugitiveblameOriginalLineNumber,fugitiveblameOriginalFile skipwhite'
|
||||||
|
endfor
|
||||||
|
call s:RehighlightBlame()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:RehighlightBlame() abort
|
||||||
|
for [hash, cterm] in items(s:hash_colors)
|
||||||
|
if !empty(cterm) || has('gui_running')
|
||||||
|
exe 'hi FugitiveblameHash'.hash.' guifg=#'.hash.get(s:hash_colors, hash, '')
|
||||||
|
else
|
||||||
|
exe 'hi link FugitiveblameHash'.hash.' Identifier'
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Section: Gbrowse
|
" Section: Gbrowse
|
||||||
|
Loading…
Reference in New Issue
Block a user