12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- " Vim ftplugin file
- " Language: Erlang
- " Author: Oscar Hellström <oscar@oscarh.net>
- " Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com>
- " Eduardo Lopez (http://github.com/tapichu)
- " License: Vim license
- " Version: 2012/01/25
- if exists('b:did_ftplugin')
- finish
- else
- let b:did_ftplugin = 1
- endif
- if exists('s:did_function_definitions')
- call s:SetErlangOptions()
- finish
- else
- let s:did_function_definitions = 1
- endif
- let s:cpo_save = &cpo
- set cpo&vim
- if !exists('g:erlang_keywordprg')
- let g:erlang_keywordprg = 'erl -man'
- endif
- if !exists('g:erlang_folding')
- let g:erlang_folding = 0
- endif
- let s:erlang_fun_begin = '^\a\w*(.*$'
- let s:erlang_fun_end = '^[^%]*\.\s*\(%.*\)\?$'
- function s:SetErlangOptions()
- if g:erlang_folding
- setlocal foldmethod=expr
- setlocal foldexpr=GetErlangFold(v:lnum)
- setlocal foldtext=ErlangFoldText()
- endif
- setlocal comments=:%%%,:%%,:%
- setlocal commentstring=%%s
- setlocal formatoptions+=ro
- let &l:keywordprg = g:erlang_keywordprg
- endfunction
- function GetErlangFold(lnum)
- let lnum = a:lnum
- let line = getline(lnum)
- if line =~ s:erlang_fun_end
- return '<1'
- endif
- if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1
- return '1'
- endif
- if line =~ s:erlang_fun_begin
- return '>1'
- endif
- return '='
- endfunction
- function ErlangFoldText()
- let line = getline(v:foldstart)
- let foldlen = v:foldend - v:foldstart + 1
- let lines = ' ' . foldlen . ' lines: ' . substitute(line, "[\ \t]*", '', '')
- if foldlen < 10
- let lines = ' ' . lines
- endif
- let retval = '+' . v:folddashes . lines
- return retval
- endfunction
- call s:SetErlangOptions()
- let b:undo_ftplugin = "setlocal foldmethod< foldexpr< foldtext<"
- \ . " comments< commentstring< formatoptions<"
- let &cpo = s:cpo_save
- unlet s:cpo_save
|