Add runtime update script
[MacVim.git] / runtime / indent / objc.vim
blobbeadca9fa4d2ea0198691474a7a635623c410726
1 "   Vim indent file
2 "   Language:       Objective-C
3 "   Maintainer:     Kazunobu Kuriyama <kazunobu.kuriyama@nifty.com>
4 "   Last Change:    2004 May 16
8 " Only load this indent file when no other was loaded.
9 if exists("b:did_indent")
10     finish
11 endif
12 let b:did_indent = 1
13 setlocal cindent
15 " Set the function to do the work.
16 setlocal indentexpr=GetObjCIndent()
18 " To make a colon (:) suggest an indentation other than a goto/swich label,
19 setlocal indentkeys-=:
20 setlocal indentkeys+=<:>
22 " Only define the function once.
23 if exists("*GetObjCIndent")
24     finish
25 endif
27 function s:GetWidth(line, regexp)
28     let end = matchend(a:line, a:regexp)
29     let width = 0
30     let i = 0
31     while i < end
32         if a:line[i] != "\t"
33             let width = width + 1
34         else
35             let width = width + &ts - (width % &ts)
36         endif
37         let i = i + 1
38     endwhile
39     return width
40 endfunction
42 function s:LeadingWhiteSpace(line)
43     let end = strlen(a:line)
44     let width = 0
45     let i = 0
46     while i < end
47         let char = a:line[i]
48         if char != " " && char != "\t"
49             break
50         endif
51         if char != "\t"
52             let width = width + 1
53         else
54             let width = width + &ts - (width % &ts)
55         endif
56         let i = i + 1
57     endwhile
58     return width
59 endfunction
62 function GetObjCIndent()
63     let theIndent = cindent(v:lnum)
65     let prev_line = getline(v:lnum - 1)
66     let cur_line = getline(v:lnum)
68     if prev_line !~# ":" || cur_line !~# ":"
69         return theIndent
70     endif
72     if prev_line !~# ";"
73         let prev_colon_pos = s:GetWidth(prev_line, ":")
74         let delta = s:GetWidth(cur_line, ":") - s:LeadingWhiteSpace(cur_line)
75         let theIndent = prev_colon_pos - delta
76     endif
78     return theIndent
79 endfunction