| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | " Vim indent file | 
					
						
							| 
									
										
										
										
											2017-03-05 17:04:09 +01:00
										 |  |  | " Language:             xinetd.conf(5) configuration file | 
					
						
							|  |  |  | " Previous Maintainer:  Nikolai Weibull <now@bitwi.se> | 
					
						
							|  |  |  | " Latest Revision:      2006-12-20 | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if exists("b:did_indent") | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | let b:did_indent = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | setlocal indentexpr=GetXinetdIndent() | 
					
						
							|  |  |  | setlocal indentkeys=0{,0},!^F,o,O | 
					
						
							| 
									
										
										
										
											2007-05-10 18:00:30 +00:00
										 |  |  | setlocal nosmartindent | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if exists("*GetXinetdIndent") | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2012-05-18 21:49:28 +02:00
										 |  |  | let s:keepcpo= &cpo | 
					
						
							|  |  |  | set cpo&vim | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | function s:count_braces(lnum, count_open) | 
					
						
							|  |  |  |   let n_open = 0 | 
					
						
							|  |  |  |   let n_close = 0 | 
					
						
							|  |  |  |   let line = getline(a:lnum) | 
					
						
							|  |  |  |   let pattern = '[{}]' | 
					
						
							|  |  |  |   let i = match(line, pattern) | 
					
						
							|  |  |  |   while i != -1 | 
					
						
							|  |  |  |     if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'ld\%(Comment\|String\)' | 
					
						
							|  |  |  |       if line[i] == '{' | 
					
						
							|  |  |  |         let n_open += 1 | 
					
						
							|  |  |  |       elseif line[i] == '}' | 
					
						
							|  |  |  |         if n_open > 0 | 
					
						
							|  |  |  |           let n_open -= 1 | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |           let n_close += 1 | 
					
						
							|  |  |  |         endif | 
					
						
							|  |  |  |       endif | 
					
						
							|  |  |  |     endif | 
					
						
							|  |  |  |     let i = match(line, pattern, i + 1) | 
					
						
							|  |  |  |   endwhile | 
					
						
							|  |  |  |   return a:count_open ? n_open : n_close | 
					
						
							|  |  |  | endfunction | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function GetXinetdIndent() | 
					
						
							|  |  |  |   let pnum = prevnonblank(v:lnum - 1) | 
					
						
							|  |  |  |   if pnum == 0 | 
					
						
							|  |  |  |     return 0 | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-16 17:41:02 +01:00
										 |  |  |   return indent(pnum) + s:count_braces(pnum, 1) * shiftwidth() | 
					
						
							|  |  |  |         \ - s:count_braces(v:lnum, 0) * shiftwidth() | 
					
						
							| 
									
										
										
										
											2005-06-29 22:40:58 +00:00
										 |  |  | endfunction | 
					
						
							| 
									
										
										
										
											2012-05-18 21:49:28 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | let &cpo = s:keepcpo | 
					
						
							|  |  |  | unlet s:keepcpo |