3281
|
1 " Vim ftplugin file
|
|
2 " Language: Erlang
|
3356
|
3 " Author: Oscar Hellström <oscar@oscarh.net>
|
|
4 " Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
|
3281
|
5 " Eduardo Lopez (http://github.com/tapichu)
|
|
6 " License: Vim license
|
3356
|
7 " Version: 2012/01/25
|
3281
|
8
|
|
9 if exists('b:did_ftplugin')
|
|
10 finish
|
|
11 else
|
|
12 let b:did_ftplugin = 1
|
|
13 endif
|
|
14
|
|
15 if exists('s:did_function_definitions')
|
|
16 call s:SetErlangOptions()
|
|
17 finish
|
|
18 else
|
|
19 let s:did_function_definitions = 1
|
|
20 endif
|
|
21
|
|
22 if !exists('g:erlang_keywordprg')
|
|
23 let g:erlang_keywordprg = 'erl -man'
|
|
24 endif
|
|
25
|
|
26 if !exists('g:erlang_folding')
|
|
27 let g:erlang_folding = 0
|
|
28 endif
|
|
29
|
3356
|
30 let s:erlang_fun_begin = '^\a\w*(.*$'
|
|
31 let s:erlang_fun_end = '^[^%]*\.\s*\(%.*\)\?$'
|
|
32
|
3281
|
33 function s:SetErlangOptions()
|
|
34 if g:erlang_folding
|
|
35 setlocal foldmethod=expr
|
|
36 setlocal foldexpr=GetErlangFold(v:lnum)
|
|
37 setlocal foldtext=ErlangFoldText()
|
|
38 endif
|
|
39
|
|
40 setlocal comments=:%%%,:%%,:%
|
|
41 setlocal commentstring=%%s
|
|
42
|
|
43 setlocal formatoptions+=ro
|
|
44 let &l:keywordprg = g:erlang_keywordprg
|
|
45 endfunction
|
|
46
|
3356
|
47 function GetErlangFold(lnum)
|
|
48 let lnum = a:lnum
|
|
49 let line = getline(lnum)
|
3281
|
50
|
3356
|
51 if line =~ s:erlang_fun_end
|
|
52 return '<1'
|
|
53 endif
|
3281
|
54
|
3356
|
55 if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1
|
|
56 return '1'
|
|
57 endif
|
3281
|
58
|
3356
|
59 if line =~ s:erlang_fun_begin
|
|
60 return '>1'
|
|
61 endif
|
3281
|
62
|
3356
|
63 return '='
|
|
64 endfunction
|
3281
|
65
|
3356
|
66 function ErlangFoldText()
|
|
67 let line = getline(v:foldstart)
|
|
68 let foldlen = v:foldend - v:foldstart + 1
|
|
69 let lines = ' ' . foldlen . ' lines: ' . substitute(line, "[\ \t]*", '', '')
|
|
70 if foldlen < 10
|
|
71 let lines = ' ' . lines
|
|
72 endif
|
|
73 let retval = '+' . v:folddashes . lines
|
3281
|
74
|
3356
|
75 return retval
|
|
76 endfunction
|
3281
|
77
|
|
78 call s:SetErlangOptions()
|