diff options
Diffstat (limited to '')
-rw-r--r-- | .vim/bundle/indentLine/after/plugin/indentLine.vim | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/.vim/bundle/indentLine/after/plugin/indentLine.vim b/.vim/bundle/indentLine/after/plugin/indentLine.vim new file mode 100644 index 0000000..fc78278 --- /dev/null +++ b/.vim/bundle/indentLine/after/plugin/indentLine.vim @@ -0,0 +1,166 @@ +" Script Name: indentLine.vim +" Author: Yggdroot <archofortune@gmail.com> +" +" Description: To show the indention levels with thin vertical lines + +scriptencoding utf-8 + +if ! has("conceal") || exists("g:indentLine_loaded") + finish +endif +let g:indentLine_loaded = 1 + + +let g:indentLine_char = get(g:,'indentLine_char',(&encoding is# "utf-8" && &term isnot# "linux" ? '¦' : '|')) +let g:indentLine_first_char = get(g:,'indentLine_first_char',(&encoding is# "utf-8" && &term isnot# "linux" ? '¦' : '|')) +let g:indentLine_indentLevel = get(g:,'indentLine_indentLevel',10) +let g:indentLine_enabled = get(g:,'indentLine_enabled',1) +let g:indentLine_fileType = get(g:,'indentLine_fileType',[]) +let g:indentLine_fileTypeExclude = get(g:,'indentLine_fileTypeExclude',[]) +let g:indentLine_bufNameExclude = get(g:,'indentLine_bufNameExclude',[]) +let g:indentLine_showFirstIndentLevel = get(g:,'indentLine_showFirstIndentLevel',0) +let g:indentLine_maxLines = get(g:,'indentLine_maxLines',3000) +let g:indentLine_setColors = get(g:,'indentLine_setColors',1) +let g:indentLine_faster = get(g:,'indentLine_faster',0) + +"{{{1 function! s:InitColor() +function! s:InitColor() + if ! g:indentLine_setColors + return + endif + + if ! exists("g:indentLine_color_term") + if &background is# "light" + let term_color = 249 + else + let term_color = 239 + endif + else + let term_color = g:indentLine_color_term + endif + + if ! exists("g:indentLine_color_gui") + if &background is# "light" + let gui_color = "Grey70" + else + let gui_color = "Grey30" + endif + else + let gui_color = g:indentLine_color_gui + endif + + execute "highlight Conceal ctermfg=" . term_color . " ctermbg=NONE" + execute "highlight Conceal guifg=" . gui_color . " guibg=NONE" + + if &term is# "linux" + if &background is# "light" + let tty_color = exists("g:indentLine_color_tty_light") ? g:indentLine_color_tty_light : 4 + else + let tty_color = exists("g:indentLine_color_tty_dark") ? g:indentLine_color_tty_dark : 2 + endif + execute "highlight Conceal cterm=bold ctermfg=" . tty_color . " ctermbg=NONE" + endif +endfunction + +"{{{1 function! s:SetIndentLine() +function! s:SetIndentLine() + let b:indentLine_enabled = 1 + let space = &l:shiftwidth is 0 ? &l:tabstop : &l:shiftwidth + + if g:indentLine_showFirstIndentLevel + execute 'syntax match IndentLine /^ / containedin=ALL conceal cchar=' . g:indentLine_first_char + endif + + if g:indentLine_faster + execute 'syntax match IndentLineSpace /^\s\+/ containedin=ALL contains=IndentLine' + execute 'syntax match IndentLine / \{'.(space-1).'}\zs / contained conceal cchar=' . g:indentLine_char + execute 'syntax match IndentLine /\t\zs / contained conceal cchar=' . g:indentLine_char + else + let pattern = line('$') < g:indentLine_maxLines ? 'v' : 'c' + for i in range(space+1, space * g:indentLine_indentLevel + 1, space) + execute 'syntax match IndentLine /\%(^\s\+\)\@<=\%'.i.pattern.' / containedin=ALL conceal cchar=' . g:indentLine_char + endfor + endif +endfunction + +"{{{1 function! s:ResetWidth(...) +function! s:ResetWidth(...) + if 0 < a:0 + let &l:shiftwidth = a:1 + endif + + if exists("b:indentLine_enabled") + syntax clear IndentLine + endif + call s:SetIndentLine() +endfunction + +"{{{1 function! s:IndentLinesToggle() +function! s:IndentLinesToggle() + if ! exists("b:indentLine_enabled") + let b:indentLine_enabled = 0 + endif + + if b:indentLine_enabled + let b:indentLine_enabled = 0 + syntax clear IndentLine + else + call s:SetIndentLine() + endif +endfunction + +"{{{1 function! s:Setup() +function! s:Setup() + if index(g:indentLine_fileTypeExclude, &filetype) isnot -1 + return + endif + + if len(g:indentLine_fileType) isnot 0 && index(g:indentLine_fileType, &filetype) is -1 + return + end + + for name in g:indentLine_bufNameExclude + if matchstr(bufname(''), name) is bufname('') + return + endif + endfor + + if ! exists("b:indentLine_bufNr") + let b:indentLine_bufNr = bufnr('%') + let g:indentLine_bufNr = bufnr('%') + elseif g:indentLine_bufNr != bufnr('%') && &hidden + let g:indentLine_bufNr = bufnr('%') + return + endif + + if ! exists("g:indentLine_noConcealCursor") + setlocal concealcursor=inc + endif + setlocal conceallevel=2 + + if &filetype is# "" + call s:InitColor() + endif + + if ! exists("b:indentLine_enabled") + let b:indentLine_enabled = g:indentLine_enabled + endif + + if b:indentLine_enabled + call s:SetIndentLine() + endif +endfunction + +"{{{1 augroup indentLine +augroup indentLine + autocmd! + autocmd BufWinEnter * call <SID>Setup() + autocmd BufRead,BufNewFile,ColorScheme * call <SID>InitColor() +augroup END + +"{{{1 commands +command! -nargs=? IndentLinesReset call <SID>ResetWidth(<f-args>) +command! IndentLinesToggle call <SID>IndentLinesToggle() + +" vim:et:ts=4:sw=4:fdm=marker:fmr={{{,}}} + |