Initial checkin
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
" ============================================================================
|
||||
" File: autoload/gitstatus/job.vim
|
||||
" Description: git status indicator syntax highlighting
|
||||
" Maintainer: Xuyuan Pang <xuyuanp at gmail dot com>
|
||||
" License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
" ============================================================================
|
||||
if !get(g:, 'NERDTreeGitStatusEnable', 0)
|
||||
finish
|
||||
endif
|
||||
|
||||
function! s:getIndicator(status) abort
|
||||
return gitstatus#getIndicator(a:status)
|
||||
endfunction
|
||||
|
||||
if gitstatus#shouldConceal()
|
||||
" Hide the backets
|
||||
syntax match hideBracketsInNerdTreeL "\]" contained conceal containedin=NERDTreeFlags
|
||||
syntax match hideBracketsInNerdTreeR "\[" contained conceal containedin=NERDTreeFlags
|
||||
setlocal conceallevel=3
|
||||
setlocal concealcursor=nvic
|
||||
endif
|
||||
|
||||
function! s:highlightFromGroup(group) abort
|
||||
let l:synid = synIDtrans(hlID(a:group))
|
||||
let [l:ctermfg, l:guifg] = [synIDattr(l:synid, 'fg', 'cterm'), synIDattr(l:synid, 'fg', 'gui')]
|
||||
return 'cterm=NONE ctermfg=' . l:ctermfg . ' ctermbg=NONE gui=NONE guifg=' . l:guifg . ' guibg=NONE'
|
||||
endfunction
|
||||
|
||||
function! s:setHightlighting() abort
|
||||
let l:synlist = [
|
||||
\ ['Unmerged', 'Function'],
|
||||
\ ['Modified', 'Special'],
|
||||
\ ['Staged', 'Function'],
|
||||
\ ['Renamed', 'Title'],
|
||||
\ ['Unmerged', 'Label'],
|
||||
\ ['Untracked', 'Comment'],
|
||||
\ ['Dirty', 'Tag'],
|
||||
\ ['Deleted', 'Operator'],
|
||||
\ ['Ignored', 'SpecialKey'],
|
||||
\ ['Clean', 'Method'],
|
||||
\ ]
|
||||
|
||||
for [l:name, l:group] in l:synlist
|
||||
let l:indicator = escape(s:getIndicator(l:name), '\#-*.$')
|
||||
let l:synname = 'NERDTreeGitStatus' . l:name
|
||||
execute 'silent! syntax match ' . l:synname . ' #\m\C\zs[' . l:indicator . ']\ze[^\]]*\]# containedin=NERDTreeFlags'
|
||||
let l:hipat = get(get(g:, 'NERDTreeGitStatusHighlightingCustom', {}),
|
||||
\ l:name,
|
||||
\ s:highlightFromGroup(l:group))
|
||||
execute 'silent! highlight ' . l:synname . ' ' . l:hipat
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
silent! call s:setHightlighting()
|
||||
Reference in New Issue
Block a user