blob: ee4288cf7cb40b8dfaf78913df0b4ba3f312c27f [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim indent file
Bram Moolenaar42eeac32005-06-29 22:40:58 +00002" Language: CSS
3" Maintainer: Nikolai Weibull <nikolai+work.vim@bitwi.se>
4" Latest Revision: 2005-06-29
Bram Moolenaar071d4272004-06-13 20:20:40 +00005
Bram Moolenaar071d4272004-06-13 20:20:40 +00006if exists("b:did_indent")
7 finish
8endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00009let b:did_indent = 1
10
11setlocal indentexpr=GetCSSIndent()
Bram Moolenaar42eeac32005-06-29 22:40:58 +000012setlocal indentkeys=0{,0},!^F,o,O
Bram Moolenaar071d4272004-06-13 20:20:40 +000013
Bram Moolenaar071d4272004-06-13 20:20:40 +000014if exists("*GetCSSIndent")
15 finish
16endif
17
Bram Moolenaar42eeac32005-06-29 22:40:58 +000018function s:LookupLine(lnum)
Bram Moolenaar071d4272004-06-13 20:20:40 +000019 let lnum = prevnonblank(a:lnum - 1)
Bram Moolenaar42eeac32005-06-29 22:40:58 +000020 while lnum > 0
21 let line = getline(lnum)
Bram Moolenaar071d4272004-06-13 20:20:40 +000022
Bram Moolenaar42eeac32005-06-29 22:40:58 +000023 if line =~ '\*/'
24 while lnum > 0 && line !~ '/\*'
25 let lnum -= 1
26 let line = getline(lnum)
27 endwhile
28 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000029
Bram Moolenaar42eeac32005-06-29 22:40:58 +000030 if line !~ '^\s*/\*'
31 return lnum
32 end
33 endwhile
34 return lnum
Bram Moolenaar071d4272004-06-13 20:20:40 +000035endfunction
36
37function GetCSSIndent()
Bram Moolenaar42eeac32005-06-29 22:40:58 +000038 let lnum = prevnonblank(v:lnum - 1)
Bram Moolenaar071d4272004-06-13 20:20:40 +000039 if lnum == 0
40 return 0
41 endif
42
Bram Moolenaar071d4272004-06-13 20:20:40 +000043 let ind = indent(lnum)
44
Bram Moolenaar42eeac32005-06-29 22:40:58 +000045 if substitute(getline(lnum), '/\*.*', '', 'e') =~ '{\(.*}\)\@!'
Bram Moolenaar071d4272004-06-13 20:20:40 +000046 let ind = ind + &sw
47 endif
48
Bram Moolenaar42eeac32005-06-29 22:40:58 +000049 if getline(v:lnum) =~ '^\s*}'
50 let ind = ind - &sw
Bram Moolenaar071d4272004-06-13 20:20:40 +000051 endif
52
53 return ind
54endfunction