Mercurial > vim
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 |