Skip to content

Commit c549c34

Browse files
author
Mark Withall
committed
Add folding for other groups
1 parent 4d7c52a commit c549c34

File tree

1 file changed

+35
-3
lines changed

1 file changed

+35
-3
lines changed

ftplugin/cif/folding.vim

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,46 @@
1+
function! RecordType(linenum)
2+
if a:linenum < 0
3+
return ''
4+
endif
5+
return getline(a:linenum)[0:1]
6+
endfunction
7+
18
function! CifFolds()
2-
if getline(v:lnum)[0:1] == 'BS'
9+
let previous_record_type=RecordType(v:lnum-1)
10+
let record_type = RecordType(v:lnum)
11+
if record_type == 'BS'
12+
return ">1"
13+
elseif record_type == 'TI' && previous_record_type != 'TI'
314
return ">1"
15+
elseif record_type == 'TA' && previous_record_type != 'TA'
16+
return ">1"
17+
elseif record_type == 'TD' && previous_record_type != 'TD'
18+
return ">1"
19+
elseif record_type == 'AA' && previous_record_type != 'AA'
20+
return ">1"
21+
elseif record_type == 'ZZ'
22+
return "0"
423
endif
524
return "="
625
endfunction
726

827
function! CifFoldText()
9-
let line=getline(v:foldstart)
1028
let lines=(v:foldend-v:foldstart)+1
11-
return line[32:35] . ' (' . lines . ' lines) ' . line
29+
let record_type=RecordType(v:foldstart)
30+
if record_type == 'BS'
31+
let line=getline(v:foldstart)
32+
return line[32:35] . ' (' . lines . ' lines) ' . line
33+
elseif record_type == 'TI'
34+
return 'TIPLOC Inserts (' . lines . ' lines)'
35+
elseif record_type == 'TA'
36+
return 'TIPLOC Ammends (' . lines . ' lines)'
37+
elseif record_type == 'TD'
38+
return 'TIPLOC Deletes (' . lines . ' lines)'
39+
elseif record_type == 'AA'
40+
return 'Associations (' . lines . ' lines)'
41+
else
42+
return record_type . ' (' . lines . ' lines)'
43+
endif
1244
endfunction
1345

1446
setlocal foldmethod=expr

0 commit comments

Comments
 (0)