# HG changeset patch # User Heiko Schlittermann (JUMPER) # Date 1435612551 -7200 # Node ID 6c66049c63e0be60d125c5df13f0210d3929da37 # Parent 1052e4853b1ec5b909687f19425db88465081377 Use lowercase filetype. Fix the regex for ^-----B diff -r 1052e4853b1e -r 6c66049c63e0 filetype.vim --- a/filetype.vim Mon Jun 29 23:13:23 2015 +0200 +++ b/filetype.vim Mon Jun 29 23:15:51 2015 +0200 @@ -2,6 +2,6 @@ finish endif -au BufRead,BufNewFile *.cabundle\|cer\|crt\|der setfiletype PEM -au BufRead,BufNewFile *.p12\|p7b\|p7c\|pem\|pfx setfiletype PEM -au BufRead,BufNewFile * if getline(1) =~? '^-{5}b' || getline(1) =~? '^certificate:' | setfiletype PEM | endif +au BufRead,BufNewFile *.cabundle\|cer\|crt\|der setfiletype pem +au BufRead,BufNewFile *.p12\|p7b\|p7c\|pem\|pfx setfiletype pem +au BufRead,BufNewFile * if getline(1) =~# '^-\{5\}BEGIN ' || getline(1) =~? '^certificate:' | setfiletype pem | endif diff -r 1052e4853b1e -r 6c66049c63e0 ftplugin/PEM/folding.vim --- a/ftplugin/PEM/folding.vim Mon Jun 29 23:13:23 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -" vim: foldmethod=marker -set foldmethod=expr -set foldexpr=GetPEMfold(v:lnum) -set foldtext=SetFoldTextCN() - -function! GetPEMfold(lnum) -"{{{1 - if getline(a:lnum) =~? '\v^\s*$' - return '-1' - elseif getline(a:lnum) =~? '\v^certificate:' - return '>1' - elseif getline(a:lnum) =~? '\v^-{5}begin\scertificate-{5}' - return '>1' - endif - - let this_indent = GetShiftLevel(a:lnum) - let next_indent = GetShiftLevel(GetNonBlankLines(a:lnum)) - let begin_cert = GetShiftLevel(GetBeginCertificate(a:lnum)) - - if this_indent == begin_cert - return '1' - elseif this_indent == next_indent || this_indent > next_indent - return this_indent - elseif this_indent < next_indent - return '>' . next_indent - endif - -endfunction -"}}} - -function! GetShiftLevel(lnum) -"{{{1 - "return indent(a:lnum) / &shiftwidth - return indent(a:lnum) / 4 -endfunction -"}}} - -function! GetNonBlankLines(lnum) -"{{{1 - let numlines = line('$') - let current = a:lnum + 1 - - while current <= numlines - if getline(current) =~? '\v\S' - return current - endif - - let current += 1 - - endwhile - - return -2 -endfunction -"}}} - -function! GetBeginCertificate(lnum) -"{{{1 - let numlines = line('$') - let current = a:lnum + 1 - - while current <= numlines - if getline(current) =~? '\v^-{5}begin\scertificate-{5}' - return current - endif - - let current += 1 - endwhile - -endfunction -"}}} - -function! SetFoldTextCN() -"{{{1 - - let line = getline(v:foldstart) - let lines_count = v:foldend - v:foldstart + 1 - let lines_count_text = '| ' . printf("%10s", lines_count . ' lines') . ' |' - let foldchar = matchstr(&fillchars, 'fold:\zs.') - let foldtextstart = strpart('+' . repeat(foldchar, v:foldlevel*2) . line, 0, (winwidth(0)*2)/3) - let foldtextend = lines_count_text . repeat(foldchar, 8) - - if match( line, 'Certificate:.*' ) == 0 - let current = line + 1 - - while current <= lines_count - if ( getline(current) =~? 'CN=.*') - let inLine = getline(current) - let CName = substitute( inLine, '.*CN=\(.*$\)', "\\1", 'g') - endif - let current += 1 - endwhile - - let foldtextlength = strlen(substitute(foldtextstart . CName . foldtextend, '.', 'x', 'g')) + &foldcolumn - return foldtextstart . ' ' . CName . repeat(foldchar, winwidth(0)-foldtextlength-1) . foldtextend - - else - let foldtextlength = strlen(substitute(foldtextstart . foldtextend, '.', 'x', 'g')) + &foldcolumn - return foldtextstart . repeat(foldchar, winwidth(0)-foldtextlength) . foldtextend - endif - -endfunction -"}}} diff -r 1052e4853b1e -r 6c66049c63e0 ftplugin/pem/folding.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ftplugin/pem/folding.vim Mon Jun 29 23:15:51 2015 +0200 @@ -0,0 +1,102 @@ +" vim: foldmethod=marker +set foldmethod=expr +set foldexpr=GetPEMfold(v:lnum) +set foldtext=SetFoldTextCN() + +function! GetPEMfold(lnum) +"{{{1 + if getline(a:lnum) =~? '\v^\s*$' + return '-1' + elseif getline(a:lnum) =~? '\v^certificate:' + return '>1' + elseif getline(a:lnum) =~? '\v^-{5}begin\scertificate-{5}' + return '>1' + endif + + let this_indent = GetShiftLevel(a:lnum) + let next_indent = GetShiftLevel(GetNonBlankLines(a:lnum)) + let begin_cert = GetShiftLevel(GetBeginCertificate(a:lnum)) + + if this_indent == begin_cert + return '1' + elseif this_indent == next_indent || this_indent > next_indent + return this_indent + elseif this_indent < next_indent + return '>' . next_indent + endif + +endfunction +"}}} + +function! GetShiftLevel(lnum) +"{{{1 + "return indent(a:lnum) / &shiftwidth + return indent(a:lnum) / 4 +endfunction +"}}} + +function! GetNonBlankLines(lnum) +"{{{1 + let numlines = line('$') + let current = a:lnum + 1 + + while current <= numlines + if getline(current) =~? '\v\S' + return current + endif + + let current += 1 + + endwhile + + return -2 +endfunction +"}}} + +function! GetBeginCertificate(lnum) +"{{{1 + let numlines = line('$') + let current = a:lnum + 1 + + while current <= numlines + if getline(current) =~? '\v^-{5}begin\scertificate-{5}' + return current + endif + + let current += 1 + endwhile + +endfunction +"}}} + +function! SetFoldTextCN() +"{{{1 + + let line = getline(v:foldstart) + let lines_count = v:foldend - v:foldstart + 1 + let lines_count_text = '| ' . printf("%10s", lines_count . ' lines') . ' |' + let foldchar = matchstr(&fillchars, 'fold:\zs.') + let foldtextstart = strpart('+' . repeat(foldchar, v:foldlevel*2) . line, 0, (winwidth(0)*2)/3) + let foldtextend = lines_count_text . repeat(foldchar, 8) + + if match( line, 'Certificate:.*' ) == 0 + let current = line + 1 + + while current <= lines_count + if ( getline(current) =~? 'CN=.*') + let inLine = getline(current) + let CName = substitute( inLine, '.*CN=\(.*$\)', "\\1", 'g') + endif + let current += 1 + endwhile + + let foldtextlength = strlen(substitute(foldtextstart . CName . foldtextend, '.', 'x', 'g')) + &foldcolumn + return foldtextstart . ' ' . CName . repeat(foldchar, winwidth(0)-foldtextlength-1) . foldtextend + + else + let foldtextlength = strlen(substitute(foldtextstart . foldtextend, '.', 'x', 'g')) + &foldcolumn + return foldtextstart . repeat(foldchar, winwidth(0)-foldtextlength) . foldtextend + endif + +endfunction +"}}}