Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim indent file |
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 2 | " Language: CSS |
3 | " Maintainer: Nikolai Weibull <nikolai+work.vim@bitwi.se> | ||||
4 | " Latest Revision: 2005-06-29 | ||||
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 5 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 6 | if exists("b:did_indent") |
7 | finish | ||||
8 | endif | ||||
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 9 | let b:did_indent = 1 |
10 | |||||
11 | setlocal indentexpr=GetCSSIndent() | ||||
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 12 | setlocal indentkeys=0{,0},!^F,o,O |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 13 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 14 | if exists("*GetCSSIndent") |
15 | finish | ||||
16 | endif | ||||
17 | |||||
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 18 | function s:LookupLine(lnum) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 19 | let lnum = prevnonblank(a:lnum - 1) |
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 20 | while lnum > 0 |
21 | let line = getline(lnum) | ||||
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 22 | |
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 23 | if line =~ '\*/' |
24 | while lnum > 0 && line !~ '/\*' | ||||
25 | let lnum -= 1 | ||||
26 | let line = getline(lnum) | ||||
27 | endwhile | ||||
28 | endif | ||||
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 29 | |
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 30 | if line !~ '^\s*/\*' |
31 | return lnum | ||||
32 | end | ||||
33 | endwhile | ||||
34 | return lnum | ||||
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 35 | endfunction |
36 | |||||
37 | function GetCSSIndent() | ||||
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 38 | let lnum = prevnonblank(v:lnum - 1) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 39 | if lnum == 0 |
40 | return 0 | ||||
41 | endif | ||||
42 | |||||
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 43 | let ind = indent(lnum) |
44 | |||||
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 45 | if substitute(getline(lnum), '/\*.*', '', 'e') =~ '{\(.*}\)\@!' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 46 | let ind = ind + &sw |
47 | endif | ||||
48 | |||||
Bram Moolenaar | 42eeac3 | 2005-06-29 22:40:58 +0000 | [diff] [blame] | 49 | if getline(v:lnum) =~ '^\s*}' |
50 | let ind = ind - &sw | ||||
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 51 | endif |
52 | |||||
53 | return ind | ||||
54 | endfunction |