diff options
Diffstat (limited to 'ftplugin/erlang.vim')
| -rw-r--r-- | ftplugin/erlang.vim | 91 | 
1 files changed, 91 insertions, 0 deletions
| diff --git a/ftplugin/erlang.vim b/ftplugin/erlang.vim new file mode 100644 index 00000000..ddf27709 --- /dev/null +++ b/ftplugin/erlang.vim @@ -0,0 +1,91 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" 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 + +endif | 
