mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-24 06:20:05 +08:00
59 lines
2.5 KiB
VimL
59 lines
2.5 KiB
VimL
" ============================================================================
|
|
" 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()
|