home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
vim60.zip
/
vim60rt2.zip
/
vim
/
vim60
/
indent
/
css.vim
< prev
next >
Wrap
Text File
|
2001-09-26
|
2KB
|
76 lines
" vim: set sw=4 sts=4:
" Maintainer : Nikolai 'pcp' Weibull <da.box@home.se>
" Revised on : Wed, 25 Jul 2001 21:19:41 CEST
" Language : Cascading Style Sheets (CSS)
" 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