| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 
							- " Vim indent file
 
- " Language:	    CSS
 
- " Maintainer:	    Nikolai Weibull <now@bitwi.se>
 
- " Latest Revision:  2012-05-30
 
- "		    Use of shiftwidth() added by Oleg Zubchenko.	
 
- " Changes: 1) Reacquire the line while checking comment lines.
 
- if exists("b:did_indent")
 
-   finish
 
- endif
 
- let b:did_indent = 1
 
- setlocal indentexpr=GetCSSIndent()
 
- setlocal indentkeys=0{,0},!^F,o,O
 
- setlocal nosmartindent
 
- let b:undo_indent = "setl smartindent< indentkeys< indentexpr<"
 
- if exists("*GetCSSIndent")
 
-   finish
 
- endif
 
- let s:keepcpo= &cpo
 
- set cpo&vim
 
- function s:prevnonblanknoncomment(lnum)
 
-   let lnum = a:lnum
 
-   while lnum > 1
 
-     let lnum = prevnonblank(lnum)
 
-     let line = getline(lnum)
 
-     if line =~ '\*/'
 
-       while lnum > 1 && line !~ '/\*'
 
-         let lnum -= 1
 
-         let line = getline(lnum)
 
-       endwhile
 
-       if line =~ '^\s*/\*'
 
-         let lnum -= 1
 
-       else
 
-         break
 
-       endif
 
-     else
 
-       break
 
-     endif
 
-   endwhile
 
-   return lnum
 
- endfunction
 
- 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') !~ 'css\%(Comment\|StringQ\{1,2}\)'
 
-       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 GetCSSIndent()
 
-   let line = getline(v:lnum)
 
-   if line =~ '^\s*\*'
 
-     return cindent(v:lnum)
 
-   endif
 
-   let pnum = s:prevnonblanknoncomment(v:lnum - 1)
 
-   if pnum == 0
 
-     return 0
 
-   endif
 
-   return indent(pnum) + s:count_braces(pnum, 1) * shiftwidth()
 
-         \ - s:count_braces(v:lnum, 0) * shiftwidth()
 
- endfunction
 
- let &cpo = s:keepcpo
 
- unlet s:keepcpo
 
 
  |