| 
									
										
										
										
											2005-08-24 22:16:11 +00:00
										 |  |  | " Vim syntax file | 
					
						
							| 
									
										
										
										
											2006-04-15 20:25:09 +00:00
										 |  |  | " Language:		eRuby | 
					
						
							| 
									
										
										
										
											2010-05-28 20:54:39 +02:00
										 |  |  | " Maintainer:		Tim Pope <vimNOSPAM@tpope.org> | 
					
						
							|  |  |  | " Last Change:		2010 Apr 15 | 
					
						
							| 
									
										
										
										
											2006-04-15 20:25:09 +00:00
										 |  |  | " URL:			http://vim-ruby.rubyforge.org | 
					
						
							|  |  |  | " Anon CVS:		See above site | 
					
						
							|  |  |  | " Release Coordinator:	Doug Kearns <dougkearns@gmail.com> | 
					
						
							| 
									
										
										
										
											2005-08-24 22:16:11 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-10 18:25:20 +00:00
										 |  |  | if exists("b:current_syntax") | 
					
						
							| 
									
										
										
										
											2005-08-24 22:16:11 +00:00
										 |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if !exists("main_syntax") | 
					
						
							|  |  |  |   let main_syntax = 'eruby' | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-10 18:25:20 +00:00
										 |  |  | if !exists("g:eruby_default_subtype") | 
					
						
							|  |  |  |   let g:eruby_default_subtype = "html" | 
					
						
							| 
									
										
										
										
											2005-08-24 22:16:11 +00:00
										 |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-10 18:25:20 +00:00
										 |  |  | if !exists("b:eruby_subtype") && main_syntax == 'eruby' | 
					
						
							|  |  |  |   let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") | 
					
						
							|  |  |  |   let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+') | 
					
						
							|  |  |  |   if b:eruby_subtype == '' | 
					
						
							| 
									
										
										
										
											2010-05-28 20:54:39 +02:00
										 |  |  |     let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+') | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  |   if b:eruby_subtype == '' | 
					
						
							|  |  |  |     let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+$') | 
					
						
							| 
									
										
										
										
											2007-05-10 18:25:20 +00:00
										 |  |  |   endif | 
					
						
							|  |  |  |   if b:eruby_subtype == 'rhtml' | 
					
						
							|  |  |  |     let b:eruby_subtype = 'html' | 
					
						
							|  |  |  |   elseif b:eruby_subtype == 'rb' | 
					
						
							|  |  |  |     let b:eruby_subtype = 'ruby' | 
					
						
							|  |  |  |   elseif b:eruby_subtype == 'yml' | 
					
						
							|  |  |  |     let b:eruby_subtype = 'yaml' | 
					
						
							|  |  |  |   elseif b:eruby_subtype == 'js' | 
					
						
							|  |  |  |     let b:eruby_subtype = 'javascript' | 
					
						
							|  |  |  |   elseif b:eruby_subtype == 'txt' | 
					
						
							|  |  |  |     " Conventional; not a real file type | 
					
						
							|  |  |  |     let b:eruby_subtype = 'text' | 
					
						
							|  |  |  |   elseif b:eruby_subtype == '' | 
					
						
							|  |  |  |     let b:eruby_subtype = g:eruby_default_subtype | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if !exists("b:eruby_nest_level") | 
					
						
							|  |  |  |   let b:eruby_nest_level = strlen(substitute(substitute(substitute(expand("%:t"),'@','','g'),'\c\.\%(erb\|rhtml\)\>','@','g'),'[^@]','','g')) | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | if !b:eruby_nest_level | 
					
						
							|  |  |  |   let b:eruby_nest_level = 1 | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if exists("b:eruby_subtype") && b:eruby_subtype != '' | 
					
						
							|  |  |  |   exe "runtime! syntax/".b:eruby_subtype.".vim" | 
					
						
							|  |  |  |   unlet! b:current_syntax | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | syn include @rubyTop syntax/ruby.vim | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-09-16 21:55:43 +00:00
										 |  |  | syn cluster erubyRegions contains=erubyOneLiner,erubyBlock,erubyExpression,erubyComment | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | exe 'syn region  erubyOneLiner   matchgroup=erubyDelimiter start="^%\{1,'.b:eruby_nest_level.'\}%\@!"    end="$"     contains=@rubyTop	     containedin=ALLBUT,@erubyRegions keepend oneline' | 
					
						
							| 
									
										
										
										
											2010-05-28 20:54:39 +02:00
										 |  |  | exe 'syn region  erubyBlock      matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}%\@!-\=" end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop  containedin=ALLBUT,@erubyRegions keepend' | 
					
						
							|  |  |  | exe 'syn region  erubyExpression matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}=\{1,4}" end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop  containedin=ALLBUT,@erubyRegions keepend' | 
					
						
							|  |  |  | exe 'syn region  erubyComment    matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}#"       end="%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend' | 
					
						
							| 
									
										
										
										
											2005-08-24 22:16:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Define the default highlighting. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-28 20:54:39 +02:00
										 |  |  | hi def link erubyDelimiter		PreProc | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | hi def link erubyComment		Comment | 
					
						
							| 
									
										
										
										
											2005-08-24 22:16:11 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-10 18:25:20 +00:00
										 |  |  | let b:current_syntax = 'eruby' | 
					
						
							| 
									
										
										
										
											2005-08-24 22:16:11 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if main_syntax == 'eruby' | 
					
						
							|  |  |  |   unlet main_syntax | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-13 17:41:49 +00:00
										 |  |  | " vim: nowrap sw=2 sts=2 ts=8: |