| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  |  | " Vim ftplugin file | 
					
						
							|  |  |  |  | " Language:     Erlang | 
					
						
							| 
									
										
										
										
											2012-02-13 00:05:22 +01:00
										 |  |  |  | " Author:       Oscar Hellstr<74>m <oscar@oscarh.net> | 
					
						
							|  |  |  |  | " Contributors: Ricardo Catalinas Jim<69>nez <jimenezrick@gmail.com> | 
					
						
							| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  |  | "               Eduardo Lopez (http://github.com/tapichu) | 
					
						
							|  |  |  |  | " License:      Vim license | 
					
						
							| 
									
										
										
										
											2012-02-13 00:05:22 +01:00
										 |  |  |  | " Version:      2012/01/25 | 
					
						
							| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 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 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-11 15:57:40 +01:00
										 |  |  |  | let s:cpo_save = &cpo | 
					
						
							|  |  |  |  | set cpo&vim | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  |  | if !exists('g:erlang_keywordprg') | 
					
						
							|  |  |  |  | 	let g:erlang_keywordprg = 'erl -man' | 
					
						
							|  |  |  |  | endif | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | if !exists('g:erlang_folding') | 
					
						
							|  |  |  |  | 	let g:erlang_folding = 0 | 
					
						
							|  |  |  |  | endif | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-13 00:05:22 +01:00
										 |  |  |  | let s:erlang_fun_begin = '^\a\w*(.*$' | 
					
						
							|  |  |  |  | let s:erlang_fun_end   = '^[^%]*\.\s*\(%.*\)\?$' | 
					
						
							| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-13 00:05:22 +01:00
										 |  |  |  | function s:SetErlangOptions() | 
					
						
							| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  |  | 	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 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-13 00:05:22 +01:00
										 |  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2012-01-20 21:08:56 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | call s:SetErlangOptions() | 
					
						
							| 
									
										
										
										
											2012-03-11 15:57:40 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | let b:undo_ftplugin = "setlocal foldmethod< foldexpr< foldtext<" | 
					
						
							|  |  |  |  | 	\ . " comments< commentstring< formatoptions<" | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | let &cpo = s:cpo_save | 
					
						
							|  |  |  |  | unlet s:cpo_save |