comparison runtime/ftplugin/debcontrol.vim @ 1624:18ee39301b82 v7.2a

updated for version 7.2a
author vimboss
date Tue, 24 Jun 2008 22:58:06 +0000
parents
children b9e314fe473f
comparison
equal deleted inserted replaced
1623:53938adac247 1624:18ee39301b82
1 " Vim filetype plugin file (GUI menu and folding)
2 " Language: Debian control files
3 " Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
4 " Former Maintainer: Pierre Habouzit <madcoder@debian.org>
5 " Last Change: 2008-03-08
6 " URL: http://git.debian.org/?p=pkg-vim/vim.git;a=blob_plain;f=runtime/ftplugin/debcontrol.vim;hb=debian
7
8 " Do these settings once per buffer
9 if exists("b:did_ftplugin")
10 finish
11 endif
12 let b:did_ftplugin=1
13
14 " {{{1 Local settings (do on every load)
15 if exists("g:debcontrol_fold_enable")
16 setlocal foldmethod=expr
17 setlocal foldexpr=DebControlFold(v:lnum)
18 setlocal foldtext=DebControlFoldText()
19 endif
20 setlocal textwidth=0
21
22 " Clean unloading
23 let b:undo_ftplugin = "setlocal tw< foldmethod< foldexpr< foldtext<"
24
25 " }}}1
26
27 " {{{1 folding
28
29 function! s:getField(f, lnum)
30 let line = getline(a:lnum)
31 let fwdsteps = 0
32 while line !~ '^'.a:f.':'
33 let fwdsteps += 1
34 let line = getline(a:lnum + fwdsteps)
35 if line == ''
36 return 'unknown'
37 endif
38 endwhile
39 return substitute(line, '^'.a:f.': *', '', '')
40 endfunction
41
42 function! DebControlFoldText()
43 if v:folddashes == '-' " debcontrol entry fold
44 let type = substitute(getline(v:foldstart), ':.*', '', '')
45 if type == 'Source'
46 let ftext = substitute(foldtext(), ' *Source: *', ' ', '')
47 return ftext . ' -- ' . s:getField('Maintainer', v:foldstart) . ' '
48 endif
49 let arch = s:getField('Architecture', v:foldstart)
50 let ftext = substitute(foldtext(), ' *Package: *', ' [' . arch . '] ', '')
51 return ftext . ': ' . s:getField('Description', v:foldstart) . ' '
52 endif
53 return foldtext()
54 endfunction
55
56 function! DebControlFold(l)
57
58 " This is for not merging blank lines around folds to them
59 if getline(a:l) =~ '^Source:'
60 return '>1'
61 endif
62
63 if getline(a:l) =~ '^Package:'
64 return '>1'
65 endif
66
67 return '='
68 endfunction
69
70 " }}}1