forked from aniani/vim
		
	
		
			
	
	
		
			80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim indent file | ||
|  | " Language:	    CSS | ||
|  | " Maintainer:	    Nikolai Weibull <source@pcppopper.org> | ||
|  | " URL:		    http://www.pcppopper.org/vim/indent/pcp/css/ | ||
|  | " Latest Revision:  2004-04-25 | ||
|  | " arch-tag:	    ccfd77a0-1c9a-43f7-a407-bbe704541442 | ||
|  | 
 | ||
|  | " Only load this indent file when no other was loaded. | ||
|  | if exists("b:did_indent") | ||
|  |   finish | ||
|  | endif | ||
|  | 
 | ||
|  | let b:did_indent = 1 | ||
|  | 
 | ||
|  | setlocal indentexpr=GetCSSIndent() | ||
|  | setlocal indentkeys-=:,0# indentkeys-=e | ||
|  | 
 | ||
|  | " Only define the function once. | ||
|  | if exists("*GetCSSIndent") | ||
|  |   finish | ||
|  | endif | ||
|  | 
 | ||
|  | function! s:LookupLine(lnum) | ||
|  |   " find a non-blank line above the current line | ||
|  |   let lnum = prevnonblank(a:lnum - 1) | ||
|  | 
 | ||
|  |   if lnum == 0 | ||
|  |     return 0 | ||
|  |   endif | ||
|  | 
 | ||
|  |   let line = getline(lnum) | ||
|  | 
 | ||
|  |   " if the line has an end comment sequence we need to find a line | ||
|  |   " that isn't affected by the comment. | ||
|  |   if line =~ '\*/' | ||
|  |     while line !~ '/\*' | ||
|  |       let lnum = lnum - 1 | ||
|  |       let line = getline(lnum) | ||
|  |     endwhile | ||
|  |   endif | ||
|  | 
 | ||
|  |   " if the line we found only contained the comment and whitespace | ||
|  |   " we need to find another line to use... | ||
|  |   if line =~ '^\s*/\*' | ||
|  |     return s:LookupLine(lnum) | ||
|  |   else | ||
|  |     return lnum | ||
|  |   endif | ||
|  | endfunction | ||
|  | 
 | ||
|  | function GetCSSIndent() | ||
|  |   let lnum = s:LookupLine(v:lnum) | ||
|  | 
 | ||
|  |   if lnum == 0 | ||
|  |     return 0 | ||
|  |   endif | ||
|  | 
 | ||
|  |   " remove commented stuff from line | ||
|  |   let line = substitute(getline(lnum), '/\*.\*/', '', 'eg') | ||
|  | 
 | ||
|  |   let ind = indent(lnum) | ||
|  | 
 | ||
|  |   " check for opening brace on the previous line | ||
|  |   " skip if it also contains a closing brace... | ||
|  |   if line =~ '{\(.*}\)\@!' | ||
|  |     let ind = ind + &sw | ||
|  |   endif | ||
|  | 
 | ||
|  |   let line = getline(v:lnum) | ||
|  | 
 | ||
|  |   " check for closing brace first on current line | ||
|  |   if line =~ '^\s*}' | ||
|  |     let ind	= ind - &sw | ||
|  |   endif | ||
|  | 
 | ||
|  |   return ind | ||
|  | endfunction | ||
|  | 
 | ||
|  | " vim: set sts=2 sw=2: |